The ACO Radeon Compiler Alternative To AMDGPU LLVM Looks Good But Work Isn't Done Yet

For those that missed it, this Valve-funded ACO shader compiler landed in Mesa 19.3-devel last month after being announced earlier in the year. This compiler back-end is an alternative to the existing AMDGPU LLVM compiler back-end used currently by both the OpenGL and Vulkan drivers. ACO is focused on better gaming performance and also quicker shader compile times over LLVM. So far though ACO has just been plumbed into RADV and not the AMDVLK driver or RadeonSI OpenGL.
ACO isn't the default on Mesa 19.3-devel and the developers at XDC 2019 made it clear more work is still pending. They have GFX10/Navi support being worked on but for now only Polaris/GFX8 and Vega/GFX9 hardware fully supports ACO. ACO is working with vertex, fragment, and compute shaders and all of the same extensions as the RADV driver with LLVM except for supporting sub-32-bit data types for now.
There is also still more optimizations possible with ACO that have yet to be tapped. But already their latest numbers show performance improvements ranging from a couple percent in games like Talos Principle and Rise of the Tomb Raider to over 20% better performance in Doom running under Steam Play. The average improvement is just over 5% better. (And, yes, I'll be having some fresh ACO benchmarks out in the next few days.)
Those wishing to learn more about the ACO back-end can see the PDF slide deck from the XDC2019 presentation by Bas Nieuwenhuizen and Daniel Schürmann.
7 Comments