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

Issue 351673007: Move paint invalidation after compositing update (Closed)

Created:
6 years, 6 months ago by Julien - ping for review
Modified:
6 years, 5 months ago
CC:
blink-reviews
Project:
blink
Visibility:
Public.

Description

Move paint invalidation after compositing update Now that repaint-after-layout is the new world, we can make invalidation its own phase. Moving it after compositing update removes chicken-and-egg bugs that we had in the invalidation code. The new code invalidates from the layout roots up to the RenderView so that we can always do a full tree traversal. This shouldn't trigger extra invalidations and yield to a more simple code. I checked the new baselines visually and it's overall a neutral change, where we do better one some tests (e.g. fast/repaint/intermediate-layout-position-clip.html) and we do worse on others (e.g. fast/repaint/layout-state-scrolloffset*). The bulk of the text changes are invalidation going to a different GraphicsLayer which indicates that we had some compositing container changes not accounted for. BUG=360286 Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=177349 Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=177415

Patch Set 1 #

Patch Set 2 : Epic patch ready for review. #

Total comments: 4

Patch Set 3 : New approach that should work, added a test based on Adam's review #

Total comments: 1

Patch Set 4 : Implemented a full RenderView traversal per Elliott's comment #

Patch Set 5 : With moar rebaselining #

Patch Set 6 : Added some missing entries in TestExpectations #

Total comments: 3

Patch Set 7 : Fixed the setMayNeedPaintInvalidation code. #

Patch Set 8 : Rebaselined (again) #

Total comments: 4

Patch Set 9 : Added the missing TestExpectation suppressions #

Unified diffs Side-by-side diffs Delta from patch set Stats (+219 lines, -302 lines) Patch
M LayoutTests/TestExpectations View 1 2 3 4 5 6 7 8 1 chunk +41 lines, -0 lines 0 comments Download
M LayoutTests/compositing/repaint/resize-repaint-expected.txt View 1 2 3 4 5 6 7 1 chunk +3 lines, -1 line 0 comments Download
M LayoutTests/compositing/squashing/add-remove-squashed-layers-expected.txt View 1 8 chunks +4 lines, -6 lines 0 comments Download
M LayoutTests/compositing/squashing/resize-squashing-layer-that-needs-full-repaint-expected.txt View 1 1 chunk +1 line, -0 lines 0 comments Download
M LayoutTests/compositing/squashing/tricky-element-removal-crash-expected.txt View 1 1 chunk +1 line, -4 lines 0 comments Download
M LayoutTests/css3/flexbox/repaint-opacity-change-expected.txt View 1 1 chunk +0 lines, -1 line 0 comments Download
M LayoutTests/fast/css-grid-layout/grid-item-z-index-change-repaint-expected.txt View 1 2 3 4 1 chunk +1 line, -0 lines 0 comments Download
M LayoutTests/fast/images/repaint-subrect-grid.html View 1 chunk +2 lines, -2 lines 0 comments Download
M LayoutTests/fast/repaint/background-resize-height-expected.txt View 1 22 chunks +32 lines, -22 lines 0 comments Download
M LayoutTests/fast/repaint/background-resize-width-expected.txt View 1 22 chunks +22 lines, -32 lines 0 comments Download
M LayoutTests/fast/repaint/border-radius-repaint-2-expected.txt View 1 2 3 4 5 6 7 1 chunk +4 lines, -4 lines 0 comments Download
M LayoutTests/fast/repaint/change-transform-expected.txt View 1 2 3 1 chunk +2 lines, -0 lines 0 comments Download
M LayoutTests/fast/repaint/fixed-and-absolute-position-scrolled-expected.txt View 1 1 chunk +0 lines, -2 lines 0 comments Download
M LayoutTests/fast/repaint/intermediate-layout-position-clip-expected.txt View 1 2 3 4 5 6 7 8 1 chunk +1 line, -3 lines 0 comments Download
A LayoutTests/fast/repaint/multi-layout-one-frame.html View 1 2 1 chunk +18 lines, -0 lines 0 comments Download
A + LayoutTests/fast/repaint/multi-layout-one-frame-expected.txt View 1 2 1 chunk +2 lines, -1 line 0 comments Download
M LayoutTests/fast/repaint/resources/line-flow-with-floats.js View 1 chunk +1 line, -3 lines 0 comments Download
M LayoutTests/fast/repaint/window-resize-background-image-fixed-centered-composited-expected.txt View 1 3 chunks +5 lines, -5 lines 0 comments Download
M LayoutTests/fast/repaint/window-resize-background-image-fixed-centered-expected.txt View 1 2 chunks +2 lines, -2 lines 0 comments Download
M LayoutTests/fast/repaint/window-resize-background-image-generated-expected.txt View 1 2 chunks +2 lines, -2 lines 0 comments Download
M LayoutTests/fast/repaint/window-resize-background-image-non-fixed-expected.txt View 1 3 chunks +5 lines, -5 lines 0 comments Download
M LayoutTests/fast/repaint/window-resize-media-query-expected.txt View 1 3 chunks +3 lines, -4 lines 0 comments Download
M LayoutTests/fast/repaint/window-resize-percent-html-expected.txt View 1 2 3 4 5 6 7 3 chunks +2 lines, -2 lines 0 comments Download
M LayoutTests/fast/repaint/window-resize-percent-width-height-expected.txt View 1 3 chunks +2 lines, -2 lines 0 comments Download
M LayoutTests/fast/repaint/window-resize-positioned-bottom-expected.txt View 1 3 chunks +3 lines, -3 lines 0 comments Download
M LayoutTests/fast/repaint/window-resize-positioned-percent-top-expected.txt View 1 3 chunks +2 lines, -2 lines 0 comments Download
M LayoutTests/fast/repaint/window-resize-vertical-writing-mode-expected.txt View 1 2 chunks +2 lines, -2 lines 0 comments Download
M LayoutTests/fast/repaint/window-resize-viewport-percent-expected.txt View 1 2 3 4 5 6 7 3 chunks +2 lines, -2 lines 0 comments Download
M LayoutTests/platform/linux/compositing/squashing/remove-squashed-layer-plus-move-expected.txt View 1 2 3 4 1 chunk +0 lines, -2 lines 0 comments Download
M LayoutTests/platform/linux/fast/repaint/inline-outline-repaint-expected.txt View 1 1 chunk +0 lines, -13 lines 0 comments Download
M LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset-expected.txt View 1 1 chunk +1 line, -2 lines 0 comments Download
M LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset2-expected.txt View 1 1 chunk +1 line, -3 lines 0 comments Download
M LayoutTests/platform/linux/fast/repaint/layout-state-scrolloffset3-expected.txt View 1 1 chunk +1 line, -2 lines 0 comments Download
M LayoutTests/platform/linux/fast/repaint/shift-relative-positioned-container-with-image-removal-expected.txt View 1 2 3 1 chunk +1 line, -2 lines 0 comments Download
M LayoutTests/platform/linux/fast/repaint/subtree-layoutstate-transform-expected.txt View 1 2 3 1 chunk +1 line, -3 lines 0 comments Download
M LayoutTests/platform/linux/fast/repaint/table-shrink-row-repaint-expected.txt View 1 2 3 4 5 6 7 2 chunks +6 lines, -13 lines 0 comments Download
M LayoutTests/platform/linux/svg/as-image/animated-svg-as-image-expected.png View 1 2 3 4 Binary file 0 comments Download
M LayoutTests/platform/linux/svg/as-image/animated-svg-as-image-same-image-expected.png View 1 2 3 4 Binary file 0 comments Download
M LayoutTests/platform/linux/svg/carto.net/tabgroup-expected.txt View 1 6 chunks +7 lines, -116 lines 0 comments Download
M LayoutTests/platform/linux/svg/transforms/animated-path-inside-transformed-html-expected.png View 1 2 3 4 Binary file 0 comments Download
M LayoutTests/platform/linux/svg/transforms/animated-path-inside-transformed-html-expected.txt View 1 2 3 4 1 chunk +1 line, -1 line 0 comments Download
M LayoutTests/platform/linux/virtual/softwarecompositing/squashing/remove-squashed-layer-plus-move-expected.txt View 1 2 3 4 1 chunk +0 lines, -2 lines 0 comments Download
M LayoutTests/svg/as-object/embedded-svg-size-changes-no-layout-triggers-expected.txt View 1 1 chunk +0 lines, -3 lines 0 comments Download
M LayoutTests/svg/as-object/nested-embedded-svg-size-changes-no-layout-triggers-1-expected.txt View 1 1 chunk +0 lines, -3 lines 0 comments Download
M LayoutTests/svg/as-object/nested-embedded-svg-size-changes-no-layout-triggers-2-expected.txt View 1 1 chunk +0 lines, -3 lines 0 comments Download
M LayoutTests/svg/zoom/page/relative-sized-document-scrollbars-expected.txt View 1 1 chunk +0 lines, -4 lines 0 comments Download
M LayoutTests/virtual/softwarecompositing/layer-creation/should-invoke-deferred-compositing-expected.txt View 1 1 chunk +4 lines, -1 line 0 comments Download
M Source/core/frame/FrameView.h View 1 2 3 4 2 chunks +3 lines, -1 line 0 comments Download
M Source/core/frame/FrameView.cpp View 1 2 3 4 5 6 7 8 6 chunks +28 lines, -16 lines 0 comments Download

Messages

Total messages: 24 (0 generated)
Julien - ping for review
6 years, 6 months ago (2014-06-24 22:39:00 UTC) #1
abarth-chromium
https://codereview.chromium.org/351673007/diff/20001/Source/core/frame/FrameView.cpp File Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/351673007/diff/20001/Source/core/frame/FrameView.cpp#newcode962 Source/core/frame/FrameView.cpp:962: m_paintInvalidationSubtreeRoot = rootForThisLayout; What happens if there are multiple ...
6 years, 6 months ago (2014-06-24 22:57:27 UTC) #2
esprehn
Do we really need this subtree stuff yet? Can we just walk the entire render ...
6 years, 6 months ago (2014-06-25 00:20:32 UTC) #3
leviw_travelin_and_unemployed
On 2014/06/25 at 00:20:32, esprehn wrote: > Do we really need this subtree stuff yet? ...
6 years, 6 months ago (2014-06-25 00:21:42 UTC) #4
Julien - ping for review
On 2014/06/25 at 00:21:42, leviw wrote: > On 2014/06/25 at 00:20:32, esprehn wrote: > > ...
6 years, 6 months ago (2014-06-25 22:33:31 UTC) #5
Julien - ping for review
https://codereview.chromium.org/351673007/diff/20001/Source/core/frame/FrameView.cpp File Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/351673007/diff/20001/Source/core/frame/FrameView.cpp#newcode962 Source/core/frame/FrameView.cpp:962: m_paintInvalidationSubtreeRoot = rootForThisLayout; On 2014/06/24 22:57:26, abarth wrote: > ...
6 years, 6 months ago (2014-06-25 22:34:30 UTC) #6
Julien - ping for review
New patch up for review, it should address the reviews' comments.
6 years, 6 months ago (2014-06-25 23:01:13 UTC) #7
leviw_travelin_and_unemployed
Out of curiosity, have you compared local perf results before/after?
6 years, 6 months ago (2014-06-25 23:05:50 UTC) #8
Julien - ping for review
On 2014/06/25 at 23:05:50, leviw wrote: > Out of curiosity, have you compared local perf ...
6 years, 6 months ago (2014-06-26 00:02:25 UTC) #9
Julien - ping for review
Following a discussion with Elliott on #blink, he convinced me to do the full RenderView ...
6 years, 5 months ago (2014-07-01 16:12:17 UTC) #10
abarth-chromium
https://codereview.chromium.org/351673007/diff/100001/Source/core/frame/FrameView.cpp File Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/351673007/diff/100001/Source/core/frame/FrameView.cpp#newcode966 Source/core/frame/FrameView.cpp:966: container->setMayNeedPaintInvalidation(true); void setMayNeedPaintInvalidation(bool b) { m_bitfields.setMayNeedPaintInvalidation(b); // Make sure ...
6 years, 5 months ago (2014-07-01 20:02:19 UTC) #11
esprehn
This lgtm, but I don't think that extra ancestor walk is needed. You already walk ...
6 years, 5 months ago (2014-07-01 20:03:34 UTC) #12
Julien - ping for review
https://codereview.chromium.org/351673007/diff/100001/Source/core/frame/FrameView.cpp File Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/351673007/diff/100001/Source/core/frame/FrameView.cpp#newcode966 Source/core/frame/FrameView.cpp:966: container->setMayNeedPaintInvalidation(true); On 2014/07/01 20:03:34, esprehn wrote: > This shouldn't ...
6 years, 5 months ago (2014-07-01 21:44:36 UTC) #13
Julien - ping for review
The CQ bit was checked by jchaffraix@chromium.org
6 years, 5 months ago (2014-07-01 22:36:44 UTC) #14
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/jchaffraix@chromium.org/351673007/140001
6 years, 5 months ago (2014-07-01 22:37:09 UTC) #15
commit-bot: I haz the power
Change committed as 177349
6 years, 5 months ago (2014-07-02 01:47:46 UTC) #16
ojan
https://codereview.chromium.org/351673007/diff/140001/Source/core/frame/FrameView.cpp File Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/351673007/diff/140001/Source/core/frame/FrameView.cpp#newcode955 Source/core/frame/FrameView.cpp:955: // The following loop ensures that we mark up ...
6 years, 5 months ago (2014-07-02 03:33:58 UTC) #17
lushnikov
A revert of this CL has been created in https://codereview.chromium.org/369483004/ by lushnikov@chromium.org. The reason for ...
6 years, 5 months ago (2014-07-02 06:35:28 UTC) #18
Julien - ping for review
https://codereview.chromium.org/351673007/diff/140001/Source/core/frame/FrameView.cpp File Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/351673007/diff/140001/Source/core/frame/FrameView.cpp#newcode955 Source/core/frame/FrameView.cpp:955: // The following loop ensures that we mark up ...
6 years, 5 months ago (2014-07-02 18:27:06 UTC) #19
Julien - ping for review
On 2014/07/02 at 06:35:28, lushnikov wrote: > A revert of this CL has been created ...
6 years, 5 months ago (2014-07-02 19:51:54 UTC) #20
Julien - ping for review
The CQ bit was checked by jchaffraix@chromium.org
6 years, 5 months ago (2014-07-02 19:52:00 UTC) #21
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/jchaffraix@chromium.org/351673007/160001
6 years, 5 months ago (2014-07-02 19:52:20 UTC) #22
commit-bot: I haz the power
Change committed as 177415
6 years, 5 months ago (2014-07-02 19:56:42 UTC) #23
lushnikov
6 years, 5 months ago (2014-07-02 19:59:56 UTC) #24
Message was sent while issue was closed.
On 2014/07/02 19:56:42, I haz the power (commit-bot) wrote:
> Change committed as 177415

Nice, thank you.

Powered by Google App Engine
This is Rietveld 408576698