Share via


imm_atomic_alloc (sm5 - asm)

Incremente de forma atómica el contador oculto de 32 bits almacenado con una vista recuento o anexar de acceso desordenado (UAV), devolviendo el valor original.

imm_atomic_alloc dest[.single_component_mask], dstUAV
Elemento Descripción
Dest
[in] Contiene el valor de contador devuelto.
dstUAV
[in] Un UAV de búfer estructurado con la marca Count o Append.

Comentarios

Hay un valor de contador entero de 32 bits sin signo oculto asociado a cada vista Recuento o Búfer anexado que se inicializa cuando la vista está enlazada a la canalización, incluida la opción de mantener el valor anterior.

Esta instrucción realiza un incremento atómico del valor del contador, devolviendo el original al dest.

Para un UAV Append, el valor devuelto solo es válido durante la invocación del sombreador. después de eso, la implementación puede reorganizar el diseño de memoria. Cualquier direccionamiento de memoria basado en el valor devuelto debe limitarse a la invocación del sombreador.

En el caso de un UAV Append, dentro de la invocación del sombreador, el compilador HLSL puede usar el valor devuelto como índice de estructura que se usará para acceder al búfer estructurado. Tener acceso a cualquier índice de estructura distinto de esas ubicaciones devueltas por llamadas a imm_atomic_alloc o _consume producir resultados indefinidos en que se accede exactamente a la ubicación de memoria dentro de la UAV es aleatoria y solo se fija durante la vigencia de la invocación del sombreador.

Para un UAV count, la aplicación puede guardar el valor devuelto como referencia a una ubicación fija dentro del UAV que sea significativa después de que se supere la invocación del sombreador. Siempre se puede tener acceso a cualquier ubicación de un UAV count independientemente de cuál sea el valor de recuento.

No hay ninguna fijación del recuento, por lo que se ajusta al desbordamiento.

El mismo sombreador no puede intentar imm_atomic_alloc y imm_atomic_consume en el mismo UAV. Además, la GPU no puede permitir que varias invocaciones de sombreador combinen imm_atomic_alloc y imm_atomic_consume en el mismo UAV.

Esta instrucción se aplica a las siguientes fases del sombreador:

Vértice Casco Dominio Geometría Píxel Compute
x x

Dado que las UAV están disponibles en todas las fases del sombreador para Direct3D 11.1, esta instrucción se aplica a todas las fases del sombreador para el entorno de ejecución de Direct3D 11.1, que está disponible a partir de Windows 8.

Vértice Casco Dominio Geometría Píxel Compute
x x x X X X

Modelo de sombreador mínimo

Esta instrucción se admite en los siguientes modelos de sombreador:

Modelo de sombreador Compatible
Modelo de sombreador 5
Modelo de sombreador 4.1 No
Modelo de sombreador 4 No
Modelo de sombreador 3 (DirectX HLSL) No
Modelo de sombreador 2 (DirectX HLSL) No
Modelo de sombreador 1 (DirectX HLSL) No

Ensamblado del modelo de sombreador 5 (DirectX HLSL)