Utilisation des proportions et des modes de mise à l’échelle personnalisés
Pour prendre en charge la mise à l’échelle étendue et les modes de mise à l’échelle personnalisés de conservation des proportions disponibles à partir de Windows 7 (où DXGKDDI_INTERFACE_VERSION>= DXGKDDI_INTERFACE_VERSION_WIN7), les fonctionnalités suivantes sont ajoutées aux données de chemin d’accès présent VidPN utilisées par les pilotes de miniports d’affichage :
D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT structure :
Membres AspectRatioCenteredMax et Personnalisé
D3DKMDT_VIDPN_PRESENT_PATH_SCALING énumération :
D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX et D3DKMDT_VPPS_CUSTOM valeurs
Spécification des modes de mise à l’échelle
Le comportement et l’apparence du bureau sur le moniteur à l’aide de ces modes de mise à l’échelle sont décrits dans Mise à l’échelle de l’image de bureau. Lorsque le gestionnaire de mode d’affichage (DMM) appelle la fonction DxgkDdiEnumVidPnCofuncModality , le pilote doit définir les membres de D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT en fonction des types de mise à l’échelle pris en charge par le chemin d’accès présent VidPN, comme suit :
Mise à l’échelle des identités
Si le chemin d’accès peut afficher du contenu sans transformation, définissez le membre Identity de D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT sur une valeur différente de zéro. Lorsque DxgkDdiEnumVidPnCofuncModality est appelé, définissez le membre De mise à l’échelle de la structure D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION sur D3DKMDT_VPPS_IDENTITY.
Mise à l’échelle centrée
Si le chemin d’accès peut afficher du contenu non mis à l’échelle et centré sur la cible, définissez D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. Centré. Lorsque DxgkDdiEnumVidPnCofuncModality est appelé, définissez D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION. Mise à l’échelle vers D3DKMDT_VPPS_CENTERED.
Mise à l’échelle étendue
Si le chemin d’accès peut afficher du contenu mis à l’échelle pour s’adapter à la cible sans conserver le rapport d’aspect de la source, définissez D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. Étiré. Lorsque DxgkDdiEnumVidPnCofuncModality est appelé, définissez D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION. Mise à l’échelle vers D3DKMDT_VPPS_STRETCHED.
Mise à l’échelle étirée préservant les proportions
Si le chemin d’accès peut mettre à l’échelle le contenu source en fonction de la cible tout en préservant le rapport d’aspect de la source, définissez D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. AspectRatioCenteredMax. Lorsque DxgkDdiEnumVidPnCofuncModality est appelé, définissez D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION. Mise à l’échelle vers D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX.
Mise à l’échelle personnalisée
Si le chemin d’accès peut afficher un ou plusieurs modes de mise à l’échelle qui ne sont pas décrits par les autres membres de la structure D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT , définissez D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. Personnalisé. Lorsque DxgkDdiEnumVidPnCofuncModality est appelé, définissez D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION. Mise à l’échelle vers D3DKMDT_VPPS_CUSTOM. Les fournisseurs de matériel indépendants peuvent utiliser des valeurs d’échappement privées pour indiquer au pilote comment interpréter la mise à l’échelle personnalisée sur une cible donnée.
Si les modes cible et source épinglés actuels ont le même rapport d’aspect, mais sont de tailles différentes, le pilote miniport d’affichage doit définir uniquement les membres étirés et centrés . Dans ce cas, DMM efface toute valeur différente de zéro du membre AspectRatioCenteredMax .
Mise à l’échelle d’API vers DDI
La correspondance des valeurs de mise à l’échelle de l’API en mode utilisateur avec les valeurs de mise à l’échelle DDI du pilote miniport dans l’énumération D3DKMDT_VIDPN_PRESENT_PATH_SCALING est illustrée dans le tableau suivant.
SetDisplayConfig Valeur de mise à l’échelle de l’API | Valeur de mise à l’échelle DDI |
---|---|
DC_IDENTITY |
D3DKMDT_VPPS_IDENTITY |
DC_CENTERED |
D3DKMDT_VPPS_CENTERED |
DC_STRETCHED |
D3DKMDT_VPPS_STRETCHED |
DC_ASPRATIOMAX |
D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX |
DC_CUSTOM |
D3DKMDT_VPPS_CUSTOM |
DC_PREFERRED |
D3DKMDT_VPPS_PREFERRED |
Ce mappage peut être utilisé avec les tables de mise à l’échelle de l’image de bureau pour comprendre comment les types de mise à l’échelle en mode utilisateur sont traduits en types de mise à l’échelle DDI envoyés au pilote de miniport d’affichage.
Mise à l’échelle et versions des pilotes
Le comportement des différentes versions de pilotes de miniport d’affichage s’exécutant sur différentes versions du système d’exploitation est indiqué dans le tableau suivant.
Version du système d’exploitation du pilote
< DXGKDDI_INTERFACE_VERSION DXGKDDI_INTERFACE_VERSION_WIN7
et
>= DXGKDDI_INTERFACE_VERSION_VISTA
> DXGKDDI_INTERFACE_VERSION = DXGKDDI_INTERFACE_VERSION_WIN7
Windows Vista
Le pilote a le comportement de Windows Vista.
Le pilote doit case activée la version du système d’exploitation lors de l’initialisation et ne doit jamais exposer ou utiliser les membres AspectRatioCenteredMax et Custom de D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. Si le pilote ne respecte pas cette exigence, DMM ignore AspectRatioCenteredMax et Custom et reconnaît uniquement les membres Identity, Centered ou Stretched . Si le pilote tente d’épingler le mode de mise à l’échelle D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX sur n’importe quel chemin d’accès VidPN, DMM retourne le code status STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION et traite ce mode de mise à l’échelle de la même façon que le mode stretch en plein écran.
Windows 7
Le système d’exploitation efface les valeurs des membres AspectRatioCenteredMax et Custom et part du principe que le pilote ne prend pas en charge les modes de mise à l’échelle étirés et de mise à l’échelle personnalisée qui préservent les proportions. DMM définit uniquement les modes de mise à l’échelle D3DKMDT_VPPS_IDENTITY, D3DKMDT_VPPS_STRETCHED ou D3DKMDT_VPPS_CENTERED. Le pilote se comporte comme sur Windows Vista.
Le pilote doit prendre en charge le membre AspectRatioCenteredMax et le système d’exploitation l’utilise à partir de Panneau de configuration applications. Le pilote peut éventuellement implémenter des fonctionnalités personnalisées en définissant le membre Personnalisé .
DMM confirme toujours que l’interface >du pilote = DXGKDDI_INTERFACE_VERSION_WIN7 avant d’essayer de case activée et d’utiliser les membres AspectRatioCenteredMax ou Custom de D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT.
Important Un pilote miniport d’affichage qui prend en charge les valeurs D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX ou D3DKMDT_VPPS_CUSTOM ne doit jamais définir une valeur de D3DKMDT_VPPS_NOTSPECIFIED.
Mise à l’échelle avec plusieurs cartes
Les valeurs des types de mise à l’échelle D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX et D3DKMDT_VPPS_CUSTOM introduites avec Windows 7 sont stockées dans la base de données de connexion CCD associée à une unité de traitement graphique (GPU). Si l’utilisateur déplace un moniteur d’un GPU avec un pilote qui prend en charge ces membres de mise à l’échelle vers un autre GPU, le deuxième GPU peut ne pas être pris en charge par le pilote d’origine. Dans ce cas, le système d’exploitation mappe ces types de mise à l’échelle à la mise à l’échelle par défaut du système.
Si les deux GPU prennent en charge les types de mise à l’échelle D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX et D3DKMDT_VPPS_CUSTOM, et que le pilote du premier GPU implémente la D3DKMDT_VPPS_CUSTOM demande de mise à l’échelle personnalisée, si l’utilisateur bascule le moniteur vers le deuxième GPU, le pilote du deuxième GPU ne saura probablement pas comment interpréter la demande de mise à l’échelle personnalisée. Dans ce cas, le deuxième pilote doit échouer un appel à la fonction DxgkDdiCommitVidPn et doit retourner le code STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED status ; le système d’exploitation mappe ce type de mise à l’échelle à la mise à l’échelle par défaut du système.