imm _ atomic _ exch (sm5 - asm)
Sofortiger atomarer Austausch in den Arbeitsspeicher.
| imm _ atomic _ exch dst0 [ .single component mask , _ _ ] dst1, dstAddress [ .swizzle ] , src0 [ .select _ component] |
|---|
| Element | BESCHREIBUNG |
|---|---|
| dst0 |
[in ] Enthält den Wert aus dst1 vor dem Schreibvorgang. |
| dst1 |
[in ] Einer ungeordneten Zugriffsansicht (UAV) (u # ). Im Compute-Shader kann dies auch Threadgruppen-Shared Memory # (g) sein. |
| dstAddress |
[in ] Die Speicheradresse. |
| src0 |
[in ] Der Wert, der bei dstAddress in dst1 geschrieben werden soll. |
Bemerkungen
Diese Anweisung führt einen 32-Bit-Wertschreibvorgang für eine einzelne Komponente des Operanden src0 in dst1 bei 32-Bit pro Komponentenadresse dstAddress durch.
Wenn dst1 ein u # ist, wurde er möglicherweise als roh, typisiert oder strukturiert deklariert. Wenn sie typisiert ist, muss sie als UINT/SINT deklariert werden, wobei das gebundene Ressourcenformat R32 _ _ UINT/SINT ist.
Wenn dst1 g # ist, muss es als roh oder strukturiert deklariert werden.
Die Anzahl der Von der Adresse entnommenen Komponenten wird durch die Dimensionalität der Ressource bestimmt, die bei dst1 deklariert wurde.
Der ursprüngliche 32-Bit-Wert im Zielspeicher wird in dst0 geschrieben.
Der gesamte Vorgang wird atomar ausgeführt.
Wenn der Shaderaufruf inaktiv ist, z. B. wenn das Pixel zuvor bei der Ausführung verworfen wurde, oder ein Pixel-/Beispielaufruf nur als Hilfselement für ein echtes Pixel/Sample für Ableitungen vorhanden ist, ä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, dann wird der gesamte Inhalt des UAV nicht definiert.
Die Adressierung außerhalb der Grenzen für u # oder g # bewirkt, dass ein nicht definiertes Ergebnis an den Shader in dst0 zurückgegeben wird.
Diese Anweisung gilt für die folgenden Shaderstufen:
| Scheitelpunkt | Rumpf | Domain | Geometrie | Pixel | Compute |
|---|---|---|---|---|---|
| X | X |
Da UAVs in allen Shaderstufen für Direct3D 11.1 verfügbar sind, gilt diese Anweisung für alle Shaderstufen für die Direct3D 11.1-Runtime, die ab Windows 8 verfügbar ist.
| Scheitelpunkt | Rumpf | Domain | Geometrie | Pixel | Compute |
|---|---|---|---|---|---|
| X | X | X | X | X | X |
Shader-Mindestmodell
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 |