imm_atomic_alloc(sm5 - asm)

Count 또는 Append UAV(순서가 지정되지 않은 액세스 뷰)와 함께 저장된 숨겨진 32비트 카운터를 원자성으로 증가시켜 원래 값을 반환합니다.

imm_atomic_alloc dest[.single_component_mask], dstUAV
항목 설명
dest
[in] 반환된 카운터 값을 포함합니다.
dstUAV
[in] Count 또는 Append 플래그가 있는 구조화된 버퍼 UAV입니다.

설명

이전 값을 유지하는 옵션을 포함하여 뷰가 파이프라인에 바인딩될 때 초기화되는 각 Count 또는 Append 버퍼 뷰와 연관된 숨겨진 부호 없는 32비트 정수 카운터 값이 있습니다.

이 명령은 카운터 값의 원자성 증분을 수행하여 원본을 dest로 반환합니다.

Append UAV의 경우 반환된 값은 셰이더 호출 기간 동안에만 유효합니다. 그 후에 구현은 메모리 레이아웃을 재정렬할 수 있습니다. 반환된 값을 기반으로 하는 모든 메모리 주소 지정은 셰이더 호출로 제한되어야 합니다.

Append UAV의 경우 셰이더 호출 내에서 HLSL 컴파일러는 구조화된 버퍼에 액세스하는 데 사용할 구조체 인덱스로 반환된 값을 사용할 수 있습니다. imm_atomic_alloc 또는 _consume에 대한 호출에 의해 반환된 위치 이외의 구조체 인덱스에 액세스하면 UAV 내에서 액세스되는 메모리 위치가 정확히 임의이며 셰이더 호출의 수명 동안만 고정된다는 정의되지 않은 결과가 생성됩니다.

Count UAV의 경우 셰이더 호출이 끝난 후 의미 있는 UAV 내의 고정 위치에 대한 참조로 애플리케이션에서 반환된 값을 저장할 수 있습니다. Count UAV의 모든 위치는 카운트 값과 관계없이 항상 액세스할 수 있습니다.

카운트의 클램핑이 없으므로 오버플로가 래핑됩니다.

동일한 셰이더는 동일한 UAV에서 imm_atomic_allocimm_atomic_consume을 모두 시도할 수 없습니다. 또한, GPU는 여러 셰이더 호출이 동일한 UAV에서 imm_atomic_allocimm_atomic_consume을 혼합하도록 허용할 수 없습니다.

이 명령은 다음 셰이더 단계에 적용됩니다.

꼭짓점 Hull 도메인 기하 도형 픽셀 컴퓨팅
X X

UAV는 Direct3D 11.1의 모든 셰이더 단계에서 사용할 수 있으므로 이 명령은 Windows 8부터 사용할 수 있는 Direct3D 11.1 런타임의 모든 셰이더 단계에 적용됩니다.

꼭짓점 Hull 도메인 기하 도형 픽셀 컴퓨팅
X X X X X X

최소 셰이더 모델

이 명령은 다음 셰이더 모델에서 지원됩니다.

셰이더 모델 지원됨
셰이더 모델 5
셰이더 모델 4.1 아니요
셰이더 모델 4 아니요
셰이더 모델 3(DirectX HLSL) 아니요
셰이더 모델 2(DirectX HLSL) 아니요
셰이더 모델 1(DirectX HLSL) 아니요

셰이더 모델 5 어셈블리(DirectX HLSL)