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

Issue 208313004: Cache the absolute bounding box rect on RenderLayer. (Closed)

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

Description

Cache the absolute bounding box rect on RenderLayer. Set the cache dirty in RenderLayer::styleChanged and recompute the rect during computeCompositingRequirements. Also, get rid of absoluteBoundingBox from RenderLayer. The only caller can use the new cached value since it always happens after computeCompositingRequirements. The unfortunate thing is that if a RenderLayer is modified, we need to recompute the absolute bounds for all its descendant layers. This saves ~3% of the computeCompositingRequirements time on the tip of tree version of https://github.com/abarth/app-widgets/blob/master/demo.html. The version checked into the key_silk_cases pageset doesn't show the perf win because it doesn't have many RenderLayers outside of the drawer being dragged. The bigger win will come from the following patch that adds/removes layers to the RenderGeometryMap lazily. Right now that's 10-20% of the computeCompositingRequirements time in this demo. Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=169786

Patch Set 1 #

Patch Set 2 : add fixme #

Total comments: 8

Patch Set 3 : address review comments #

Patch Set 4 : fix name #

Patch Set 5 : fix name for real #

Patch Set 6 : remove extre line break #

Unified diffs Side-by-side diffs Delta from patch set Stats (+75 lines, -17 lines) Patch
M Source/core/rendering/RenderLayer.h View 1 2 3 4 5 5 chunks +10 lines, -4 lines 0 comments Download
M Source/core/rendering/RenderLayer.cpp View 1 2 3 4 4 chunks +17 lines, -5 lines 0 comments Download
M Source/core/rendering/compositing/RenderLayerCompositor.h View 1 2 3 4 3 chunks +8 lines, -1 line 0 comments Download
M Source/core/rendering/compositing/RenderLayerCompositor.cpp View 1 2 3 12 chunks +40 lines, -7 lines 0 comments Download

Messages

Total messages: 6 (0 generated)
ojan
6 years, 9 months ago (2014-03-21 23:10:34 UTC) #1
esprehn
lgtm, some nits https://codereview.chromium.org/208313004/diff/20001/Source/core/rendering/RenderLayer.cpp File Source/core/rendering/RenderLayer.cpp (right): https://codereview.chromium.org/208313004/diff/20001/Source/core/rendering/RenderLayer.cpp#newcode1186 Source/core/rendering/RenderLayer.cpp:1186: void RenderLayer::setAbsoluteBoundingBoxForOverlap(const IntRect& rect) Not having ...
6 years, 9 months ago (2014-03-21 23:28:01 UTC) #2
ojan
https://codereview.chromium.org/208313004/diff/20001/Source/core/rendering/RenderLayer.cpp File Source/core/rendering/RenderLayer.cpp (right): https://codereview.chromium.org/208313004/diff/20001/Source/core/rendering/RenderLayer.cpp#newcode1186 Source/core/rendering/RenderLayer.cpp:1186: void RenderLayer::setAbsoluteBoundingBoxForOverlap(const IntRect& rect) On 2014/03/21 23:28:01, esprehn wrote: ...
6 years, 9 months ago (2014-03-22 00:25:43 UTC) #3
ojan
The CQ bit was checked by ojan@chromium.org
6 years, 9 months ago (2014-03-22 00:25:49 UTC) #4
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/ojan@chromium.org/208313004/100001
6 years, 9 months ago (2014-03-22 00:25:57 UTC) #5
commit-bot: I haz the power
6 years, 9 months ago (2014-03-22 04:33:08 UTC) #6
Message was sent while issue was closed.
Change committed as 169786

Powered by Google App Engine
This is Rietveld 408576698