Suporte à rotação de Path-Independent
A partir do Windows 8.1 Update, o sistema operacional dá suporte à clonagem de telas retrato-primeiro em telas paisagem com a maior resolução possível. O driver de miniporto de exibição deve definir os valores de deslocamento adequados na estrutura D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT para o caminho de clone primário e o caminho de clone secundário, conforme descrito em Rotação de Suporte em um Driver de Miniporto de Exibição.
Essas DDIs (interfaces de driver de dispositivo) são novas em Windows 8.1 Update:
- D3DKMDT_VPPR_GET_CONTENT_ROTATION
- D3DKMDT_VPPR_GET_CONTENT_ROTATION_PART
- D3DKMDT_VPPR_GET_OFFSET_ROTATION
Esses DDIs são atualizados em Windows 8.1 Update:
Clonando um dispositivo retrato-first
Quando um driver de um dispositivo retrato-first é solicitado a clonar em um monitor de paisagem primeiro, ele deve relatar resoluções do modo de origem (x,y) que correspondem às resoluções no caminho do clone primário. O caminho de clone secundário poderia dar suporte a valores de deslocamento de 90 e 270 graus (D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT. Offset90 ou . Offset270 são TRUE). Portanto, quando um VidPN é confirmado com um valor de enumeração D3DKMDT_VIDPN_PRESENT_PATH_ROTATION que indica um deslocamento de 90 ou 270 graus, isso significa que as resoluções (x,y) são invertidas nesse caminho específico.
Por padrão, o sistema operacional escolhe o caminho de clone secundário para ser o painel de exibição interno. Caso o painel interno seja retrato primeiro, o sistema operacional espera D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT. Deslocamento270 a ser definido nesse caminho para exibição no painel de exibição interno no modo paisagem. No caso de um monitor externo de paisagem no caminho de clone secundário, o sistema operacional espera que o driver dê suporte a D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT. Offset90, embora isso provavelmente seja um cenário raro.
Cenários de clone de exemplo
Aqui está um cenário típico em que um dispositivo retrato-first com resolução nativa 800 (largura) x 1280 pixels (altura) está conectado no modo clone a uma TV de paisagem com altura de 1080 pixels. O driver relataria essas informações ao sistema operacional:
modo de origem
1280 x 800
Modo de destino de TV
1920 x 1080 (dimensionamento preservado da taxa de proporção)
modo de destino do dispositivo
800 x 1280 (dimensionamento de identidade)
caminho de clone primário (TV)
O driver dá suporte apenas a D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT. Deslocamento0, bem como suporte de rotação normal
caminho de clone secundário (dispositivo)
O driver dá suporte apenas a D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT. Offset270, bem como suporte de rotação normal
A chamada para a função DxgkDdiCommitVidPn retorna com essas configurações de caminho da enumeração D3DKMDT_VIDPN_PRESENT_PATH_ROTATION :
caminho de clone primário (TV)
D3DKMDT_VPPR_IDENTITY
caminho de clone secundário (dispositivo)
D3DKMDT_VPPR_IDENTITY_OFFSET270
O sistema operacional espera que o driver gire o conteúdo fornecido 270 graus.
Se, na caixa suspensa Orientação do painel de controle Exibir, o usuário escolher a opção Paisagem (invertida), a chamada para a função DxgkDdiCommitVidPn retornará com essas configurações de caminho da enumeração D3DKMDT_VIDPN_PRESENT_PATH_ROTATION:
caminho de clone primário (TV)
D3DKMDT_VPPR_ROTATE180
caminho de clone secundário (dispositivo)
D3DKMDT_VPPR_ROTATE180_OFFSET270
Se o DWM (Gerenciador de Janelas da Área de Trabalho) já tiver girado o conteúdo em 180 graus, o driver ainda deverá girar mais 270 graus no caminho de clone secundário. Caso contrário, o driver deve girar o conteúdo 180 graus para a TV e 90 graus para o dispositivo. Observe que, para girar o conteúdo, o driver deve definir o membro Rotate da estrutura DXGK_PRESENTFLAGS .