Partager via


structure DXGI1_1_DDI_BASE_FUNCTIONS (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 à une sortie, le contrôle de gamma, l’obtention de notifications concernant les surfaces interopérables partagées et GDI et la gestion d’une transition en 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 :

  • Primaires créées avec des formats cibles de 10 bits par canal (10:10:10:2) d’affichage et de rendu des formats cibles (par exemple, D3DFMT_A2R10G10B10)
  • Primaires à échantillon multiples où l’échantillonnage multiple est effectué lors de l’analyse
  • Primaires persistantes utilisées par les applications Microsoft DirectX version 10 en plein écran
Le runtime Direct3D appelle la fonction CreateResource(D3D10) du pilote d’affichage en mode utilisateur pour créer la fonction principale à analyser. Toutefois, le pilote doit programmer le matériel pour analyser uniquement quand sa fonction SetDisplayModeDXGI est appelée. Par conséquent, le runtime définit les membres hResource et SubResourceIndexIndex membres de la structure DXGI_DDI_ARG_SETDISPLAYMODE pointées par le paramètre pDisplayModeData sur le paramètre principal créé via l’appel à la fonction CreateResourceD3D3D10 du pilote. Le pilote doit ensuite traduire le principal qui hResource et SubResourceIndex représenter en 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 display miniport.

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

pDisplayModeData

Pointeur vers une structure DXGI_DDI_ARG_SETDISPLAYMODE qui spécifie les paramètres de définition du 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 plusieurs GPU à afficher. Le pilote peut implémenter ResolveSharedResourceDXGI pour rémerger chaque ressource afin que le nouveau propriétaire de la ressource ait la ressource fusionnée. Le pilote doit vider 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 (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 la structure pDXGIDDIBaseFunctions membre de la structure DXGI_DDI_BASE_ARGS que le DXGIBaseDDI membre de la structure D3D10DDIARG_CREATEDEVICE spécifie. Sinon, si IS_DXGI1_1_BASE_FUNCTIONS retourne FAUX, le pilote s’attend à recevoir un pointeur vers une structure de DXGI_DDI_BASE_FUNCTIONS. Windows 7 fournit la macro IS_DXGI1_1_BASE_FUNCTIONS pour permettre aux pilotes de version plus récents 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 la pfnResolveSharedResource membre de DXGI1_1_DDI_BASE_FUNCTIONS avec un pointeur vers la fonction ResolveSharedResourceDXGI.

pResourceData

Pointeur vers une structure DXGI_DDI_ARG_RESOLVESHAREDRESOURCE qui spécifie les paramètres de l’appareil d’affichage et de la surface associée à l’appareil d’affichage.

Remarques

Windows 7 fournit la macro IS_DXGI1_1_BASE_FUNCTIONS (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 la structure pDXGIDDIBaseFunctions membre de la structure DXGI_DDI_BASE_ARGS que le DXGIBaseDDI membre de la structure D3D10DDIARG_CREATEDEVICE spécifie. Sinon, si IS_DXGI1_1_BASE_FUNCTIONS retourne FAUX, le pilote s’attend à recevoir un pointeur vers une structure de DXGI_DDI_BASE_FUNCTIONS. Windows 7 fournit la macro IS_DXGI1_1_BASE_FUNCTIONS pour permettre aux pilotes de version plus récents 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 pfnResolveSharedResource membre de DXGI1_1_DDI_BASE_FUNCTIONS avec un pointeur vers une fonction ResolveSharedResourceDXGI.

Exigences

Exigence Valeur
client minimum pris en charge DXGI1_1_DDI_BASE_FUNCTIONS est pris en charge à partir du système d’exploitation Windows 7.
d’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