Share via


Prise en charge de la rotation Path-Independent

À compter de Mise à jour Windows 8.1, le système d’exploitation prend en charge le clonage des affichages portrait-first sur les affichages paysage avec la meilleure résolution possible. Le pilote de miniport d’affichage doit définir les valeurs de décalage appropriées dans la structure de D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT pour le chemin du clone principal et le chemin de clone secondaire, comme décrit dans Prise en charge de la rotation dans un pilote de miniport d’affichage.

Ces interfaces de pilote de périphérique (DDIs) sont des nouveautés dans Mise à jour Windows 8.1 :

  • D3DKMDT_VPPR_GET_CONTENT_ROTATION
  • D3DKMDT_VPPR_GET_CONTENT_ROTATION_PART
  • D3DKMDT_VPPR_GET_OFFSET_ROTATION

Ces DDIs sont mis à jour dans Mise à jour Windows 8.1 :

Clonage d’un appareil portrait-first

Lorsqu’un pilote d’un appareil portrait-first est invité à cloner sur un moniteur paysage, il doit signaler les résolutions en mode source (x,y) qui correspondent aux résolutions du chemin de clone principal. Le chemin d’accès de clone secondaire peut alors prendre en charge des valeurs de décalage de 90 et 270 degrés (D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT. Offset90 ou . Offset270 a la valeur TRUE). Par conséquent, lorsqu’un VidPN est engagé avec une valeur d’énumération D3DKMDT_VIDPN_PRESENT_PATH_ROTATION qui indique un décalage de 90 ou 270 degrés, cela signifie que les résolutions (x,y) sont retournées dans ce chemin particulier.

Par défaut, le système d’exploitation choisit le chemin de clone secondaire comme panneau d’affichage interne. Dans le cas où le panneau interne est portrait-first, le système d’exploitation attend D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT. Offset270 doit être défini sur ce chemin afin d’être affiché sur le panneau d’affichage interne en mode paysage. Dans le cas d’un moniteur externe paysage-first dans le chemin de clone secondaire, le système d’exploitation s’attend à ce que le pilote prend en charge D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT. Offset90, même s’il s’agit probablement d’un scénario rare.

Exemples de scénarios de clonage

Voici un scénario classique où un appareil portrait avec une résolution native de 800 (largeur) x 1280 pixels (hauteur) est connecté en mode clone à un téléviseur paysage avec une hauteur de 1 080 pixels. Le pilote signale ces informations au système d’exploitation :

mode source
1280 x 800

Mode cible TV
1920 x 1080 (mise à l’échelle préservée)

mode cible de l’appareil
800 x 1280 (mise à l’échelle des identités)

chemin d’accès du clone principal (TV)
le pilote prend uniquement en charge D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT. Offset0, ainsi que la prise en charge de la rotation normale

chemin d’accès au clone secondaire (appareil)
le pilote prend uniquement en charge D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT. Offset270, ainsi que la prise en charge de la rotation normale

L’appel à la fonction DxgkDdiCommitVidPn retourne ensuite avec les paramètres de chemin d’accès suivants à partir de l’énumération D3DKMDT_VIDPN_PRESENT_PATH_ROTATION :

chemin d’accès du clone principal (TV)
D3DKMDT_VPPR_IDENTITY

chemin d’accès au clone secondaire (appareil)
D3DKMDT_VPPR_IDENTITY_OFFSET270

Le système d’exploitation s’attend à ce que le pilote effectue une rotation du contenu fourni de 270 degrés.

Si, dans la zone déroulante Orientation du panneau de configuration Afficher, l’utilisateur choisit l’option Paysage (inversé), l’appel à la fonction DxgkDdiCommitVidPn retourne avec les paramètres de chemin d’accès suivants de l’énumération D3DKMDT_VIDPN_PRESENT_PATH_ROTATION :

chemin d’accès du clone principal (TV)
D3DKMDT_VPPR_ROTATE180

chemin d’accès au clone secondaire (appareil)
D3DKMDT_VPPR_ROTATE180_OFFSET270

Si le Gestionnaire de fenêtres de bureau (DWM) a déjà fait pivoter le contenu de 180 degrés, le pilote doit toujours le faire pivoter de 270 degrés dans le chemin du clone secondaire. Sinon, le pilote doit faire pivoter le contenu de 180 degrés pour le téléviseur et de 90 degrés pour l’appareil. Notez que pour faire pivoter le contenu, le pilote doit définir le membre Pivoter de la structure DXGK_PRESENTFLAGS .