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 调用期间有效,而不是在此 DDI 调用之前或之后有效。 因此,KMD 绝不能缓存此指针以在其他位置使用。
有关本机 GPU 围栏的详细信息,请参阅 本机 GPU 围栏对象。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 11 版本 24H2 |
标头 | d3dkmddi.h |
IRQL | DISPATCH_LEVEL |