Open Bug 1672846 Opened 4 years ago Updated 6 months ago

Gecko generates WebRender display lists with many equivalent ClipChains

Categories

(Core :: Graphics: WebRender, defect, P3)

defect

Tracking

()

People

(Reporter: jimb, Unassigned)

References

(Depends on 1 open bug, Blocks 1 open bug)

Details

The WebRender display lists generated by Gecko contain many ClipChains that are equivalent. On a reasonably complex page, the number of distinct chains is typically around a quarter of the total chains generated. This may make more work for WebRender.

I analyzed webrender display list captures on several pages (nytimes, wikipedia), and checked the contents of Clip and ClipChain display items, as well as ScrollFrame items, which generate an implicit clip.

I think this is probably due to mozilla::layers::ClipManager throwing away its mappings from DisplayItemClipChains to WebRender clip chains too willingly.

This bug is concealing bug 1678108 (DisplayItemCache reuses display items it should not): fixing this bug makes that bug cause reftest failures. DisplayItemCache ignores cache entries if the clip chain id differs, and this bug causes clip chain ids to differ gratuitously, so the stale cache entries caused by that bug happen not to get used.

On the bright side, this bug is probably also causing a lot of perfectly valid DisplayItemCache entries to get ignored as well, so fixing this should improve the cache's effectiveness.

Depends on: 1713168
You need to log in before you can comment on or make changes to this bug.