Función InterlockedCompareExchange (referencia de HLSL)
Compara de forma atómica el destino con el valor de comparación. Si son idénticos, el destino se sobrescribe con el valor de entrada. El valor original se establece en el valor original del destino.
Sintaxis
void InterlockedCompareExchange(
in R dest,
in T compare_value,
in T value,
out T original_value
);
Parámetros
-
dest [in]
-
Tipo: R
Dirección de destino.
-
compare_value [in]
-
Tipo: T
Valor de comparación.
-
value [in]
-
Tipo: T
Valor de entrada.
-
original_value [out]
-
Tipo: T
El valor original.
Valor devuelto
Esta función no devuelve ningún valor.
Observaciones
Compara de forma atómica el valor al que hace referencia dest con compare_value, almacena el valor en la ubicación a la que hace referencia dest si los valores coinciden, devuelve el valor original dest en original_value. Esta operación solo se puede realizar en recursos con tipo int o uint y en variables de memoria compartidas. Hay dos posibles usos para esta función. La primera es cuando R es un tipo de variable de memoria compartida. En este caso, la función realiza la operación en el registro de memoria compartida al que hace referencia dest. El segundo escenario es cuando R es un tipo de variable de recurso. En este escenario, la función realiza la operación en la ubicación del recurso a la que hace referencia dest. Esta operación solo está disponible cuando R es legible y grabable.
Las operaciones interbloqueadas no implican ninguna barrera o barrera de memoria.
Nota
Si llama a InterlockedCompareExchange en un bucle for o while compute shader, para compilar correctamente, debe usar el atributo [allow_uav_condition] en ese bucle.
Modelo de sombreador mínimo
Esta función se admite en los siguientes modelos de sombreador.
Modelo de sombreador | Compatible |
---|---|
Modelo de sombreador 5 y modelos de sombreador superiores | sí |
Esta función se admite en los siguientes tipos de sombreadores:
Vértice | Casco | Domain | Geometría | Píxel | Compute |
---|---|---|---|---|---|
x | x | x | x | x | x |
Consulte también