D3D12_FEATURE_DATA_ARCHITECTURE結構 (d3d12.h)

提供配接器架構的詳細數據,讓您的應用程式可以更妥善地針對特定配接器屬性進行優化。

附注 此結構已被 D3D12_FEATURE_DATA_ARCHITECTURE1 結構取代。 如果您的應用程式以 Windows 10 版本 1703(Creators'Update) 或更新版本為目標,請改用 D3D12_FEATURE_DATA_ARCHITECTURE1 (和 D3D12_FEATURE_ARCHITECTURE1)。
 

語法

typedef struct D3D12_FEATURE_DATA_ARCHITECTURE {
  UINT NodeIndex;
  BOOL TileBasedRenderer;
  BOOL UMA;
  BOOL CacheCoherentUMA;
} D3D12_FEATURE_DATA_ARCHITECTURE;

成員

NodeIndex

在多配接器作業中,這表示裝置的實體適配卡是相關的。 請參閱 多配接器系統NodeIndex 會在呼叫 checkFeatureSupport之前,由應用程式填入,因為應用程式可以擷取每個配接器架構的詳細數據。

TileBasedRenderer

指定硬體和驅動程式是否支援以磚為基礎的轉譯器。 如果硬體和驅動程式支援磚式轉譯器,運行時間會將這個成員設定為 TRUE

UMA

指定硬體和驅動程式是否支援UMA。 如果硬體和驅動程式支援UMA,運行時間會將這個成員設定為 TRUE

CacheCoherentUMA

指定硬體和驅動程式是否支援快取一致的 UMA。 如果硬體和驅動程式支援快取一致的 UMA,運行時間會將這個成員設定為 TRUE

言論

如何使用 UMA 和 CacheCoherentUMA

D3D12 應用程式應該關注管理記憶體落地,並提供最佳的堆積屬性。 D3D12 應用程式可以透過管理 D3D12_HEAP_TYPE_DEFAULT 堆積中的資源落地來管理,讓許多 GPU 架構都能保持簡化並正常執行。 這些應用程式只需要呼叫 IDXGIAdapter3::QueryVideoMemoryInfo 以進行DXGI_MEMORY_SEGMENT_GROUP_LOCAL,而且必須能夠容忍該D3D12_HEAP_TYPE_UPLOAD和D3D12_HEAP_TYPE_READBACK來自該相同的記憶體區段群組。

不過,對於推送限制的應用程式而言,這種簡單的設計過於受限。 因此,D3D12_FEATURE_DATA_ARCHITECTURE可協助應用程式更妥善地優化基礎配接器屬性。

某些應用程式可能想要更妥善地針對離散適配卡進行優化,並承擔管理系統記憶體和視訊記憶體預算的額外複雜度。 如果上傳堆積的大小與預設紋理的大小相媲美,可以使用記憶體使用率的近一倍。 支援這類優化時,應用程式可以偵測兩個落地預算或辨識 UMAfalse

某些應用程式可能想要更妥善地針對整合式/UMA 適配卡進行優化,特別是那些想要在行動裝置上延長電池使用時間的應用程式。 簡單的 D3D12 應用程式會在 UMA 上不一定必要時,強制在具有不同屬性的堆積之間複製數據。 不過,UMA 屬性本身包含 GPU 設計的相當模糊的灰色區域。 請勿假設 UMA 表示所有 GPU 可存取的記憶體都可以自由地讓 CPU 存取,因為它不會。 有一個更貼近該類型思維的屬性:CacheCoherentUMA

CacheCoherentUMAfalse時,可以使用單一落地預算,但 UMA 設計通常受益於三個堆積屬性。 透過上傳和讀取資源與堆積的明智使用方式,移除資源複製的機會確實存在,以提供記憶體的CPU存取權。 不過,這樣的機會並不明確。 因此,應用程式應該謹慎;建議在各種「UMA」系統中進行試驗,因為可能需要啟用或排除特定裝置識別碼。 建議您瞭解 GPU 記憶體架構,以及堆積類型如何轉譯為快取屬性。 成功的可行性可能取決於每個處理器讀取或寫入數據的頻率、數據存取的大小和位置等等。對於進階開發人員:當 UMA 為 true 且 快取CoherentUMAfalse時,這些配接器最獨特的特性是上傳堆積仍會合併寫入。 不過,某些 UMA 配接器受益於預設和上傳堆積的無 CPU 存取和寫入合併屬性。 如需詳細資訊,請參閱 GetCustomHeapProperties

CacheCoherentUMA 成立時,應用程式可以更強烈地娛樂放棄堆積的屬性,並使用相當於隨處上傳堆積的自定義堆積。 零複製UMA優化通常會受到鼓勵,因為更多案例只會受益於共用使用量。 記憶體模型非常有利於更多案例和更廣泛的採用。 一些邊角案例可能仍然存在,其中的好處不容易獲得,但它們應該比其他選項少得多,而且有害得多。 對於進階開發人員:CacheCoherentUMA 表示記憶體階層中的大量快取也會在 CPU 和 GPU 之間統一或整合。 最獨特的可觀察特性是上傳堆積實際上是在 cacheCoherentUMA回寫。 針對這些架構,在上傳堆積上使用 write-combine 通常是損害。

絕大多數單一配接器應用程式都應該忽略低階詳細數據。 一如往常,單一配接器應用程式可以簡化環境,並確保CPU寫入以上傳堆積時,會使用可寫入-合併-易記的模式。 較低層級的詳細數據有助於強化多配接器應用程式的概念。 多配接器應用程式可能需要瞭解適配卡架構屬性,以便選擇最佳的自定義堆積屬性,以有效率地在配接器之間移動數據。

要求

要求 價值
標頭 d3d12.h

另請參閱

核心結構

D3D12_FEATURE