DXGKDDI_NOTIFYWORKSUBMISSION fonction de rappel (d3dkmddi.h)
Important
Certaines informations concernent un produit de préversion qui peut être sensiblement modifié avant sa publication commerciale. Microsoft n’offre aucune garantie, expresse ou implicite, en ce qui concerne les informations fournies ici.
La fonction DxgkDdiNotifyWorkSubmission avertit KMD que l’UMD a envoyé un nouveau travail.
Syntaxe
DXGKDDI_NOTIFYWORKSUBMISSION DxgkddiNotifyworksubmission;
NTSTATUS DxgkddiNotifyworksubmission(
INOUT_PDXGKARG_NOTIFYWORKSUBMISSION pArgs
)
{...}
Paramètres
pArgs
[in] Pointeur vers une structure DXGKARG_NOTIFYWORKSUBMISSION qui identifie la file d’attente matérielle sur laquelle le travail a été envoyé.
Valeur de retour
DxgkDdiNotifyWorkSubmission doit réussir et retourner STATUS_SUCCESS.
Remarques
Dans le modèle de soumission de travail en mode utilisateur, KMD n’est pas impliqué dans l’envoi de travail et n’est donc pas conscient quand un nouveau travail est envoyé sur une file d’attente matérielle. Ce facteur est la principale motivation d’un chemin d’envoi de travail à faible latence. Toutefois, il existe certains scénarios de niche et certaines limitations matérielles dans lesquelles KMD doit être averti chaque fois que le travail est soumis sur une file d’attente matérielle. Par exemple, un planificateur de matériel GPU nécessite kmD pour basculer la liste d’exécutions matérielles normale à en temps réel lorsqu’un contexte en temps réel envoie le travail. Si KMD n’est pas impliqué dans la soumission de travail, il ne peut pas déclencher immédiatement le commutateur runlist, ce qui entraîne un retard de l’exécution du travail en temps réel.
Pour résoudre ce problème, KMD peut spécifier l’état de connexion de la porte d’entrée en tant que D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY au moment de la création d’une porte d’entrée . Chaque fois que l’UMD voit cet état de porte d’entrée, il ajuste son workflow de soumission de travail de sorte qu’après avoir écrit une nouvelle commande et sonné la sonnerie de porte, il appelle dans le noyau à l’aide de D3DKMTNotifyWorkSubmission. Dxgkrnl transfère cet appel à KMD via DxgkDdiNotifyWorkSubmission.
DxgkDdiNotifyWorkSubmission est un test ping simple de UMD à Dxgkrnl à KMD, en informant ce dernier que de nouvelles tâches ont été soumises sur une file d’attente matérielle particulière, ce qui permet à KMD de lancer des actions spécifiques telles que le basculement de la liste d’exécution en temps réel.
KMD peut également demander une notification dynamiquement après la création d’une porte d’entrée. Si KMD détecte une condition dans laquelle il doit être averti de la soumission de travail sur cette file d’attente matérielle, il peut d’abord déconnecter la porte d’entrée en appelant DxgkCbDisconnectDoorbell avec l’état D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY. Plus tard, lorsque UMD tente de reconnecter la porte d’entrée, KMD peut établir la connexion avec l’état D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY.
Les pilotes doivent utiliser ce mécanisme dans des scénarios très spécifiques et peu fréquents, car il implique un aller-retour de UMD à KMD sur chaque soumission de travail, et s’il est utilisé pour les scénarios généraux, il élimine l’objectif d’un modèle de soumission en mode utilisateur à faible latence.
Pour plus d’informations, consultez soumission de travail en mode utilisateur.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 11, version 24H2 (WDDM 3.2) |
d’en-tête | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |