Fonction D3DKMTNotifyWorkSubmission (d3dkmthk.h)
Important
Certaines informations se rapportent à un produit de préversion qui peut être sensiblement modifié avant sa commercialisation. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
D3DKMTNotifyWorkSubmission informe le pilote d’affichage en mode noyau (KMD) que le pilote d’affichage en mode utilisateur (UMD) a envoyé du travail au GPU.
Syntaxe
NTSTATUS D3DKMTNotifyWorkSubmission(
D3DKMT_NOTIFY_WORK_SUBMISSION *unnamedParam1
);
Paramètres
unnamedParam1
Pointeur vers une structure de D3DKMT_NOTIFY_WORK_SUBMISSION qui identifie la file d’attente matérielle sur laquelle le travail a été envoyé.
Valeur retournée
D3DKMTNotifyWorkSubmission retourne STATUS_SUCCESS s’il 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 est spécifié.
Remarques
Dans le modèle de soumission de travail en mode utilisateur , KMD n’est pas impliqué dans l’envoi du travail et n’est donc pas conscient de l’envoi d’un nouveau travail sur une HWQueue. Ce chemin d’envoi de travail à faible latence est la motivation main du modèle. Toutefois, il existe certains scénarios de niche et limitations matérielles lorsque KMD doit être notifié chaque fois que le travail est envoyé sur une HWQueue. Par exemple, un planificateur matériel GPU nécessite que KMD bascule la runlist matérielle de normal en temps réel lorsqu’un contexte en temps réel envoie du travail. Si KMD n’est pas impliqué dans la soumission du 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 la connexion de sonnette status comme D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY au moment de la création de la sonnette. Chaque fois que l’UMD voit cette sonnette status, il ajuste son workflow de soumission de travail de sorte qu’après avoir écrit une nouvelle commande et sonné la porte, il appelle le noyau à l’aide de D3DKMTNotifyWorkSubmission. Dxgkrnl transfère cet appel à KMD à l’aide de DxgkDdiNotifyWorkSubmission.
D3DKMTNotifyWorkSubmission est un simple ping d’UMD vers Dxgkrnl vers KMD, notifiant à ce dernier que de nouveaux travaux ont été soumis sur une HWQueue particulière 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 de sonnette. Si KMD détecte une condition dans laquelle il doit être averti de la soumission de travaux sur cette file d’attente matérielle, il peut d’abord déconnecter la sonnette en appelant DxgkCbDisconnectDoorbell de Dxgkrnl avec status D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY. Plus tard, quand UMD tente de reconnecter la sonnette, KMD peut effectuer la connexion avec status 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é dans des scénarios généraux, il va à l’échec de l’objectif d’un modèle de soumission en mode utilisateur à faible latence.
Pour plus d’informations, consultez Soumission de travail en mode utilisateur.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 11, version 24H2 (WDDM 3.2) |
En-tête | d3dkmthk.h |