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

Issue 213773002: Make compositing updates 30.7% faster for calculator (Closed)

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

Description

Make compositing updates 30.7% faster for calculator This CL makes the compositing updates for the Polymer calculator sample app 30.7% faster by adding a tree-ordered tree walk before computing compositing requirements. Previously, we computed the absolute rects for RenderLayers during a paint-ordered tree walk in computeCompositingRequirements. However, that's inefficient for three reasons: 1) Most of the time is spent maintaining the RenderGeometryMap, but the RenderGeometryMap is optimized for tree-ordered tree walks. If the paint-order walk and the tree-order walk were different, we would thrash the geometry map. 2) The dirty bits for the absolute rects need to propagate down the tree-order, but when walking in paint-order, we didn't have a good way to propagate the bits to the tree-order decendants. Instead, we would set update type to "force" for the rest of the siblings in the paint-order walk, which is both inefficient and incorrect. 3) Finally, this change lets us move the RenderGeometryMap out of computeCompositingRequirements entirely, which means we don't need to maintain the map as we visit every RenderLayer in the system. Intead, we need to maintain the map only for the RenderLayers that we visit in the tree-ordered walk, which is pruned by dirty bits. Now that we have this tree-ordered phase, we can move a bunch of other computation of tree-ordered data to this phase. Currently we compute that data during the paint-ordered walks by walking the tree excessively. However, that works is reserved for a future CL. R=ojan@chromium.org Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=170141

Patch Set 1 #

Total comments: 10

Patch Set 2 : Address comments #

Patch Set 3 : Fix dbg compile #

Patch Set 4 : Fix ASSERT #

Unified diffs Side-by-side diffs Delta from patch set Stats (+163 lines, -69 lines) Patch
M Source/core/core.gypi View 1 chunk +3 lines, -0 lines 0 comments Download
M Source/core/rendering/RenderGeometryMap.cpp View 1 2 3 1 chunk +1 line, -1 line 0 comments Download
M Source/core/rendering/RenderLayer.h View 1 4 chunks +19 lines, -7 lines 0 comments Download
M Source/core/rendering/RenderLayer.cpp View 1 4 chunks +21 lines, -11 lines 0 comments Download
A Source/core/rendering/compositing/CompositingPropertyUpdater.h View 1 1 chunk +36 lines, -0 lines 0 comments Download
A Source/core/rendering/compositing/CompositingPropertyUpdater.cpp View 1 1 chunk +61 lines, -0 lines 0 comments Download
M Source/core/rendering/compositing/RenderLayerCompositor.h View 3 chunks +4 lines, -7 lines 0 comments Download
M Source/core/rendering/compositing/RenderLayerCompositor.cpp View 1 2 16 chunks +18 lines, -43 lines 0 comments Download

Messages

Total messages: 20 (0 generated)
abarth-chromium
6 years, 9 months ago (2014-03-26 22:48:13 UTC) #1
ojan
lgtm https://codereview.chromium.org/213773002/diff/1/Source/core/rendering/RenderLayer.h File Source/core/rendering/RenderLayer.h (right): https://codereview.chromium.org/213773002/diff/1/Source/core/rendering/RenderLayer.h#newcode727 Source/core/rendering/RenderLayer.h:727: unsigned m_decendantNeedsToUpdateAncestorDependentProperties : 1; In the rest of ...
6 years, 9 months ago (2014-03-27 01:06:41 UTC) #2
abarth-chromium
Thanks for the review! https://codereview.chromium.org/213773002/diff/1/Source/core/rendering/RenderLayer.h File Source/core/rendering/RenderLayer.h (right): https://codereview.chromium.org/213773002/diff/1/Source/core/rendering/RenderLayer.h#newcode727 Source/core/rendering/RenderLayer.h:727: unsigned m_decendantNeedsToUpdateAncestorDependentProperties : 1; On ...
6 years, 9 months ago (2014-03-27 01:40:11 UTC) #3
abarth-chromium
The CQ bit was checked by abarth@chromium.org
6 years, 9 months ago (2014-03-27 03:13:08 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/213773002/20001
6 years, 9 months ago (2014-03-27 03:13:20 UTC) #5
commit-bot: I haz the power
The CQ bit was unchecked by commit-bot@chromium.org
6 years, 9 months ago (2014-03-27 03:21:05 UTC) #6
commit-bot: I haz the power
Try jobs failed on following builders: tryserver.blink on mac_blink_compile_dbg
6 years, 9 months ago (2014-03-27 03:21:06 UTC) #7
abarth-chromium
The CQ bit was checked by abarth@chromium.org
6 years, 9 months ago (2014-03-27 03:29:08 UTC) #8
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/abarth@chromium.org/213773002/40001
6 years, 9 months ago (2014-03-27 03:29:17 UTC) #9
commit-bot: I haz the power
The CQ bit was unchecked by commit-bot@chromium.org
6 years, 9 months ago (2014-03-27 03:32:22 UTC) #10
commit-bot: I haz the power
Try jobs failed on following builders: tryserver.blink on blink_presubmit
6 years, 9 months ago (2014-03-27 03:32:22 UTC) #11
abarth-chromium
The CQ bit was checked by abarth@chromium.org
6 years, 9 months ago (2014-03-27 03:47:36 UTC) #12
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/abarth@chromium.org/213773002/40001
6 years, 9 months ago (2014-03-27 03:47:46 UTC) #13
commit-bot: I haz the power
The CQ bit was unchecked by commit-bot@chromium.org
6 years, 9 months ago (2014-03-27 04:35:23 UTC) #14
commit-bot: I haz the power
Try jobs failed on following builders: tryserver.blink on linux_blink_dbg
6 years, 9 months ago (2014-03-27 04:35:24 UTC) #15
abarth-chromium
The CQ bit was checked by abarth@chromium.org
6 years, 9 months ago (2014-03-27 04:57:32 UTC) #16
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/abarth@chromium.org/213773002/60001
6 years, 9 months ago (2014-03-27 04:57:42 UTC) #17
commit-bot: I haz the power
Change committed as 170141
6 years, 9 months ago (2014-03-27 05:56:11 UTC) #18
dcheng
On 2014/03/27 05:56:11, I haz the power (commit-bot) wrote: > Change committed as 170141 This ...
6 years, 8 months ago (2014-04-12 18:21:44 UTC) #19
abarth-chromium
6 years, 8 months ago (2014-04-12 18:49:26 UTC) #20
Message was sent while issue was closed.
On 2014/04/12 18:21:44, dcheng wrote:
> On 2014/03/27 05:56:11, I haz the power (commit-bot) wrote:
> > Change committed as 170141
> 
> This patch appears to be causing one of the browser tests on ChromeOS to fail
> occasionally (browser_tests
> --gtest_filter=NavigationList/FileManagerBrowserTest.Test/0) by triggering
this
> assert:
> ASSERTION FAILED: !m_needsToUpdateAncestorDependentProperties
> ../../third_party/WebKit/Source/core/rendering/RenderLayer.h(493) : const
> WebCore::RenderLayer::AncestorDependentProperties&
> WebCore::RenderLayer::ancestorDependentProperties() const
> 
> The bot is at:
>
http://build.chromium.org/p/chromium.chromiumos/builders/Linux%20ChromiumOS%2...

That's very likely to be the same bug as
https://code.google.com/p/chromium/issues/detail?id=362753.  It appears to only
affect HighDPI devices.  We'll get it fixed soon.

Powered by Google App Engine
This is Rietveld 408576698