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_VIRTUALpDmaBuffer 设置为 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)