D3D12_HEAP_FLAGS列舉 (d3d12.h)
指定堆積選項,例如堆積是否可以包含紋理,以及資源是否跨適配卡共用。
Syntax
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 層 的配接器必須設定下列三個旗標的兩個。值 | Description |
---|---|
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 不支援此旗標,而且只能搭配 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, 且 [品質 ] 設定為 0。
- 版面配置 必須D3D12_TEXTURE_LAYOUT_UNKNOWN。
- D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL和D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER是無效的旗標。
規格需求
需求 | 值 |
---|---|
標頭 | d3d12.h |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應