fonction D3DKMDT_VPPR_GET_CONTENT_ROTATION (d3dkmdt.h)
Fonction d’assistance qui extrait la rotation combinée que l’utilisateur voit à partir de l’orientation d’affichage par défaut à partir d’une valeur donnée de l’énumération D3DKMDT_VIDPN_PRESENT_PATH_ROTATION . Cette valeur est en fait la somme de l’angle de décalage et de l’angle que le Gestionnaire de fenêtres de bureau (DWM) a déjà fait pivoter le contenu du chemin d’accès de clone principal. Seuls les pilotes qui prennent en charge la rotation indépendante du chemin (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3_PATH_INDEPENDENT_ROTATION) doivent appeler cette fonction.
Syntaxe
D3DKMDT_VIDPN_PRESENT_PATH_ROTATION D3DKMDT_VPPR_GET_CONTENT_ROTATION(
D3DKMDT_VIDPN_PRESENT_PATH_ROTATION Rotation
);
Paramètres
Rotation
En entrée, une valeur de l’énumération D3DKMDT_VIDPN_PRESENT_PATH_ROTATION .
En sortie, une valeur comprise entre 1 et 4, inclusive, qui correspond à la partie OFFSET de la D3DKMDT_VIDPN_PRESENT_PATH_ROTATION valeurs constantes. Une valeur de sortie de 1 (identité) représente 0 degrés de rotation totale, 2 représente 90 degrés, et ainsi de suite. Une valeur de sortie de 0 indique que le chemin d’accès VidPN n’est pas initialisé.
La valeur de sortie de Rotation est la somme des valeurs de sortie des fonctions D3DKMDT_VPPR_GET_CONTENT_ROTATION_PART et D3DKMDT_VPPR_GET_OFFSET_ROTATION moins 1.
Valeur retournée
La valeur retournée correspond aux angles de rotation et de décalage comme suit :
Valeur d’énumération d’entrée | Constante d’énumération d’entrée | Rotation + décalage, en degrés | Valeur de rotation de sortie |
---|---|---|---|
0 | D3DKMDT_VPPR_UNINITIALIZED | - | 0 |
1 | D3DKMDT_VPPR_IDENTITY | 0 | 1 |
2 | D3DKMDT_VPPR_ROTATE90 | 90 | 2 |
3 | D3DKMDT_VPPR_ROTATE180 | 180 | 3 |
4 | D3DKMDT_VPPR_ROTATE270 | 270 | 4 |
5 | D3DKMDT_VPPR_IDENTITY_OFFSET90 | 90 | 2 |
6 | D3DKMDT_VPPR_ROTATE90_OFFSET90 | 180 | 3 |
7 | D3DKMDT_VPPR_ROTATE180_OFFSET90 | 270 | 4 |
8 | D3DKMDT_VPPR_ROTATE270_OFFSET90 | 0 | 1 |
9 | D3DKMDT_VPPR_IDENTITY_OFFSET180 | 180 | 3 |
10 | D3DKMDT_VPPR_ROTATE90_OFFSET180 | 270 | 4 |
11 | D3DKMDT_VPPR_ROTATE180_OFFSET180 | 0 | 1 |
12 | D3DKMDT_VPPR_ROTATE270_OFFSET180 | 90 | 2 |
13 | D3DKMDT_VPPR_IDENTITY_OFFSET270 | 270 | 4 |
14 | D3DKMDT_VPPR_ROTATE90_OFFSET270 | 0 | 1 |
15 | D3DKMDT_VPPR_ROTATE180_OFFSET270 | 90 | 2 |
16 | D3DKMDT_VPPR_ROTATE270_OFFSET270 | 180 | 3 |
Remarques
Cette fonction est déclarée inline dans D3dkmdt.h comme suit :
__inline
D3DKMDT_VIDPN_PRESENT_PATH_ROTATION
D3DKMDT_VPPR_GET_CONTENT_ROTATION(
D3DKMDT_VIDPN_PRESENT_PATH_ROTATION Rotation)
{
if ((Rotation >= D3DKMDT_VPPR_IDENTITY_OFFSET90) &&
(Rotation <= D3DKMDT_VPPR_ROTATE270_OFFSET270))
{
D3DKMDT_VIDPN_PRESENT_PATH_ROTATION ContentPart =
D3DKMDT_VPPR_GET_CONTENT_ROTATION_PART(Rotation);
D3DKMDT_VIDPN_PRESENT_PATH_ROTATION OffsetPart =
D3DKMDT_VPPR_GET_OFFSET_ROTATION(Rotation);
Rotation = (D3DKMDT_VIDPN_PRESENT_PATH_ROTATION)(
(((ContentPart - 1) + (OffsetPart - 1)) % 4) + 1);
}
return Rotation;
}
Si le contenu présenté doit être pivoté par le pilote, la sortie de cette fonction représente la rotation totale (le membre Pivoter de la structure DXGK_PRESENTFLAGS ) que le pilote doit appliquer aux pixels fournis dans l’opération DxgkDdiPresent . Pour plus d’informations, consultez Prise en charge de la rotation Path-Independent.
Voici un exemple de la façon dont cette fonction peut fournir à votre pilote les informations dont il a besoin pour faire pivoter correctement le contenu. Lorsqu’un appareil portrait-first est connecté en mode clone à un moniteur paysage-first et que l’utilisateur change l’orientation dans le panneau de configuration Afficher en Portrait, cela représente l’orientation par défaut de l’appareil portrait-first. Par conséquent, le pilote doit définir une valeur de D3DKMDT_VIDPN_PRESENT_PATH_ROTATION. D3DKMDT_VPPR_ROTATE90_OFFSET270 sur le chemin. Cette fonction retourne ensuite une valeur de rotation de 1 (identité) pour indiquer que le contenu affiché sur le chemin du clone ne doit pas être pivoté.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8.1,DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WDDM1_3_PATH_INDEPENDENT_ROTATION |
Serveur minimal pris en charge | Windows Server 2012 R2 |
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | d3dkmdt.h |
Voir aussi
D3DKMDT_VIDPN_PRESENT_PATH_ROTATION
D3DKMDT_VPPR_GET_CONTENT_ROTATION_PART