Valve développe ACO, un compilateur de shader ciblant AMD,
qui réduit parfois les temps de compilation du GPU AMD de plus de 45% pour les jeux Linux

Vers la fin de 2016, Valve a commencé à parrainer le travail d'ingénieurs de pilotes graphiques open source, créant ainsi la base du groupe de graphiques open source Valve. En tirant parti du modèle de développement ouvert de la base de code du pilote Mesa, Valve a été en mesure de fournir une prise en charge directe de Steam et de ses fonctionnalités aux utilisateurs de pilotes graphiques Intel et AMD.

L’éditeur assure « qu’à l'époque, nous avons reçu une tonne d'aide de la part de la communauté; les gens se sont rassemblés et ont produit une liste très précieuse de jeux qui ne fonctionnaient pas sur Mesa, ainsi que de nombreux autres bogues affectant les jeux Steam ».

Et l’éditeur a semblé satisfait des résultats : « jusqu'à présent, ce projet a été un franc succès: grâce aux efforts conjugués de toutes les parties travaillant sur Mesa, nous pensons que l'expérience utilisateur acquise lors de la lecture de jeux Steam haut de gamme s'est considérablement améliorée ces dernières années ».

L’équipe a depuis poursuivi sa croissance au fil du temps : « au début de l’année dernière, nous avons pu prendre du recul et réfléchir à des efforts de développement plus importants, au lieu de nous concentrer entièrement sur les bogues et les demandes de fonctionnalités entrants. Jusqu'à présent, la majorité du travail que nous avons effectué sur les performances et les fonctionnalités du jeu s'est avérée être liée au compilateur shader du pilote. De même, nous pensons que la majorité des régressions rencontrées par les utilisateurs proviennent du compilateur de shader ».

Nom : welcome.png
Affichages : 1535
Taille : 18,9 Ko

Les pilotes AMD OpenGL et Vulkan utilisent actuellement un compilateur de shader faisant partie du projet LLVM en amont. Ce projet est gigantesque et a de nombreux objectifs, la compilation en ligne de shaders de jeux n'étant que l'un d'entre eux. Cela peut entraîner des compromis de développement, dans lesquels il est plus difficile d'améliorer les fonctionnalités propres aux jeux, ou encore, les fonctionnalités spécifiques aux jeux seraient souvent accidentellement brisées par les développeurs de LLVM travaillant sur d'autres tâches. La vitesse de compilation des shader en particulier en est un exemple: ce n'est pas vraiment un facteur critique dans la plupart des autres scénarios, mais simplement une chose agréable à avoir. Cependant, pour les jeux, le temps de compilation est essentiel et la compilation lente des shaders peut conduire à une mauvaise expérience de gaming.

« Dans cet esprit, et avec nos nouvelles ressources de l’année dernière, nous avons décidé de nous lancer dans une expérience. Pourrions-nous créer un compilateur de shader qui soit, à la base, conçu et mis au point dans le seul but de jouer ? Cela apporterait-il une différence d'expérience significative pour nos utilisateurs ? »

Vient alors ACO

Pour répondre à cette question, l’éditeur a commencé à travailler sur ACO, un nouveau compilateur de shader Mesa pour le matériel AMD. Ses deux principaux objectifs sont la meilleure génération de code possible pour les shaders de jeu et une compilation la plus rapide possible.

« En commençant par radv, nous avons d'abord demandé aux shaders d'un seul jeu de compiler et de restituer correctement le rendu, puis nous avons travaillé à la création de jeux supplémentaires. Nous sommes récemment arrivés au point où il est capable de gérer une grande variété de jeux sans problèmes, ce qui nous permet de nous initier à l'optimisation et de tester nos théories initiales »

Vous trouverez ci-dessous quelques points saillants des résultats. Comme Valve l’a prévu, rester concentré sur les temps de compilation tout au long du développement lui a permis de faire beaucoup de progrès sur cet aspect:

Nom : temps.png
Affichages : 1354
Taille : 23,7 Ko

Pour le moment, ACO ne gère que les étapes de pixel et de calcul. Une fois les autres étapes implémentées, Valve s’attend à ce que les temps de compilation soient encore réduits.

En ce qui concerne les performances dans le jeu, Valve semble également avoir pu obtenir d'excellents résultats, dépassant parfois ses attentes initiales:

Nom : jeu.png
Affichages : 1508
Taille : 46,1 Ko

L’éditeur reconnaît cependant que « la plupart des autres jeux que nous avons testés ne semblent pour la plupart pas affectés en termes de performances d'exécution, mais bénéficient néanmoins des améliorations de la compilation ».

Satisfait de ces résultats et voulant les améliorer, Valve a décidé de publier l'arbre source d'ACO aux fins de discussion et de révision par les développeurs de Mesa. Plus important encore, l’éditeur pense qu'il est également prêt à être utilisé par les utilisateurs, car de nombreux jeux fonctionnent de manière stable et démontrent une réduction notable du stuttering lors de ses propres tests. De plus, obtenir des rapports de problèmes des utilisateurs testant une grande variété de jeux et d'applications aidera grandement à diriger les efforts de développement. Pour faciliter les tests, Valve prépare des packages pour certaines distributions et un système de suivi des bogues dédié.

Ce qu’il faut retenir

Actuellement, les pilotes AMD OpenGL et Vulkan utilisent tous les deux un compilateur faisant partie du projet LLVM, mais Valve affirme que ce projet est « énorme », qu'il a de nombreux objectifs différents et que la « compilation en ligne de shaders de jeu n'en est qu'un ». L’éditeur mentionne également que, du fait de leur concentration sur différentes choses, les temps de compilation des shader peuvent parfois être interrompus accidentellement par des développeurs travaillant sur d'autres objectifs LLVM. L'équipe Valve travaille donc sur un compilateur spécifique au jeu pour le projet de pilote open source Mesa, en tant qu'alternative à LLVM.

L’équipe est arrivée au point où le nouveau compilateur ACO fonctionne sans problème sur un large éventail de jeux. Il passe donc à une phase d’optimisation ainsi qu’à une phase de test plus publique. Valve a publié l’arborescence source ACO pour les développeurs Mesa avec laquelle commencer à jouer et cherche des commentaires de test de la part de la communauté Linux.

Passant des pilotes RADV Mesa utilisant LLVM aux pilotes RADV exécutant ACO, le temps de compilation a parfois été réduit de plus de 45%. Les tests de performance montrent qu’il est arrivé que le compilateur ACO soit sept fois plus rapide que le compilateur LLVM alternatif, et passe beaucoup moins de temps à occuper le processeur.

À l'heure actuelle, le compilateur ACO ne traite que les étapes de pixel et de calcul, mais Valve prévoit que, lorsque d'autres étapes sont implémentées, les performances et les temps de compilation ne devraient que s'améliorer.

Instructions de tests pour ACO
Code source

Source : Valve

Et vous ?

Qu'en pensez-vous ?

Voir aussi :

Steam va continuer à supporter les jeux sur Ubuntu après le rétropédalage de Canonical, mais Valve semble vouloir explorer d'autres distributions
Epic Games continue sa campagne de conquête en annonçant deux nouvelles exclusivités à sa plateforme, qui étaient précédemment annoncées sur Steam
« Epic Games va cesser de faire des exclusivités si Steam offre aux développeurs plus d'argent », a annoncé Tim Sweeney, PDG d'Epic Game
Jeux vidéo : sur Steam, un éditeur propose MHRD pour ceux qui veulent savoir comment un CPU fonctionne en le concevant à partir de blocs de base