Fase de salida de flujo (SO)
La fase De salida de flujo (SO) genera continuamente datos de vértices (o secuencias) de la fase activa anterior a uno o varios búferes en memoria. Los datos transmitidos a la memoria se pueden volver a distribuir en la canalización como datos de entrada o volver a leer desde la CPU.
Propósito y usos
La fase de salida de flujo transmite datos primitivos de la canalización a la memoria en su camino al rasterizador. Los datos de la fase anterior se pueden transmitir a la memoria o pasarlos al rasterizador. Los datos transmitidos a la memoria se pueden volver a distribuir en la canalización como datos de entrada o volver a leer desde la CPU.
Los datos transmitidos a la memoria se pueden leer de nuevo en la canalización en un paso de representación posterior o se pueden copiar en un recurso de almacenamiento provisional (por lo que la CPU puede leerlos). La cantidad de datos transmitidos puede variar; Direct3D está diseñado para controlar los datos sin necesidad de consultar (la GPU) sobre la cantidad de datos escritos.->
Hay dos maneras de alimentar los datos de salida de flujo en la canalización:
- Los datos de salida de flujo se pueden devolver a la fase ensamblador de entrada (IA).
- Los sombreadores programables pueden leer los datos de salida de flujo mediante funciones de carga .
Entrada
Datos de vértices de una fase anterior del sombreador.
Salida
La fase de salida de flujo (SO) genera continuamente datos de vértices (o secuencias) de la fase activa anterior, como la fase sombreador de geometría (GS), en uno o varios búferes en memoria. Si la fase del sombreador de geometría (GS) está inactiva, la fase Salida de flujo (SO) genera continuamente datos de vértices de la fase sombreador de dominio (DS) en búferes en memoria (o si DS también está inactivo, desde la fase sombreador de vértices (VS).
Cuando una franja de triángulos o líneas está enlazada a la fase ensamblador de entrada (IA), cada franja se convierte en una lista antes de que se transmitan. Los vértices siempre se escriben como primitivos completos (por ejemplo, 3 vértices a la vez para triángulos); los primitivos incompletos nunca se transmiten. Los tipos primitivos con adyacencia descartan los datos de adyacencia antes de transmitirlos.
La fase de salida de flujo admite hasta 4 búferes simultáneamente.
- Si transmite datos a varios búferes, cada búfer solo puede capturar un solo elemento (hasta 4 componentes) de datos por vértice, con un intervalo de datos implícito igual al ancho de elemento de cada búfer (compatible con la forma en que los búferes de un solo elemento se pueden enlazar para la entrada en fases del sombreador). Además, si los búferes tienen tamaños diferentes, la escritura se detiene en cuanto cualquiera de los búferes está lleno.
- Si transmite datos a un solo búfer, el búfer puede capturar hasta 64 componentes escalares de datos por vértice (256 bytes o menos) o el intervalo de vértices puede ser de hasta 2048 bytes.
Temas relacionados