dcl_uav_structured (sm5 - asm)
Dichiarare una visualizzazione di accesso non ordinata (UAV) per l'uso da parte di uno shader.
dcl_uav_structured[_glc] dstUAV, structByteStride |
---|
Elemento | Descrizione |
---|---|
dstUAV |
[in] The UAV. |
structByteStride |
[in] Dimensioni della struttura in byte. |
Commenti
dstUAV è un registro u# dichiarato come riferimento a unorderedAccessView di un buffer strutturato con lo stride specificato che deve essere associato allo slot UAV # nell'API.
Il contenuto della struttura non ha alcun tipo; le operazioni eseguite sulla memoria possono interpretare in modo implicito i dati come con un tipo.
structByteStride è la dimensione della struttura in byte nel buffer dichiarato. Il valore deve essere maggiore di zero. structByteStride è di tipo uint e deve essere un multiplo di 4.
Le istruzioni che fanno riferimento a un oggetto u# strutturato accettano un indirizzo 2D, in cui il primo componente seleziona [struct] e il secondo componente seleziona [offset all'interno dello struct, in byte allineati].
Il flag _glc significa "coerente a livello globale". L'assenza di _glc significa che l'UAV viene dichiarato solo come "coerente del gruppo" nello shader di calcolo o "coerente localmente" in una singola chiamata al pixel shader.
Il flag _opc è il contatore che mantiene l'ordine. Indica che se un UAV è associato a slot # (u#), deve essere stato creato con il flag COUNTER. Ciò significa che imm_atomic_alloc o imm_atomic_consume operazioni nello shader modificano un contatore i cui valori possono essere usati nello shader come riferimento permanente a una posizione nell'UAV. I dati non possono essere riordinati dopo che lo shader è finito.
L'assenza del flag di _opc significa che se lo shader usaistruzioni imm_atomic_alloc o imm_atomic_consume e un UAV è associato a slot # (u), deve essere stato creato con il flag APPEND, che fornisce un contatore che non garantisce che l'ordine venga mantenuto dopo la chiamata dello shader.
Se il flag _opc è assente e lo shader non contiene imm_atomic_alloc o istruzioni imm_atomic_consume , è consentito che sia stato creato un UAV associato allo slot # (u) sia stato creato con il flag COUNTER (il contatore passerà inutilizzato da questo shader), nessun flag (nessun contatore), ma non con il flag APPEND.
Nota
cs_4_0 e cs_4_1 supportano dcl_tgsm_structured, ma non dcl_tgsm_raw.
Questa istruzione si applica alle fasi dello shader seguenti:
Vertice | Scafo | Dominio | Geometria | Pixel | Calcolo |
---|---|---|---|---|---|
X | X |
Poiché gli UAV sono disponibili in tutte le fasi dello shader per Direct3D 11.1, questa istruzione si applica a tutte le fasi dello shader per il runtime direct3D 11.1, disponibile a partire da Windows 8.
Vertice | Scafo | Dominio | Geometria | Pixel | Calcolo |
---|---|---|---|---|---|
X | X | X | X | X | X |
Modello minimo shader
Questa istruzione è supportata nei modelli di shader seguenti:
Modello di shader | Supportato |
---|---|
Modello shader 5 | sì |
Modello shader 4.1 | no |
Modello shader 4 | no |
Modello shader 3 (DirectX HLSL) | no |
Modello shader 2 (DirectX HLSL) | no |
Modello shader 1 (DirectX HLSL) | no |
Nota
Questa istruzione è supportata in cs_4_0 e cs_4_1.