atomic_cmp_store(sm5 - asm)

원자성 비교 및 메모리에 쓰기

atomic_cmp_store dest, dstAddress[.swizzle], src0[.select_component], src1[.select_component]
항목 설명
dest
[in] src0과 비교할 성분입니다. 이 값은 UAV(순서가 지정되지 않은 액세스 뷰)(u#)여야 합니다. 컴퓨팅 셰이더에서는 스레드 그룹 공유 메모리(g#)일 수도 있습니다.
dstAddress
[in] 메모리 주소입니다.
src0
[in] dest와 비교할 32비트 값입니다.
src1
[in] 비교된 값이 동일한 경우 메모리에 쓸 값입니다.

설명

이 명령은 구성 요소 주소 dstAddressdest가 32비트인 피연산자 src0의 단일 구성 요소 32비트 값 비교를 수행합니다.

비교된 값이 동일하면 src1의 단일 구성 요소 32비트 값이 대상 메모리에 쓰입니다. 그렇지 않으면 대상이 변경되지 않습니다.

전체 비교 및 쓰기 작업은 원자성으로 수행됩니다.

dest가 u#인 경우 원시, 형식화 또는 구조화로 선언할 수 있습니다. 입력된 경우 바인딩된 리소스 형식이 R32_UINT/_SINT인 UINT/SINT로 선언되어야 합니다.

dest가 g#이면 원시 또는 구조화로 선언되어야 합니다.

주소에서 가져온 구성 요소의 수는 dest u# 또는 g#의 차원에 따라 결정됩니다.

셰이더에는 아무것도 반환되지 않습니다.

셰이더 호출이 비활성 상태인 경우(예: 픽셀이 실행 초기에 삭제되었거나 픽셀/샘플 명령이 dest 메모리를 전혀 변경하지 않는 경우).

u#의 범위를 벗어나면 u#이 구조화되고 구조체(주소의 두 번째 성분)에 대한 바이트 오프셋으로 인해 범위를 벗어난 액세스가 발생하는 경우 UAV의 전체 내용이 정의되지 않는 경우를 제외하고는 메모리에 기록되지 않습니다.

g#(모든 공유 메모리와 반대되는 특정 g#의 범위)에 대한 주소 지정 범위를 벗어나면 모든 공유 메모리의 전체 콘텐츠가 정의되지 않습니다.

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

꼭짓점 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)