DXGK_GPUMMUCAPS 結構 (d3dkmddi.h)
核心模式驅動程式會使用 DXGK_GPUMMUCAPS 結構來表示虛擬記憶體尋址功能。
語法
typedef struct _DXGK_GPUMMUCAPS {
union {
struct {
UINT ReadOnlyMemorySupported : 1;
UINT NoExecuteMemorySupported : 1;
UINT ZeroInPteSupported : 1;
UINT ExplicitPageTableInvalidation : 1;
UINT CacheCoherentMemorySupported : 1;
UINT PageTableUpdateRequireAddressSpaceIdle : 1;
UINT LargePageSupported : 1;
UINT DualPteSupported : 1;
UINT AllowNonAlignedLargePageAddress : 1;
UINT SysMem64KBPageSupported : 1;
UINT InvalidTlbEntriesNotCached : 1;
UINT SysMemLargePageSupported : 1;
UINT CachedPageTables : 1;
#if ...
UINT Reserved : 19;
#elif
UINT Reserved : 20;
#elif
UINT Reserved : 21;
#elif
UINT Reserved : 22;
#else
UINT Reserved : 24;
#endif
};
UINT Value;
};
DXGK_PAGETABLEUPDATEMODE PageTableUpdateMode;
UINT VirtualAddressBitCount;
UINT LeafPageTableSizeFor64KPagesInBytes;
UINT PageTableLevelCount;
struct {
UINT SourcePageTableVaInTransfer : 1;
UINT Reserved : 31;
} LegacyBehaviors;
} DXGK_GPUMMUCAPS;
成員
ReadOnlyMemorySupported
當設定為 1 時,驅動程式支援記憶體頁面上的唯讀保護。
NoExecuteMemorySupported
當設定為 1 時,驅動程式不支援在記憶體頁面上 執行 保護。
ZeroInPteSupported
當設定為 1 時,GPU 支援 零DXGK_PTE 旗標。 這適用於所有頁面數據表層級。
ExplicitPageTableInvalidation
表示頁面表或頁面目錄的所有專案都應該透過 UpdatePageTable 明確放入無效的狀態,再釋出。 視訊記憶體管理員預設可能會釋出包含先前有效專案的分頁表,如果不再需要這些專案 (,例如釋放大型 GPU 虛擬位址範圍,導致基礎頁面數據表) 損毀。
注意
此旗標通常由需要模擬分頁表的軟體驅動程式使用,而且需要追蹤每一頁數據表項目的資訊,而且所有分頁表專案更新都需要清楚的 init/deinit 配對。
CacheCoherentMemorySupported
表示驅動程式支援頁面數據表專案中的 CacheCoherent 位,並可對系統記憶體執行 I/O 一致的傳輸。
PageTableUpdateRequireAddressSpaceIdle
表示 GPU 不支援更新分頁表專案,或使引擎目前使用的位址空間無效轉譯待看緩衝區。 設定此旗標時,視訊記憶體管理員可確保在修改其分頁表專案時,以及轉譯待看緩衝區失效時,會暫停共用位址空間的所有內容。
LargePageSupported
當設定為 1 時,除了分葉數據表以外,所有層級的頁面都支援DXGK_PTE) 中的大型頁面 (LargePage 位。
DualPteSupported
當設定為 1 時,GPU 支援層級一頁數據表中的兩個指標, (4 KB 頁面數據表和 64 KB 頁面表) 。
AllowNonAlignedLargePageAddress
當設定為 1 時,當大型頁面專案的實體位址未對齊分葉頁面數據表涵蓋範圍時,操作系統就能夠設定 LargePage 旗標。 從 Windows 10 1607 版 (WDDM 2.1) 開始提供。
SysMem64KBPageSupported
驅動程式會在 64KB 提供記憶體區段管理。 從 Windows 10 1607 版 (WDDM 2.1) 開始提供。
InvalidTlbEntriesNotCached
設定此位時,驅動程式不會針對從無效狀態轉換為有效狀態的 VA 範圍,收到 DxgkDdiBuildPagingBuffer 的呼叫。 預期硬體的 TLB 不會快取無效的翻譯
從 Windows 10 1903 版 (WDDM 2.6 版) 開始提供。
SysMemLargePageSupported
驅動程式提供大型頁面支援。 從 Windows Server 2022 (WDDM 2.9) 開始提供。
CachedPageTables
支援快取的頁面數據表。 從 WDDM 3.1 開始提供。
Reserved
保留供系統使用;請勿使用。
Value
等位結構的值,以整數表示。
PageTableUpdateMode
定義 DxgkDdiUpdatePageTable 作業中使用的地址類型。 設定DXGK_PAGETABLEUPDATE_GPU_VIRTUAL時,所有分頁作業都會發生在系統內容的虛擬位址空間中。 當頁面目錄位於本機 GPU 記憶體區段中時,無法將更新模式設定為 DXGK_PAGETABLEUPDATE_CPU_VIRTUAL。
VirtualAddressBitCount
GPU 虛擬位址中的位數。
LeafPageTableSizeFor64KPagesInBytes
使用 64KB 頁面時,分葉頁面表的大小。 大小必須是 CPU 頁面大小的倍數, (4096) 。
PageTableLevelCount
支援的頁表層級數目。 最小值為 2 (定義為 DXGK_MIN_PAGE_TABLE_LEVEL_COUNT) 。 最大值為 DXGK_MAX_PAGE_TABLE_LEVEL_COUNT。
當 PageTableLevelCount 為 2 時,根頁面數據表會動態重設大小,而且頁面數據表的大小是透過 DxgkDdiGetRootPageTableSize 來決定。 當 PageTableLevelCount 大於 2 時,所有頁面數據表層級都有固定的大小,其描述方式為 DXGK_PAGE_TABLE_LEVEL_DESC::P ageTableSizeInBytes。
LegacyBehaviors
LegacyBehaviors.SourcePageTableVaInTransfer
當設定為 1 時,視訊記憶體管理員會在配置收回期間,在 TransferVirtual 中設定 SourcePageTable 位址。
LegacyBehaviors.Reserved
保留;請勿使用。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 |
最低支援的伺服器 | Windows Server 2016 |
標頭 | d3dkmddi.h (include D3dkmddi.h) |