Compartilhar via


imm_atomic_alloc (sm5 – asm)

Incremente atomicamente o contador oculto de 32 bits armazenado com uma exibição de acesso não ordenado Count ou Append (UAV), retornando o valor original.

imm_atomic_alloc dest[.single_component_mask], dstUAV
Item Descrição
Dest
[in] Contém o valor retornado do contador.
dstUAV
[in] Um UAV de buffer estruturado com o sinalizador Count ou Append.

Comentários

Há um valor de contador inteiro de 32 bits sem sinal oculto associado a cada modo de exibição Contagem ou Buffer de Acréscimo que é inicializado quando a exibição está associada ao pipeline, incluindo a opção de manter o valor anterior.

Esta instrução faz um incremento atômico do valor do contador, retornando o original para dest.

Para um UAV append, o valor retornado só é válido durante a invocação do sombreador. depois disso, a implementação pode reorganizar o layout de memória. Qualquer endereçamento de memória com base no valor retornado deve ser limitado à invocação do sombreador.

Para um UAV append, dentro da invocação do sombreador, o compilador HLSL pode usar o valor retornado como o índice de struct a ser usado para acessar o buffer estruturado. Acessar qualquer índice de struct diferente daqueles locais retornados por chamadas para imm_atomic_alloc ou _consume produzir resultados indefinidos em que exatamente qual local de memória dentro do UAV está sendo acessado é aleatório e corrigido apenas para o tempo de vida da invocação do sombreador.

Para um UAV de Contagem, o valor retornado pode ser salvo pelo aplicativo como uma referência a um local fixo dentro do UAV que é significativo após o fim da invocação do sombreador. Qualquer local em um UAV de Contagem sempre pode ser acessado independentemente do valor de contagem.

Não há nenhuma fixação da contagem, então ela encapsula em estouro.

O mesmo sombreador não pode tentar imm_atomic_alloc e imm_atomic_consume no mesmo UAV. Além disso, a GPU não pode permitir que várias invocações de sombreador misture imm_atomic_alloc e imm_atomic_consume no mesmo UAV.

Esta instrução se aplica aos seguintes estágios de sombreador:

Vértice Casco Domínio Geometry Pixel Computação
X X

Como os UAVs estão disponíveis em todos os estágios de sombreador para Direct3D 11.1, essa instrução se aplica a todos os estágios de sombreador para o runtime do Direct3D 11.1, que está disponível a partir do Windows 8.

Vértice Casco Domínio Geometry Pixel Computação
X X X X X X

Modelo de sombreador mínimo

Esta instrução tem suporte nos seguintes modelos de sombreador:

Modelo de Sombreador Com suporte
Modelo de sombreador 5 sim
Modelo de sombreador 4.1 não
Modelo de sombreador 4 não
Modelo de Sombreador 3 (DirectX HLSL) não
Modelo de Sombreador 2 (DirectX HLSL) não
Modelo de Sombreador 1 (DirectX HLSL) não

Assembly do Modelo de Sombreador 5 (DirectX HLSL)