D3D12_HEAP_TYPE 열거형(d3d12.h)

힙의 형식을 지정합니다. 상주하는 경우 힙은 특정 CPU 캐시 속성이 있는 특정 실제 메모리 풀에 상주합니다.

Syntax

typedef enum D3D12_HEAP_TYPE {
  D3D12_HEAP_TYPE_DEFAULT = 1,
  D3D12_HEAP_TYPE_UPLOAD = 2,
  D3D12_HEAP_TYPE_READBACK = 3,
  D3D12_HEAP_TYPE_CUSTOM = 4,
  D3D12_HEAP_TYPE_GPU_UPLOAD
} ;

상수

 
D3D12_HEAP_TYPE_DEFAULT
값: 1
기본 힙을 지정합니다. 이 힙 형식은 GPU의 대역폭을 가장 많이 사용하지만 CPU 액세스를 제공할 수는 없습니다. GPU는 이 풀에서 메모리를 읽고 쓸 수 있으며 리소스 전환 장벽이 변경될 수 있습니다. 대부분의 힙 및 리소스는 여기에 있어야 하며 일반적으로 업로드 힙의 리소스를 통해 채워집니다.
D3D12_HEAP_TYPE_UPLOAD
값: 2
업로드에 사용되는 힙을 지정합니다. 이 힙 유형에는 GPU에 업로드하기 위해 최적화된 CPU 액세스 권한이 있지만 GPU에 대한 최대 대역폭 크기는 발생하지 않습니다. 이 힙 형식은 CPU-쓰기-한 번, GPU 읽기-한 번 데이터에 가장 적합합니다. 그러나 GPU-read-once는 필요 이상으로 엄격합니다. GPU-read-once-or-from-cache는 데이터에 허용되는 사용 사례입니다. 그러나 GPU 캐시 디자인과 크기가 다르기 때문에 이러한 사용법은 판단하기 어렵습니다. 의심스러운 경우 GPU 읽기-한 번 정의를 고수하거나 데이터를 _DEFAULT 힙에 복사하는 것과 _UPLOAD 힙에서 데이터를 읽는 것 사이의 많은 GPU의 차이를 프로파일링합니다.

이 힙의 리소스는 D3D12_RESOURCE_STATE 사용하여 만들어야 하며_GENERIC_READ 이 리소스에서 변경할 수 없습니다. 이러한 힙의 CPU 주소는 일반적으로 CPU 읽기에 효율적이지 않습니다.

다음은 _UPLOAD 힙에 대한 일반적인 사용법입니다.

  • CPU의 데이터를 사용하여 _DEFAULT 힙에서 리소스를 초기화합니다.

  • 각 꼭짓점 또는 픽셀별로 반복적으로 읽는 상수 버퍼에 동적 데이터를 업로드합니다.



다음은 _UPLOAD 힙에 적합하지 않을 수 있습니다.

  • 모든 프레임마다 리소스의 콘텐츠를 다시 초기화합니다.

  • 다른 모든 그리기 호출에만 사용되는 상수 데이터를 업로드합니다. 여기서 각 그리기는 사소한 양의 다른 데이터를 사용합니다.

D3D12_HEAP_TYPE_READBACK
값: 3
다시 읽는 데 사용되는 힙을 지정합니다. 이 힙 유형에는 GPU에서 데이터를 다시 읽기 위해 최적화된 CPU 액세스 권한이 있지만 GPU의 최대 대역폭 크기는 발생하지 않습니다. 이 힙 형식은 GPU 쓰기가 가능한 CPU 읽기 가능한 데이터에 가장 적합합니다. CPU 캐시 동작은 여러 하위 캐시 줄 CPU 읽기에 도움이 되는 쓰기 저장입니다.

이 힙의 리소스는 D3D12_RESOURCE_STATE_COPY_DEST 사용하여 만들어야 하며 이 리소스에서 변경할 수 없습니다.
D3D12_HEAP_TYPE_CUSTOM
값: 4
사용자 지정 힙을 지정합니다. 애플리케이션은 메모리 풀 및 CPU 캐시 속성을 직접 지정할 수 있습니다. 이 속성은 UMA 최적화, 다중 엔진, 다중 어댑터 또는 기타 특수한 경우에 유용할 수 있습니다. 이렇게 하려면 애플리케이션이 올바른 선택을 위해 어댑터 아키텍처를 이해해야 합니다. 자세한 내용은

D3D12_FEATURE_ARCHITECTURE
D3D12_FEATURE_DATA_ARCHITECTURE
GetCustomHeapProperties.

설명

이 열거형은 다음 API 항목에서 사용됩니다.

힙 형식은 추상화된 힙 형식과 사용자 지정 힙 형식의 두 가지 범주로 구분됩니다.

추상화된 힙 형식은 다음과 같습니다.

  • D3D12_HEAP_TYPE_DEFAULT
  • D3D12_HEAP_TYPE_UPLOAD
  • D3D12_HEAP_TYPE_READBACK
다음은 사용자 지정 힙 유형입니다.
  • D3D12_HEAP_TYPE_CUSTOM
추상화된 힙 형식(_DEFAULT, _UPLOAD 및 _READBACK)은 어댑터 중립 애플리케이션 작성을 간소화하는 데 유용합니다. 이러한 애플리케이션은 어댑터 메모리 아키텍처를 인식할 필요가 없기 때문입니다. 추상화된 힙 유형을 사용하여 어댑터 중립 애플리케이션 작성을 간소화하기 위해 애플리케이션은 기본적으로 어댑터를 불연속 또는 NUMA 어댑터처럼 처리합니다. 그러나 힙 형식을 사용하면 UMA 어댑터를 효율적으로 변환할 수 있습니다. 어댑터 아키텍처 중립 애플리케이션은 GPU 대역폭이 가장 많은 풀이 CPU 액세스를 제공할 수 없는 두 개의 메모리 풀을 사용할 수 있다고 가정해야 합니다. GPU 대역폭이 가장 적은 풀에는 CPU 액세스 권한이 있을 수 있습니다. 하지만 GPU에 업로드하거나 GPU에서 다시 읽기 위해 최적화되어야 합니다.

버퍼와 달리 텍스처는 UPLOAD 또는 READBACK 힙 유형일 수 없습니다.

요구 사항

요구 사항
헤더 d3d12.h

추가 정보

코어 열거형

설명자 힙