Closed
Bug 1415932
Opened 7 years ago
Closed 6 years ago
Do a better job collapsing equivalent clip rects in ScrollingLayersHelper
Categories
(Core :: Graphics: WebRender, enhancement, P2)
Tracking
()
RESOLVED
WORKSFORME
Tracking | Status | |
---|---|---|
firefox57 | --- | unaffected |
firefox58 | --- | unaffected |
People
(Reporter: kats, Unassigned)
References
(Blocks 1 open bug, )
Details
(Whiteboard: [wr-reserve] [gfx-noted])
I was looking some more at the motionmark page (see URL) for bug and noticed the nsDisplayTransform for each bouncing star has a DisplayItemClipChain item that is equivalent but not the same. That is the pointer values are different, but DisplayItemClipChain::Equal would return true for them. That means that the hash we use to cache the clip ids in ScrollingLayersHelper will treat them all as separate clips and we won't get to reuse them. I had made a note of this [1] as a potential future optimization, and it looks like it would help on this page so we should consider doing it. [1] http://searchfox.org/mozilla-central/rev/c99d035f00dd894feff38e4ad28a73fb679c63a6/gfx/layers/wr/ScrollingLayersHelper.h#73
Updated•7 years ago
|
Whiteboard: [gfx-noted][wr-mvp][triage] → [wr-mvp][triage][gfx-noted]
Reporter | ||
Comment 1•7 years ago
|
||
Turns out doing this is not as easy as I thought. Attempting to do this exposed a latent issue where the clip chain pointer of a nsDisplayMask can be null, which results in the PushClip call at [1] *not* creating cache overrides in the wr::DisplayListBuilder. I tried hacking around this by making [2] return true in this case anyway. That didn't work fully because without the cache overrides the parent clip on items inside the nsDisplayMask doesn't get set to the mask clip, and the mask is effectively ignored by WR. Trying to fix this gets pretty hairy. I think if we fix servo/webrender#1964 and expose that mechanism via some API, that will make things better. Then we can just intersect the clip chains the way they're meant to be, instead of trying to glue them all into a single long chain which doesn't always work. [1] http://searchfox.org/mozilla-central/rev/c99d035f00dd894feff38e4ad28a73fb679c63a6/layout/painting/nsDisplayList.cpp#9462 [2] http://searchfox.org/mozilla-central/rev/c99d035f00dd894feff38e4ad28a73fb679c63a6/gfx/webrender_bindings/WebRenderAPI.h#422
Updated•7 years ago
|
Blocks: stage-wr-trains
status-firefox57:
--- → unaffected
status-firefox58:
--- → unaffected
Whiteboard: [wr-mvp][triage][gfx-noted] → [wr-mvp][triage][gfx-noted][wr-reserve-candidate]
Updated•7 years ago
|
Whiteboard: [wr-mvp][triage][gfx-noted][wr-reserve-candidate] → [wr-reserve] [gfx-noted]
Updated•6 years ago
|
Priority: P3 → P2
Reporter | ||
Comment 2•6 years ago
|
||
I think we're doing as good a job of collapsing as we can now.
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → WORKSFORME
You need to log in
before you can comment on or make changes to this bug.
Description
•