DXGKDDI_NOTIFYWORKSUBMISSION回调函数 (d3dkmddi.h)

重要

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

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

语法

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 检测到应在此硬件队列上通知其工作提交的情况,则它可以通过调用状态为 D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY 的 DxgkCbDisconnectDoorbell 来断开门铃的连接。 稍后,当 UMD 尝试重新连接门铃时,KMD 可以使连接状态D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY。

驱动程序应在非常具体和不频繁的方案中使用此机制,因为它涉及在每个工作提交中从 UMD 到 KMD 的往返行程,如果将其用于广泛的方案,则它无法实现低延迟用户模式提交模型的用途。

有关详细信息,请参阅 用户模式工作提交

要求

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

另请参阅

DXGKARG_NOTIFYWORKSUBMISSION

**DxgkDdiCreateDoorbell

DxgkCbDisconnectDoorbell