InterlockedAdd function (HLSL reference)

Performs a guaranteed atomic add of value to the dest resource variable.

Syntax

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

Parameters

dest [in]

Type: R

The destination address.

value [in]

Type: T

The input value.

original_value [out]

Type: T

Optional. The original input value.

Return value

This function does not return a value.

Remarks

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 an atomic add of value to the shared memory register referenced by dest. The second scenario is when R is a resource variable type. In this scenario, the function performs an atomic add of value to the resource location referenced by dest. The overloaded function has an additional output variable which will be set to the original value of dest. This overloaded operation is only available when R is readable and writable.

Interlocked operations do not imply any memory fence/barrier.

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