Support more granular invalidation for WR picture caching.
Categories
(Core :: Graphics: WebRender, enhancement)
Tracking
()
People
(Reporter: gw, Assigned: gw)
References
(Blocks 1 open bug)
Details
Attachments
(1 obsolete file)
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 1•5 years ago
|
||
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.
Updated•5 years ago
|
Assignee | ||
Updated•5 years ago
|
Description
•