RESOLVED WONTFIX 64480
Speed up RenderLayer::updateLayerPositions when scrolling
https://bugs.webkit.org/show_bug.cgi?id=64480
Summary Speed up RenderLayer::updateLayerPositions when scrolling
Julien Chaffraix
Reported 2011-07-13 13:42:53 PDT
On a table where each cell has overflow: hidden, each cell has its own RenderLayer (has they have an overflow clip). Thus when scrolling, we spend a significant amount of time in RenderLayer::updateLayerPositions. This time is mostly spend recalculating the repaint rectangles and the goal of this bug is to avoid doing a recalculation when it is not needed.
Attachments
Proposed fix 1: Use scroll delta to avoid some rect recomputation. (8.26 KB, patch)
2011-07-13 14:14 PDT, Julien Chaffraix
no flags
Proposed fix 2: Don't inherit the scrollDelta disabled from our parent as it is not used. (8.28 KB, patch)
2011-07-14 14:02 PDT, Julien Chaffraix
no flags
Julien Chaffraix
Comment 1 2011-07-13 14:14:02 PDT
Created attachment 100708 [details] Proposed fix 1: Use scroll delta to avoid some rect recomputation.
Simon Fraser (smfr)
Comment 2 2011-07-13 14:48:03 PDT
Simon Fraser (smfr)
Comment 3 2011-07-13 14:49:55 PDT
Comment on attachment 100708 [details] Proposed fix 1: Use scroll delta to avoid some rect recomputation. View in context: https://bugs.webkit.org/attachment.cgi?id=100708&action=review r- due to fixed position issue. > Source/WebCore/rendering/RenderLayer.cpp:287 > + if (scrollDelta && (renderer()->style()->position() == FixedPosition || m_visibleContentStatusDirty)) > + scrollDelta = 0; What if some ancestor is fixed position?
Julien Chaffraix
Comment 4 2011-07-14 11:09:04 PDT
> > Source/WebCore/rendering/RenderLayer.cpp:287 > > + if (scrollDelta && (renderer()->style()->position() == FixedPosition || m_visibleContentStatusDirty)) > > + scrollDelta = 0; > > What if some ancestor is fixed position? Your question got me thinking about the ancestry / descendance in RenderLayer real impact on this change. I think we can have a better fix for that. We cannot use the scrollDelta for fixed position layer but nothing guarantees that our child will have a fixed position so the decision to use the scrollDelta should be per layer not inherited as it is now. Let me test this and come back to you.
Julien Chaffraix
Comment 5 2011-07-14 14:02:44 PDT
Created attachment 100857 [details] Proposed fix 2: Don't inherit the scrollDelta disabled from our parent as it is not used.
Simon Fraser (smfr)
Comment 6 2011-07-14 14:07:03 PDT
Comment on attachment 100857 [details] Proposed fix 2: Don't inherit the scrollDelta disabled from our parent as it is not used. View in context: https://bugs.webkit.org/attachment.cgi?id=100857&action=review > Source/WebCore/rendering/RenderLayer.cpp:286 > + bool canUseScrollDelta = scrollDelta && (renderer()->style()->position() == FixedPosition || m_visibleContentStatusDirty); Shouldn't that be != FixedPosition? I'm worried that you're making patches that obviously don't do the right thing, yet you don't have any new tests, or show any failing tests. This suggests that our test coverage is lacking, and that you should include tests with your change that broke with intermediate versions of the patch.
Julien Chaffraix
Comment 7 2011-07-14 15:39:07 PDT
As discussed our test coverage is fairly inadequate (as it does not detect such a broken patch). Closing this bug WONTFIX as: 1) we need to increase our test coverage of layers 2) bug 57571 is a better option for fixing that
Note You need to log in before you can comment on or make changes to this bug.