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,才能在即時內容提交工作時,將硬體 Runlist 從一般切換為即時。 如果 KMD 未參與工作提交,則無法立即觸發 Runlist 參數,這會導致延遲即時工作執行。

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

DxgkDdiNotifyWorkSubmission 是從 UMD 到 Dxgkrnl 到 KMD 的簡單 Ping,通知後者已在特定硬體佇列上提交新工作,因此允許 KMD 起始特定動作,例如將 Runlist 切換為即時。

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