Ondersteuning voor Path-Independent rotatie

Vanaf de Windows 8.1-update ondersteunt het besturingssysteem het klonen van schermen met een standaard portretweergave naar schermen met een standaard landschapsweergave met de grootst mogelijke resolutie. Het stuurprogramma voor de weergaveminipoort moet de juiste offsetwaarden instellen in de D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT-structuur voor het primaire kloonpad en het secundaire kloonpad, zoals beschreven in Supporting Rotation in a Display Miniport Driver.

Deze DDIs's (Device Driver Interfaces) zijn nieuw in Windows 8.1 Update:

  • D3DKMDT_VPPR_GET_CONTENT_ROTATION
  • D3DKMDT_VPPR_GET_CONTENT_ROTATION_PART
  • D3DKMDT_VPPR_GET_OFFSET_ROTATION

Deze DDIs's worden bijgewerkt in Windows 8.1 Update:

Een apparaat met portret-eerste orientatie klonen

Wanneer een stuurprogramma van een portret-gericht apparaat wordt gevraagd om te klonen naar een liggend-georiënteerde monitor, moet het de source-modus (x,y) rapporteren die overeenkomt met de resoluties in het primaire clone-pad. Het secundaire kloonpad kunnen vervolgens offsetwaarden van 90 en 270 graden ondersteunen (D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT.Offset90 of .Offset270 zijn TRUE). Dus wanneer een VidPN wordt doorgevoerd met een D3DKMDT_VIDPN_PRESENT_PATH_ROTATION opsommingswaarde die een offset van 90 of 270 graden aangeeft, betekent dit dat de resoluties (x,y) in dit specifieke pad worden omgekeerd.

Standaard kiest het besturingssysteem het secundaire kloonpad als het interne weergavepaneel. In het geval dat het interne paneel staand is, verwacht het besturingssysteem D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT.Offset270- moet worden ingesteld op dit pad om weer te geven op het interne beeldschermpaneel in de liggende modus. In het geval van een landschap-georiënteerde externe monitor in het tweede kloonpad verwacht het besturingssysteem dat het stuurprogramma ondersteuning biedt voor D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT.Offset90, hoewel dit waarschijnlijk een zeldzaam scenario is.

voorbeeld van kloonscenario's

Hier volgt een typisch scenario waarbij een apparaat in portretmodus met systeemeigen resolutie 800 (breedte) x 1280 pixels (hoogte) in clonemodus is verbonden met een tv in landschapsmodus met een hoogte van 1080 pixels. Het stuurprogramma rapporteert deze informatie aan het besturingssysteem:

bronmodus
1280 x 800

TV-doelinstelling
1920 x 1080 (hoogte-breedteverhouding behouden schalen)

apparaat doelmodus
800 x 1280 (schaalaanpassing van identiteiten)

primair kloneringspad (TV)
stuurprogramma ondersteunt alleen D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT.Offset0, evenals ondersteuning voor normale rotatie

secundair kloonpad (apparaat)
stuurprogramma ondersteunt alleen D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT.Offset270, evenals ondersteuning voor normale rotatie

De aanroep van de functie DxgkDdiCommitVidPn retourneert vervolgens met deze padinstellingen uit de opsomming D3DKMDT_VIDPN_PRESENT_PATH_ROTATION:

primaire kloonroute (TV)
D3DKMDT_VPPR_IDENTITY

secundaire kloonroute (apparaat)
D3DKMDT_VPPR_IDENTITY_OFFSET270

Het besturingssysteem verwacht dat het stuurprogramma de opgegeven inhoud 270 graden roteert.

Als de gebruiker in het configuratiescherm Weergave de optie Afdrukstand kiest uit de vervolgkeuzelijst en kiest voor de optie Liggend (gespiegeld), retourneert de aanroep naar de functie DxgkDdiCommitVidPn- met deze padinstellingen uit de opsomming D3DKMDT_VIDPN_PRESENT_PATH_ROTATION:

primair kloonpad (TV)
D3DKMDT_VPPR_ROTATE180

secundair kloonpad voor apparaat
D3DKMDT_VPPR_ROTATE180_OFFSET270

Als de Desktop Window Manager (DWM) de inhoud al 180 graden heeft gedraaid, moet het stuurprogramma deze nog 270 graden draaien in het secundaire kloonpad. Anders moet het stuurprogramma de inhoud 180 graden draaien voor de TV en 90 graden voor het apparaat. Houd er rekening mee dat om de inhoud te draaien, de stuurprogramma het Rotate-lid van de DXGK_PRESENTFLAGS-structuur moet instellen.