PFND3DDDI_UPDATEGPUVIRTUALADDRESSCB回调函数 (d3dumddi.h)

pfnUpdateGpuVirtualAddressCb 是磁贴资源上下文中使用的特殊操作。 它允许用户模式驱动程序指定要在单批页表更新中应用于进程的虚拟地址空间的映射操作。

除复制操作) 的源地址之外,所有操作 ( (GPU) 虚拟地址的范围必须属于通过调用 pfnReserveGpuVirtualAddressCb 获取的单个虚拟地址范围。 同样,复制操作中所有源的虚拟地址范围必须属于单个虚拟地址范围,这是通过调用 pfnReserveGpuVirtualAddressCb 获取的

页表更新在专用于指定的呈现上下文的分页上下文上执行,并且仅在关联的呈现上下文向指定的受监视围栏对象发出 FenceValue 信号后,才在 GPU 上执行。 页表更新完成后,分页上下文会将受监视围栏对象信号到 FenceValue+1,从而允许呈现上下文与页表更新紧密联锁。

语法

PFND3DDDI_UPDATEGPUVIRTUALADDRESSCB Pfnd3dddiUpdategpuvirtualaddresscb;

HRESULT Pfnd3dddiUpdategpuvirtualaddresscb(
  HANDLE hDevice,
  const D3DDDICB_UPDATEGPUVIRTUALADDRESS *unnamedParam2
)
{...}

参数

hDevice

显示设备的句柄。

unnamedParam2

pData [in]

指向描述要执行的操作 的D3DDDICB_UPDATEGPUVIRTUALADDRESS 结构的指针。

返回值

如果此回调函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

允许更新操作中的虚拟地址范围相交。 操作将按提交顺序应用。

在单个 pfnUpdateVirtualAddressCb 调用中:

  • 映射操作中的所有虚拟地址范围和复制操作中的目标范围必须属于同一保留 (零) 范围。
  • 允许复制操作中的源虚拟地址范围来自其他保留 (零) 范围。
  • 所有复制操作中的源虚拟地址范围必须属于同一保留 (零) 范围。
用户模式驱动程序可以提交许多 pfnUpdateGpuVirtualAddressCb 调用,操作将在呈现围栏后面排队。 当排队的更新操作数超过 128 时,将阻止调用线程,直到视频内存管理器处理了操作。

要求

要求
最低受支持的客户端 Windows 10
最低受支持的服务器 Windows Server 2016
目标平台 桌面
标头 d3dumddi.h (包括 D3dumddi.h)

另请参阅

D3DDDICB_UPDATEGPUVIRTUALADDRESS

pfnReserveGpuVirtualAddressCb