DXGKDDI_UPDATECURRENTVALUESFROMCPU回调函数 (d3dkmddi.h)

OS 调用 DxgkDdiUpdateCurrentValuesFromCpu ,以从 CPU 更新一批本机围栏的 CurrentValue

语法

DXGKDDI_UPDATECURRENTVALUESFROMCPU DxgkddiUpdatecurrentvaluesfromcpu;

NTSTATUS DxgkddiUpdatecurrentvaluesfromcpu(
  IN_CONST_PDXGKARG_UPDATECURRENTVALUESFROMCPU pUpdateCurrentValuesFromCpu
)
{...}

参数

pUpdateCurrentValuesFromCpu

[in]指向包含当前要更新的值 的DXGKARG_UPDATECURRENTVALUESFROMCPU 结构的指针。

注解

此 DDI 用于支持现有的“来自 CPU 的信号围栏”API 语义。 要求驱动程序写入 CurrentValue,而不是 Dxgkrnl 编写新的 CurrentValue,以便驱动程序有机会插入任何所需的预写入同步/屏障。 OS 同步 CPU 端更新,并保证最新的值可用于 DxgkDdiUpdateCurrentValuesFromCpu。 更新 CurrentValue 后,驱动程序必须触发 GPU 以取消阻止正在此围栏上等待的硬件队列,并取消阻止 CurrentValue 更新。

简而言之,驱动程序要遵循的步骤如下:


for i = 1 : NumFences
  1. Insert pre-write memory barrier if required
  2. write new value to CurrentValueCpuVa
  3. trigger GPU to unblock any HwQueues that got unblocked by the updated CurrentValue
end

OS 仅保证 CurrentValueKernelCpuVa 指针在此 DDI 调用期间有效,而不是在调用之前或之后有效。 因此,KMD 绝不能缓存此指针以用于其他位置。

有关本机 GPU 围栏的详细信息,请参阅 本机 GPU 围栏对象

要求

要求
最低受支持的客户端 Windows 11,版本 24H2
标头 d3dkmddi.h
IRQL DISPATCH_LEVEL

另请参阅

DXGKARG_UPDATECURRENTVALUESFROMCPU