Skip to content

Latest commit

 

History

History
130 lines (76 loc) · 3.1 KB

interlockedcompareexchange.md

File metadata and controls

130 lines (76 loc) · 3.1 KB
title description ms.assetid keywords topic_type api_name api_type ms.topic ms.date api_location
InterlockedCompareExchange function (HLSL reference)
Atomically compares the destination with the comparison value. If they are identical, the destination is overwritten with the input value. The original value is set to the destination's original value.
85d1ba58-8e79-41cd-abd6-7ffff59839c7
InterlockedCompareExchange function HLSL
apiref
InterlockedCompareExchange
NA
reference
05/31/2018

InterlockedCompareExchange function (HLSL reference)

Atomically compares the destination with the comparison value. If they are identical, the destination is overwritten with the input value. The original value is set to the destination's original value.

Syntax

void InterlockedCompareExchange(
  in  R dest,
  in  T compare_value,
  in  T value,
  out T original_value
);

Parameters

dest [in]

Type: R

The destination address.

compare_value [in]

Type: T

The comparison value.

value [in]

Type: T

The input value.

original_value [out]

Type: T

The original value.

Return value

This function does not return a value.

Remarks

Atomically compares the value referenced by dest with compare_value, stores value in the location referenced by dest if the values match, returns the original value of dest in original_value. This operation can only be performed on int or uint typed resources and shared memory variables. There are two possible uses for this function. The first is when R is a shared memory variable type. In this case, the function performs the operation on the shared memory register referenced by dest. The second scenario is when R is a resource variable type. In this scenario, the function performs the operation on the resource location referenced by dest. This operation is only available when R is readable and writable.

Interlocked operations do not imply any memory fence/barrier.

Note

If you call InterlockedCompareExchange in a for or while compute shader loop, to properly compile, you must use the [allow_uav_condition] attribute on that loop.

 

Minimum Shader Model

This function is supported in the following shader models.

Shader Model Supported
Shader Model 5 and higher shader models yes

 

This function is supported in the following types of shaders:

Vertex Hull Domain Geometry Pixel Compute
x x x x x x

 

See also

Intrinsic Functions

Shader Model 5