Dans la base de code utilisée pour la création de la version Mesa 20.2, le passage du pilote Vulkan RADV pour les puces AMD à l'utilisation par défaut du backend pour la compilation des shaders ««, qui est développé par Valve en tant qu'alternative au compilateur de shaders LLVM. Ce changement entraînera une augmentation des performances des jeux et une réduction de leur temps de lancement. Pour revenir à l'ancien backend, une variable d'environnement «RADV_DEBUG=llvm» est prévue.
Le passage du pilote RADV vers le nouveau backend a été possible après que ACO a atteint la parité fonctionnelle avec l'ancien backend développé par AMD pour le pilote AMDGPU, qui continue d'être utilisé dans le pilote OpenGL RadeonSI. Les tests effectués par Valve , montrent qu'ACO surpasse presque deux fois le compilateur de shaders AMDGPU en termes de vitesse de compilation et démontre une augmentation des FPS dans certains jeux lorsqu'ils fonctionnent sur des systèmes avec le pilote RADV.
Le backend ACO vise à garantir la génération de code aussi optimale que possible pour les shaders d'applications de jeu, tout en atteignant une très grande vitesse de compilation. ACO est écrit en C++, développé en tenant compte de l'utilisation pour la compilation JIT et utilise des structures de données rapides pour les itérations, évitant les structures basées sur des pointeurs. La représentation intermédiaire du code se base entièrement sur SSA (Static Single Assignment) et permet une allocation de registres, en précalculant avec précision le registre en fonction du shader.
Ajout : À l'heure actuelle, ACO ne fonctionne que pour le pilote Vulkan Mesa RADV. Mais les développeurs d'ACO , ont déclaré que leur prochaine étape sera de commencer à travailler sur l'extension des capacités d'ACO pour garantir la prise en charge du pilote OpenGL RadeonSI, afin qu'à l'avenir ACO puisse également remplacer par défaut le compilateur de shaders LLVM pour ce pilote.
Source : opennet.ru
