Partager via


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

D3DKMTNotifyWorkSubmission avertit le pilote d’affichage en mode noyau (KMD) que le pilote d’affichage en mode utilisateur (UMD) a soumis le travail au GPU.

Syntaxe

NTSTATUS D3DKMTNotifyWorkSubmission(
  D3DKMT_NOTIFY_WORK_SUBMISSION *unnamedParam1
);

Paramètres

unnamedParam1

Pointeur vers une structure D3DKMT_NOTIFY_WORK_SUBMISSION qui identifie la file d’attente matérielle sur laquelle le travail a été envoyé.

Valeur de retour

D3DKMTNotifyWorkSubmission retourne STATUS_SUCCESS si elle réussit à effectuer un test ping sur KMD. Sinon, il retourne un code d’erreur approprié tel que STATUS_INVALID_PARAMETER si une file d’attente ou un indicateur matériel non valide sont spécifiés.

Remarques

Dans le modèle d’envoi de travail en mode utilisateur modèle, KMD n’est pas impliqué dans la soumission de travail et n’est donc pas informé lorsque de nouvelles tâches sont soumises sur un HWQueue. Ce chemin d’envoi de travail à faible latence est la principale motivation du modèle. Toutefois, il existe certains scénarios de niche et certaines limitations matérielles lorsque KMD doit être averti chaque fois que le travail est soumis sur un HWQueue. Par exemple, un planificateur de matériel GPU nécessite kmD pour basculer la liste de runlist du matériel de normal 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épondre à ce besoin, KMD peut spécifier l’état de connexion de la porte d’entrée comme D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY à heure de création de porte-porte. 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 porte d’entrée, il appelle dans le noyau à l’aide de D3DKMTNotifyWorkSubmission. Dxgkrnl transfère cet appel à KMD à l’aide de DxgkDdiNotifyWorkSubmission.

D3DKMTNotifyWorkSubmission est un test ping simple de UMD à Dxgkrnl à KMD, en informant ce dernier que le nouveau travail a été soumis sur un HWQueue particulier afin que KMD puisse lancer des actions spécifiques telles que le basculement d’une runlist 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 Dxgkrnl's 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 d3dkmthk.h

Voir aussi

D3DKMT_NOTIFY_WORK_SUBMISSION

D3DKMTCreateDoorbell

DxgkCbDisconnectDoorbell

DxgkDdiNotifyWorkSubmission