DXGKDDI_QUERYDEPENDENTENGINEGROUP fonction de rappel (d3dkmddi.h)

DXGKDDI_QUERYDEPENDENTENGINEGROUP est appelé par le planificateur GPU du pilote de port d’affichage pour interroger les dépendances des nœuds dans une carte d’affichage physique.

Syntaxe

DXGKDDI_QUERYDEPENDENTENGINEGROUP DxgkddiQuerydependentenginegroup;

NTSTATUS DxgkddiQuerydependentenginegroup(
  IN_CONST_HANDLE hAdapter,
  INOUT_DXGKARG_QUERYDEPENDENTENGINEGROUP pQueryDependentEngineGroup
)
{...}

Paramètres

hAdapter

Handle d’un bloc de contexte associé à une carte d’affichage. Le pilote miniport d’affichage a précédemment fourni cette poignée au sous-système du noyau graphique DirectX dans le paramètre de sortie MiniportDeviceContext de la fonction DxgkDdiAddDevice .

pQueryDependentEngineGroup

Valeur de type DXGKARG_QUERYDEPENDENTENGINEGROUP qui spécifie tous les nœuds affectés par l’opération de réinitialisation.

Valeur retournée

Retourne STATUS_SUCCESS si elle réussit. Sinon, il retourne l’un des codes d’erreur définis dans Ntstatus.h.

Remarques

Cette fonction est utilisée pour décrire toutes les cartes physiques (moteurs) affectées par une demande de réinitialisation du moteur. Il permet d’améliorer l’expérience utilisateur sur les architectures matérielles qui ont des dépendances entre plusieurs moteurs qui peuvent affecter le processus de réinitialisation. Notez que tous les nœuds affectés doivent avoir la même valeur d’affinité de moteur. (Consultez la discussion sur l’affinité du moteur dans modifications de TDR dans Windows 8.)

Le planificateur GPU du pilote de port d’affichage appelle DxgkDdiQueryDependentEngineGroup chaque fois qu’il appelle la fonction DxgkDdiResetEngine . Le planificateur GPU attend 500 millisecondes pour que le pilote miniport d’affichage termine la préemption de tous les moteurs dépendants. Pour tous les moteurs pour lesquels le pilote ne peut pas effectuer une préemption, le planificateur GPU appelle la fonction DxgkDdiResetEngine séquentiellement en fonction de la valeur ordinale du moteur.

Voici un exemple de calcul du masque de bits dans le DXGKARG_QUERYDEPENDENTENGINEGROUP. Membre DependentNodeOrdinalMask . Si les valeurs d’origine des membres NodeOrdinal et EngineOrdinal de la structure DXGKARG_QUERYDEPENDENTENGINEGROUP sont respectivement 1 et 0, et que des nœuds supplémentaires avec les identificateurs 2 et 4 sont également réinitialisés lorsque le nœud 1 est réinitialisé, le pilote doit définir la valeur binaire de DependentNodeOrdinalMask sur 10110, ou 0x16 en notation hexadécimale. La valeur d’index EngineOrdinal est supposée être identique pour tous les nœuds dépendants. Le nœud en cours de réinitialisation est inclus dans le masque de bits DependentNodeOrdinalMask .

Cette fonction doit être rendue paginable et elle doit toujours réussir.

Le système d’exploitation garantit que cette fonction suit le mode de synchronisation de premier niveau tel que défini dans Threading et Synchronisation premier niveau.

Pour plus d’informations, consultez Modifications TDR dans Windows 8.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8
Serveur minimal pris en charge Windows Server 2012
Plateforme cible Desktop (Expérience utilisateur)
En-tête d3dkmddi.h
IRQL PASSIVE_LEVEL

Voir aussi

DXGKARG_CREATECONTEXT

DXGKARG_QUERYDEPENDENTENGINEGROUP

DXGK_DRIVERCAPS

DxgkDdiAddDevice

DxgkDdiResetEngine