Open Bug 1624272 Opened 5 years ago Updated 2 years ago

Decouple texture cache storage and batching

Categories

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

enhancement

Tracking

()

People

(Reporter: nical, Unassigned)

References

(Blocks 1 open bug)

Details

Instead of updating shared texture arrays directly:

  • Upload texture data to long lived buffers that aren't necessarily grouped by sampler types.
  • Have a separate set of textures into which images are packed with a very aggressive eviction policy for batching purposes.
  • Sll of these textures don't need to be texture arrays.

The advantages are:

  • Flexibility: we could use different packing strategies for the staging and batching textures.
  • We don't need to worry about resizing the staging textures and the aggressive eviction of the batching textures means they can also remain small and not change size.
  • Allow using more efficient packing algorithms without worrying too much about fragmentation of the batching texture atlases.
  • Get rid of texture arrays in the texture cache.

The main disadvantage is that many on-screen images exist twice causing an increase in GPU memory and some extra copying work between the staging and batching textures.

It's a bit unclear whether there is more we can/should do about packing and updating staging textures beyond what we do with the shared texture atlases today.

Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.