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:: PageTableUpdateModeDXGK_PAGETABLEUPDATE_GPU_VIRTUAL,则 GPU 虚拟地址位于 GpuVirtual 字段中。 如果 DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateModeDXGK_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) |