Le pilote Vulkan utilise désormais le backend de construction ACO de Valve

Dans la base de code utilisée pour former la version Mesa 20.2, le pilote RADV, Vulkan pour les puces AMD basculé vers le backend par défaut pour compiler shaders »ACO«, développé par Valve comme alternative au compilateur de shader LLVM.

Ce changement spécifié a été fait avec la fin d'obtenir une augmentation de la productivité des jeux et une réduction de son temps de lancement.

Le changement du contrôleur RADV au nouveau backend était possible après avoir atteint la parité dans la fonctionnalité ACO avec l'ancien backend développé par AMD pour le pilote AMDGPU, qui continue d'être utilisé dans le pilote RadeonSI OpenGL.

Les tests effectués par Valve ont montré que ACO est presque deux fois plus rapide que le compilateur de build de shader AMDGPU et démontre une augmentation du FPS dans certains jeux lorsqu'ils sont exécutés sur des systèmes avec le pilote RADV.

Les pilotes AMD OpenGL et Vulkan utilisent actuellement un compilateur de shader qui fait partie du projet en amont LLVM. Ce projet est énorme et a beaucoup d'objectifs différents, et la compilation en ligne de shaders de jeu n'est que l'un d'entre eux. 

Cela peut conduire à des compromis de développement, où l'amélioration des fonctionnalités spécifiques au jeu est plus difficile qu'elle ne le serait autrement, ou lorsque les fonctionnalités spécifiques au jeu sont souvent accidentellement interrompues par les développeurs LLVM travaillant sur d'autres choses.

Le backend de ACO vise à garantir que le code est généré de la manière la plus optimale possible pour les shaders d'applications de jeu et atteindre une vitesse de compilation très élevée.

ACO il est écrit en C ++, développé en gardant à l'esprit l'applicabilité de la compilation JIT, et utilisez les plus rapides pour parcourir les structures de données, en évitant les structures basées sur des pointeurs comme les listes liées et les chaînes d'utiliser def. La représentation intermédiaire du code est entièrement basée sur SSA (Single Static Allocation) et permet l'attribution d'enregistrements, en calculant avec précision l'enregistrement en fonction du shader.

La représentation intermédiaire du code est entièrement basée sur SSA (Single Static Allocation) et permet l'attribution d'enregistrements, en calculant avec précision l'enregistrement en fonction du shader.

Actuellement, seuls les pixels sont pris en charge (fragments) et calculez des shaders sur des GPU AMD discrets (dGPU VI +). Cependant, ACO collecte déjà correctement les shaders pour tous les jeux testés, y compris les shaders complexes de Shadow of the Tomb Raider et Wolfenstein II.

Le prototype ACO proposé pour le test il est presque deux fois plus rapide que le compilateur de shader AMDGPU et démontre une augmentation du FPS dans certains jeux lorsqu'ils sont exécutés sur des systèmes avec le contrôleur RADV.

Pour comprendre un peu plus la pertinence de l'adoption du code de Valve, il est important de l'objectif est de garantir la génération de code la plus optimale possible pour les shaders d'applications de jeu, ainsi qu'une vitesse de compilation très élevée.

Le compilateur de shader disponible dans Mesa utilise des composants LLVM, qui ne permettent pas d'atteindre la vitesse de compilation souhaitée et ne permettent pas un contrôle total du flux de contrôle, qui dans le passé a déjà causé de graves erreurs.

En outre, éviter LLVM permet de mettre en œuvre une analyse plus agressive des écarts et une gestion plus fine de la charge des journaux, permettant une génération de fichiers exécutables plus efficace.

Enfin, c’est aussi Il est important de noter qu'ACO ne fonctionne actuellement que pour le contrôleur Mesa RADV Vulkan. Mais les développeurs ACO ont confirmé que leur prochaine étape consistera à commencer à travailler sur l'extension des capacités d'ACO pour prendre en charge le pilote OpenGL RadeonSI, de sorte qu'à l'avenir et pour ce pilote, ACO puisse remplacer le compilateur de shader LLVM par défaut. .

Et combien ceux qui préfèrent continuer avec le backend utilisé précédemment du compilateur de shader LLVM, ils peuvent y revenir, il leur suffit de changer une variable.

La variable d'environnement fournie pour effectuer cette modification est "RADV_DEBUG = llvm".


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.

  1.   VarierLourd dit

    Et comment un utilisateur choisit-il avec quel backend exécuter un jeu? Quels fichiers doit-il modifier?