Open Bug 1570867 Opened 5 years ago Updated 6 months ago

Universal filtering support for WR shared texture cache entries

Categories

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

enhancement

Tracking

()

People

(Reporter: kvark, Unassigned)

References

(Blocks 1 open bug)

Details

Currently, shared texture cache pages have the hardcoded sampling mode associated to them: we have A8 and A16 with only linear sampling, and RGBA8 with both linear and nearest. These are still different textures. If the client requests a nearest-sampled alpha texture, we fall back to a standalone entry, that poses a risk of blowing the draw call count (since it will be a separate draw call).

When swizzling support got implemented in bug 1548339, we started splitting batches even within the same texture page, based on the swizzling parameter. GL device module took care of adjusting the texture parameters for a draw call so that the swizzling is set up as expected.

Technically, we could do the same with sampling modes. We could have shared texture cache page that are only different per image format. And within each texture we could be placing entries of different sampling and swizzling. We'd still be splitting batches based on the sampling mode, like we do today, but we'd be able to:

  1. place the texture data more efficiently, given that nearest and linearly sampled entries would be able to exist on the same layer
  2. support more cases in the shared cache, like nearest A8 and A16 entries
Priority: -- → P3
Severity: normal normal → S3 S3
Blocks: wr-todos
You need to log in before you can comment on or make changes to this bug.