D3D12_HEAP_FLAGS列挙 (d3d12.h)

ヒープにテクスチャを含めることができるかどうか、およびリソースがアダプター間で共有されるかどうかなど、ヒープ オプションを指定します。

構文

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) テクスチャや Depth-Stencil (DS) テクスチャを格納できません。
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 で作成されたヒープをゼロにしないようにします。 既定では、コミットされたリソースとヒープは、作成時にほぼ常にゼロになります。 このフラグを使用すると、一部のシナリオでこれを省略できます。 ただし、保証するものではありません。 たとえば、データ保護とプロセス分離のために、他のプロセスから送信されるメモリをゼロにする必要があります。 これにより、ヒープを作成するオーバーヘッドが減少する可能性があります。
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 つを設定する必要があります。
説明
D3D12_HEAP_FLAG_DENY_BUFFERS ヒープには、D3D12_RESOURCE_DIMENSION_BUFFER ( D3D12_RESOURCE_DIMENSION 列挙定数) を持つリソースを含めることはできません。
D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES ヒープには、D3D12_RESOURCE_DIMENSION_TEXTURE1D、D3D12_RESOURCE_DIMENSION_TEXTURE2D、またはD3D12_RESOURCE_DIMENSION_TEXTURE3Dを含むリソースを、D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGETまたはD3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCILと共に含めることはできません。 (後者の 2 つの項目は 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 ではサポートされておらず、 createCommittedResource とD3D12_HEAP_TYPE_DEFAULTでのみ使用できます。

D3D12_RESOURCE_DESCに対する追加の制限は、表示可能なヒープで作成されたリソースに適用されます。

  • この形式は、デバイスでサポートされるだけでなく、スキャンアウトでもサポートされている必要があります。D3D12_FORMAT_SUPPORT1の D3D12_FORMAT_SUPPORT1_DISPLAY メンバーの使用 参照してください。
  • ディメンション はD3D12_RESOURCE_DIMENSION_TEXTURE2Dする必要があります。
  • 配置 は 0 にする必要があります。
  • ArraySize には、1 または 2 のいずれかを指定できます。
  • MipLevels は 1 である必要があります。
  • SampleDesc では 、Count が 1 に設定され、 Quality が 0 に設定されている必要があります。
  • レイアウト はD3D12_TEXTURE_LAYOUT_UNKNOWNする必要があります。
  • D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCILとD3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTERが無効なフラグです。

要件

要件
Header d3d12.h

こちらもご覧ください

CD3DX12_HEAP_DESC

コア列挙

記述子ヒープ