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 書き込み 1 回、GPU 読み取り 1 回のデータに最適です。ただし、GPU 読み取り 1 回は必要以上に厳しくなります。 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 にすることはできません。

必要条件

要件 価値
ヘッダー d3d12.h

関連項目

コア列挙 の

記述子ヒープ の