Closed
Bug 1472733
Opened 7 years ago
Closed 7 years ago
Layer invalidation problems with CSS transforms
Categories
(Core :: Web Painting, defect, P2)
Core
Web Painting
Tracking
()
RESOLVED
FIXED
mozilla63
Tracking | Status | |
---|---|---|
firefox63 | --- | fixed |
People
(Reporter: mikokm, Assigned: mikokm)
References
Details
Attachments
(2 files)
Bug 1345891 introduced fixes to integer overflows during layer tree invalidation. Unfortunately, these changes regressed https://keithclark.co.uk/labs/css-fps/nojs/ pretty badly, at least on macOS.
Comment 1•7 years ago
|
||
It's a trainwreck on Win10 as well. *Really* slow and lots of invalidation issues.
Updated•7 years ago
|
Priority: -- → P2
Assignee | ||
Updated•7 years ago
|
Status: NEW → ASSIGNED
Assignee | ||
Comment 2•7 years ago
|
||
At least one part of the problem here is that nsRegion can store areas beyond of what can be presented with nsRect, that is returned by nsRegion::GetBounds(). This overflow can happen when computing shadow visible regions for layers that do not use intermediate surfaces[1].
[1]: https://searchfox.org/mozilla-central/source/gfx/layers/composite/LayerManagerComposite.cpp#1462
Assignee | ||
Comment 3•7 years ago
|
||
Assignee | ||
Comment 4•7 years ago
|
||
The changes by bug 1480832 fixed the flickering during shadow visible region overflows.
The layer tree invalidation still seems to have problems, as shown by the attached testcase: there are obvious pauses during the rotation, especially when the rotation angle is near 90 degrees. The transform is smooth if composition is forced for every frame by commenting out the early return from LayerManagerComposite::UpdateAndRender()[1].
There is also some flickering, exactly two times per rotation, which might or might not be a related problem.
[1]: https://searchfox.org/mozilla-central/rev/2466b82b729765fb0a3ab62f812c1a96a7362478/gfx/layers/composite/LayerManagerComposite.cpp#527
Assignee | ||
Comment 5•7 years ago
|
||
Comment 6•7 years ago
|
||
Comment on attachment 9005079 [details]
Bug 1472733 - Improve IntRect overflow handling when calculating layer invalidation area and visible region
Matt Woodrow (:mattwoodrow) has approved the revision.
Attachment #9005079 -
Flags: review+
Pushed by mikokm@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/6ba3579108f3
Improve IntRect overflow handling when calculating layer invalidation area and visible region r=mattwoodrow
Comment 8•7 years ago
|
||
bugherder |
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
status-firefox63:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla63
Comment 9•7 years ago
|
||
Out of interest, was this mean to apply with WebRender on? Because both the attached testcase and the keithclark.co.uk link are still a mess on latest Nightly, macOS 10.12, 2017 Macbook Pro 15".
Assignee | ||
Comment 10•7 years ago
|
||
(In reply to Robin Whittleton from comment #9)
> Out of interest, was this mean to apply with WebRender on? Because both the
> attached testcase and the keithclark.co.uk link are still a mess on latest
> Nightly, macOS 10.12, 2017 Macbook Pro 15".
No, this patch fixed problems with layers that webrender is not using. I have updated the title to clarify this.
Summary: Invalidation problems with CSS transforms → Layer invalidation problems with CSS transforms
Updated•7 years ago
|
QA Whiteboard: [good first verify]
You need to log in
before you can comment on or make changes to this bug.
Description
•