DXGI1_1_DDI_BASE_FUNCTIONS structure (dxgiddi.h)

La structure DXGI1_1_DDI_BASE_FUNCTIONS contient des pointeurs vers des fonctions que le pilote d’affichage en mode utilisateur peut implémenter pour effectuer des tâches de bas niveau, telles que la présentation d’images rendues dans une sortie, le contrôle gamma, l’obtention de notifications concernant les surfaces partagées et interopérables GDI et la gestion d’une transition plein écran.

Syntaxe

typedef struct DXGI1_1_DDI_BASE_FUNCTIONS {
  HRESULT()(DXGI_DDI_ARG_PRESENT *) * pfnPresent;
  HRESULT()(DXGI_DDI_ARG_GET_GAMMA_CONTROL_CAPS *) * pfnGetGammaCaps;
  HRESULT()(DXGI_DDI_ARG_SETDISPLAYMODE *) * pfnSetDisplayMode;
  HRESULT()(DXGI_DDI_ARG_SETRESOURCEPRIORITY *) * pfnSetResourcePriority;
  HRESULT()(DXGI_DDI_ARG_QUERYRESOURCERESIDENCY *) * pfnQueryResourceResidency;
  HRESULT()(DXGI_DDI_ARG_ROTATE_RESOURCE_IDENTITIES *) * pfnRotateResourceIdentities;
  HRESULT()(DXGI_DDI_ARG_BLT *) * pfnBlt;
  HRESULT()(DXGI_DDI_ARG_RESOLVESHAREDRESOURCE *) * pfnResolveSharedResource;
} DXGI1_1_DDI_BASE_FUNCTIONS;

Membres

pfnPresent

Pointeur vers la fonction PresentDXGI du pilote.

pfnGetGammaCaps

Pointeur vers la fonction GetGammaCapsDXGI du pilote.

pfnSetDisplayMode

La fonction SetDisplayModeDXGI bascule vers un mode d’affichage ou principal que le bureau GDI ne prend pas en charge.

Le runtime Microsoft Direct3D appelle SetDisplayModeDXGI pour basculer vers un mode d’affichage ou principal que le bureau GDI ne prend pas en charge. La liste suivante décrit des exemples de ces primaires :

  • Les primitives créées avec 10 bits par canal (10 :10 :10 :2) affichent et affichent les formats cibles de rendu (par exemple, D3DFMT_A2R10G10B10)
  • Primaires à échantillonnage multiple où l’échantillonnage multiple est effectué lors de l’analyse
  • Primaires persistantes utilisées par les applications Microsoft DirectX version 10 plein écran
Le runtime Direct3D appelle la fonction CreateResource(D3D10) du pilote d’affichage en mode utilisateur pour créer le principal à analyser. Toutefois, le pilote doit programmer le matériel pour qu’il analyse uniquement lorsque sa fonction SetDisplayModeDXGI est appelée. Par conséquent, le runtime définit les membres hResource et SubResourceIndex de la structure DXGI_DDI_ARG_SETDISPLAYMODE pointée par le paramètre pDisplayModeData vers le principal créé via l’appel à la fonction CreateResourceD3D10 du pilote. Le pilote doit ensuite traduire le principal que hResource et SubResourceIndex représentent en un handle d’allocation primaire. Une fois que le pilote a effectué cette traduction, le pilote doit passer le handle résultant dans un appel à la fonction pfnSetDisplayModeCb , qui lance ensuite un appel à la fonction DxgkDdiCommitVidPn du pilote de miniport d’affichage.

Le pilote d’affichage en mode utilisateur peut définir le membre hPrimaryAllocation de la structure D3DDDICB_SETDISPLAYMODE dans l’appel à pfnSetDisplayModeCb pour analyser toute allocation. Toutefois, l’allocation doit être marquée comme primaire (autrement dit, le pilote d’affichage en mode utilisateur doit avoir défini l’indicateur de champ binaire principal dans le membre Indicateurs de la structure D3DDDI_ALLOCATIONINFO dans un appel à la fonction pfnAllocateCb pour créer l’allocation).

pDisplayModeData

Pointeur vers une structure de DXGI_DDI_ARG_SETDISPLAYMODE qui spécifie des paramètres pour définir le mode d’affichage.

pfnSetResourcePriority

Pointeur vers la fonction SetResourcePriorityDXGI du pilote.

pfnQueryResourceResidency

Pointeur vers la fonction QueryResourceResidencyDXGI du pilote.

pfnRotateResourceIdentities

Pointeur vers la fonction RotateResourceIdentitiesDXGI du pilote.

pfnBlt

Pointeur vers la fonction BltDXGI du pilote.

pfnResolveSharedResource

La fonction ResolveSharedResourceDXGI informe un pilote d’affichage en mode utilisateur que la propriété d’une surface partagée a changé ou qu’une surface est utilisée pour l’interopérabilité GDI.

Le runtime Direct3D appelle ResolveSharedResourceDXGI lorsqu’une application appelle l’une des fonctions suivantes :

  • IDXGIKeyedMutex ::ReleaseSynch sur une surface partagée synchronisée
  • IDXGISurface1 ::GetDC pour une surface interopérable GDI
Le runtime appelle la fonction ResolveSharedResourceDXGI du pilote chaque fois qu’un propriétaire de surface partagée change ou lorsqu’une surface est utilisée pour l’interopérabilité GDI.

Le pilote implémente ResolveSharedResourceDXGI pour gérer correctement les ressources pour plusieurs scénarios GPU. Chaque ressource peut être divisée en mémoire pour que plusieurs GPU s’affichent. Le pilote peut implémenter ResolveSharedResourceDXGI pour fusionner chaque ressource afin que le nouveau propriétaire de la ressource dispose de la ressource fusionnée. Le pilote doit vider toutes les mémoires tampons de commande partiellement générées susceptibles de modifier la ressource.

Windows 7 fournit la macro IS_DXGI1_1_BASE_FUNCTIONS (qui est définie dans le fichier d’en-tête D3D10umddi.h) pour permettre au pilote d’affichage en mode utilisateur de déterminer s’il reçoit un pointeur vers une structure DXGI1_1_DDI_BASE_FUNCTIONS ou DXGI_DDI_BASE_FUNCTIONS dans un appel à sa fonction CreateDevice(D3D10). La structure DXGI1_1_DDI_BASE_FUNCTIONS inclut le membre pfnResolveSharedResource que le pilote peut remplir avec un pointeur vers sa fonction ResolveSharedResourceDXGI . Si IS_DXGI1_1_BASE_FUNCTIONS retourne TRUE, le pilote s’attend à recevoir un pointeur vers une structure DXGI1_1_DDI_BASE_FUNCTIONS dans le membre pDXGIDDIBaseFunctions de la structure DXGI_DDI_BASE_ARGS que le membre DXGIBaseDDI de la structure D3D10DDIARG_CREATEDEVICE spécifie. Sinon, si IS_DXGI1_1_BASE_FUNCTIONS retourne FALSE, le pilote s’attend à recevoir un pointeur vers une structure DXGI_DDI_BASE_FUNCTIONS. Windows 7 fournit la macro IS_DXGI1_1_BASE_FUNCTIONS pour permettre aux pilotes de version plus récente de fonctionner sur des runtimes de version plus anciens. Les pilotes peuvent ensuite déterminer s’ils endommageront la mémoire s’ils tentent de remplir le membre pfnResolveSharedResource de DXGI1_1_DDI_BASE_FUNCTIONS avec un pointeur vers la fonction ResolveSharedResourceDXGI .

pResourceData

Pointeur vers une structure de DXGI_DDI_ARG_RESOLVESHAREDRESOURCE qui spécifie les paramètres du périphérique d’affichage et de la surface associée au périphérique d’affichage.

Remarques

Windows 7 fournit la macro IS_DXGI1_1_BASE_FUNCTIONS (qui est définie dans le fichier d’en-tête D3D10umddi.h) pour permettre au pilote d’affichage en mode utilisateur de déterminer s’il reçoit un pointeur vers une structure DXGI1_1_DDI_BASE_FUNCTIONS ou DXGI_DDI_BASE_FUNCTIONS dans un appel à sa fonction CreateDevice(D3D10). La structure DXGI1_1_DDI_BASE_FUNCTIONS inclut le membre pfnResolveSharedResource que le pilote peut remplir avec un pointeur vers sa fonction ResolveSharedResourceDXGI . Si IS_DXGI1_1_BASE_FUNCTIONS retourne TRUE, le pilote s’attend à recevoir un pointeur vers une structure DXGI1_1_DDI_BASE_FUNCTIONS dans le membre pDXGIDDIBaseFunctions de la structure DXGI_DDI_BASE_ARGS que le membre DXGIBaseDDI de la structure D3D10DDIARG_CREATEDEVICE spécifie. Sinon, si IS_DXGI1_1_BASE_FUNCTIONS retourne FALSE, le pilote s’attend à recevoir un pointeur vers une structure DXGI_DDI_BASE_FUNCTIONS. Windows 7 fournit la macro IS_DXGI1_1_BASE_FUNCTIONS pour permettre aux pilotes de version plus récente de fonctionner sur des runtimes de version plus anciens. Les pilotes peuvent ensuite déterminer s’ils endommagent la mémoire s’ils tentent de remplir le membre pfnResolveSharedResource de DXGI1_1_DDI_BASE_FUNCTIONS avec un pointeur vers une fonction ResolveSharedResourceDXGI .

Configuration requise

Condition requise Valeur
Client minimal pris en charge DXGI1_1_DDI_BASE_FUNCTIONS est pris en charge à partir du système d’exploitation Windows 7.
En-tête dxgiddi.h (include D3d10umddi.h)

Voir aussi

BltDXGI

CreateDevice(D3D10)

D3D10DDIARG_CREATEDEVICE

DXGI_DDI_BASE_ARGS

DXGI_DDI_BASE_FUNCTIONS

GetGammaCapsDXGI

PresentDXGI

QueryResourceResidencyDXGI

ResolveSharedResource

ResolveSharedResourceDXGI

RotateResourceIdentitiesDXGI

SetDisplayModeDXGI

SetResourcePriorityDXGI