D3DDDI_MAPGPUVIRTUALADDRESS 结构 (d3dukmdt.h)

D3DDDI_MAPGPUVIRTUALADDRESS结构与 pfnMapGpuVirtualAddressCb 一起使用,以将 GPU 虚拟地址范围映射到特定的分配范围或将其置于“无效”或“零”状态。

语法

typedef struct D3DDDI_MAPGPUVIRTUALADDRESS {
  D3DKMT_HANDLE                           hPagingQueue;
  D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS   BaseAddress;
  D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS   MinimumAddress;
  D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS   MaximumAddress;
  D3DKMT_HANDLE                           hAllocation;
  D3DKMT_ALIGN64 D3DGPU_SIZE_T            OffsetInPages;
  D3DKMT_ALIGN64 D3DGPU_SIZE_T            SizeInPages;
  D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE Protection;
  D3DKMT_ALIGN64 UINT64                   DriverProtection;
  UINT                                    Reserved0;
  D3DKMT_ALIGN64 UINT64                   Reserved1;
  D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS   VirtualAddress;
  D3DKMT_ALIGN64 UINT64                   PagingFenceValue;
} D3DDDI_MAPGPUVIRTUALADDRESS;

成员

hPagingQueue

设备分页队列的句柄,用于操作。

BaseAddress

(可选) 如果不是 NULL,则视频内存管理器将尝试使用此地址作为映射的基址。 如果从 BaseAddressBaseAddress+Size 的范围不是空闲的,则它必须属于以前通过调用 pfnReserveGpuVirtualAddressCbpfnMapGpuVirtualAddressCb 获取的范围

BaseAddress 值以字节为单位,必须与 CPU 页边界对齐。 如果指定 NULL,则视频内存管理器将在指定的 MinimumAddressMaximumAddress 中选取分配的基址。

MinimumAddress

(可选) 指定要为映射范围考虑的最小 GPU 虚拟地址。

MinimumAddress 值以字节为单位,必须与 4KB 页面对齐。 当 BaseAddress != NULL 时,将忽略此参数。

MaximumAddress

(可选) 指定要为映射范围考虑的最大 GPU 虚拟地址。 视频内存管理器将保证 BaseAddress+Size<= MaximumAddress。 如果 MaximumAddress 设置为 NULL,则视频内存管理器不会应用任何限制。

MaximumAddress 值以字节为单位,必须与 4KB 页面对齐。 当 BaseAddress != NULL 时,将忽略此参数。

hAllocation

要映射到 GPU 虚拟地址空间的分配的句柄。 指定 Protection.NoAccessProtection.Zero 时必须为 NULL。

OffsetInPages

指定必须映射的指定分配中起始页的偏移量(以 4KB 为单位)。

SizeInPages

指定要映射的范围的大小(以 4KB 页为单位)。

Protection

一个D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE结构,用于指定所映射的 GPU 虚拟地址上的保护。

DriverProtection

指定与所分配的 VA 范围关联的特定于驱动程序的 64 位保护值。 对于与此虚拟地址范围对应的页表条目,将在调用 DxgkDdiUpdatePageTable 时使用指定的驱动程序保护。

Reserved0

此成员是保留成员,应设置为零。

Reserved1

此成员是保留成员,应设置为零。

VirtualAddress

分配给分配的虚拟地址。

PagingFenceValue

当映射操作在 GPU 上完成时,视频内存管理器发出信号的设备分页围栏值。 用户模式驱动程序必须确保此围栏已停用或显式等待该围栏上的 CPU 或 GPU,然后才允许 GPU 访问映射的范围,否则可能发生不可恢复的故障。 可能会返回零围栏值,这意味着操作已完成。

要求

要求
最低受支持的客户端 Windows 10
最低受支持的服务器 Windows Server 2016
标头 d3dukmdt.h (包括 D3dumddi.h、D3dkmddi.h)

另请参阅

D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE

D3DKMTMapGpuVirtualAddress

DxgkDdiUpdatePageTable

pfnMapGpuVirtualAddressCb

pfnReserveGpuVirtualAddressCb