store_structured(sm5 - asm)
1~4개의 32비트 구성 요소를 구조적 버퍼 UAV(정렬되지 않은 액세스 뷰)에 임의로 씁니다.
store_structured dest[.write_mask], dstAddress[.select_component], dstByteOffset[.select_component], src0[.swizzle] |
---|
항목 | 설명 |
---|---|
dest |
[in] 작업 결과의 주소입니다. |
dstAddress |
[in] 쓸 주소입니다. |
dstByteOffset |
[in] 쓸 구조체의 인덱스입니다. |
src0 |
[in] 작성할 구성 요소입니다. |
설명
이 명령은 dstAddress 및 dstByteOffset의 주소에서 dest로 src0에서 작성된 1-4개 구성 요소 *32비트 구성 요소를 수행합니다. 형식 변환이 없습니다.
dest 는 UAV(u#)여야 합니다. 컴퓨팅 셰이더에서는 스레드 그룹 공유 메모리(g#)일 수도 있습니다.
dstAddress는 쓸 구조체의 인덱스를 지정합니다.
기록된 데이터의 위치는 오프셋, 주소, 버퍼 내용에 대한 포인터, 원본의 보폭 및 선형으로 저장된 데이터를 보여주는 다음 의사 코드와 동일합니다.
BYTE *BufferContents; // from dest
UINT BufferStride; // from dest
UINT dstAddress, dstByteOffset; // source registers
BYTE *WriteLocation; // value to calculate
// calculate writing location
WriteLocation = BufferContents
+ BufferStride * dstAddress
+ dstByteOffset;
// calculate the number of components to write
switch (dstWriteMask)
{
x: WriteComponents = 1; break;
xy: WriteComponents = 2; break;
xyz: WriteComponents = 3; break;
xyzw: WriteComponents = 4; break;
default: // only these masks are valid
}
// copy the data from the source register with
// the swizzle applied
memcpy(WriteLocation, swizzle(src0, src0.swizzle),
WriteComponents * sizeof(INT32));
이 의사 코드는 작업이 작동하는 방식을 보여 주지만 실제 데이터를 선형으로 저장할 필요는 없습니다. 데이터가 선형으로 저장되지 않은 경우, 명령의 실제 연산이 위 연산의 동작과 일치해야 합니다.
dest 에는 .x, .xy, .xyz, .xyzw 중 하나인 쓰기 마스크만 있을 수 있습니다. 쓰기 마스크는 간격 없이 쓸 32비트 구성 요소의 수를 결정합니다.
dstAddress 때문에 u#에 범위를 벗어나는 주소를 지정하는 것은 범위를 벗어난 메모리에 아무것도 기록되지 않음을 의미합니다.
dstWriteMask를 포함한 dstByteOffset이 u#에 대해 범위를 벗어난 액세스를 발생시키는 경우 UAV의 전체 콘텐츠가 정의되지 않습니다.
지정된 32비트 구성 요소를 위한 g#에 범위(모든 공유 메모리가 아닌 특정 g#의 범위)를 벗어난 주소를 지정하면 모든 공유 메모리의 모든 콘텐츠가 정의되지 않습니다.
dstByteOffset은 일반적으로 리터럴이므로 dstAddress와 별개의 인수입니다. 이 매개 변수 분리는 구조적 메모리의 원자성에서 수행되지 않았습니다.
cs_4_0 및 cs_4_1은 UAV 및 TGSM에 대해 이 명령을 지원합니다.
이 명령은 다음 셰이더 단계에 적용됩니다.
꼭짓점 | 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) | 아니요 |