Condividi tramite


imm_atomic_alloc (sm5 - asm)

Aumentare atomicamente il contatore a 32 bit nascosto archiviato con una visualizzazione di accesso non ordinata o Accodamento (UAV), restituendo il valore originale.

imm_atomic_alloc dest[.single_component_mask], dstUAV
Elemento Descrizione
Dest
[in] Contiene il valore del contatore restituito.
dstUAV
[in] UAV del buffer strutturato con il flag Count o Append.

Commenti

È presente un valore di contatore intero a 32 bit nascosto associato a ogni visualizzazione Count o Append Buffer che viene inizializzata quando la visualizzazione è associata alla pipeline, inclusa l'opzione per mantenere il valore precedente.

Questa istruzione esegue un incremento atomico del valore del contatore, restituendo l'originale al massimo.

Per un UAV di accodamento, il valore restituito è valido solo per la durata della chiamata dello shader. dopo che l'implementazione può riorganizzare il layout della memoria. Qualsiasi indirizzamento di memoria basato sul valore restituito deve essere limitato alla chiamata shader.

Per un UAV di accodamento, all'interno della chiamata dello shader il compilatore HLSL può usare il valore restituito come indice di struct da usare per accedere al buffer strutturato. L'accesso a qualsiasi indice struct diverso da quelli restituiti dalle chiamate per imm_atomic_alloc o _consume produrre risultati non definiti in che posizione di memoria all'interno dell'UAV viene accessibile è casuale e viene risolto solo per la durata della chiamata shader.

Per un UAV Count, il valore restituito può essere salvato dall'applicazione come riferimento a una posizione fissa all'interno dell'UAV che è significativa dopo la chiamata dello shader. Qualsiasi posizione in un oggetto UAV conteggio può sempre essere accessibile indipendentemente dal valore del conteggio.

Non esiste alcun blocco del conteggio, quindi esegue il wrapping sull'overflow.

Lo stesso shader non può tentare sia imm_atomic_alloc che imm_atomic_consume nello stesso UAV. Inoltre, la GPU non può consentire a più chiamate shader di combinare imm_atomic_alloc e imm_atomic_consume nello stesso UAV.

Questa istruzione si applica alle fasi dello shader seguenti:

Vertice Scafo Dominio Geometria Pixel Calcolo
X X

Poiché le UAV sono disponibili in tutte le fasi 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 di shader minimo

Questa istruzione è supportata nei modelli shader seguenti:

Modello di shader Supportato
Modello shader 5
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

Shader Model 5 Assembly (DirectX HLSL)