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::PageTableUpdateModeDXGK_PAGETABLEUPDATE_CPU_VIRTUAL,则 CPU 虚拟地址位于 CpuVirtual 字段中。 如果 DXGK_VIRTUALADDRESSCAPS::PageTableUpdateMode 为 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 上限时,才应使用该数组。
FirstPteVirtualAddress
由第一个更新的页面表项映射的 GPU 虚拟地址。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 10 |
支持的最低服务器 | Windows Server 2016 |
标头 | d3dkmddi.h (包括 D3dkmddi.h) |