Closed Bug 1769464 Opened 2 years ago Closed 2 years ago

Fix backdrop-filter invalidation

Categories

(Core :: Graphics: WebRender, task)

task

Tracking

()

RESOLVED FIXED
102 Branch
Tracking Status
firefox102 --- fixed

People

(Reporter: gw, Assigned: gw)

References

Details

Attachments

(1 file)

No description provided.

Since primitives are not passed through the backdrop-filter chain
they may be part of during update_prim_dependencies, they may not
expand their coverage rect to the entire coverage rect of the
backdrop-filter primitive that they affect.

In rare cases, this can result in incorrect invalidation where the
edges of a blurred primitive may not invalidate a (partial) tile
when the primitive no longer intersects with that tile.

To handle this correctly, we defer checks on the backdrop filter
validity until we've calculated the dirty rects for all tiles
that are affected by that filter. Then, if any of those regions
are dirty, we invalidate the backdrop-filter primitive region.

In future, it may be better to pass the primitive through both
its standard surface chain, and also the surface chain of the
backdrop-filter. However, this would be quite an involved change
to make, and it's not clear right now if it would be better than
just deferring and invalidating the backdrop-filter prim.

Assignee: nobody → gwatson
Status: NEW → ASSIGNED
Blocks: 1766423
Blocks: 1749625
Pushed by gwatson@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/8944e68eee69
Fix backdrop-filter invalidation r=gfx-reviewers,lsalzman
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 102 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: