D3D12_HEAP_FLAGS 열거형(d3d12.h)
힙에 텍스처를 포함할 수 있는지 여부 및 리소스가 어댑터 간에 공유되는지 여부와 같은 힙 옵션을 지정합니다.
통사론
typedef enum D3D12_HEAP_FLAGS {
D3D12_HEAP_FLAG_NONE = 0,
D3D12_HEAP_FLAG_SHARED = 0x1,
D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
D3D12_HEAP_FLAG_TOOLS_USE_MANUAL_WRITE_TRACKING,
D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0,
D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0,
D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84
} ;
상수
D3D12_HEAP_FLAG_NONE 값: 0 옵션이 지정되지 않았습니다. |
D3D12_HEAP_FLAG_SHARED 값: 0x1 힙이 공유됩니다. 공유 힙 |
D3D12_HEAP_FLAG_DENY_BUFFERS 값: 0x4 힙은 버퍼를 포함할 수 없습니다. |
D3D12_HEAP_FLAG_ALLOW_DISPLAY 값: 0x8 힙은 스왑 체인 표면을 포함할 수 있습니다. |
D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER 값: 0x20 힙은 어댑터 간에 리소스를 공유할 수 있습니다. 공유 힙 |
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES 값: 0x40 힙은 RT(렌더링 대상) 및/또는 DS(Depth-Stencil) 텍스처를 저장할 수 없습니다. |
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES 값: 0x80 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET 또는 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL 없는 한 힙은 D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D 또는 D3D12_RESOURCE_DIMENSION_TEXTURE3D 있는 리소스를 포함할 수 없습니다. D3D12_RESOURCE_DIMENSION 및 D3D12_RESOURCE_FLAGS참조하세요. |
D3D12_HEAP_FLAG_HARDWARE_PROTECTED 값: 0x100 지원 되지 않는. 사용하지 마세요. |
D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH 값: 0x200 힙은 MEM_WRITE_WATCH 기능을 지원하므로 시스템에서 커밋된 메모리 영역에 기록된 페이지를 추적합니다. 이 플래그는 D3D12_HEAP_TYPE_DEFAULT 또는 D3D12_CPU_PAGE_PROPERTY_UNKNOWN 플래그와 결합할 수 없습니다. 애플리케이션은 도구에서 이 기능을 사용할 수 없으므로 이 플래그 자체를 사용하지 않는 것이 좋습니다. |
D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS 값: 0x400 메모리를 볼 수 있는 구성 요소에 따라 이 힙의 메모리에서 원자성 작업이 원자성 작업인지 확인합니다. 이 플래그를 사용하여 힙을 만드는 작업은 이러한 조건 중 하나에서 실패합니다. - 힙 유형이 - 힙이 CPU로 표시되지만 힙 유형이 이 플래그가 있는 힙은 일부 시스템에서 제한된 리소스일 수 있습니다. |
D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT 값: 0x800 힙은 비거주 상태에서 만들어지고 ID3D12Device::MakeResident 또는 ID3D12Device3::EnqueueMakeResident사용하여 상주해야 합니다. 기본적으로 힙 만들기의 마지막 단계는 힙을 상주하게 하는 것이므로 이 플래그는 이 단계를 건너뛰고 애플리케이션에서 이 작업을 수행할 시기를 결정할 수 있도록 합니다. |
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED 값: 0x1000 OS에서 만든 힙이 0이 되지 않도록 허용합니다. 기본적으로 커밋된 리소스 및 힙은 생성 시 거의 항상 제로로 설정됩니다. 이 플래그를 사용하면 일부 시나리오에서 이 플래그를 생략할 수 있습니다. 그러나 보장하지는 않습니다. 예를 들어 데이터 보호 및 프로세스 격리를 위해 다른 프로세스에서 들어오는 메모리를 0으로 설정해야 합니다. 이렇게 하면 힙을 만드는 오버헤드가 낮아질 수 있습니다. |
D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES 값: 0 힙은 모든 유형의 버퍼 및/또는 텍스처를 저장할 수 있습니다. 별칭입니다. 자세한 내용은 설명 섹션의 "별칭"을 참조하세요. |
D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS 값: 0xc0 힙은 버퍼만 저장할 수 있습니다. 별칭입니다. 자세한 내용은 설명 섹션의 "별칭"을 참조하세요. |
D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES 값: 0x44 힙은 비 RT, 비 DS 텍스처만 저장할 수 있습니다. 별칭입니다. 자세한 내용은 설명 섹션의 "별칭"을 참조하세요. |
D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES 값: 0x84 힙은 RT 및/또는 DS 텍스처만 저장할 수 있습니다. 별칭입니다. 자세한 내용은 설명 섹션의 "별칭"을 참조하세요. |
발언
이 열거형은 다음 API 항목에서 사용됩니다.
다음 힙 플래그는 ID3D12Device::CreateHeap사용해야 하지만 ID3D12Device::CreateCommittedResource만든 암시적 힙에 대해 자동으로 설정됩니다. 힙 계층 1 지원하는 어댑터는 다음 플래그 3개 중 2개를 설정해야 합니다.값 | 묘사 |
---|---|
D3D12_HEAP_FLAG_DENY_BUFFERS | 힙은 D3D12_RESOURCE_DIMENSION_BUFFER 있는 리소스(D3D12_RESOURCE_DIMENSION 열거형 상수)를 포함할 수 없습니다. |
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES | 힙은 D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D 또는 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET 또는 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL 함께 D3D12_RESOURCE_DIMENSION_TEXTURE3D 리소스를 포함할 수 없습니다. (후자의 두 항목은 D3D12_RESOURCE_FLAGS 열거형 상수입니다.) |
D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES | D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET 및 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL 없는 한 힙은 D3D12_RESOURCE_DIMENSION_TEXTURE1D, D3D12_RESOURCE_DIMENSION_TEXTURE2D 또는 D3D12_RESOURCE_DIMENSION_TEXTURE3D 있는 리소스를 포함할 수 없습니다. |
별칭
힙 계층 2 이상을 지원하는 어댑터는 위의 플래그를 설정하지 않을 수 있습니다. 이러한 플래그의 별칭은 지원되는 리소스만 생각하는 애플리케이션에서 사용할 수 있습니다.다음 별칭이 있으므로 비트 조작을 수행할 때는 주의해야 합니다.
- D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0이며 힙 계층 2 이상에서만 지원됩니다.
- D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES | D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES
- D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = D3D12_HEAP_FLAG_DENY_BUFFERS | D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES
- D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = D3D12_HEAP_FLAG_DENY_BUFFERS | D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES
표시 가능한 힙
표시 가능한 힙은 모니터로 검색할 수 있도록 프레젠테이션을 위해 스왑 체인에서 가장 일반적으로 생성됩니다.표시 가능한 힙은 D3D12_HEAP_FLAGS 열거형의 D3D12_HEAP_FLAG_ALLOW_DISPLAY 멤버로 지정됩니다.
애플리케이션은 스왑 체인 외부에서 표시 가능한 힙을 만들 수 있습니다. 그러나 실제로 그들과 함께 존재 할 수 없습니다. 이 플래그는 CreateHeap 지원되지 않으며 D3D12_HEAP_TYPE_DEFAULT CreateCommittedResource만 사용할 수 있습니다.
D3D12_RESOURCE_DESC 대한 추가 제한 사항은 표시 가능한 힙으로 만든 리소스에 적용됩니다.
- 이 형식은 디바이스에서 지원될 뿐만 아니라 검색을 지원해야 합니다. D3D12_FORMAT_SUPPORT1D3D12_FORMAT_SUPPORT1_DISPLAY 멤버의 사용을 참조하세요.
- 차원 D3D12_RESOURCE_DIMENSION_TEXTURE2D 합니다.
- 맞춤 0이어야 합니다.
- ArraySize 1 또는 2일 수 있습니다.
- MipLevels 1이어야 합니다.
- SampleDesc개수 1로 설정하고 품질 0으로 설정해야 합니다.
- 레이아웃 D3D12_TEXTURE_LAYOUT_UNKNOWN 합니다.
- D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL 및 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER 잘못된 플래그입니다.
요구 사항
요구 | 값 |
---|---|
헤더 | d3d12.h |