Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(463)

Issue 1287413002: Fix paint invalidation rect tracking within composited scrolling layers. (Closed)

Created:
5 years, 4 months ago by chrishtr
Modified:
5 years, 4 months ago
Reviewers:
skobes, pdr., Xianzhu
CC:
blink-reviews, blink-reviews-rendering, eae+blinkwatch, jchaffraix+rendering, leviw+renderwatch, pdr+renderingwatchlist_chromium.org, szager+layoutwatch_chromium.org, zoltan1
Target Ref:
refs/heads/master
Project:
blink
Visibility:
Public.

Description

Fix paint invalidation rect tracking within composited scrolling layers. Previously, paint invalidation rect tracking (aka repaint-after-layout rects) were always stored in the space of the paint invalidation container. If the paint invalidation container is a composited scroller, this is incorrect. They should be stored in the space of the graphics layer backing the content. In the case of a composited scroller, the graphics layer backing never moves when scrolls occur. This had the effect that any paint invalidation anywhere in the scroller that happens after a scroll would end up invalidating the entire scrolled content, because it appeared to have moved. This change is a huge performance improvement in some such cases. In addition, this patch fixes incorrect invalidations which may result in missed invalidations after scrolling. BUG=516016 Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=200567

Patch Set 1 #

Patch Set 2 : #

Patch Set 3 : #

Total comments: 6

Patch Set 4 : #

Patch Set 5 : #

Total comments: 4

Patch Set 6 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+162 lines, -100 lines) Patch
M LayoutTests/TestExpectations View 1 2 3 4 5 2 chunks +11 lines, -2 lines 0 comments Download
A LayoutTests/paint/invalidation/invalidate-after-composited-scroll.html View 1 2 3 4 5 1 chunk +20 lines, -0 lines 0 comments Download
A + LayoutTests/paint/invalidation/invalidate-after-composited-scroll-expected.txt View 2 chunks +9 lines, -21 lines 0 comments Download
A LayoutTests/paint/invalidation/invalidate-after-composited-scroll-of-window.html View 1 2 3 4 5 1 chunk +18 lines, -0 lines 0 comments Download
A + LayoutTests/paint/invalidation/invalidate-after-composited-scroll-of-window-expected.txt View 1 2 3 4 5 1 chunk +3 lines, -3 lines 0 comments Download
M LayoutTests/platform/linux/compositing/repaint/should-not-clip-composited-overflow-scrolling-layer-expected.txt View 2 chunks +4 lines, -30 lines 0 comments Download
M LayoutTests/platform/win/compositing/overflow/updating-scrolling-content-expected.txt View 2 chunks +2 lines, -4 lines 0 comments Download
M LayoutTests/platform/win/fast/repaint/overflow-move-after-scroll-expected.txt View 1 2 3 2 chunks +0 lines, -2 lines 0 comments Download
M LayoutTests/platform/win/virtual/prefer_compositing_to_lcd_text/compositing/overflow/updating-scrolling-content-expected.txt View 2 chunks +2 lines, -4 lines 0 comments Download
M Source/core/layout/LayoutBox.h View 1 2 3 2 chunks +2 lines, -3 lines 0 comments Download
M Source/core/layout/LayoutBox.cpp View 1 2 3 4 5 4 chunks +5 lines, -10 lines 0 comments Download
M Source/core/layout/LayoutBoxModelObject.h View 1 chunk +1 line, -0 lines 0 comments Download
M Source/core/layout/LayoutBoxModelObject.cpp View 1 chunk +5 lines, -0 lines 0 comments Download
M Source/core/layout/LayoutObject.h View 1 2 3 4 5 3 chunks +16 lines, -3 lines 0 comments Download
M Source/core/layout/LayoutObject.cpp View 1 2 3 4 5 3 chunks +62 lines, -14 lines 0 comments Download
M Source/core/layout/LayoutObjectChildList.cpp View 1 2 3 1 chunk +1 line, -1 line 0 comments Download
M Source/core/paint/DeprecatedPaintLayer.cpp View 1 2 3 1 chunk +1 line, -3 lines 0 comments Download

Messages

Total messages: 23 (6 generated)
chrishtr
5 years, 4 months ago (2015-08-13 20:40:06 UTC) #2
chrishtr
5 years, 4 months ago (2015-08-13 20:41:30 UTC) #4
Xianzhu
https://codereview.chromium.org/1287413002/diff/40001/LayoutTests/platform/win/fast/repaint/overflow-move-after-scroll-expected.txt File LayoutTests/platform/win/fast/repaint/overflow-move-after-scroll-expected.txt (right): https://codereview.chromium.org/1287413002/diff/40001/LayoutTests/platform/win/fast/repaint/overflow-move-after-scroll-expected.txt#newcode29 LayoutTests/platform/win/fast/repaint/overflow-move-after-scroll-expected.txt:29: [300, 100, 120, 50], This looks incorrect. The old ...
5 years, 4 months ago (2015-08-13 21:24:42 UTC) #5
Xianzhu
P.S. The CL looks great!
5 years, 4 months ago (2015-08-13 21:25:29 UTC) #6
skobes
Thanks for fixing this! The underlying problem is that a composited scroller has multiple GraphicsLayers, ...
5 years, 4 months ago (2015-08-13 21:26:10 UTC) #7
skobes
On 2015/08/13 21:26:10, skobes wrote: > "the rect is in the coordinate space of the ...
5 years, 4 months ago (2015-08-13 21:31:03 UTC) #8
chrishtr
https://codereview.chromium.org/1287413002/diff/40001/LayoutTests/platform/win/fast/repaint/overflow-move-after-scroll-expected.txt File LayoutTests/platform/win/fast/repaint/overflow-move-after-scroll-expected.txt (right): https://codereview.chromium.org/1287413002/diff/40001/LayoutTests/platform/win/fast/repaint/overflow-move-after-scroll-expected.txt#newcode29 LayoutTests/platform/win/fast/repaint/overflow-move-after-scroll-expected.txt:29: [300, 100, 120, 50], On 2015/08/13 at 21:24:42, Xianzhu ...
5 years, 4 months ago (2015-08-13 21:44:27 UTC) #9
Xianzhu
On 2015/08/13 21:26:10, skobes wrote: > > DeprecatedPaintLayer::updateLayerPositionsAfterScrollRecursive has code to > adjust the scroller's ...
5 years, 4 months ago (2015-08-13 21:47:02 UTC) #10
chrishtr
On 2015/08/13 at 21:47:02, wangxianzhu wrote: > On 2015/08/13 21:26:10, skobes wrote: > > > ...
5 years, 4 months ago (2015-08-13 21:57:37 UTC) #11
chrishtr
Fixed by turning off the functionality in DPL::updateLayerPositionsAfterScrollRecursive when scrolling is composited.
5 years, 4 months ago (2015-08-13 23:37:37 UTC) #12
Xianzhu
lgtm except the comments for layout tests, the timeout and need of rebaselines. I just ...
5 years, 4 months ago (2015-08-14 04:31:28 UTC) #13
skobes
lgtm
5 years, 4 months ago (2015-08-14 05:42:02 UTC) #14
chrishtr
https://codereview.chromium.org/1287413002/diff/80001/LayoutTests/paint/invalidation/invalidate-after-composited-scroll.html File LayoutTests/paint/invalidation/invalidate-after-composited-scroll.html (right): https://codereview.chromium.org/1287413002/diff/80001/LayoutTests/paint/invalidation/invalidate-after-composited-scroll.html#newcode14 LayoutTests/paint/invalidation/invalidate-after-composited-scroll.html:14: requestAnimationFrame(function() { On 2015/08/14 at 04:31:28, Xianzhu wrote: > ...
5 years, 4 months ago (2015-08-14 18:26:41 UTC) #15
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1287413002/100001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1287413002/100001
5 years, 4 months ago (2015-08-14 18:36:49 UTC) #18
commit-bot: I haz the power
Try jobs failed on following builders: win_chromium_rel_ng on tryserver.chromium.win (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_rel_ng/builds/93475)
5 years, 4 months ago (2015-08-14 20:05:25 UTC) #20
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1287413002/100001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1287413002/100001
5 years, 4 months ago (2015-08-14 20:07:42 UTC) #22
commit-bot: I haz the power
5 years, 4 months ago (2015-08-14 21:38:59 UTC) #23
Message was sent while issue was closed.
Committed patchset #6 (id:100001) as
https://src.chromium.org/viewvc/blink?view=rev&revision=200567

Powered by Google App Engine
This is Rietveld 408576698