D3DKMTUpdateGpuVirtualAddress 函数 (d3dkmthk.h)
D3DKMTUpdateGpuVirtualAddress 是磁贴资源上下文中使用的一种特殊操作。 它允许驱动程序指定要应用于单批页表更新中的进程虚拟地址空间的多个映射操作。
语法
NTSTATUS D3DKMTUpdateGpuVirtualAddress(
[in] const D3DKMT_UPDATEGPUVIRTUALADDRESS *unnamedParam1
);
参数
[in] unnamedParam1
指向描述操作 的D3DKMT_UPDATEGPUVIRTUALADDRESS 结构的指针。
返回值
返回代码 | 说明 |
---|---|
STATUS_SUCCESS | 已成功创建设备上下文。 |
STATUS_INVALID_PARAMETER | 参数已验证并确定为不正确。 |
此函数还可能返回其他 NTSTATUS 值。
注解
图形处理单元 (GPU) 虚拟地址的范围 (除复制操作) 的源外,必须属于通过调用 ReserveGpuVirtualAddressRange 获取的单个虚拟地址范围。 同样,复制操作中所有源的虚拟地址范围必须属于单个虚拟地址范围,这是通过调用 ReserveGpuVirtualAddressRange 获取的。
页表更新在专用于指定的呈现上下文的分页上下文上执行,并且仅在关联的呈现上下文向指定的受监视围栏对象发出 FenceValue 信号后,才在 GPU 上执行。 页表更新完成后,分页上下文会将受监视围栏对象信号到 FenceValue+1,从而允许呈现上下文与页表更新紧密联锁。
允许更新操作中的虚拟地址范围相交。 操作将按提交顺序应用。
在单个 UpdateVirtualAddress 调用中 :
- 映射操作中的所有虚拟地址范围和复制操作中的目标范围必须属于同一保留 (零) 范围。
- 允许复制操作中的源虚拟地址范围来自其他保留 (零) 范围。
- 所有复制操作中的源虚拟地址范围必须属于同一保留 (零) 范围。
驱动程序可以提交许多 UpdateGpuVirtualAddress 调用,这些调用将在呈现围栏后面排队。 当排队更新操作数超过 128 时,将阻止调用线程,直到视频内存管理器处理以前的操作。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 |
最低受支持的服务器 | Windows Server 2016 |
目标平台 | 通用 |
标头 | d3dkmthk.h (包括 D3dkmthk.h) |
Library | Gdi32.lib |
DLL | Gdi32.dll |