structure DXGI1_2_DDI_BASE_FUNCTIONS (dxgiddi.h)
Contient des pointeurs vers des fonctions qu’un pilote d’affichage Windows Display Driver Model (WDDM) 1.2 et ultérieur 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 Windows Graphics Device Interface (GDI) et la gestion d’une transition en plein écran.
Syntaxe
typedef struct DXGI1_2_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;
HRESULT()(DXGI_DDI_ARG_BLT1 *) * pfnBlt1;
HRESULT()(DXGI_DDI_ARG_OFFERRESOURCES *) * pfnOfferResources;
HRESULT()(DXGI_DDI_ARG_RECLAIMRESOURCES *) * pfnReclaimResources;
HRESULT()(DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS *) * pfnGetMultiplaneOverlayCaps;
HRESULT()(void *) * pfnGetMultiplaneOverlayFilterRange;
HRESULT()(DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT *) * pfnCheckMultiplaneOverlaySupport;
HRESULT()(DXGI_DDI_ARG_PRESENTMULTIPLANEOVERLAY *) * pfnPresentMultiplaneOverlay;
} DXGI1_2_DDI_BASE_FUNCTIONS;
Membres
pfnPresent
Pointeur vers la fonctionPresentDXGIdu pilote.
pfnGetGammaCaps
Pointeur vers la fonction GetGammaCapsDXGI du pilote.
pfnSetDisplayMode
Pointeur vers la fonctionsetDisplayModeDXGIdu pilote.
pfnSetResourcePriority
Pointeur vers la fonction SetResourcePriorityDXGI du pilote.
pfnQueryResourceResidency
Pointeur vers la fonction QueryResourceResidencyDXGI du pilote.
pfnRotateResourceIdentities
Pointeur vers la fonctionrotateResourceIdentitiesDXGIdu pilote.
pfnBlt
Pointeur vers la fonctionbltDXGIdu pilote.
Le runtime Direct3D peut définir le membre Flags de la structure DXGI_DDI_ARG_BLT que le paramètre pBltData pointe de telle façon que la fonction Blt1DXGI pour effectuer un transfert de bloc de bits (bitblt) opération qui résout les ressources à plusieurs échantillons, effectue une conversion de format de couleur et effectue un étirement ou une réduction tout en même temps. Toutefois, le runtime Direct3D ne définit jamais les indicateurs de membre de DXGI_DDI_ARG_BLT1 sur zéro (autrement dit, aucun indicateur défini) avec la valeur DXGI_DDI_MODE_ROTATION_IDENTITY définie dans le Faire pivoter membre de DXGI_DDI_ARG_BLT1 (autrement dit, pour indiquer qu’aucune rotation) pour effectuer une opération de copie de mémoire droite. Au lieu de cela, à moins que les deux ressources ne soient échantillonlées, le runtime Direct3D appelle la ResourceCopy du pilote ou ResourceCopyRegion(D3D11_1) fonction pour effectuer une opération de copie de mémoire droite.
La qualité de l’étirement ou de la réduction que le pilote d’affichage en mode utilisateur effectue doit être aussi bonne que l’étirement ou la réduction qu’un filtre biligne effectue.
Le runtime Direct3D appelle la fonction Blt1DXGI du pilote rarement. Autrement dit, le runtime doit appeler Blt1DXGI pas plus d’une ou deux fois par image, car le runtime utilise Blt1DXGI principalement pour prendre en charge une présentation.
Lorsque le runtime appelle Blt1DXGI pour une présentation, le runtime définit l’indicateur Present bit-field dans les indicateurs membre de DXGI_DDI_ARG_BLT1. Le runtime définit l’indicateur de Present bit-field pour informer le pilote qu’il existe des exigences supplémentaires pour le bitblt et que la synchronisation supplémentaire peut être nécessaire (par exemple, le runtime peut avoir besoin d’effectuer une synchronisation supplémentaire dans les configurations d’ordinateur qui contiennent deux adaptateurs graphiques qui gèrent chacune des parties distinctes de l’affichage). Lorsque l’indicateur de Present bit-field est défini, le pilote doit effectuer une opération de copie à partir des mémoires tampons back d’une application vers la surface partagée du DWM. Étant donné que la synchronisation pour ce type d’opération de copie est inexacte, les artefacts déchirants doivent être le pire type d’artefacts qu’un utilisateur rencontre. Pour ce type d’opération de copie, le pilote ne doit pas utiliser d’approche multi-passe en résolvant d’abord dans la surface de destination, puis en colorant la conversion des résultats sur place, car les artefacts possibles seraient beaucoup plus mauvais.
Si le pilote prend en charge le retour de DXGI_DDI_ERR_UNSUPPORTED lors de la création d’une surface principale (autrement dit, le retour d'DXGI_DDI_ERR_UNSUPPORTED à partir d’un appel à sa fonction CreateResource(D3D10) avec l’indicateur de D3D10_DDI_BIND_PRESENT défini dans le BindFlags membre de D3D10DDIARG_CREATERESOURCE ainsi que le membre pPrimaryDesc de D3D10DDIARG_CREATERESOURCE set sur non NULL), le pilote doit également prendre en charge la rotation pendant une opération de copie. Si le pilote ne retourne jamais DXGI_DDI_ERR_UNSUPPORTED d’un appel à son CreateResource(D3D10) ou fonction CreateResource(D3D11), le runtime ne transmet jamais la valeur DXGI_DDI_MODE_ROTATION_ROTATE90, DXGI_DDI_MODE_ROTATION_ROTATE180ou DXGI_DDI_MODE_ROTATION_ROTATE270 à la faire pivoter membre de DXGI_DDI_ARG_BLT1. Par conséquent, dans ce cas, la fonction blt1DXGI du pilote n’est pas nécessaire pour prendre en charge la rotation.
Le runtime définit une valeur dans le Pivoter membre de DXGI_DDI_ARG_BLT1 pour indiquer le nombre de degrés à faire pivoter dans le sens inverse du contenu de la source avant que le pilote copie le contenu vers la destination. La rotation est spécifiée par incréments de 90 degrés.
Note
Lorsque la fonction Blt1DXGI du pilote copie le contenu au format sRGB d’une surface source vers une surface de destination autre que sRGB, le pilote doit copier le contenu sRVB inchangé (autrement dit, le pilote ne doit pas effectuer la conversion linéaire sRVB).
Restrictions de source
La fonction Blt1DXGI utilise toujours une sous-ressource source entière (par rapport à une zone sous-rectangulaire) pour effectuer l’opération de bitblt. En outre, la source est une représentation D3D10DDIRESOURCE_TEXTURE2D (spécifiée dans le membre ResourceDimension de D3D10DDIARG_CREATERESOURCE ou de D3D11DDIARG_CREATERESOURCE lorsque la source est créée dans un appel à la fonction createResource(D3D10) du pilote d’affichage en mode utilisateurCreateResource(D3D10) ou CreateResource(D3D11), respectivement). Lorsque le runtime définit le champ de bits Résoudre dans le Indicateurs membre de DXGI_DDI_ARG_BLT1, la source est une ressource à plusieurs échantillons. La ressource source est limitée à une ressource dans laquelle l’indicateur de D3D10_DDI_BIND_PRESENT a été défini dans le BindFlags membre de D3D10DDIARG_CREATERESOURCE ou de D3D11DDIARG_CREATERESOURCE. Le format de la source (spécifié dans le Format membre de D3D10DDIARG_CREATERESOURCE ou de D3D11DDIARG_CREATERESOURCE) est limité aux formats de mode d’affichage, spécifiés par les valeurs suivantes de l’énumération DXGI_FORMAT :
- DXGI_FORMAT_B5G6R5_UNORM
- DXGI_FORMAT_B5G5R5A1_UNORM
- DXGI_FORMAT_B8G8R8A8_UNORM (voir la remarque ci-dessous.)
- DXGI_FORMAT_B8G8R8X8_UNORM
- DXGI_FORMAT_R16G16B16A16_FLOAT
- DXGI_FORMAT_R10G10B10A2_UNORM
- DXGI_FORMAT_R8G8B8A8_UNORM
- DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
Note
Si le pilote prend en charge le format source DXGI_FORMAT_B8G8R8A8_UNORM, les restrictions suivantes s’appliquent :
- Lorsque le pilote effectue une opération de bitblt d’un format à virgule flottante à un format entier tel que BGRA8888, il doit encoder implicitement le gamma dans les résultats.
- À l’inverse, lorsque le pilote effectue une opération de bitblt d’un format entier à un format à virgule flottante, il doit supprimer implicitement l’encodage gamma des résultats.
Restrictions de destination
La destination est également une représentation D3D10DDIRESOURCE_TEXTURE2D. Le format de la destination est également limité aux formats de mode d’affichage. La ressource de destination est limitée à une ressource liée en tant que cible de rendu (D3D10_DDI_BIND_RENDER_TARGET définie dans la BindFlags membre de D3D10DDIARG_CREATERESOURCE ou de D3D11DDIARG_CREATERESOURCE).
Création d’une mémoire tampon arrière stéréo
À compter de Windows 8, si le pilote doit créer une mémoire tampon de retour stéréo, il doit définir des membres de la structure D3D10DDIARG_CREATERESOURCE ou D3D11DDIARG_CREATERESOURCE, respectivement, pointé par le paramètre pCreateResource des fonctions CreateResource(D3D10) ou CreateResource(D3D11), comme suit:
- Définissez le membre ArraySize sur la valeur 2.
- Définissez la valeur de l’indicateur D3D10_DDI_BIND_PRESENT dans le membre BindFlags.
En outre, pour prendre en charge la présentation stéréo, la fonction BltDXGI doit autoriser toutes les valeurs des DstSubresource et SrcSubresource membres de la structure DXGI_DDI_ARG_BLT qui se trouvent dans la plage des ressources source et de destination.
pfnResolveSharedResource
Pointeur vers la fonction ResolveSharedResourceDXGI du pilote.
pfnBlt1
Pointeur vers la fonctionblt1DXGIdu pilote.
pfnOfferResources
Pointeur vers la fonction pfnOfferResources du pilote.
pfnReclaimResources
Appelé par le runtime DXGI pour récupérer les ressources de mémoire vidéo que le pilote d’affichage en mode utilisateur a précédemment proposé pour réutilisation. Implémenté par WDDM 1.2 et les pilotes d’affichage en mode utilisateur ultérieurs.
pfnGetMultiplaneOverlayCaps
Appelé par le runtime Microsoft DirectX Graphics Infrastructure (DXGI) pour demander que le pilote d’affichage en mode utilisateur obtienne les fonctionnalités de plan de superposition de base. Éventuellement implémenté par les pilotes d’affichage Windows Display Driver Model (WDDM) 1.3 et versions ultérieures. La syntaxe de pfnGetMultiplaneOverlayCaps suit :
pfnGetMultiPlaneOverlayCaps GetMultiPlaneOverlayCaps;
HRESULT __stdcall* GetMultiPlaneOverlayCaps(
DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS *pCaps
)
{ ... }
Le paramètre pCaps est un pointeur vers une structure DXGI_DDI_ARG_GETMULTIPLANEOVERLAYCAPS qui spécifie les fonctionnalités du plan de superposition.
pfnGetMultiplaneOverlayCaps retourne l’une des valeurs suivantes :
- S_OK : le pilote a correctement fourni les fonctionnalités du plan de superposition.
- D3DDDIERR_DEVICEREMOVED : le pilote a détecté que l’adaptateur d’affichage a été supprimé, de sorte que le pilote n’a pas terminé l’opération. Si le pilote n’a pas connaissance de la suppression de l’adaptateur, le pilote n’est pas tenu de retourner ce code d’erreur.
pfnGetMultiplaneOverlayFilterRange
Ce membre est réservé et doit être défini sur zéro. Prise en charge à partir de Windows 8.1.
pfnCheckMultiplaneOverlaySupport
Appelé par le runtime Microsoft DirectX Graphics Infrastructure (DXGI) pour vérifier les détails de la prise en charge matérielle des superpositions multiplanes. La syntaxe de pfnCheckMultiplaneOverlaySupport est la suivante :
PFND3DDDI_CHECKMULTIPLANEOVERLAYSUPPORT pfnCheckMultiplaneOverlaySupport;
HRESULT __stdcall* pfnCheckMultiplaneOverlaySupport(
D3DDDIARG_CHECKMULTIPLANEOVERLAYSUPPORT *pSupport
)
{ ... }
Le paramètre pSupport est un pointeur vers une structure DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT qui décrit comment s’afficher à l’aire de destination.
Si pfnCheckMultiplaneOverlaySupport réussit, elle retourne S_OK. Sinon, elle retourne un HRESULT code d’erreur.
pfnPresentMultiplaneOverlay
Pointeur vers la fonction pfnPresentMultiplaneOverlay (DXGI) du pilote. Prise en charge à partir de Windows 8.1.
pSupport
Pointeur vers une structure DXGI_DDI_ARG_CHECKMULTIPLANEOVERLAYSUPPORT qui décrit comment s’afficher sur l’aire de destination.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 8, WDDM 1.2 |
serveur minimum pris en charge | Windows Server 2012 |
d’en-tête | dxgiddi.h (include D3d10umddi.h) |