atomic_cmp_store (sm5 - asm)

Comparación atómica y escritura en memoria.

atomic_cmp_store dest, dstAddress[.swizzle], src0[.select_component], src1[.select_component]
Elemento Descripción
Dest
[in] Componentes que se van a comparar con src0. Este valor debe ser una vista de acceso desordenada (UAV) (u#). En el sombreador de proceso, también puede ser memoria compartida del grupo de subprocesos (g#).
dstAddress
[in] Dirección de memoria.
src0
[in] Valor de 32 bits que se va a comparar con dest.
src1
[in] Valor que se va a escribir en memoria si los valores comparados son idénticos.

Comentarios

Esta instrucción realiza una comparación de valores de 32 bits de un solo componente de src0const de 32 bits por dirección de componente dstAddress.

Si los valores comparados son idénticos, el valor de 32 bits de un solo componente en src1 se escribe en la memoria de destino. De lo contrario, no se cambia el destino.

Toda la operación de comparación y escritura se realiza de forma atómica.

Si dest es u#, se puede declarar como sin formato, con tipo o estructurado. Si se escribe, se debe declarar como UINT/SINT con el formato de recurso enlazado que se R32_UINT/_SINT.

Si dest es g#, se debe declarar como sin formato o estructurado.

El número de componentes tomados de la dirección viene determinado por la dimensionalidad dest u# o g#.

No se devuelve nada al sombreador.

Si la invocación del sombreador está inactiva, por ejemplo, si el píxel se ha descartado anteriormente en su ejecución, o una instrucción pixel/sample no modifica la memoria dest (silenciosamente).

El direccionamiento fuera de los límites en u# hace que no se escriba nada en la memoria, excepto si el u# está estructurado y el desplazamiento de bytes en la estructura (segundo componente de la dirección) está causando el acceso fuera de los límites, entonces todo el contenido de la UAV se vuelve indefinido.

Fuera de los límites que se direccionan en g# (los límites de ese g#concreto, en lugar de toda la memoria compartida) hacen que todo el contenido de toda la memoria compartida se defina.

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)