Closed
Bug 800198
Opened 13 years ago
Closed 13 years ago
Stop unnecessarily invalidating transformed frames when the page is scrolled
Categories
(Core :: SVG, defect)
Tracking
()
RESOLVED
FIXED
mozilla19
People
(Reporter: epinal99-bugzilla2, Assigned: mattwoodrow)
References
Details
(Keywords: regression)
Attachments
(3 files)
|
204 bytes,
text/html
|
Details | |
|
455 bytes,
text/html
|
Details | |
|
3.20 KB,
patch
|
roc
:
review+
bajaj
:
approval-mozilla-aurora+
|
Details | Diff | Splinter Review |
STR:
1) Open this SVG demo: http://www.jasondavies.com/factorisation-diagrams/
2) Scroll the page with the vertical scrollbar or the middle button
Result:
Scrolling is slowed down and isn't as smooth as in FF16. After scrolling the page during a while, f you switch to another tab then you come back, there is a slight hang to display the tab with the SVG demo.
m-c
good=2012-08-02
bad=2012-08-03
http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=588424024294&tochange=89dcadd42ec4
There are some bugs about SVG patches, like bug 655877 or bug 776054.
tracking-firefox17:
--- → ?
tracking-firefox18:
--- → ?
tracking-firefox19:
--- → ?
Keywords: regression,
regressionwindow-wanted
Comment 1•13 years ago
|
||
Regression window(cached m-i)
Good:
http://hg.mozilla.org/integration/mozilla-inbound/rev/a799b5bff84c
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/17.0 Firefox/17.0 ID:20120801155239
Bad:
http://hg.mozilla.org/integration/mozilla-inbound/rev/b077c43a4306
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/17.0 Firefox/17.0 ID:20120801163038
Pushlog:
http://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=a799b5bff84c&tochange=b077c43a4306
And svg.display-lists.painting.enabled = false helps
Blocks: 776054
Comment 3•13 years ago
|
||
Also seeing very slow scrolling on this page which uses SVG images:
http://www.circuits.io/
Comment 4•13 years ago
|
||
Passing this to jwatt to take a look since it's a possible regression from his work on things that landed in 16.
Assignee: nobody → jwatt
Comment 5•13 years ago
|
||
Regarding the regression range from comment 1, I can't really see much of a difference on Mac. When I do see a huge slowdown is much later when bug 539356 (DLBI) landed.
Blocks: dlbi
Comment 6•13 years ago
|
||
The issue after DLBI landed is that when we scroll we now invalidate and repaint the areas of all the SVGs that are onscreen instead of just blitting them.
Comment 7•13 years ago
|
||
This reduced testcase shows how we invalidate the area of the transformed contents of the SVG each time we scroll.
Comment 8•13 years ago
|
||
This problem is not confined to SVG. The same thing happens with HTML that has CSS transforms applied.
Comment 9•13 years ago
|
||
I'm finding it a bit of a headache to debug, but one thing I've noticed is that in ContainerState::ProcessDisplayItems |isFixed = mBuilder->IsFixedItem(item, &activeScrolledRoot)| incorrectly sets isFixed to true in these testcases. That seems to be because nsDisplayListBuilder::IsFixedItem calls nsLayoutUtils::IsScrolledByRootContentDocumentDisplayportScrolling assuming it will return true if the the item is scrolled. However, Matt tells me that this is only valid on Mobile, and it will _always_ return false on non-Mobile. Clearly that's wrong.
Comment 10•13 years ago
|
||
(In reply to Jonathan Watt [:jwatt] from comment #5)
> Regarding the regression range from comment 1, I can't really see much of a
> difference on Mac.
So,I think this is Windows specific Bug.
> When I do see a huge slowdown is much later when bug
> 539356 (DLBI) landed.
This bug happens since Firefox17 and later.
So,I think the bug 539356 (DLBI) that you pointed out to be a different bug.
| Assignee | ||
Comment 11•13 years ago
|
||
Attachment #671596 -
Flags: review?(roc)
Comment on attachment 671596 [details] [diff] [review]
Make mContainerReferenceFrame the reference frame for the items inside the container, not the container itself
Review of attachment 671596 [details] [diff] [review]:
-----------------------------------------------------------------
This could be tested pretty easily.
::: layout/base/nsDisplayList.h
@@ +2595,5 @@
> virtual uint32_t GetPerFrameKey() MOZ_OVERRIDE { return (mIndex << nsDisplayItem::TYPE_BITS) | nsDisplayItem::GetPerFrameKey(); }
>
> + virtual const nsIFrame* ReferenceFrameForChildren() const MOZ_OVERRIDE {
> + if (!mTransformGetter) {
> + return mFrame;
Add a comment explaining that transform display items with mTransformGetters aren't reference frames.
Attachment #671596 -
Flags: review?(roc) → review+
Comment 13•13 years ago
|
||
(In reply to Alice0775 White from comment #10)
> So,I think this is Windows specific Bug.
Seems like this bug has become about fixing the later DLBI issue, so let's open a different bug for that issue.
Assignee: jwatt → matt.woodrow
No longer blocks: 776054
Comment 14•13 years ago
|
||
Created (In reply to Jonathan Watt [:jwatt] from comment #13)
> Seems like this bug has become about fixing the later DLBI issue, so let's
> open a different bug for that issue.
Cloned to bug 801949.
Also spun off bug 801918 and bug 801923 for other issues mentioned here.
Updated•13 years ago
|
tracking-firefox17:
+ → ---
Summary: Scrolling slowdown and hang on SVG demo → Stop unnecessarily invalidating transformed frames when the page is scrolled
| Assignee | ||
Comment 15•13 years ago
|
||
Comment 16•13 years ago
|
||
Status: NEW → RESOLVED
Closed: 13 years ago
status-firefox19:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla19
Updated•13 years ago
|
status-firefox18:
--- → affected
Comment 17•12 years ago
|
||
(In reply to Ed Morley [:edmorley UTC+0] from comment #16)
> https://hg.mozilla.org/mozilla-central/rev/4ea9ef4e135e
Ready for uplift Matt?
| Assignee | ||
Comment 18•12 years ago
|
||
Comment on attachment 671596 [details] [diff] [review]
Make mContainerReferenceFrame the reference frame for the items inside the container, not the container itself
[Approval Request Comment]
Bug caused by (feature/regressing bug #): Bu 539356
User impact if declined: Scrolling performance impacted.
Testing completed (on m-c, etc.): Been on m-c for a few weeks without issues.
Risk to taking this patch (and alternatives if risky): Very low risk.
String or UUID changes made by this patch: None
Attachment #671596 -
Flags: approval-mozilla-aurora?
Updated•12 years ago
|
Attachment #671596 -
Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
| Assignee | ||
Comment 19•12 years ago
|
||
Updated•12 years ago
|
Comment 20•12 years ago
|
||
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0
Mozilla/5.0 (X11; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:19.0) Gecko/20100101 Firefox/19.0
I can reproduce this on Firefox 19 beta 5 (buildID: 20130206083616), latest Nightly (buildID: 20130211031055), latest Aurora (buildID: 20130211042016).
Comment 21•12 years ago
|
||
(In reply to Jonathan Watt [:jwatt] from comment #13)
> (In reply to Alice0775 White from comment #10)
> > So,I think this is Windows specific Bug.
>
> Seems like this bug has become about fixing the later DLBI issue, so let's
> open a different bug for that issue.
Filed Bug 840503
You need to log in
before you can comment on or make changes to this bug.
Description
•