DXGKDDI_NOTIFYWORKSUBMISSION funzione di callback (d3dkmddi.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.
La funzione DxgkDdiNotifyWorkSubmission notifica al KmD che UMD ha inviato un nuovo lavoro.
Sintassi
DXGKDDI_NOTIFYWORKSUBMISSION DxgkddiNotifyworksubmission;
NTSTATUS DxgkddiNotifyworksubmission(
INOUT_PDXGKARG_NOTIFYWORKSUBMISSION pArgs
)
{...}
Parametri
pArgs
[in] Puntatore a una struttura DXGKARG_NOTIFYWORKSUBMISSION che identifica la coda hardware in cui è stato inviato il lavoro.
Valore restituito
dxgkDdiNotifyWorkSubmission deve avere esito positivo e restituire STATUS_SUCCESS.
Osservazioni
Nel modello di invio di lavoro in modalità utente, kmd non è coinvolto nell'invio di lavoro e pertanto non è in genere consapevole quando viene inviato un nuovo lavoro in una coda hardware. Questo fattore è la motivazione principale di un percorso di invio di lavoro a bassa latenza. Esistono tuttavia alcuni scenari di nicchia e limitazioni hardware in cui il KMD deve ricevere una notifica ogni volta che il lavoro viene inviato in una coda hardware. Ad esempio, un'utilità di pianificazione hardware GPU richiede che il kmD cambi l'elenco di esecuzioni 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 dell'elenco di esecuzione, con il risultato di ritardare l'esecuzione del lavoro in tempo reale.
Per risolvere questo problema, 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 di invio in modo che dopo aver scritto un nuovo comando e squillato il campanello, chiama il kernel usando D3DKMTNotifyWorkSubmission. Dxgkrnl inoltra questa chiamata a KMD tramite DxgkDdiNotifyWorkSubmission.
DxgkDdiNotifyWorkSubmission è un semplice ping da UMD a Dxgkrnl al KMD, notificando al KMD che il nuovo lavoro è stato inviato su una particolare coda hardware, consentendo così al KMD di avviare azioni specifiche, ad esempio il passaggio dell'elenco di 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 DxgkCbDisconnectDoorbell 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 | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |