New Activity Around Adapting ACO Compiler Back-End For RadeonSI
As part of the work on the Mesa Radeon Vulkan "RADV" driver, Valve engineers developed the "ACO" compiler back-end that is now used by default for RADV and has shown to deliver better performance at least for RADV than using AMD's official AMDGPU LLVM shader compiler back-end. There has long been talk about adding ACO support to RadeonSI while in recent weeks there has been new code activity on that front.
David Airlie's month old merge request of aco/radv: refactor shader binary build interface was just merged today into Mesa 22.2-devel.
This refactoring of the shader binary build interface moves some code out of ACO and "makes radeonsi interfacing a bit simpler hopefully", according to Airlie.
Airlie went on to add with this now-merged code, "radv stores the shader binary as a linear single allocation, whereas radeonsi prefers to store some pointers to different allocations. I think this should provide enough flexibility to have both work. There may be potential to refactor radeonsi later to use something similar, but it wasn't obvious to me at this point how that might look."
This ACO refactoring is now part of mainline Mesa. Besides the RadeonSI mentions, via Airlie's personal Mesa Git fork is the "radeonsi-aco-clover" branch that has been worked on in recent weeks. That code indeed is fitting the ACO compiler back-end for RadeonSI.
There isn't yet any merge request for adding ACO to RadeonSI and Airlie's branch still seems to be in the works, but nice seeing progress on ACO for RadeonSI after it's long been talked about as a possibility. It will be interesting to see AMD's reaction and most importantly how well ACO proves to work for RadeonSI Gallium3D compared to the AMDGPU LLVM shader compiler back-end. ACO with RADV has shown to perform well and lead to faster game load times, so we'll see how well it can work with RadeonSI once the code is closer to mainline.
David Airlie's month old merge request of aco/radv: refactor shader binary build interface was just merged today into Mesa 22.2-devel.
This refactoring of the shader binary build interface moves some code out of ACO and "makes radeonsi interfacing a bit simpler hopefully", according to Airlie.
Airlie went on to add with this now-merged code, "radv stores the shader binary as a linear single allocation, whereas radeonsi prefers to store some pointers to different allocations. I think this should provide enough flexibility to have both work. There may be potential to refactor radeonsi later to use something similar, but it wasn't obvious to me at this point how that might look."
This ACO refactoring is now part of mainline Mesa. Besides the RadeonSI mentions, via Airlie's personal Mesa Git fork is the "radeonsi-aco-clover" branch that has been worked on in recent weeks. That code indeed is fitting the ACO compiler back-end for RadeonSI.
There isn't yet any merge request for adding ACO to RadeonSI and Airlie's branch still seems to be in the works, but nice seeing progress on ACO for RadeonSI after it's long been talked about as a possibility. It will be interesting to see AMD's reaction and most importantly how well ACO proves to work for RadeonSI Gallium3D compared to the AMDGPU LLVM shader compiler back-end. ACO with RADV has shown to perform well and lead to faster game load times, so we'll see how well it can work with RadeonSI once the code is closer to mainline.
8 Comments