iris: Fake ASTC 5x5 with uncompressed textures on Gen9 to avoid GPU hangs

Kenneth Graunke requested to merge kwg/mesa:iris-astc5x5-fallback into master

ASTC5x5 has some nasty workarounds on Intel Gen9 hardware—having both ASTC5x5 and CCS data in the sampler cache at the same time will lead to hangs. i965 goes to some heroics to prevent that from occurring, tracking whether ASTC5x5 data might be present, and resolving away CCS. It's a bunch of mess that we don't need on newer hardware, for a feature which is fairly rare (I think I've only ever seen it in GFXBench4 for Android). We might still want to do this, ultimately.

On the other hand, Gallium has support for faking ASTC textures with uncompressed ones—required to support ES 3.2 on desktop hardware which doesn't actually do ASTC. With a tiny bit of refinement, we can use this mechanism to fake ASTC5x5 on Gen9, but use actual hardware ASTC for all other block sizes. This eliminates the GPU hangs via almost no code.

Using the actual ASTC5x5 hardware would likely be much faster, but I'm sort of tempted to wait and see if anyone needs this other than artificial benchmarks.

Merge request reports