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 |