Partager via


DXGKDDI_QUERYDEPENDENTENGINEGROUP fonction de rappel (d3dkmddi.h)

Dxgkrnl's GPU scheduler appelle DxgkddiQuerydependentenginegroup pour interroger les dépendances de 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

[in] Handle vers un bloc de contexte associé à un adaptateur d’affichage. Le pilote miniport d’affichage a précédemment fourni ce handle au sous-système du noyau graphique DirectX dans le MiniportDeviceContext paramètre de sortie de la fonction DxgkDdiAddDevice.

pQueryDependentEngineGroup

[in/out] Structure DXGKARG_QUERYDEPENDENTENGINEGROUP dans laquelle KMD spécifie tous les nœuds affectés par l’opération de réinitialisation.

Valeur de retour

DxgkddiQuerydependentenginegroup doit retourner STATUS_SUCCESS.

Remarques

Dxgkrnl's GPU scheduler appelle cette fonction pour obtenir une description de tous les adaptateurs physiques (moteurs) qui seront affectés 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é du moteur. (Consultez la discussion sur l’affinité du moteur dans modifications de TDR dans Windows 8.)

Le planificateur GPU appelle DxgkDdiQueryDependentEngineGroup chaque fois qu’il appelle 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 les moteurs que le pilote ne peut pas effectuer de préemption, le planificateur GPU appelle la fonction DxgkDdiResetEngine de manière séquentielle en fonction de la valeur ordinale du moteur.

Voici un exemple de calcul de la masque de bits dans la DXGKARG_QUERYDEPENDENTENGINEGROUP. membreDependentNodeOrdinalMask. Si les valeurs d’origine de la structure DXGKARG_QUERYDEPENDENTENGINEGROUPNodeOrdinal et EngineOrdinal membres sont respectivement 1 et 0, et des nœuds supplémentaires avec des identificateurs 2 et 4 sont également réinitialisés lorsque le nœud 1 est réinitialisé, le pilote doit définir 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 réinitialisé 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 le premier niveau de synchronisation.

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

Exigences

Exigence Valeur
client minimum pris en charge Windows 8
serveur minimum pris en charge Windows Server 2012
plateforme cible Bureau
d’en-tête d3dkmddi.h
IRQL PASSIVE_LEVEL

Voir aussi

DXGKARG_CREATECONTEXT

DXGKARG_QUERYDEPENDENTENGINEGROUP

DXGK_DRIVERCAPS

DxgkDdiAddDevice

DxgkDdiResetEngine