Partager via


Étape Stream Output

La phase De sortie de flux (SO) génère en continu (ou flux) les données de vertex de la phase active précédente vers une ou plusieurs mémoires tampons en mémoire. Les données transmises en mémoire peuvent être relues dans le pipeline en tant que données d’entrée ou en lecture à partir du processeur.

Objectif et utilisations

diagramme de l’emplacement de la phase de sortie de flux dans le pipeline

L’étape de sortie de flux transmet les données primitives du pipeline à la mémoire sur son chemin vers le rastériseur. Les données de l’étape précédente peuvent être diffusées en continu en mémoire et/ou passées dans le rastériseur. Les données transmises en mémoire peuvent être relues dans le pipeline en tant que données d’entrée ou en lecture à partir du processeur.

Les données diffusées en mémoire peuvent être lues dans le pipeline lors d’un passage de rendu ultérieur ou être copiées dans une ressource de préproduction (de sorte qu’elles peuvent être lues par le processeur). La quantité de données diffusées en continu peut varier ; Direct3D est conçu pour gérer les données sans avoir besoin d’interroger (le GPU) sur la quantité de données écrites.-->

Il existe deux façons d’alimenter les données de sortie de flux dans le pipeline :

  • Les données de sortie de flux peuvent être réinserdues dans la phase Assembleur d’entrée (IA).
  • Les données de sortie de flux peuvent être lues par des nuanceurs programmables à l’aide de fonctions de chargement .

Entrée

Données de vertex d’une étape de nuanceur précédente.

Sortie

La phase de sortie de flux (SO) génère en continu (ou flux) les données de vertex de la phase active précédente, comme la phase de nuanceur de géométrie (GS), vers une ou plusieurs mémoires tampons en mémoire. Si l’étape de nuanceur de géométrie (GS) est inactive, l’étape Stream Output (SO) génère en continu des données de vertex de l’étape DS (Domain Shader) vers des mémoires tampons (ou si DS est également inactif, à partir de l’étape Vs (Vertex Shader).

Lorsqu’un triangle ou une bande de ligne est lié à la phase Assembleur d’entrée (IA), chaque bande est convertie en liste avant d’être diffusée en continu. Les sommets sont toujours écrits comme des primitives complètes (par exemple, 3 sommets à la fois pour les triangles) ; les primitives incomplètes ne sont jamais diffusées en continu. Les types primitifs avec adjacence ignorent les données d’adjacence avant de diffuser les données en continu.

La phase de sortie de flux prend en charge jusqu’à 4 mémoires tampons simultanément.

  • Si vous diffusez des données en continu dans plusieurs mémoires tampons, chaque mémoire tampon ne peut capturer qu’un seul élément (jusqu’à 4 composants) de données par sommet, avec une foulée de données implicite égale à la largeur d’élément dans chaque mémoire tampon (compatible avec la façon dont les mémoires tampons d’élément unique peuvent être liées pour l’entrée dans les phases de nuanceur). En outre, si les mémoires tampons ont des tailles différentes, l’écriture s’arrête dès que l’une des mémoires tampons est pleine.
  • Si vous diffusez des données en continu dans une seule mémoire tampon, la mémoire tampon peut capturer jusqu’à 64 composants scalaires de données par sommet (256 octets ou moins) ou la foulée de vertex peut atteindre 2 048 octets.

Pipeline graphique