Prominent AMD Radeon Gallium3D driver developer Marek Olšák just changed the RadeonSI driver’s default from the AMDGPU LLVM shader compiler back-end over to the ACO back-end initially developed by Valve. This should lead to better performance and quicker shader compilation and in turn faster game loads.
While the RADV Vulkan driver has long been using the AMD Compiler “ACO” back-end by default rather than AMDGPU LLVM, the RadeonSI driver has long been a holdout. The ACO compiler support for RadeonSI has evolved nicely into shape in recent months and now today the default change finally happened — which will be found in the Mesa 26.0 release due out in mid-Q1.
Marek argued the merits of ACO by default:
“NIR+ACO is the best SSA-based shader compiler for AMD GPUs that exists.
There are many reasons why NIR+ACO is better than LLVM, and I have a long list that I’ve collected over the years, but the major ones are better GPU performance (faster GPU memory access thanks to better clauses and scheduling, a lot less SGPR/VGPR spilling, better loop support, slightly smaller shader binaries), 8x lower shader compile times, and smaller memory footprint of the IR.
It also shows that NIR is a mature SSA-based shader compiler that helps drivers generate optimized code very quickly.
And most importantly, radeonsi has slightly better Viewperf performance with NIR+ACO than LLVM, and that’s difficult to ignore.”
The change is merged while the AMD_DEBUG=usellvm environment variable can be used instead if wanting to fallback to the LLVM back-end instead.
Quite an achievement considering that ACO was started outside the confines of AMD over at Valve. New RadeonSI comparison benchmarks coming up soon on Phoronix.
