Closed Bug 1561812 Opened 5 years ago Closed 5 years ago

Support more granular invalidation for WR picture caching.

Categories

(Core :: Graphics: WebRender, enhancement)

enhancement
Not set
normal

Tracking

()

RESOLVED INVALID

People

(Reporter: gw, Assigned: gw)

References

(Blocks 1 open bug)

Details

Attachments

(1 obsolete file)

No description provided.
Assignee: nobody → gwatson
Blocks: 1559879
Blocks: 1536360

In order to reduce the number of pixels drawn when updating a tile,
it would be helpful to determine an exact set of dirty rect(s) within
the tile. This would allow optimizations such as scissor rects to be
set when updating a tile, or even some kind of multi resolution tile
support in future.

With the previous dependency scheme, this was not feasible due to
how the data was structured. For example, the tile stored the list
of image keys it depended on, but had no way to correlate that with
an area of the tile affected by that image key.

This patch restructures the way dependencies are stored so that it
will be possible to determine exact dirty rects (although this is
left to do as a follow up).

A new type, ContentDescriptor is introduced. This stores the dependencies
for the entire tile cache in a small set of arrays. For each tile
the PrimitiveDescriptor is adjusted to store primitive specific
information and a range of variable length dependencies this
primitive contains (e.g. clips, image keys etc). This will allow
easy calculation of dirty regions since we know exactly which
primitive is affected any time one of those items is invalid.

The patch is also more memory and time efficient than the previous
dependency code. This is because the per-tile dependency information
is smaller, and refers to the per-tile-cache ContentDescriptor. In
this way, any primitives that occupy multiple tiles are stored
more efficiently.

Attachment #9075574 - Attachment is obsolete: true
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: