D3DKMTNotifyWorkSubmission 函数 (d3dkmthk.h)
重要
某些信息与预发行产品有关,该产品在商业发布之前可能会进行大幅修改。 Microsoft对此处提供的信息不作任何明示或暗示的保证。
D3DKMTNotifyWorkSubmission 通知内核模式显示驱动程序(KMD)用户模式显示驱动程序(UMD)已向 GPU 提交工作。
语法
NTSTATUS D3DKMTNotifyWorkSubmission(
D3DKMT_NOTIFY_WORK_SUBMISSION *unnamedParam1
);
参数
unnamedParam1
指向标识提交工作的硬件队列的 D3DKMT_NOTIFY_WORK_SUBMISSION 结构的指针。
返回值
D3DKMTNotifyWorkSubmission 如果成功 ping KMD,则返回STATUS_SUCCESS。 否则,如果指定了无效的硬件队列或标志,它将返回相应的错误代码,例如STATUS_INVALID_PARAMETER。
言论
在 用户模式工作提交 模型中,KMD 不参与工作提交,因此不知道何时在 HWQueue 上提交新工作。 此低延迟工作提交路径是模型的主要动机。 但是,当在 HWQueue 上提交工作时,需要通知 KMD 时,存在某些利基方案和硬件限制。 例如,GPU 硬件计划程序要求 KMD 在实时上下文提交工作时将硬件运行列表从正常切换为实时。 如果 KMD 未参与工作提交,则无法立即触发 Runlist 开关,这会导致延迟实时工作执行。
为满足此需求,KMD 可以在 门铃创建时指定门铃连接状态为D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY。 每当 UMD 看到此门铃状态时,它会调整其工作提交工作流,以便编写新命令并响铃后,它会使用 D3DKMTNotifyWorkSubmission调用内核。 Dxgkrnl 使用 DxgkDdiNotifyWorkSubmission将此调用转发到 KMD。
D3DKMTNotifyWorkSubmission 是从 UMD 到 Dxgkrnl 到 KMD 的简单 ping,通知后者已在特定的 HWQueue 上提交新工作,以便 KMD 可以启动特定的作,例如将运行列表切换到实时。
KMD 还可以在创建门铃后动态请求通知。 如果 KMD 检测到应在此硬件队列上收到工作提交通知的条件,则首先可以通过调用 Dxgkrnl的 dxgkCbDisconnectDoorbell 状态D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY来断开门铃的连接。 稍后,当 UMD 尝试重新连接门铃时,KMD 可以使用状态D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY建立连接。
驱动程序应在非常具体且不频繁的情况下使用此机制,因为它涉及每次工作提交时从 UMD 到 KMD 的往返,如果它用于广泛的方案,则它会失败低延迟用户模式提交模型的目的。
有关详细信息,请参阅 用户模式工作提交。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 11 版本 24H2 (WDDM 3.2) |
标头 | d3dkmthk.h |