DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE 結構 (d3dkmddi.h)
DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE 會當做頁面數據表更新作業的一部分使用。
語法
typedef struct _DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE {
UINT PageTableLevel;
HANDLE hAllocation;
DXGK_PAGETABLEUPDATEADDRESS PageTableAddress;
DXGK_PTE *pPageTableEntries;
UINT StartIndex;
UINT NumPageTableEntries;
UINT Reserved0;
DXGK_UPDATEPAGETABLEFLAGS Flags;
UINT64 DriverProtection;
UINT64 AllocationOffsetInBytes;
HANDLE hProcess;
DXGK_PAGETABLEUPDATEMODE UpdateMode;
DXGK_PTE *pPageTableEntries64KB;
D3DGPU_VIRTUAL_ADDRESS FirstPteVirtualAddress;
} DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE;
成員
PageTableLevel
已更新的頁面數據表層級。
hAllocation
配置的核心模式驅動程式句柄,該配置是由分頁表項目所對應。 句柄是由 DxgkDdiCreateAllocation 的核心模式驅動程式所傳回。 句柄可以是 NULL ,其沒有核心模式驅動程式處理 (頁表、頁面目錄等 ) 。
PageTableAddress
要更新的頁面數據表位址。 如果 DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateMode是DXGK_PAGETABLEUPDATE_CPU_VIRTUAL,則 CPU 虛擬地址位於 [CpuVirtual ] 字段中。 如果 DXGK_VIRTUALADDRESSCAPS::P ageTableUpdateMode是DXGK_PAGETABLEUPDATE_GPU_VIRTUAL,GPU 虛擬位址會位於 [GpuVirtual ] 字段中。 如果 DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateMode是DXGK_PAGETABLEUPDATE_GPU_PHYSICAL,GPU 實體地址會位於 [GpuPhysical ] 字段中。
pPageTableEntries
需要複製的專案。 pPageTableEntries 陣列中的索引零會對應至驅動程式頁面數據表項目陣列中的 StartIndex。
StartIndex
頁面數據表中應該複製專案之頁面數據表專案的起始索引。 分頁表項目陣列索引是以零起始。
NumPageTableEntries
需要複製的項目數目。
Reserved0
這個成員是保留的,而且應該設定為零。
Flags
描述 更新作業的DXGK_UPDATEPAGETABLEFLAGS結構。
DriverProtection
由 MapGpuVirtualAddressRangeCb 中的 UMD 傳遞。
AllocationOffsetInBytes
當 hAllocation 為非 NULL 時,此位元元會指定從配置開始到此更新作業所鎖定之第一頁的相對位移,以位元組為單位。 如果更新以 hAllocation 的多個頁面為目標,則保證這些頁面是循序的。 例如,視訊記憶體管理員可能會將 GPU 虛擬位址更新為 hAllocation 中的第 4,5,6,7 頁。 驅動程序永遠不會看到以非循序頁面為目標的單一更新作業 (,例如 4,5,7) 。 請注意,雖然頁面保證會從配置的觀點循序,但是它們可能不會在記憶體中實際連續。
hProcess
頁面數據表專案更新之進程的核心模式驅動程序進程句柄。 這是從 DxgkDdiCreateProcess 傳回的值。
UpdateMode
定義 PageTableAddress 的意義。 初始化分頁程式的分頁表時,更新模式一律 會DXGK_PAGETABLEUPDATE_CPU_VIRTUAL, 且 pDmaBuffer 會設定為 NULL。 在此情況下,驅動程式必須立即更新頁面數據表。 在其他情況下, UpdateMode 會設定為 值,該值是在 DXGK_VIRTUALADDRESSCAPS::GpuMmu.PageTableUpdateMode 中指定。
更新分葉分頁表數據表的頁面數據表專案時,視訊記憶體管理員會假設每個專案都涵蓋 4KB 頁面。 如果 GPU 頁面大於 (4 KB * 2n) ,則視訊記憶體管理員會在陣列中提供專案,以指向 GPU 頁面。 核心模式驅動程式可能只需要初始化頁面數據表專案,這指向 GPU 頁面的開頭。 下圖說明 GPU 頁面為 16 KB 的情況。
pPageTableEntries64KB
需要從 64KB 分頁表複製的專案。 pPageTableEntries 陣列中的索引零會對應至驅動程式頁面數據表項目陣列中的 StartIndex。 只有在設定 DXGK_GPUMMUCAPS::D ualPteSupported cap 時,才會使用陣列。
FirstPteVirtualAddress
第一個更新的頁面表項目所對應的 GPU 虛擬位址。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 |
最低支援的伺服器 | Windows Server 2016 |
標頭 | d3dkmddi.h (include D3dkmddi.h) |