D3D12_HEAP_FLAGS 열거형(d3d12.h)

힙에 텍스처를 포함할 수 있는지 여부 및 리소스가 어댑터 간에 공유되는지 여부와 같은 힙 옵션을 지정합니다.

Syntax

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_DIMENSIOND3D12_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
메모리를 볼 수 있는 구성 요소에 따라 이 힙의 메모리에서 원자성 작업이 원자성 작업이 되도록 합니다.

이 플래그를 사용하여 힙을 만들면 이러한 조건 중 하나에서 실패합니다.
- 힙 유형이 D3D12_HEAP_TYPE_DEFAULT 힙은 여러 노드에 표시될 수 있지만 디바이스는D3D12_CROSS_NODE_SHARING_TIER_3 지원하지 않습니다.
- 힙이 CPU에 표시되지만 힙 유형이 D3D12_HEAP_TYPE_CUSTOM않습니다.

이 플래그가 있는 힙은 일부 시스템에서 제한된 리소스일 수 있습니다.
D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT
값: 0x800
힙은 비거주 상태로 만들어지고 ID3D12Device::MakeResident 또는 ID3D12Device3::EnqueueMakeResident를 사용하여 상주해야 합니다.

기본적으로 힙 만들기의 마지막 단계는 힙을 상주하게 만드는 것이므로 이 플래그는 이 단계를 건너뛰고 애플리케이션에서 언제 수행할지 결정할 수 있도록 합니다.
D3D12_HEAP_FLAG_CREATE_NOT_ZEROED
값: 0x1000
OS가 만든 힙을 0이 되지 않도록 허용합니다. 기본적으로 커밋된 리소스와 힙은 생성 시 거의 항상 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개를 설정해야 합니다.
Description
D3D12_HEAP_FLAG_DENY_BUFFERS 힙은 D3D12_RESOURCE_DIMENSION_BUFFER( D3D12_RESOURCE_DIMENSION 열거 형 상수)가 있는 리소스를 포함할 수 없습니다.
D3D12_HEAP_FLAG_DENY_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 있는 리소스를 포함할 수 없습니다. (후자의 두 항목은 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_SUPPORT1 D3D12_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

추가 정보

CD3DX12_HEAP_DESC

핵심 열거형

설명자 힙