Reduce compositing update in Silk's toggle_drawer by 20%
This reduces the amount of time spent in compositing update for Silk's toggle_drawer test case by 20%. Previously, we would update the geometry for every composited layer mapping during every compositing update, regardless of whether any of the inputs to updateGraphicsLayerGeometry had changed. This CL introduces dirty bits on CompositedLayerMapping to track which RenderLayers underwent a change that could have resulted in changes during updateGraphicsLayerGeometry. This CL takes a basic approach, which is sufficient for toggle_drawer. Specifically, if a RenderLayer changes style, we mark its CompositedLayerMapping (and any ancestors and decendants) as needing a geometry update. If we go through layout or scroll, we trigger a forced update, which updates the geometry of all graphics layers. Over time, we can improve this system to track dirtiness during layout. We might also be able to avoid marking every ancestor dirty if we removed the downward tree walks during updateGraphicsLayerGeometry. Instead, we could compute the descendant-dependant information in an earlier phase and detect whether it changed directly. R=esprehn@chromium.org, ojan@chromium.org Review URL: https://codereview.chromium.org/183763016 git-svn-id: svn://svn.chromium.org/blink/trunk@168554 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Showing
Please register or sign in to comment