Valve Lands A Last Minute AMD ACO Improvement For Mesa 24.0
This week prior to the Mesa 24.0 feature freeze / code branching, a notable merge request landed that had been worked on the past few months by one of Valve's open-source Linux graphics driver developers.
Daniel Schürmann of Valve's Linux graphics team spent the past several months working on a new post-RA scheduler for instruction level parallelism (ILP) with ACO. ACO as a reminder is the compiler started by Valve engineers as an alternative to the AMDGPU LLVM back-end. ACO is used by default on RADV and has worked out very well for delivering quicker game load times and better in-game performance for this open-source Radeon Vulkan driver than using the LLVM back-end.
This 3 month old merge request landed this week in time for Mesa 24.0.
With testing many different shaders over dozens of games, the generated instruction count was down by about 2.5%, the code size around 2% lower, etc. Some users report this quantifying in some games like Cyberpunk 2077 yielding 4~14% better performance. This benefits not only Valve's Steam Deck with AMD graphics but all AMD Radeon graphics with the Mesa RADV driver using ACO.
Great work as always to those involved at Valve on enhancing the open-source Linux graphics ecosystem overall. This jives nicely with all of the other improvements to find in Mesa 24.0, with countless contributions thanks to Valve. The Mesa 24.0 weekly release candidates began today while the stable Mesa 24.0 release should be out sometime in February.
Over in kernel space with Linux 6.8 is also the experimental AMD color management properties as more good news and looking for a very good 2024 on the open-source AMD driver side.
Daniel Schürmann of Valve's Linux graphics team spent the past several months working on a new post-RA scheduler for instruction level parallelism (ILP) with ACO. ACO as a reminder is the compiler started by Valve engineers as an alternative to the AMDGPU LLVM back-end. ACO is used by default on RADV and has worked out very well for delivering quicker game load times and better in-game performance for this open-source Radeon Vulkan driver than using the LLVM back-end.
"This pass implements a simple forward list-scheduler which works on a small partial DAG of 16 nodes at any time. Only ALU instructions are scheduled entirely freely. Memory load instructions must be kept in-order and any other instruction must not be re-scheduled at all.
The main goal of this scheduler is to create more memory clauses, schedule memory loads early, and to improve ALU instruction level parallelism."
This 3 month old merge request landed this week in time for Mesa 24.0.
With testing many different shaders over dozens of games, the generated instruction count was down by about 2.5%, the code size around 2% lower, etc. Some users report this quantifying in some games like Cyberpunk 2077 yielding 4~14% better performance. This benefits not only Valve's Steam Deck with AMD graphics but all AMD Radeon graphics with the Mesa RADV driver using ACO.
Great work as always to those involved at Valve on enhancing the open-source Linux graphics ecosystem overall. This jives nicely with all of the other improvements to find in Mesa 24.0, with countless contributions thanks to Valve. The Mesa 24.0 weekly release candidates began today while the stable Mesa 24.0 release should be out sometime in February.
Over in kernel space with Linux 6.8 is also the experimental AMD color management properties as more good news and looking for a very good 2024 on the open-source AMD driver side.
14 Comments