La symbiose entre DirectX et les concepteurs de matériel est claire, l’API Microsoft permet la communication avec différents composants tels que le GPU à partir d’un modèle abstrait de celui-ci et permet aux développeurs de mettre en œuvre les dernières améliorations dans leurs jeux. Soit pour de meilleures performances, soit pour de meilleurs graphismes et son.

Qu’entend-on par Shader Model?

Modèle Shader

Les shaders sont des programmes qui s’exécutent dans les cœurs des GPU et modifient les valeurs d’une primitive graphique à un certain point en 3D ou dans le pipeline de données si nous parlons de calcul via des GPU. Ces programmes sont écrits dans un langage de haut niveau qui, dans le cas de DirectX de Microsoft, est appelé HLSL.

Au fur et à mesure que les GPU s’améliorent, de nouvelles fonctions HLSL sont ajoutées qui permettent l’utilisation de nouvelles fonctions d’un GPU, certaines d’entre elles correspondent aux futures conceptions de NVIDIA, Intel et AMD qui n’ont pas encore été implémentées dans un GPU commercial, mais si cela vient pour aller au marché.

Qu’est-ce qui a été ajouté dans Shader Model 6.6?

Registres d'occupation

Les cœurs GPU, connus sous le nom d’unités de shader en général, bien qu’avec des noms tels que SM by NVIDIA et Compute Unit by AMD, sont en charge de l’exécution des programmes. Celles-ci se présentent sous la forme de noyaux où chaque noyau contient des données et une instruction à exécuter. Les données peuvent provenir du noyau lui-même, cela peut être un pointeur mémoire, ou cela peut dépendre du calcul d’un noyau précédent.

Les cœurs sont regroupés en vagues et en fonction de leur taille, le niveau d’occupation dans les registres des unités de shader sera supérieur ou inférieur. Qu’est-ce que ça veut dire? Bon, au niveau de l’utilisation du shader unit et donc de ses performances, car cela peut conduire à ne pas utiliser toute la puissance du GPU pour le calcul. Plusieurs fois, la taille d’une onde n’atteint pas tous les registres, ce qui entraîne la perte d’une partie de la performance.

Le changement du shader Model 6.6? Il sera désormais possible de créer des vagues de taille variable, ce qui permettra de combler les lacunes qui ne sont pas utilisées et ainsi d’utiliser l’ensemble des ALU de chaque unité SIMD, permettant ainsi une meilleure utilisation des GPU.

Est-ce pour les GPU actuels?

RX 6700 XT

Dans DirectX, les éléments qui ne peuvent pas être utilisés avec le matériel du marché ne sont généralement pas ajoutés, nous pouvons donc supposer qu’au moins il existe une architecture NVIDIA. Intel ou AMD qui peuvent profiter de cette nouveauté. Ça oui, le code des jeux doit être optimisé, alors ne vous attendez pas à ce qu’il soit ajouté à des jeux à venir cette année, car c’est une fonctionnalité que Microsoft vient d’ajouter. Bien que cela aidera à créer des profils optimisés de jeux existants sur des GPU pouvant exécuter plusieurs vagues par unité SIMD.

Il se peut que NVIDIA et AMD aient fait des changements a priori dans leurs RTX 30 et RDNA 2. Comme avec le DirectStorage qui peut être utilisé dans le RTX 20. On peut donc trouver une surprise, même si on ne peut pas exclure Intel avec son Intel Xe -HPG qui devrait apparaître cette année.

Pour permettre l’utilisation d’ondes de taille variable par le programme, il est nécessaire de changer l’ordonnanceur ou l’unité de contrôle de l’unité de shader. Pour le moment, on pense qu’ils n’utilisent qu’une seule onde par unité SIMD, donc s’il n’y a pas assez de registres occupés, alors il n’y a pas assez d’ALU. Avec ce changement, si par exemple un GPU prend en charge une vague de 32 cœurs, alors nous pouvons avoir une vague de 24 composants et une autre de 8 en même temps. Ce changement ne rend pas un GPU plus rapide qu’il ne l’est, mais il le fait fonctionner plus près de 100%, cela, oui, avec le bon code.