Pipelines et nuanceurs avec Direct3D 12

Le pipeline programmable Direct3D 12 augmente considérablement les performances de rendu par rapport aux interfaces de programmation graphique de la génération précédente.

Pipeline graphique Direct3D 12

Le diagramme suivant illustre le pipeline et l’état graphiques Direct3D 12.

diagramme illustrant l’état et le pipeline direct3d 12

Un pipeline graphique est le flux séquentiel d’entrées et de sorties de données lors du rendu des images gpu. Compte tenu de l’état du pipeline et des entrées, le GPU effectue une série d’opérations pour créer les images obtenues. Un pipeline graphique contient des nuanceurs, qui effectuent des effets et des calculs de rendu programmables et des opérations de fonction fixe.

Notez ce qui suit lorsque vous faites référence au diagramme d’état du pipeline :

  • Les tables de descripteurs et les tas peuvent être organisés arbitrairement : les SMV, les CBV et les UAV peuvent être référencés et alloués dans n’importe quel ordre.
  • Certaines opérations du pipeline sont configurables. Par exemple, la fusion de sortie fonctionne généralement sur une base lecture-modification-écriture avec les vues cible de rendu et gabarit de profondeur. Toutefois, le pipeline peut être configuré de sorte que l’une de ces vues soit en lecture seule ou en écriture seule.
  • Les échantillonneurs statiques ne font pas partie des arguments racine, car ils sont statiques.

Objets d’état de pipeline

Direct3D 12 introduit l’objet d’état du pipeline (PSO). Au lieu de stocker et de représenter l’état du pipeline sur un grand nombre d’objets de haut niveau, les états des composants de pipeline tels que l’assembleur d’entrée, le rastériseur, le nuanceur de pixels et la fusion de sortie sont stockés dans un fournisseur d’alimentation. Un psO est un objet d’état de pipeline unifié qui est immuable après sa création. Le psO actuellement sélectionné peut être modifié rapidement et dynamiquement, et le matériel et les pilotes peuvent convertir directement un psO en instructions et état matériels natifs, préparant le GPU pour le traitement graphique. Pour appliquer un psO, le matériel copie une quantité minimale d’état précalculé directement dans les registres matériels. Cela supprime la surcharge provoquée par la recomputation continue de l’état matériel par le pilote graphique en fonction de tous les paramètres de rendu et de pipeline actuellement applicables. Le résultat est une réduction significative de la surcharge d’appel de tirage, des performances accrues et un plus grand nombre d’appels de dessin par image.

L’authentification unique actuellement appliquée définit et connecte tous les nuanceurs utilisés dans le pipeline de rendu. Le langage HLSL (High Level Shader Language) de Microsoft est précompilé dans des objets de nuanceur, qui sont ensuite utilisés au moment de l’exécution comme entrée pour les objets d’état de pipeline. Pour plus d’informations sur le fonctionnement de l’authentification unique dans le pipeline graphique, consultez Gestion de l’état du pipeline graphique dans Direct3D 12.

Pipeline de calcul Direct3D 12

Le diagramme suivant illustre l’état et le pipeline de calcul Direct3D 12.

Diagramme montrant le pipeline de calcul Direct3D 12.

Il n’existe pas d’unités de fonction fixes dans ce pipeline, mais les tas de descripteurs, les tas d’échantillonneurs et les échantillonneurs statiques sont toujours disponibles dans le calcul.

Envoi de travail dans Direct3D 12