次の方法で共有


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 ではサポートされておらず、D3D12_HEAP_TYPE_DEFAULT CreateCommittedResource でのみ使用できます。

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

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

必要条件

要件 価値
ヘッダー d3d12.h

関連項目

CD3DX12_HEAP_DESC

コア列挙 の

記述子ヒープ の