D3D12_HEAP_TYPE列挙 (d3d12.h)

ヒープの種類を指定します。 常駐している場合、ヒープは特定の CPU キャッシュ プロパティを持つ特定の物理メモリ プールに存在します。

構文

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-write-once、GPU-read-once データに最適です。ただし、GPU-read-once は必要以上に厳密です。 GPU-read-once-or-from-cache は、データに許容されるユース ケースです。しかし、GPUキャッシュの設計とサイズが異なるため、このような使用を判断するのは難しいです。 不明な場合は、GPU 読み取り 1 回の定義に注意するか、データを_DEFAULT ヒープにコピーすることと、_UPLOAD ヒープからデータを読み取る場合の違いをプロファイリングします。

このヒープ内のリソースは 、D3D12_RESOURCE_STATEを使用して作成する必要があります_GENERIC_READこのヒープから離れて変更することはできません。 このようなヒープの CPU アドレスは、通常、CPU 読み取りでは効率的ではありません。

_UPLOAD ヒープの一般的な使用法を次に示します。

  • CPU からのデータを使用して_DEFAULT ヒープ内のリソースを初期化する。

  • 各頂点またはピクセルによって繰り返し読み取られた定数バッファーに動的データをアップロードする。



次の例は、_UPLOAD ヒープに適していない可能性があります。

  • フレームごとにリソースの内容を再初期化します。

  • 他のすべての Draw 呼び出しでのみ使用される定数データをアップロードします。各 Draw では、単純ではない量の他のデータが使用されます。

D3D12_HEAP_TYPE_READBACK
値: 3
読み戻しに使用するヒープを指定します。 このヒープの種類には、GPU からのデータの読み取り用に最適化された CPU アクセスがありますが、GPU の最大帯域幅は発生しません。 このヒープの種類は、GPU 書き込み 1 回の CPU 読み取り可能なデータに最適です。 CPU キャッシュの動作はライトバックであり、複数のサブキャッシュライン CPU 読み取りに役立ちます。

このヒープ内のリソースは 、D3D12_RESOURCE_STATE_COPY_DEST を使用して作成する必要があります。このヒープから離れて変更することはできません。
D3D12_HEAP_TYPE_CUSTOM
値: 4
カスタム ヒープを指定します。 アプリケーションでは、メモリ プールと CPU キャッシュのプロパティを直接指定できます。これは、UMA の最適化、マルチエンジン、マルチアダプター、その他の特殊なケースに役立ちます。 これを行うには、アプリケーションが適切な選択を行うためにアダプター アーキテクチャを理解することが必要です。 詳細については、次を参照してください。

D3D12_FEATURE_ARCHITECTURE、
D3D12_FEATURE_DATA_ARCHITECTURE、および
GetCustomHeapProperties

注釈

この列挙型は、次の API 項目で使用されます。

ヒープの種類は、抽象化されたヒープの種類とカスタム ヒープの種類の 2 つのカテゴリに分類されます。

抽象化されたヒープの種類を次に示します。

  • D3D12_HEAP_TYPE_DEFAULT
  • D3D12_HEAP_TYPE_UPLOAD
  • D3D12_HEAP_TYPE_READBACK
カスタム ヒープの種類を次に示します。
  • D3D12_HEAP_TYPE_CUSTOM
抽象化されたヒープの種類 (_DEFAULT、_UPLOAD、および_READBACK) は、アダプターに依存しないアプリケーションの記述を簡略化するのに役立ちます。このようなアプリケーションはアダプター メモリ アーキテクチャを認識する必要がないためです。 抽象化されたヒープ型を使用してアダプターに依存しないアプリケーションの作成を簡略化するために、アプリケーションは基本的にアダプターを個別のアダプターまたは NUMA アダプターのように扱います。 ただし、ヒープの種類を使用すると、UMA アダプターの効率的な変換が可能になります。 アダプター アーキテクチャに依存しないアプリケーションでは、使用可能なメモリ プールが 2 つあると想定する必要があります。GPU 帯域幅が最も多いプールでは CPU アクセスを提供できません。 GPU 帯域幅が最も少ないプールは、CPU アクセス権を持つことができます。ただし、GPU へのアップロードまたは GPU からの読み取りバック用に最適化する必要があります。

(バッファーとは異なり) テクスチャをヒープ型 UPLOAD または READBACK にすることはできません。

要件

要件
Header d3d12.h

こちらもご覧ください

コア列挙

記述子ヒープ