Share via


D3D12_RESOURCE_STATES 열거형(d3d12.h)

리소스 사용 방법에 대한 리소스의 상태를 지정하는 상수를 정의합니다.

Syntax

typedef enum D3D12_RESOURCE_STATES {
  D3D12_RESOURCE_STATE_COMMON = 0,
  D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
  D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
  D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
  D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
  D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
  D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
  D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
  D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
  D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
  D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
  D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
  D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
  D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
  D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
  D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
  D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000,
  D3D12_RESOURCE_STATE_GENERIC_READ,
  D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE,
  D3D12_RESOURCE_STATE_PRESENT = 0,
  D3D12_RESOURCE_STATE_PREDICATION = 0x200,
  D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000,
  D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000,
  D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000,
  D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000,
  D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000,
  D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000
} ;

상수

 
D3D12_RESOURCE_STATE_COMMON
값: 0
애플리케이션은 다양한 그래픽 엔진 유형에서 리소스에 액세스하는 경우에만 이 상태로 전환해야 합니다.

특히 리소스는 COPY 큐(이전에 DIRECT/COMPUTE에서 사용된 경우)에서 사용되기 전과 DIRECT/COMPUTE(이전에 COPY에서 사용된 경우)에서 사용되기 전에 COMMON 상태여야 합니다. DIRECT 큐와 COMPUTE 큐 간에 데이터에 액세스할 때는 이 제한이 없습니다.

COMMON 상태는 암시적 상태 전환을 사용하여 복사 큐의 모든 사용량에 사용할 수 있습니다. 자세한 내용은 다중 엔진 동기화에서 "일반"을 찾습니다.

또한 텍스처가 처음에 CPU 표시 힙에 만들어졌다고 가정할 때 CPU 액세스가 합법적이되려면 텍스처가 공통 상태여야 합니다.
D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER
값: 0x1
GPU에서 꼭짓점 버퍼 또는 상수 버퍼로 액세스할 때 하위 리소스는 이 상태여야 합니다. 읽기 전용 상태입니다.
D3D12_RESOURCE_STATE_INDEX_BUFFER
값: 0x2
하위 리소스는 인덱스 버퍼로 3D 파이프라인에서 액세스할 때 이 상태여야 합니다. 읽기 전용 상태입니다.
D3D12_RESOURCE_STATE_RENDER_TARGET
값: 0x4
리소스는 렌더링 대상으로 사용됩니다. 하위 리소스는 ID3D12GraphicsCommandList::ClearRenderTargetView로 렌더링되거나 지워질 때 이 상태여야 합니다.

쓰기 전용 상태입니다. 렌더링 대상에서 셰이더 리소스로 읽으려면 리소스가 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE 또는 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE 있어야 합니다.
D3D12_RESOURCE_STATE_UNORDERED_ACCESS
값: 0x8
리소스는 순서가 지정되지 않은 액세스에 사용됩니다. 순서가 지정되지 않은 액세스 보기를 통해 GPU에서 액세스할 때 하위 리소스가 이 상태여야 합니다. 하위 리소스는 ID3D12GraphicsCommandList::ClearUnorderedAccessViewInt 또는 ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat을 사용하여 지워진 경우에도 이 상태여야 합니다. 읽기/쓰기 상태입니다.
D3D12_RESOURCE_STATE_DEPTH_WRITE
값: 0x10
D3D12_RESOURCE_STATE_DEPTH_WRITE 다른 상태와 상호 배타적인 상태입니다. ID3D12GraphicsCommandList::ClearDepthStencilView 플래그(D3D12_CLEAR_FLAGS 참조)에서 지정된 하위 리소스를 지워야 함을 나타내거나(그렇지 않으면 하위 리소스 상태는 중요하지 않음) PSO에 깊이 쓰기가 사용하도록 설정된 경우 쓰기 가능한 깊이 스텐실 보기(D3D12_DSV_FLAGS 참조)에 사용해야 합니다(D3D12_DEPTH_STENCIL_DESC 참조).
D3D12_RESOURCE_STATE_DEPTH_READ
값: 0x20
DEPTH_READ 다른 상태와 결합할 수 있는 상태입니다. 하위 리소스가 읽기 전용 깊이 스텐실 보기에 있거나 D3D12_DEPTH_STENCIL_DESC 깊이 쓰기를 사용하지 않도록 설정한 경우에 사용해야 합니다. 리소스를 깊이 또는 스텐실 테스트에 사용하고 동일한 그리기 호출 내의 셰이더에서 액세스할 수 있도록 다른 읽기 상태(예: D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE)와 결합할 수 있습니다. 그리기 호출 또는 지우기 명령으로 깊이가 기록될 때 사용하는 것이 잘못되었습니다.
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE
값: 0x40
리소스는 픽셀 셰이더가 아닌 셰이더와 함께 사용됩니다. 하위 리소스는 셰이더 리소스 뷰를 통해 모든 스테이지(픽셀 셰이더 단계 제외)에서 읽기 전에 이 상태여야 합니다. 플래그 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE 설정된 경우에도 이 플래그가 있는 픽셀 셰이더에서 리소스를 사용할 수 있습니다. 읽기 전용 상태입니다.
D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE
값: 0x80
리소스는 픽셀 셰이더와 함께 사용됩니다. 하위 리소스는 셰이더 리소스 뷰를 통해 픽셀 셰이더에서 읽기 전에 이 상태여야 합니다. 읽기 전용 상태입니다.
D3D12_RESOURCE_STATE_STREAM_OUT
값: 0x100
리소스는 스트림 출력과 함께 사용됩니다. 하위 리소스는 스트림 아웃 대상으로 3D 파이프라인에서 액세스할 때 이 상태여야 합니다. 쓰기 전용 상태입니다.
D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT
값: 0x200
리소스는 간접 인수로 사용됩니다.
하위 리소스는 간접 그리기 메서드 ID3D12GraphicsCommandList::ExecuteIndirect에 전달된 인수 버퍼로 사용될 때 이 상태여야 합니다.
읽기 전용 상태입니다.
D3D12_RESOURCE_STATE_COPY_DEST
값: 0x400
리소스는 복사 작업에서 대상으로 사용됩니다.
하위 리소스는 복사 작업 또는 Blt 작업의 대상으로 사용될 때 이 상태여야 합니다.
쓰기 전용 상태입니다.
D3D12_RESOURCE_STATE_COPY_SOURCE
값: 0x800
리소스는 복사 작업에서 원본으로 사용됩니다.
하위 리소스는 복사 작업의 원본 또는 Blt 작업으로 사용될 때 이 상태여야 합니다.
읽기 전용 상태입니다.
D3D12_RESOURCE_STATE_RESOLVE_DEST
값: 0x1000
리소스는 확인 작업에서 대상으로 사용됩니다.
D3D12_RESOURCE_STATE_RESOLVE_SOURCE
값: 0x2000
리소스는 확인 작업의 원본으로 사용됩니다.
D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE
값: 0x400000
버퍼를 초기 상태로 만들면 리소스가 레이트레이싱 가속 구조임을 나타내며, id3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure, ID3D12GraphicsCommandList4::CopyRaytracingAccelerationStructure 또는 ID3D12Device::CreateShaderResourceView에서D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE 차원에 사용됩니다.

참고

D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 상태에 사용할 리소스는 해당 상태에서 만든 다음 해당 상태에서 전환되지 않아야 합니다. 또한 해당 상태가 아닌 생성된 리소스를 해당 상태로 전환할 수도 없습니다. 자세한 내용은 GitHub의 DXR(DirectX 광선 추적) 기능 사양에서 가속 구조 메모리 제한을 참조하세요.

D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE
값: 0x1000000
Windows 10 버전 1903(10.0; 빌드 18362)는 리소스가 VRS(가변 속도 음영)를 위한 화면 공간 음영 속도 이미지임을 나타냅니다. 자세한 내용은 VRS(가변 속도 음영)를 참조하세요.
D3D12_RESOURCE_STATE_GENERIC_READ
D3D12_RESOURCE_STATE_GENERIC_READ 다른 읽기 상태 비트의 논리적 OR 조합입니다. 업로드 힙에 필요한 시작 상태입니다. 애플리케이션은 일반적으로 가능한 경우 D3D12_RESOURCE_STATE_GENERIC_READ 전환하지 않아야 합니다. 이는 조기 캐시 플러시 또는 리소스 레이아웃 변경(예: 압축/압축 해제)으로 인해 불필요한 파이프라인 중단이 발생할 수 있기 때문입니다. 대신 리소스를 실제로 사용되는 상태로만 전환해야 합니다.
D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE과 동일합니다.
D3D12_RESOURCE_STATE_PRESENT
값: 0
D3D12_RESOURCE_STATE_COMMON 동의어입니다.
D3D12_RESOURCE_STATE_PREDICATION
값: 0x200
리소스는 조건부에 사용됩니다.
D3D12_RESOURCE_STATE_VIDEO_DECODE_READ
값: 0x10000
리소스는 디코딩 작업에서 원본으로 사용됩니다. 예를 들어 압축된 비트스트림을 읽고 디코딩 참조에서 읽는 것이 있습니다.
D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE
값: 0x20000
리소스는 디코딩 작업에서 대상으로 사용됩니다. 이 상태는 디코딩 출력 및 히스토그램에 사용됩니다.
D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ
값: 0x40000
리소스는 비디오 처리 중에 비디오 데이터를 읽는 데 사용됩니다. 즉, 리소스는 비디오 인코딩(압축)과 같은 처리 작업에서 원본으로 사용됩니다.
D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE
값: 0x80000
리소스는 비디오 처리 중에 비디오 데이터를 작성하는 데 사용됩니다. 즉, 리소스는 비디오 인코딩(압축)과 같은 처리 작업에서 대상으로 사용됩니다.
D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ
값: 0x200000
리소스는 인코딩 작업의 원본으로 사용됩니다. 이 상태는 동작 추정의 입력 및 참조에 사용됩니다.
D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE
값: 0x800000
이 리소스는 인코딩 작업에서 대상으로 사용됩니다. 이 상태는 동작 확인 벡터 힙 작업의 대상 텍스처에 사용됩니다.

설명

이 열거형은 다음 메서드에서 사용됩니다.

요구 사항

   
머리글 d3d12.h

추가 정보