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 上提交新工作時不會察覺。 這個低延遲的工作提交路徑是模型的主要動機。 不過,當 KMD 需要在 HWQueue 上提交工作時收到通知時,會有一些特定的案例和硬體限制。 例如,GPU 硬體排程器需要 KMD 在即時內容提交工作時,將硬體 Runlist 從一般切換為即時。 如果 KMD 未涉及工作提交,則無法立即觸發 Runlist 參數,這會導致延遲即時工作執行。

為了因應此需求,KMD 可以將門鈴連線狀態指定為在 門鈴建立時間D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY。 每當 UMD 看到此門鈴狀態時,它會調整其工作提交工作流程,如此一來,在撰寫新的命令並響鈴之後,它會使用 D3DKMTNotifyWorkSubmission 呼叫核心。 Dxgkrnl 會使用 DxgkDdiNotifyWorkSubmission 將此呼叫轉送到 KMD。

D3DKMTNotifyWorkSubmission 是從 UMD 到 Dxgkrnl 到 KMD 的簡單 Ping,通知後者已在特定 HWQueue 上提交新工作,讓 KMD 可以起始特定動作,例如將 Runlist 切換為即時。

KMD 也可以在建立門鈴之後動態要求通知。 如果 KMD 偵測到應該在此硬體佇列上收到工作提交通知的條件,則必須先呼叫 DxgkrnlDxgkCbDisconnectDoorbell ,並將狀態D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY中斷門鈴的連線。 稍後,當 UMD 嘗試重新連線門鈴時,KMD 可以讓連線狀態D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY。

驅動程式應該在非常特定且不頻繁的案例中使用這項機制,因為它牽涉到每個工作提交的 UMD 到 KMD 的往返,如果是用於廣泛案例,則會使低延遲使用者模式提交模型的用途失效。

如需詳細資訊,請參閱 使用者模式工作提交

規格需求

需求
最低支援的用戶端 Windows 11 版本 24H2 (WDDM 3.2)
標頭 d3dkmthk.h

另請參閱

D3DKMT_NOTIFY_WORK_SUBMISSION

D3DKMTCreateDoorbell

DxgkCbDisconnectDoorbell

DxgkDdiNotifyWorkSubmission