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

Issue 309743002: Move computation of RenderLayer::isUnclippedDescendant into CompositingPropertyUpdater (Closed)

Created:
6 years, 6 months ago by abarth-chromium
Modified:
6 years, 6 months ago
Reviewers:
Ian Vollick, ojan
CC:
blink-reviews, blink-reviews-rendering, zoltan1, eae+blinkwatch, leviw+renderwatch, abarth-chromium, blink-layers+watch_chromium.org, jchaffraix+rendering, pdr., rune+blink, eseidel, esprehn, ojan, Ian Vollick
Visibility:
Public.

Description

Move computation of RenderLayer::isUnclippedDescendant into CompositingPropertyUpdater Prior to this CL, we computed RenderLayer::isUnclippedDescendant in a separate O(n^2) walk of the out-of-flow RenderLayers. On workloads like famo.us, this walk is quite expensive because everything is out-of-flow positioned, and O(n^2) is large. After this CL, we compute this information as we walk down the tree in the CompositingPropertyUpdater, which means we can compute the information in linear time and we can entirely remove the separate tree walk. Moving this computation also lets us rip out a large amount of machinery that existed to prune the extra tree walk that this CL removes. Now that we compute this information with the CompositingPropertyUpdater, we compute it even when composited overflow scrolling is off. This confused some tests that used Internals to poke this state. I've added a workaround to keep theses tests working identically. I'll remove the work around and update the tests in the next CL. Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=175225

Patch Set 1 #

Patch Set 2 : polish #

Total comments: 2

Patch Set 3 : less assert #

Total comments: 4
Unified diffs Side-by-side diffs Delta from patch set Stats (+48 lines, -204 lines) Patch
M Source/core/rendering/RenderLayer.h View 1 2 5 chunks +5 lines, -21 lines 0 comments Download
M Source/core/rendering/RenderLayer.cpp View 9 chunks +2 lines, -129 lines 0 comments Download
M Source/core/rendering/RenderLayerStackingNode.cpp View 2 chunks +1 line, -5 lines 0 comments Download
M Source/core/rendering/compositing/CompositingPropertyUpdater.h View 2 chunks +13 lines, -1 line 0 comments Download
M Source/core/rendering/compositing/CompositingPropertyUpdater.cpp View 4 chunks +15 lines, -5 lines 0 comments Download
M Source/core/rendering/compositing/CompositingReasonFinder.cpp View 1 2 1 chunk +4 lines, -1 line 2 comments Download
M Source/core/rendering/compositing/RenderLayerCompositor.h View 4 chunks +0 lines, -12 lines 0 comments Download
M Source/core/rendering/compositing/RenderLayerCompositor.cpp View 6 chunks +1 line, -29 lines 2 comments Download
M Source/core/testing/Internals.cpp View 1 1 chunk +7 lines, -1 line 0 comments Download

Messages

Total messages: 8 (0 generated)
abarth-chromium
6 years, 6 months ago (2014-06-01 18:23:52 UTC) #1
Ian Vollick
I love it. LGTM. https://codereview.chromium.org/309743002/diff/20001/Source/core/rendering/RenderLayer.cpp File Source/core/rendering/RenderLayer.cpp (left): https://codereview.chromium.org/309743002/diff/20001/Source/core/rendering/RenderLayer.cpp#oldcode114 Source/core/rendering/RenderLayer.cpp:114: , m_isUnclippedDescendant(false) Amazing! https://codereview.chromium.org/309743002/diff/20001/Source/core/rendering/compositing/RenderLayerCompositor.h File ...
6 years, 6 months ago (2014-06-01 19:25:35 UTC) #2
abarth-chromium
https://codereview.chromium.org/309743002/diff/40001/Source/core/rendering/compositing/CompositingReasonFinder.cpp File Source/core/rendering/compositing/CompositingReasonFinder.cpp (right): https://codereview.chromium.org/309743002/diff/40001/Source/core/rendering/compositing/CompositingReasonFinder.cpp#newcode147 Source/core/rendering/compositing/CompositingReasonFinder.cpp:147: // this value isn't stale. On 2014/06/01 19:25:36, Ian ...
6 years, 6 months ago (2014-06-01 19:49:36 UTC) #3
abarth-chromium
The CQ bit was checked by abarth@chromium.org
6 years, 6 months ago (2014-06-01 19:49:41 UTC) #4
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/abarth@chromium.org/309743002/40001
6 years, 6 months ago (2014-06-01 19:49:49 UTC) #5
commit-bot: I haz the power
FYI, CQ is re-trying this CL (attempt #1). The failing builders are: blink_presubmit on tryserver.blink ...
6 years, 6 months ago (2014-06-01 21:07:32 UTC) #6
commit-bot: I haz the power
Change committed as 175225
6 years, 6 months ago (2014-06-01 21:21:40 UTC) #7
ojan
6 years, 6 months ago (2014-06-01 23:29:20 UTC) #8
Message was sent while issue was closed.
https://codereview.chromium.org/309743002/diff/40001/Source/core/rendering/co...
File Source/core/rendering/compositing/RenderLayerCompositor.cpp (left):

https://codereview.chromium.org/309743002/diff/40001/Source/core/rendering/co...
Source/core/rendering/compositing/RenderLayerCompositor.cpp:357: // before
moving this function after checking the dirty bits.
This comment doesn't seem accurate anymore. I mean...it kind of is. FWIW, if we
wanted to, I think we could move the enableCompositingModeIfNeeded check to be
after the dirty bit checking now that we don't early return on !m_compositing
anymore.

https://codereview.chromium.org/309743002/diff/40001/Source/core/rendering/co...
Source/core/rendering/compositing/RenderLayerCompositor.cpp:359:
updateCompositingRequirementsState();
Amazing.

Powered by Google App Engine
This is Rietveld 408576698