D3D12_HEAP_TYPE
列挙型メンバー 5
| 名前 | 10進 | 16進 | 説明 |
|---|---|---|---|
| D3D12_HEAP_TYPE_DEFAULT | 1 | 0x1 | 既定のヒープを指定します。このヒープ タイプは GPU にとって最も帯域幅が大きくなりますが、CPU からのアクセスは提供できません。GPU はこのプールのメモリに対して読み取りと書き込みを行うことができ、リソースの遷移バリアも変更できます。大半のヒープとリソースはここに配置されることが想定されており、通常はアップロード ヒープ上のリソースを介して内容が設定されます。 |
| D3D12_HEAP_TYPE_UPLOAD | 2 | 0x2 | アップロードに使用されるヒープを指定します。このヒープ タイプは GPU へのアップロードに最適化された CPU アクセスを備えますが、GPU にとっての帯域幅は最大にはなりません。このヒープ タイプは、CPU が一度だけ書き込み、GPU が一度だけ読み取るデータに最も適しています。ただし「GPU が一度だけ読み取る」という条件は必要以上に厳格です。GPU が一度読み取る、またはキャッシュから読み取るという使い方もこのデータの用途として許容されますが、GPU のキャッシュ設計やサイズは異なるため、そのような用途の判断は困難です。判断に迷う場合は「GPU が一度だけ読み取る」という定義に従うか、データを _DEFAULT ヒープにコピーする場合と _UPLOAD ヒープから読み取る場合の差を多数の GPU でプロファイルしてください。 このヒープ上のリソースは D3D12_RESOURCE_STATE_GENERIC_READ で作成しなければならず、そこから変更することはできません。この種のヒープの CPU アドレスは、一般に CPU からの読み取りには効率的ではありません。 _UPLOAD ヒープの典型的な用途は次のとおりです。
_UPLOAD ヒープには適さないと考えられる用途は次のとおりです。
|
| D3D12_HEAP_TYPE_READBACK | 3 | 0x3 | 読み戻しに使用されるヒープを指定します。このヒープ タイプは GPU からデータを読み戻すことに最適化された CPU アクセスを備えますが、GPU にとっての帯域幅は最大にはなりません。このヒープ タイプは、GPU が一度だけ書き込み、CPU から読み取り可能なデータに最も適しています。CPU のキャッシュ動作はライトバックであり、キャッシュ ライン未満の単位で CPU 読み取りを複数回行う場合に好都合です。 このヒープ上のリソースは D3D12_RESOURCE_STATE_COPY_DEST で作成しなければならず、そこから変更することはできません。 |
| D3D12_HEAP_TYPE_CUSTOM | 4 | 0x4 | カスタム ヒープを指定します。アプリケーションはメモリ プールと CPU キャッシュの特性を直接指定できます。これは UMA の最適化、マルチ エンジン、マルチ アダプター、その他の特殊なケースで役立ちます。そのためには、アプリケーションがアダプターのアーキテクチャを理解したうえで適切な選択を行う必要があります。詳細については、次を参照してください。 D3D12_FEATURE_ARCHITECTURE、 D3D12_FEATURE_DATA_ARCHITECTURE、および GetCustomHeapProperties。 |
| D3D12_HEAP_TYPE_GPU_UPLOAD | 5 | 0x5 |
公式ドキュメント
ヒープの種類を指定します。常駐している場合、ヒープは特定の CPU キャッシュ特性を持つ特定の物理メモリ プール上に配置されます。
解説(Remarks)
この列挙型は次の API 項目で使用されます。
ヒープ タイプは、抽象化されたヒープ タイプとカスタム ヒープ タイプの 2 つのカテゴリに分類されます。抽象化されたヒープ タイプは次のとおりです。
カスタム ヒープ タイプは次のとおりです。 抽象化されたヒープ タイプ (_DEFAULT、_UPLOAD、_READBACK) は、アダプターに依存しないアプリケーションを簡単に記述するのに役立ちます。そのようなアプリケーションはアダプターのメモリ アーキテクチャを意識する必要がないためです。抽象化されたヒープ タイプを使ってアダプターに依存しないアプリケーションを簡単に記述する場合、アプリケーションは基本的にアダプターをディスクリートまたは NUMA のアダプターであるかのように扱います。ただし、これらのヒープ タイプを使用することで、UMA アダプター向けの効率的な変換も可能になります。アダプターのアーキテクチャに依存しないアプリケーションは、利用できるメモリ プールが 2 つあり、GPU 帯域幅が最も大きいプールは CPU アクセスを提供できないものと想定してください。GPU 帯域幅が最も小さいプールは CPU アクセスを提供できますが、GPU へのアップロードまたは GPU からの読み戻しのいずれかに最適化されている必要があります。なお、テクスチャは (バッファーとは異なり) ヒープ タイプ UPLOAD や READBACK にすることはできません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
列挙メンバーの定義。HSP タブは #define global(値は16進)。
typedef enum D3D12_HEAP_TYPE : int {
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 = 5
} D3D12_HEAP_TYPE;public enum D3D12_HEAP_TYPE : int
{
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 = 5,
}Public Enum D3D12_HEAP_TYPE As Integer
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 = 5
End Enumimport enum
class D3D12_HEAP_TYPE(enum.IntEnum):
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 = 5// D3D12_HEAP_TYPE
pub const D3D12_HEAP_TYPE_DEFAULT: i32 = 1;
pub const D3D12_HEAP_TYPE_UPLOAD: i32 = 2;
pub const D3D12_HEAP_TYPE_READBACK: i32 = 3;
pub const D3D12_HEAP_TYPE_CUSTOM: i32 = 4;
pub const D3D12_HEAP_TYPE_GPU_UPLOAD: i32 = 5;// D3D12_HEAP_TYPE
const (
D3D12_HEAP_TYPE_DEFAULT int32 = 1
D3D12_HEAP_TYPE_UPLOAD int32 = 2
D3D12_HEAP_TYPE_READBACK int32 = 3
D3D12_HEAP_TYPE_CUSTOM int32 = 4
D3D12_HEAP_TYPE_GPU_UPLOAD int32 = 5
)const
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 = 5;// D3D12_HEAP_TYPE
pub const D3D12_HEAP_TYPE_DEFAULT: i32 = 1;
pub const D3D12_HEAP_TYPE_UPLOAD: i32 = 2;
pub const D3D12_HEAP_TYPE_READBACK: i32 = 3;
pub const D3D12_HEAP_TYPE_CUSTOM: i32 = 4;
pub const D3D12_HEAP_TYPE_GPU_UPLOAD: i32 = 5;const
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* = 5enum D3D12_HEAP_TYPE : int {
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 = 5,
}#define global D3D12_HEAP_TYPE_DEFAULT 0x1
#define global D3D12_HEAP_TYPE_UPLOAD 0x2
#define global D3D12_HEAP_TYPE_READBACK 0x3
#define global D3D12_HEAP_TYPE_CUSTOM 0x4
#define global D3D12_HEAP_TYPE_GPU_UPLOAD 0x5