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,则视频内存管理器将尝试使用此地址作为映射的基址。 如果从 BaseAddress 到 BaseAddress+Size 的范围不是空闲的,则它必须属于以前通过调用 pfnReserveGpuVirtualAddressCb 或 pfnMapGpuVirtualAddressCb 获取的范围。
BaseAddress 值以字节为单位,必须与 CPU 页边界对齐。 如果指定 NULL,则视频内存管理器将在指定的 MinimumAddress 和 MaximumAddress 中选取分配的基址。
MinimumAddress
(可选) 指定要为映射范围考虑的最小 GPU 虚拟地址。
MinimumAddress 值以字节为单位,必须与 4KB 页面对齐。 当 BaseAddress != NULL 时,将忽略此参数。
MaximumAddress
(可选) 指定要为映射范围考虑的最大 GPU 虚拟地址。 视频内存管理器将保证 BaseAddress+Size<= MaximumAddress。 如果 MaximumAddress 设置为 NULL,则视频内存管理器不会应用任何限制。
MaximumAddress 值以字节为单位,必须与 4KB 页面对齐。 当 BaseAddress != NULL 时,将忽略此参数。
hAllocation
要映射到 GPU 虚拟地址空间的分配的句柄。 指定 Protection.NoAccess 或 Protection.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) |