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_DIMENSION 與 D3D12_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層 的配接器必須設定下列三個旗標的兩個。價值 | 描述 |
---|---|
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的資源。 (后兩個專案是 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_SUPPORT1D3D12_FORMAT_SUPPORT1_DISPLAY 成員。
- 維度 必須D3D12_RESOURCE_DIMENSION_TEXTURE2D。
- 對齊 必須是 0。
- ArraySize 可以是 1 或 2。
- MipLevels 必須是 1。
- SampleDesc 必須設定為 1 Count,Quality 設為 0。
- 版面配置 必須D3D12_TEXTURE_LAYOUT_UNKNOWN。
- D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL和D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER是無效的旗標。
要求
要求 | 價值 |
---|---|
標頭 | d3d12.h |