Partager via


DXGKDDI_NOTIFYWORKSUBMISSION fonction de rappel (d3dkmddi.h)

Important

Certaines informations se rapportent à un produit de préversion qui peut être considérablement modifié avant sa commercialisation. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.

La fonction DxgkDdiNotifyWorkSubmission informe KMD qu’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é soumis.

Valeur retournée

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 la soumission de travail et n’est donc généralement pas conscient quand un nouveau travail est envoyé sur une file d’attente matérielle. Ce facteur est le main motivation d’un chemin d’envoi de travail à faible latence. Toutefois, il existe certains scénarios de niche et certaines limitations matérielles dans lesquels KMD doit être averti chaque fois que du travail est envoyé sur une file d’attente matérielle. Par exemple, un planificateur de matériel GPU nécessite que KMD bascule la liste d’exécution du matériel 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 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 la connexion de la sonnette status comme D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY au moment de la création de la sonnette. Chaque fois que UMD voit cette sonnette status, il ajuste son flux de travail de soumission de telle 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 via DxgkDdiNotifyWorkSubmission.

DxgkDdiNotifyWorkSubmission est un simple ping d’UMD à Dxgkrnl en KMD, qui informe ce dernier que de nouveaux travaux ont été envoyés sur une file d’attente matérielle particulière, ce qui permet à KMD d’initier des actions spécifiques telles que le basculement de la runlist en temps réel.

KMD peut également demander une notification dynamiquement après la création de la sonnette. 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 sonnette en appelant DxgkCbDisconnectDoorbell avec status D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY. Plus tard, quand UMD tente de reconnecter la sonnette, KMD peut établir 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 d’UMD à KMD sur chaque soumission de travail, et s’il est utilisé pour des scénarios généraux, il va à l’encontre 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 d3dkmddi.h
IRQL PASSIVE_LEVEL

Voir aussi

DXGKARG_NOTIFYWORKSUBMISSION

**DxgkDdiCreateDoorbell

DxgkCbDisconnectDoorbell