WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
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
Details
Formatted Diff
Diff
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
Details
Formatted Diff
Diff
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
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
See
bug 57571
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.
Top of Page
Format For Printing
XML
Clone This Bug