Transmission d’informations DXGI au moment de la création de la ressource
Le runtime Direct3D version 10 peut transmettre des informations spécifiques à DXGI lorsqu’il appelle la fonction CreateResource (D3D10) du pilote d’affichage en mode utilisateur pour créer une ressource. Le runtime peut passer un pointeur vers une structure de DXGI_DDI_PRIMARY_DESC dans le membre pPrimaryDesc de la structure D3D10DDIARG_CREATERESOURCE pour spécifier que la ressource peut être utilisée comme principal (autrement dit, la ressource peut être analysée à l’affichage). Le runtime définit pPrimaryDesc sur une valeur non NULL uniquement si le runtime définit également le bit D3D10_DDI_BIND_PRESENT dans le membre BindFlags de D3D10DDIARG_CREATERESOURCE.
Le runtime peut spécifier l’indicateur DXGI_DDI_PRIMARY_OPTIONAL dans le membre Indicateurs de DXGI_DDI_PRIMARY_DESC pour informer le pilote d’affichage en mode utilisateur que le pilote peut refuser d’utiliser la ressource dans une présentation de style inversé. Pour informer le runtime qu’il ne doit pas utiliser la ressource dans des présentations de style inversé, le pilote définit l’indicateur DXGI_DDI_PRIMARY_DRIVER_FLAG_NO_SCANOUT dans le membre DriverFlags de DXGI_DDI_PRIMARY_DESC.
Si le pilote retourne DXGI_DDI_PRIMARY_DRIVER_FLAG_NO_SCANOUT dans l’appel CreateResource(D3D10) pour créer la ressource, le runtime effectue toujours une présentation de type transfert de bits (bitblt) (au lieu d’une présentation de style inversé) lorsque la ressource est la source de la présentation. Cette fonctionnalité est utile si le matériel graphique ne peut pas analyser un sous-ensemble particulier d’un type de ressource donné. Par exemple, le matériel graphique peut ou ne pas être en mesure d’analyser un type de ressource de mémoire tampon arrière multiéchantillonnée. En outre, la possibilité d’analyser les mémoires tampons arrière multi-échantillonnée peut dépendre davantage du format de la surface. Si le matériel graphique n’a pas pu analyser un format multi-échantillonné particulier, le pilote d’affichage en mode utilisateur définirait l’indicateur DXGI_DDI_PRIMARY_DRIVER_FLAG_NO_SCANOUT dans le membre DriverFlags de DXGI_DDI_PRIMARY_DESC pour la ressource avec ce format.
Si le runtime ne définit pas l’indicateur de DXGI_DDI_PRIMARY_OPTIONAL dans le membre Indicateurs de DXGI_DDI_PRIMARY_DESC pour informer le pilote de la possibilité de refuser l’utilisation de la ressource dans une présentation de style inversé, le pilote peut toujours retourner le code d’erreur DXGI_DDI_ERR_UNSUPPORTED ainsi que l’indicateur DXGI_DDI_PRIMARY_DRIVER_FLAG_NO_SCANOUT à partir d’un appel à CreateResource(D3D10). CreateResource(D3D10) du pilote passe DXGI_DDI_ERR_UNSUPPORTED dans un appel à la fonction pfnSetErrorCb si le pilote ne peut pas analyser un tel principal. Le retour de DXGI_DDI_ERR_UNSUPPORTED ainsi que DXGI_DDI_PRIMARY_DRIVER_FLAG_NO_SCANOUT entraîne l’interposer par DXGI une surface proxy dans le chemin de présentation, entre les mémoires tampons d’arrière-plan et la surface primaire. La surface proxy correspond toujours à la surface principale (analysée) en termes de taille, d’échantillonnage multiple et de rotation. La première étape de ce processus consiste pour DXGI à déterminer lequel des paramètres de multiéchantillon ou de rotation entraîne le refus du pilote d’analyser une surface avec ces paramètres. DXGI effectue cette détermination en effectuant une mise à l’échelle et en essayant de créer un principal sans rotation, sans multi-échantillonnage, ou sans les deux. Une fois que DXGI a déterminé la prise en charge du pilote pour les fonctionnalités d’analyse, DXGI crée les surfaces principale et proxy, et le pilote doit être en mesure de basculer entre ces deux surfaces. DXGI répond toujours par la suite aux demandes d’une application pour les mémoires tampons arrière pivotées automatiquement ou multi-échantillonnés en appelant la fonction BltDXGI du pilote pour effectuer des bitblts à partir des mémoires tampons arrière vers la surface du proxy. Ces bitblts demandent au pilote d’effectuer des résolutions ou des rotations multiéchantillons. Pour plus d’informations sur BltDXGI, consultez la page de référence BltDXGI .