Condividi tramite


Funzione D3DKMTNotifyWorkSubmission (d3dkmthk.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.

D3DKMTNotifyWorkSubmission notifica al driver di visualizzazione in modalità kernel 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 riesce a eseguire il 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.

Commenti

Nel modello di invio in modalità utente , il servizio di gestione delle chiavi non è coinvolto nell'invio di lavoro e quindi non è consapevole quando viene inviato un nuovo lavoro in un modulo HWQueue. Questo percorso di invio al lavoro a bassa latenza è la motivazione principale del modello. Tuttavia, esistono alcuni scenari di nicchia e limitazioni hardware quando il SERVIZIO di gestione delle chiavi deve ricevere una notifica ogni volta che il lavoro viene inviato in un HWQueue. Ad esempio, un utilità di pianificazione hardware GPU richiede il passaggio dell'elenco di runlist hardware da normale a in tempo reale quando un contesto in tempo reale invia il lavoro. Se kmD 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 soddisfare questa necessità, kmD può specificare lo stato di connessione della porta come D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY in fase di creazione del campanello. 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 usando DxgkDdiNotifyWorkSubmission.

D3DKMTNotifyWorkSubmission è un semplice ping da UMD a Dxgkrnl a KMD, notificando a quest'ultimo che è stato inviato un nuovo lavoro in un determinato HWQueue in modo che kmD possa avviare azioni specifiche, ad esempio il passaggio a un 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 DxgkrnldxgkCbDisconnectDoorbell 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 d3dkmthk.h

Vedi anche

D3DKMT_NOTIFY_WORK_SUBMISSION

D3DKMTCreateDoorbell

DxgkCbDisconnectDoorbell

DxgkDdiNotifyWorkSubmission