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 .