Condividi tramite


DXGKDDI_NOTIFYWORKSUBMISSION funzione di callback (d3dkmddi.h)

Importante

Alcune informazioni si riferiscono a un prodotto di versione preliminare che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.

La funzione DxgkDdiNotifyWorkSubmission notifica 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.

Commenti

Nel modello di invio in modalità utente, il servizio di gestione delle chiavi 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. Tuttavia, esistono alcuni scenari di nicchia e limitazioni hardware in cui il Servizio di gestione delle chiavi deve ricevere una notifica ogni volta che il lavoro viene inviato in una coda hardware. Ad esempio, un utilità di pianificazione hardware GPU richiede a KMD di cambiare l'elenco di runlist hardware dal normale al tempo reale quando un contesto in tempo reale invia il lavoro. Se il servizio di gestione delle chiavi non è coinvolto nell'invio di lavoro, non può attivare immediatamente l'opzione runlist, che comporta il ritardo dell'esecuzione del lavoro in tempo reale.

Per risolvere questo problema, kmD può specificare lo stato di connessione della porta come D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY in fase di creazione della campanella. Ogni volta che UMD vede questo stato di porta, modifica il flusso di lavoro di invio in modo che dopo aver scritto un nuovo comando e anello la campanella, chiama nel kernel usando D3DKMTNotifyWorkSubmission. Dxgkrnl inoltra questa chiamata a KMD tramite DxgkDdiNotifyWorkSubmission.

DxgkDdiNotifyWorkSubmission è un semplice ping da UMD a Dxgkrnl a KMD, notificando a quest'ultimo che il nuovo lavoro è stato inviato in una determinata coda hardware, consentendo così a KMD di avviare azioni specifiche, ad esempio il passaggio dell'elenco di runlist in tempo reale.

KmD può anche richiedere la notifica dinamicamente dopo la creazione del campanello. Se kmD rileva una condizione in cui deve essere notificata l'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ò rendere la connessione con lo stato D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY.

I driver devono usare questo meccanismo in scenari molto specifici e infrequenti perché comporta un round trip da UMD a KMD su ogni invio di lavoro e se viene usato per scenari generali, quindi sconfigge lo scopo di un modello di invio in modalità utente a bassa latenza.

Per altre informazioni, vedere Invio in modalità utente.

Requisiti

Requisito Valore
Client minimo supportato Windows 11 versione 24H2 (WDDM 3.2)
Intestazione d3dkmddi.h
IRQL PASSIVE_LEVEL

Vedi anche

DXGKARG_NOTIFYWORKSUBMISSION

**DxgkDdiCreateDoorbell

DxgkCbDisconnectDoorbell