Étape de sortie de flux
L’étape de sortie de flux (SO) peut diffuser en continu les sommets en mémoire juste avant que ces sommets n’arrivent au rastériseur. La sortie du flux fonctionne comme un appui dans le pipeline. Ce clic peut être activé même si les données continuent à descendre vers le rastériseur. Les données envoyées par le biais de la sortie du flux sont concaténées en mémoires tampons. Ces mémoires tampons peuvent être recirculées lors des passages suivants en tant qu’entrées de pipeline.
L’une des contraintes de la sortie du flux est qu’elle est liée au nuanceur de géométrie, en ce qu’elles doivent être créées ensemble (bien que l’une ou l’autre puisse être « NULL »/« off »). Toutefois, les mémoires tampons spécifiques qui sont diffusées en continu vers ne sont pas liées à un nuanceur géométrique particulier et à une paire de sortie de flux. Seule la description des parties des données de vertex à alimenter dans une sortie de flux est liée au nuanceur de géométrie.
La sortie du flux peut être utile pour enregistrer les données de pipeline ordonnées qui seront réutilisées. Par exemple, un lot de sommets peut être « skinned » en passant les sommets dans le pipeline comme s’ils sont des points indépendants (pour les visiter tous une fois), en appliquant des opérations de « skinning » sur chaque sommet et en diffusant les résultats en mémoire. Les sommets « à apparence » enregistrés sont ensuite disponibles pour une utilisation en tant qu’entrée.
Étant donné que la quantité de sortie écrite dans la sortie du flux est dynamique, un nouveau type de dessin, DrawAuto, est nécessaire pour permettre la réutilisation des mémoires tampons de sortie de flux avec l’assembleur d’entrée, sans que le processeur ne soit impliqué pour déterminer la quantité de données réellement écrites. En outre, les requêtes sont nécessaires pour atténuer le dépassement de capacité de sortie du flux, ainsi que pour récupérer la quantité de données écrites dans les mémoires tampons de sortie de flux (D3D10DDI_QUERY_STREAMOVERFLOWPREDICATE et D3D10DDI_QUERY_STREAMOUTPUTSTATS de l’énumération D3D10DDI_QUERY ).
Le runtime Direct3D appelle les fonctions de pilote suivantes pour créer et configurer la sortie du flux :
CalcPrivateGeometryShaderWithStreamOutput