New issue
Advanced search Search tips

Issue 792577 link

Starred by 2 users

Issue metadata

Status: Fixed
Merged: issue 732611
Owner:
Closed: Nov 28
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug



Sign in to add a comment

[SPv2] Should expand interest rect for scrolled self-painting layers

Project Member Reported by wangxianzhu@chromium.org, Dec 6 2017

Issue description

When SPv2 and RootLayerScrolling are both enabled, we use the viewport size as the cull rect for frame scrolling contents. It's too small to paint adequate contents for composited scrolling.

Related test case is PaintControllerPaintTestForSPv2.FrameScrollingContents
 
Mergedinto: 732611
Owner: wangxianzhu@chromium.org
Status: Duplicate (was: Available)
This will be fixed together with the scrolling background issue.
Status: Assigned (was: Duplicate)
This bug still needs a separate fix. 
Labels: -Pri-3 Pri-2
Summary: [SPv2] Should expand interest rect for scrolled self-painting layers (was: [SPv2/RootLayerScrolling] Cull rect for frame scrolling contents is too small )
Actually this is not because of too small cull rect of scrolling contents of a LayoutView, but for scrolling self-painting layers.
Project Member

Comment 4 by bugdroid1@chromium.org, Nov 13

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/407a0120872d6788b25190f12bb2d2fe429fc250

commit 407a0120872d6788b25190f12bb2d2fe429fc250
Author: Xianzhu Wang <wangxianzhu@chromium.org>
Date: Tue Nov 13 04:59:32 2018

[CI] Refactor CullRect preparing for SPv2 interest rect implementation

- Combine CullRect::UpdateCullRect() and
  CullRect::UpdateCullRectForScrollingContents() into
  CullRect::ApplyTransform() which accepts a TransformPaintPropertyNode.
  For SPv2, if the transform node has scroll node, we'll expand the cull
  rect for composited scrolling.

- Rename CullRect::IntersectsCullRect() to CullRect::Intersects()

- Change CullRect constructor with offset to mutation methods to keep
  consistent with ApplyTransform().

Bug:  792577 
Change-Id: I306f5c7acacf73d97100c6c863b71e0df41c34af
Reviewed-on: https://chromium-review.googlesource.com/c/1319650
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#607495}
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/exported/web_plugin_container_impl.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/frame/remote_frame_view.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/paint/embedded_content_painter.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/paint/frame_set_painter.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/paint/inline_flow_box_painter.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/paint/paint_info.h
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/paint/replaced_painter.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/paint/scoped_paint_state.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/paint/scoped_paint_state.h
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/paint/scoped_svg_paint_state.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/paint/scrollable_area_painter.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/paint/svg_container_painter.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/paint/svg_image_painter.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/paint/svg_model_object_painter.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/paint/svg_shape_painter.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/paint/svg_text_painter.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/scroll/scrollbar.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/core/scroll/scrollbar_theme.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/platform/graphics/paint/cull_rect.cc
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/platform/graphics/paint/cull_rect.h
[modify] https://crrev.com/407a0120872d6788b25190f12bb2d2fe429fc250/third_party/blink/renderer/platform/graphics/paint/cull_rect_test.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Nov 15

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f92523f1aeca82d77f527484a7fec6846e035c36

commit f92523f1aeca82d77f527484a7fec6846e035c36
Author: Xianzhu Wang <wangxianzhu@chromium.org>
Date: Thu Nov 15 00:12:36 2018

[CI] Remove paint_dirty_rect from LayerTreeAsText::WriteLayers()

We should just dump all layers without culling.
This will simplify paint layer dirty rect migrating to CullRect.

Bug:  792577 
Change-Id: I01f304f4c0166e8ecf7c1984545c3f24ac1b551c
Reviewed-on: https://chromium-review.googlesource.com/c/1335007
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#608183}
[modify] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/WebKit/LayoutTests/platform/linux/fast/forms/select/menulist-update-text-popup-expected.txt
[modify] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/WebKit/LayoutTests/platform/linux/printing/forced-break-tree-dump-only-expected.txt
[rename] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/WebKit/LayoutTests/platform/linux/printing/single-line-must-not-be-split-into-two-pages-expected.txt
[modify] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/WebKit/LayoutTests/platform/linux/virtual/threaded/printing/forced-break-tree-dump-only-expected.txt
[copy] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/WebKit/LayoutTests/platform/linux/virtual/threaded/printing/single-line-must-not-be-split-into-two-pages-expected.txt
[modify] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/WebKit/LayoutTests/platform/mac-mac10.10/fast/forms/select/menulist-update-text-popup-expected.txt
[modify] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/WebKit/LayoutTests/platform/mac/fast/forms/select/menulist-update-text-popup-expected.txt
[modify] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/WebKit/LayoutTests/platform/mac/printing/forced-break-tree-dump-only-expected.txt
[modify] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-update-text-popup-expected.txt
[modify] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/WebKit/LayoutTests/platform/win/printing/forced-break-tree-dump-only-expected.txt
[copy] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/WebKit/LayoutTests/platform/win7/printing/single-line-must-not-be-split-into-two-pages-expected.txt
[copy] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/WebKit/LayoutTests/platform/win7/virtual/threaded/printing/single-line-must-not-be-split-into-two-pages-expected.txt
[modify] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/WebKit/LayoutTests/printing/iframe-svg-in-object-print-expected.txt
[rename] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/WebKit/LayoutTests/printing/single-line-must-not-be-split-into-two-pages-expected.txt
[copy] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/WebKit/LayoutTests/virtual/threaded/printing/single-line-must-not-be-split-into-two-pages-expected.txt
[modify] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/blink/renderer/core/layout/layout_tree_as_text.cc
[modify] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/blink/renderer/core/layout/layout_tree_as_text.h
[modify] https://crrev.com/f92523f1aeca82d77f527484a7fec6846e035c36/third_party/blink/renderer/core/paint/paint_layer.h

Project Member

Comment 6 by bugdroid1@chromium.org, Nov 15

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/31e4e79e5ab16591fc134b37902ef12976ae9007

commit 31e4e79e5ab16591fc134b37902ef12976ae9007
Author: Xianzhu Wang <wangxianzhu@chromium.org>
Date: Thu Nov 15 04:09:30 2018

[CI] Use CulRect for paint layer paint dirty rect

This prepares for implementation of SPv2 interest rect expansion for
composited scrolling.

Bug:  792577 
Change-Id: I0332bff4ce4f5fa9a5f5adf4a28c06a1442cc9d8
Reviewed-on: https://chromium-review.googlesource.com/c/1335067
Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org>
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#608254}
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/clipboard/data_transfer.cc
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/exported/web_view_test.cc
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/frame/local_frame_view.cc
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/block_painter_test.cc
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/frame_painter.cc
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/paint_controller_paint_test.h
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/paint_info.h
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/paint_layer.cc
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/paint_layer.h
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/paint_layer_clipper.cc
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/paint_layer_clipper.h
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/paint_layer_painter.cc
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/paint_layer_painter.h
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/paint_layer_painter_test.cc
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/paint_layer_painting_info.h
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/paint_result.h
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/svg_foreign_object_painter.cc
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/table_row_painter.cc
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/core/paint/table_section_painter.cc
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/platform/graphics/paint/cull_rect.cc
[modify] https://crrev.com/31e4e79e5ab16591fc134b37902ef12976ae9007/third_party/blink/renderer/platform/graphics/paint/cull_rect.h

 Issue 702370  has been merged into this issue.
Project Member

Comment 8 by bugdroid1@chromium.org, Nov 20

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/15e3f4d323ca3f04e7f3c63c453906c0166a33ea

commit 15e3f4d323ca3f04e7f3c63c453906c0166a33ea
Author: Xianzhu Wang <wangxianzhu@chromium.org>
Date: Tue Nov 20 21:04:05 2018

[SPv2] Expand PaintLayer cull rect for scrolling contents

This corresponds the interest rect expansion for scrolling contents
in CompositedLayerMapping::RecomputeInterestRect().

Bug:  792577 
Change-Id: Ibcde49ad098f9f3e53ca2af246ce2aa825a21f20
Reviewed-on: https://chromium-review.googlesource.com/c/1335748
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609798}
[modify] https://crrev.com/15e3f4d323ca3f04e7f3c63c453906c0166a33ea/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
[modify] https://crrev.com/15e3f4d323ca3f04e7f3c63c453906c0166a33ea/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/compositing/should-not-paint-outline-on-foreground-layer-expected.txt
[modify] https://crrev.com/15e3f4d323ca3f04e7f3c63c453906c0166a33ea/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/position/abspos-shift-image-incorrect-repaint-expected.txt
[modify] https://crrev.com/15e3f4d323ca3f04e7f3c63c453906c0166a33ea/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/scroll/invalidate-after-composited-scroll-of-window-expected.txt
[modify] https://crrev.com/15e3f4d323ca3f04e7f3c63c453906c0166a33ea/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/single-line-cells-repeating-thead-break-inside-on-thead-only-expected.txt
[modify] https://crrev.com/15e3f4d323ca3f04e7f3c63c453906c0166a33ea/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/table/table-shrink-row-repaint-expected.txt
[modify] https://crrev.com/15e3f4d323ca3f04e7f3c63c453906c0166a33ea/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/window-resize/window-resize-vertical-writing-mode-expected.txt
[modify] https://crrev.com/15e3f4d323ca3f04e7f3c63c453906c0166a33ea/third_party/blink/renderer/core/paint/paint_and_raster_invalidation_test.cc
[modify] https://crrev.com/15e3f4d323ca3f04e7f3c63c453906c0166a33ea/third_party/blink/renderer/core/paint/paint_controller_paint_test.cc
[modify] https://crrev.com/15e3f4d323ca3f04e7f3c63c453906c0166a33ea/third_party/blink/renderer/core/paint/paint_layer_painter.cc
[modify] https://crrev.com/15e3f4d323ca3f04e7f3c63c453906c0166a33ea/third_party/blink/renderer/core/paint/paint_layer_painter.h
[modify] https://crrev.com/15e3f4d323ca3f04e7f3c63c453906c0166a33ea/third_party/blink/renderer/core/paint/paint_layer_painter_test.cc
[modify] https://crrev.com/15e3f4d323ca3f04e7f3c63c453906c0166a33ea/third_party/blink/renderer/core/paint/view_painter_test.cc
[modify] https://crrev.com/15e3f4d323ca3f04e7f3c63c453906c0166a33ea/third_party/blink/renderer/platform/graphics/paint/cull_rect.cc
[modify] https://crrev.com/15e3f4d323ca3f04e7f3c63c453906c0166a33ea/third_party/blink/renderer/platform/graphics/paint/cull_rect.h
[modify] https://crrev.com/15e3f4d323ca3f04e7f3c63c453906c0166a33ea/third_party/blink/renderer/platform/graphics/paint/cull_rect_test.cc

Project Member

Comment 9 by bugdroid1@chromium.org, Nov 27

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/80d31ee160236922af3503c224e174338d8d5e68

commit 80d31ee160236922af3503c224e174338d8d5e68
Author: Xianzhu Wang <wangxianzhu@chromium.org>
Date: Tue Nov 27 19:59:40 2018

[SPv2] Properly handle infinite cull rects through scroll translations

- Allow infinite cull rect to be properly clipped and expanded through
  scroll translation. This can prevent SPv2 performance regression when
  painting scrolling contents when some ancestor uses infinite cull
  rects. This achieves the similar results of SPv1 painting composited
  scrolling contents.

- Copy and adapt the interest rect tests from composited_layer_mapping_test.cc
  into paint_layer_painter_test.cc

- Add infinite cull rect unit tests

Bug:  792577 
Change-Id: Ia784416557e10a3193cd677ad8d31101fd077bc6
Reviewed-on: https://chromium-review.googlesource.com/c/1347354
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#611271}
[modify] https://crrev.com/80d31ee160236922af3503c224e174338d8d5e68/third_party/blink/renderer/core/paint/paint_layer_painter.cc
[modify] https://crrev.com/80d31ee160236922af3503c224e174338d8d5e68/third_party/blink/renderer/core/paint/paint_layer_painter.h
[modify] https://crrev.com/80d31ee160236922af3503c224e174338d8d5e68/third_party/blink/renderer/core/paint/paint_layer_painter_test.cc
[modify] https://crrev.com/80d31ee160236922af3503c224e174338d8d5e68/third_party/blink/renderer/platform/graphics/paint/cull_rect.cc
[modify] https://crrev.com/80d31ee160236922af3503c224e174338d8d5e68/third_party/blink/renderer/platform/graphics/paint/cull_rect_test.cc

Project Member

Comment 10 by bugdroid1@chromium.org, Nov 28

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/892df66555530c34b46c8193fec7f5ee7016a061

commit 892df66555530c34b46c8193fec7f5ee7016a061
Author: Xianzhu Wang <wangxianzhu@chromium.org>
Date: Wed Nov 28 20:02:14 2018

[SPv2] Use infinite cull rect for WebPreferences::record_whole_document

When we want to paint the whole document, we should ignore the viewport
clip, thus should use infinite cull rect for all direct scrolling
contents of the main frame.

Bug:  792577 
Change-Id: I46fcfd5a2e30b9d60c2c211a6b063b5789bd9ade
Reviewed-on: https://chromium-review.googlesource.com/c/1347433
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#611834}
[modify] https://crrev.com/892df66555530c34b46c8193fec7f5ee7016a061/third_party/blink/renderer/core/frame/local_frame_view.cc
[modify] https://crrev.com/892df66555530c34b46c8193fec7f5ee7016a061/third_party/blink/renderer/core/paint/paint_layer_painter.cc
[modify] https://crrev.com/892df66555530c34b46c8193fec7f5ee7016a061/third_party/blink/renderer/core/paint/paint_layer_painter_test.cc
[modify] https://crrev.com/892df66555530c34b46c8193fec7f5ee7016a061/third_party/blink/renderer/core/paint/scoped_paint_state.cc

Status: Fixed (was: Assigned)

Sign in to add a comment