Vanaf vandaag met de nieuwste Mesa 23.2-devel-code, is de omgevingsvariabeleoptie AMD_DEBUG=useaco nu beschikbaar om de RadeonSI Gallium3D-driver te vertellen dat hij Valve’s ACO shader-compiler-back-end moet gebruiken in plaats van de AMDGPU LLVM-shader-compiler-back-end voor ondersteunde shader-typen.
Valve heeft jarenlang gewerkt aan de ACO compiler back-end als een sneller alternatief voor AMD’s officiële LLVM-gebaseerde shader compiler gebruikt door RadeonSI, voorheen door RADV, en ook de ROCm compute stack, etc. De ACO compiler back-end is van vitaal belang geweest voor het succes van de RADV-driver en maakte het tot een geweldige driver voor Linux-gamers op het Steam Deck en degenen op de Linux-desktop die genieten van de open-source Radeon-graphics.
Al jaren wordt er gesproken over het brengen van ACO naar RadeonSI en het is langzaam aan het gebeuren. Dankzij dit samenvoegverzoek van Qiang Yu is het laatste stukje van de puzzel dat samenkomt, mogelijk gemaakt ACO-compiler met de optie AMD_DEBUG=useaco voor ondersteunde shader-typen.
Maar met deze eerste samenvoeging is de ondersteuning van de ACO-compiler met RadeonSI alleen voor monolithische pixel-shaders. Qiang uitgelegd in de MR:
“ACO-compilatie kan worden ingeschakeld met AMD_DEBUG=useaco. Momenteel wordt alleen monolithische PS ondersteund. Het zou een enorme verandering zijn om alle shaders in één keer naar ACO te schakelen, dus mijn plan wordt één voor één ingeschakeld voor eenvoudigere beoordeling en debuggen.”
blockquote>
Hij heeft de bekende regressies doorgenomen die er oorspronkelijk waren voor de ACO-compiler met pixel-shaders in vergelijking met de LLVM-compiler-back-end.Het is leuk om te zien dat deze laatste batch ACO + RadeonSI-code binnenkomt met enkele honderden regels nieuwe code. Hopelijk zullen er binnenkort meer soorten shaders gaan werken voor ACO met RadeonSI. Ander wachtend ACO-werk voor Mesa is te vinden via deze GitLab-query.