imm_atomic_alloc (sm5 - asm)
Atomar erhöhen Sie den ausgeblendeten 32-Bit-Zähler, der mit einer Ungeordneten Zugriffsansicht (UAV) vom Typ Count oder Append gespeichert ist, und geben Sie den ursprünglichen Wert zurück.
imm_atomic_alloc dest[.single_component_mask], dstUAV |
---|
Element | BESCHREIBUNG |
---|---|
Dest |
[in] Enthält den zurückgegebenen Zählerwert. |
dstUAV |
[in] Ein UAV für strukturierten Puffer mit dem Flag "Anzahl" oder "Anfügen". |
Hinweise
Jeder Count- oder Append Buffer-Ansicht ist ein ausgeblendeter ganzzahliger 32-Bit-Zählerwert ohne Vorzeichen zugeordnet, der initialisiert wird, wenn die Ansicht an die Pipeline gebunden ist, einschließlich der Option, den vorherigen Wert beizubehalten.
Diese Anweisung führt eine atomare Inkrementierung des Zählerwerts durch und gibt das Original an dest zurück.
Für ein UAV anfügen ist der zurückgegebene Wert nur für die Dauer des Shaderaufrufs gültig. danach kann die Implementierung das Speicherlayout neu anordnen. Jede Speicheradressierung, die auf dem zurückgegebenen Wert basiert, muss auf den Shaderaufruf beschränkt sein.
Bei einem UAV anfügen kann der HLSL-Compiler innerhalb des Shaderaufrufs den zurückgegebenen Wert als Strukturindex für den Zugriff auf den strukturierten Puffer verwenden. Der Zugriff auf einen anderen Strukturindex als die durch Aufrufe zurückgegebenen Imm_atomic_alloc oder_consume führt zu undefinierten Ergebnissen, dass genau auf welche Speicherposition innerhalb der UAV zugegriffen wird, zufällig ist und nur für die Lebensdauer des Shaderaufrufs festgelegt ist.
Bei einem UAV count kann der zurückgegebene Wert von der Anwendung als Verweis auf einen festen Speicherort innerhalb der UAV gespeichert werden, der nach Dem Aufrufen des Shaders sinnvoll ist. Auf jeden Speicherort in einer Count-UAV kann immer unabhängig vom Wert für die Anzahl zugegriffen werden.
Es gibt keine Klemmung der Anzahl, sodass sie beim Überlauf umschließt.
Derselbe Shader kann nicht imm_atomic_alloc und imm_atomic_consume auf demselben UAV versuchen. Darüber hinaus kann die GPU nicht zulassen, dass mehrere Shaderaufrufe imm_atomic_alloc und imm_atomic_consume auf demselben UAV kombinieren.
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 |