Funzione D3DKMTNotifyWorkSubmission (d3dkmthk.h)
Importante
Alcune informazioni riguardano un prodotto in versione preliminare che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non fornisce alcuna garanzia, espressa o implicita, in relazione alle informazioni fornite qui.
D3DKMTNotifyWorkSubmission notifica al driver di visualizzazione in modalità kernel (KMD) che il driver di visualizzazione in modalità utente (UMD) ha inviato il lavoro alla GPU.
Sintassi
NTSTATUS D3DKMTNotifyWorkSubmission(
D3DKMT_NOTIFY_WORK_SUBMISSION *unnamedParam1
);
Parametri
unnamedParam1
Puntatore a una struttura D3DKMT_NOTIFY_WORK_SUBMISSION che identifica la coda hardware in cui è stato inviato il lavoro.
Valore restituito
D3DKMTNotifyWorkSubmission restituisce STATUS_SUCCESS se ha esito positivo nel ping del KMD. In caso contrario, restituisce un codice di errore appropriato, ad esempio STATUS_INVALID_PARAMETER se viene specificata una coda o un flag hardware non validi.
Osservazioni
Nell'modello di invio di lavoro in modalità utente il kmD non è coinvolto nell'invio di lavoro e quindi non è a conoscenza quando viene inviato un nuovo lavoro in un HWQueue. Questo percorso di invio di lavoro a bassa latenza è la motivazione principale del modello. Tuttavia, esistono alcuni scenari di nicchia e limitazioni hardware quando il KmD deve ricevere una notifica ogni volta che il lavoro viene inviato in un HWQueue. Ad esempio, un'utilità di pianificazione hardware GPU richiede che kmd cambi l'elenco di runlist hardware da normale a in tempo reale quando un contesto in tempo reale invia il lavoro. Se il KMD non è coinvolto nell'invio di lavoro, non può attivare immediatamente l'opzione runlist, che comporta un ritardo dell'esecuzione del lavoro in tempo reale.
Per soddisfare questa esigenza, kmd può specificare lo stato di connessione del campanello come D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY in fase di creazione del campanello . Ogni volta che UMD vede questo stato del campanello, regola il flusso di lavoro inviato in modo che dopo aver scritto un nuovo comando e squillato il campanello, chiama il kernel usando D3DKMTNotifyWorkSubmission. Dxgkrnl inoltra questa chiamata a KMD usando DxgkDdiNotifyWorkSubmission.
D3DKMTNotifyWorkSubmission è un semplice ping da UMD a Dxgkrnl al KMD, notificando al KMD che il nuovo lavoro è stato inviato su un determinato HWQueue in modo che kmD possa avviare azioni specifiche, ad esempio il passaggio di un runlist in tempo reale.
KmD può anche richiedere la notifica in modo dinamico dopo la creazione del campanello. Se KMD rileva una condizione in cui deve ricevere una notifica dell'invio di lavoro in questa coda hardware, può prima disconnettere il campanello chiamando DxgkrnlDxgkCbDisconnectDoorbell con stato D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY. Successivamente, quando UMD tenta di riconnettere il campanello, kmD può stabilire la connessione con lo stato D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY.
I driver devono usare questo meccanismo in scenari molto specifici e poco frequenti perché implica un round trip da UMD a KMD in ogni invio di lavoro e se viene usato per scenari generali, sconfigge lo scopo di un modello di invio in modalità utente a bassa latenza.
Per altre informazioni, vedere invio di lavoro in modalità utente.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 11, versione 24H2 (WDDM 3.2) |
intestazione | d3dkmthk.h |