RADV Working On ETC2 Emulation Support For Newer Radeon GPUs To Satisfy Android
ETC2 is the royalty-free texture compression standard developed by Ericsson that has worked its way into the OpenGL and OpenGL ES specifications. RADV already supports ETC2 with Radeon GPUs having the support, but that is rather limited to the likes of AMD Stoney APUs and Vega/GFX9 graphics processors. Unfortunately, the ETC2 support on the AMD GPU side has been rather spotty and not supported by newer APUs/GPUs.
RADV developer Bas Nieuwenhuizen opened a merge request for adding ETC2 emulation to this open-source Radeon Vulkan driver. The motivation for this ETC2 emulation support is so the texture compression method can work with newer hardware like Renoir and RDNA-based GPUs. As given the popularity of ETC2 for mobile use, ETC2 is "super required" for Android.
The emulated support makes use of a shader to decompress after every copy operation. Bas noted in the code, "Includes a quite complicated decode shader. It is not bit-to-bit equivalent to AMD APUs that support ETC2, but close enough to pass [the Vulkan Conformance Test Suite]."
This emulated RADV ETC2 support is to be exposed by default on Android given its requirement while on traditional Linux distributions would need to be enabled via the "radv_require_etc2" DriConf option so it can be toggled on a per-application basis.
In RADV news unrelated to this, merged today to Mesa 22.0 is support for reporting cache counters to the Radeon GPU Profiler for GFX10+ (Navi) graphics processors as another open-source driver improvement. Great seeing the continued RADV improvements for dealing with GPUOpen RGP to enhance the debugging and profiling capabilities by driver and application/game developers, especially with the growing interest thanks to the Steam Deck.