Freigeben über


dcl_uav_structured (sm5 - asm)

Deklarieren Sie eine ungeordnete Zugriffsansicht (UAV) zur Verwendung durch einen Shader.

dcl_uav_structured[_glc] dstUAV, structByteStride
Element BESCHREIBUNG
dstUAV
[in] Die UAV.
structByteStride
[in] Die Größe der Struktur in Bytes.

Bemerkungen

dstUAV ist ein u#-Register, das als Verweis auf eine UnorderedAccessView eines strukturierten Puffers mit dem angegebenen stride deklariert wird, der an den UAV-Slot # in der API gebunden werden muss.

Der Inhalt der -Struktur hat keinen Typ. Vorgänge, die für den Arbeitsspeicher ausgeführt werden, können die Daten implizit als Typ interpretieren.

structByteStride ist die Größe der Struktur in Bytes im zu deklarierten Puffer. Dieser Wert muss größer als 0 sein. structByteStride ist vom Typ uint und muss ein Vielfaches von 4 sein.

Anweisungen, die auf eine strukturierte u# verweisen, verwenden eine 2D-Adresse, wobei die erste Komponente [Struktur] und die zweite Komponente [Offset innerhalb der Struktur in ausgerichteten Bytes] auswählt.

Das flag _glc bedeutet "global kohärent". Das Fehlen von _glc bedeutet, dass das UAV im Compute-Shader nur als "Gruppe kohärent" oder "lokal kohärent" in einem Einzelnen Pixel-Shaderaufruf deklariert wird.

Das _opc-Flag ist der Zähler zur Erhaltung der Reihenfolge. Wenn ein UAV an Slot # (u#) gebunden ist, muss er mit dem COUNTER-Flag erstellt worden sein. Dies bedeutet, dass imm_atomic_alloc - oder imm_atomic_consume-Vorgänge im Shader einen Zähler bearbeiten, dessen Werte im Shader als dauerhaften Verweis auf eine Position im UAV verwendet werden können. Daten können nicht neu sortiert werden, nachdem der Shader abgelaufen ist.

Das Fehlen des _opc-Flags bedeutet, dass wenn der Shaderimm_atomic_alloc oder imm_atomic_consume Anweisungen verwendet und ein UAV an Slot # (u) gebunden ist, es mit dem APPEND-Flag erstellt worden sein muss, das einen Zähler bereitstellt, der die Reihenfolge nach dem Shaderaufruf nicht garantiert.

Wenn das flag _opc fehlt und der Shader keine imm_atomic_alloc oder imm_atomic_consume Anweisungen enthält, darf ein UAV, das an Slot # (u) gebunden ist, mit dem COUNTER-Flag erstellt worden sein (der Indikator wird von diesem Shader nicht verwendet), kein Flag (kein Indikator), aber nicht mit dem APPEND-Flag.

Hinweis

cs_4_0 und cs_4_1 unterstützen dcl_tgsm_structured, aber nicht dcl_tgsm_raw.

Diese Anweisung gilt für die folgenden Shaderphasen:

Scheitelpunkt Hull Domain Geometrie Pixel Compute
X X

Da UAVs in allen Shaderphasen für Direct3D 11.1 verfügbar sind, gilt diese Anweisung für alle Shaderphasen für die Direct3D 11.1-Runtime, die ab Windows 8 verfügbar ist.

Scheitelpunkt Hull Domain Geometrie Pixel Compute
X X X X X X

Minimales Shadermodell

Diese Anweisung wird in den folgenden Shadermodellen unterstützt:

Shadermodell Unterstützt
Shadermodell 5 ja
Shadermodell 4.1 Nein
Shadermodell 4 Nein
Shadermodell 3 (DirectX HLSL) Nein
Shadermodell 2 (DirectX HLSL) Nein
Shadermodell 1 (DirectX HLSL) Nein

Hinweis

Diese Anweisung wird in cs_4_0 und cs_4_1 unterstützt.

Assembly des Shadermodells 5 (DirectX HLSL)