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 不参与工作提交,因此在硬件队列上提交新工作时通常不知道。 此因素是低延迟工作提交路径的主要动机。 但是,在硬件队列上提交工作时,KMD 需要通知某些利基方案和硬件限制。 例如,GPU 硬件计划程序要求 KMD 在实时上下文提交工作时将硬件运行列表从正常切换为实时。 如果 KMD 未参与工作提交,则无法立即触发 Runlist 开关,这会导致延迟实时工作执行。

若要解决此问题,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