imm_atomic_iadd (sm5 - asm)
Direkte atomare ganze Zahl zum Arbeitsspeicher hinzugefügt. Gibt den Wert im Arbeitsspeicher vor dem Hinzufügen zurück.
imm_atomic_iadd dst0[.single_component_mask], dst1, dstAddress[.swizzle], src0[.select_component] |
---|
Element | Beschreibung |
---|---|
dst0 |
[in] Enthält den Wert in dst1 vor dem Schreibvorgang. |
dst1 |
Dieser Wert muss eine ungeordnete Zugriffsansicht (UAV) (u#) sein. Im Compute-Shader kann es sich auch um freigegebenen Arbeitsspeicher der Threadgruppe (g#) handeln. |
dstAddress |
[in] Die Speicher-Naddress. |
src0 |
[in] Der Wert, der dst1 hinzugefügt werden soll. |
Bemerkungen
Diese Anweisung führt eine einzelne Komponente mit einer 32-Bit-Ganzzahl des Operanden src0 mit dst1 bei 32-Bit pro Komponentenadresse dstAddress durch. Das Signieren wird nicht berücksichtigt.
Wenn dst1 ein u# ist, wurde es möglicherweise als unformatiert, typisiert oder strukturiert deklariert. Wenn sie eingegeben wird, muss sie als UINT/SINT deklariert werden, wobei das gebundene Ressourcenformat R32_UINT/_SINT ist.
Wenn dst1 g# ist, muss es als unformatiert oder strukturiert deklariert werden.
Der Wert im dst1-Arbeitsspeicher vor dem Hinzufügen wird an dst0 zurückgegeben.
Die Anzahl der Komponenten aus der Adresse wird durch die Dimensionalität von dst1 bestimmt.
Der gesamte Vorgang wird atomar ausgeführt.
Wenn der Shaderaufruf inaktiv ist, z. B. wenn das Pixel zuvor bei seiner Ausführung verworfen wurde oder ein Pixel-/Sample-Aufruf nur vorhanden ist, um als Hilfsprogramm für ein echtes Pixel/Sample für Ableitungen zu dienen, ändert diese Anweisung den dst1-Speicher überhaupt nicht, und der zurückgegebene Wert ist nicht definiert.
Die Adressierung außerhalb der Grenzen für u# bewirkt, dass nichts in den Arbeitsspeicher geschrieben wird, außer wenn das u# strukturiert ist und der Byteoffset in die Struktur (zweite Komponente der Adresse) den Zugriff außerhalb der Grenzen verursacht, wird der gesamte Inhalt des UAV undefiniert.
Die Adressierung außerhalb der Grenzen für u# oder g# bewirkt, dass ein nicht definiertes Ergebnis in dst0 an den Shader zurückgegeben wird.
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 |