DXGKDDI_NOTIFYWORKSUBMISSION回调函数 (d3dkmddi.h)

重要

某些信息与预发行产品相关,在商业发布之前,该产品可能会进行实质性修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。

DxgkDdiNotifyWorkSubmission 函数通知 KMD 新工作已提交。

语法

DXGKDDI_NOTIFYWORKSUBMISSION DxgkddiNotifyworksubmission;

NTSTATUS DxgkddiNotifyworksubmission(
  INOUT_PDXGKARG_NOTIFYWORKSUBMISSION pArgs
)
{...}

参数

pArgs

[in]指向 DXGKARG_NOTIFYWORKSUBMISSION 结构的指针,该结构标识提交工作的硬件队列。

返回值

DxgkDdiNotifyWorkSubmission 必须成功并返回STATUS_SUCCESS。

注解

在用户模式工作提交模型中,KMD 不参与工作提交,因此在硬件队列上提交新工作时通常不会察觉。 此因素是低延迟工作提交路径main动机。 但是,存在某些利基方案和硬件限制,每当在硬件队列上提交工作时,KMD 都需要收到通知。 例如,当实时上下文提交工作时,GPU 硬件计划程序要求 KMD 将硬件运行列表从正常切换为实时。 如果 KMD 未参与工作提交,则它无法立即触发运行列表切换,从而导致延迟实时工作执行。

若要解决此问题,KMD 可以在创建门铃 将门铃连接状态指定为D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY。 每当 UMD 看到此门铃状态时,它就会调整其工作提交工作流,以便编写新命令并响铃后,它使用 D3DKMTNotifyWorkSubmission 调用内核。 Dxgkrnl 通过 DxgkDdiNotifyWorkSubmission 将此调用转发到 KMD。

DxgkDdiNotifyWorkSubmission 是从 UMD 到 Dxgkrnl 到 KMD 的简单 ping,通知后者已在特定硬件队列上提交新工作,从而允许 KMD 启动特定操作,例如将运行列表切换到实时。

KMD 还可以在创建门铃后动态请求通知。 如果 KMD 检测到应在此硬件队列上通知其工作提交的情况,则可以先使用 DxgkCbDisconnectDoorbell 断开门铃,状态D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY。 稍后,当 UMD 尝试重新连接门铃时,KMD 可以建立状态为D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY的连接。

驱动程序应在非常具体且不经常使用的方案中使用此机制,因为它涉及每个工作提交时从 UMD 到 KMD 的往返,如果将其用于广泛的方案,则它违背了低延迟用户模式提交模型的目的。

要求

要求
最低受支持的客户端 WIN11_FUTURE
标头 d3dkmddi.h
IRQL PASSIVE_LEVEL

另请参阅

DXGKARG_NOTIFYWORKSUBMISSION

**DxgkDdiCreateDoorbell

DxgkCbDisconnectDoorbell