Closed Bug 1574399 Opened 5 years ago Closed 5 years ago

Support multi-resolution tiles in WR picture caching.

Categories

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

enhancement

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: 1536360

Instead of a constant tile size for picture cache tiles, this patch
allows tiles to exist at different resolutions, depending on how
often the content in the tiles are changing.

As a general principle, the smaller the tiles the better for GPU
rasterization time (fewer pixels to update), but the worse for
CPU time (dependency and batch generation) and CPU driver time
(draw calls and render target bindings).

This patch implements a quad-tree per large (1k) tile. WR uses a
simple set of rules to determine when it makes sense to split a
large tile (if it's being invalidated a lot) or merge four children
into one larger tile (if many of the child tiles are being updated,
negating most of the win from splitting).

This is also a step towards allowing picture caching for the UI
layers (where there are large areas of solid color). With this
patch, we can subdivide those large areas into smaller tiles, which
then takes advantage of the existing optimization to detect solid
color tiles and draw them with a fast path, avoiding a backing
texture and rasterizing the tile.

Priority: -- → P3
Attachment #9085982 - 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: