anv: add ASTC LDR emulation
What does this MR do and why?
This MR adds ASTC LDR emulation for gfx 12.5+. Because I only have access to tigerlake at the moment, this is tested on gfx 12 with native astc support disabled. This is also based on an older version of !24672 (merged). I plan to rebase and test on real hw when I have access to. For now, please ignore commit isl: force disable astc
and those before it.
This takes a similar approach as radv does
- if astc emulation is enabled and an astc image is created, a hidden plane for the decompressed data is added
- on texture uploads, invoke a compute shader to decompress to the hidden plane
- when an image view is created for such an image, transparently make it a view into the hidden plane
It also passes CTS.
BUT IT LEAKS MEMORY.
I am also sending this out now because I would like get opinions on the overall approach as well. Especially the CS invocation works like a meta operation: save a subset of command buffer states, modify the same subset of states, dispatch, and restore states. I am not sure if that's the approach we want or should I extend blorp or simple shaders.