supporto per la rotazione Path-Independent
A partire dall'aggiornamento Windows 8.1, il sistema operativo supporta la clonazione di schermi orientati in verticale su schermi orientati in orizzontale con la massima risoluzione possibile. Il driver di miniport di visualizzazione deve impostare i valori di offset appropriati nella struttura di D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT per il percorso clone primario e percorso clone secondario, come descritto in Rotazione di supporto in un driver Display Miniport.
Queste interfacce del driver di dispositivo (DDI) sono nuove in Windows 8.1 Update:
- D3DKMDT_VPPR_GET_CONTENT_ROTATION
- D3DKMDT_VPPR_GET_CONTENT_ROTATION_PART
- D3DKMDT_VPPR_GET_OFFSET_ROTATION
Queste DDI vengono aggiornate in Windows 8.1 Update:
Clonazione di un dispositivo con orientamento verticale
Quando a un driver di un dispositivo con orientamento verticale viene richiesto di clonare su un monitor con orientamento orizzontale, deve segnalare modalità sorgente (x,y) con risoluzioni che corrispondono alle risoluzioni nel percorso clone primario. Il percorso clone secondario può quindi supportare valori di offset di 90 e 270 gradi (D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT.Offset90 o .Offset270 sono TRUE). Pertanto, quando viene eseguito il commit di un vidPN con un valore di enumerazione D3DKMDT_VIDPN_PRESENT_PATH_ROTATION che indica un offset di 90 o 270 gradi, significa che le risoluzioni (x,y) vengono capovolte in questo particolare percorso.
Per impostazione predefinita, il sistema operativo sceglie il percorso del clone secondario come pannello di visualizzazione interno. Nel caso in cui il pannello interno sia impostato principalmente in modalità ritratto, il sistema operativo prevede che D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT.Offset270 sia impostato su questo percorso per visualizzare sul pannello interno in modalità orizzontale. Nel caso di un monitor esterno in modalità orizzontale nel percorso clone secondario, il sistema operativo prevede che il driver supporti D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT.Offset90, anche se probabilmente si tratta di uno scenario raro.
scenari di clonazione di esempio
Ecco uno scenario tipico in cui un dispositivo verticale con risoluzione nativa 800 (larghezza) x 1280 pixel (altezza) è connesso in modalità clone a una TV orizzontale con altezza 1080 pixel. Il driver segnala queste informazioni al sistema operativo:
modalità di origine
1280 x 800
modalità di destinazione TV
1920 x 1080 (ridimensionamento mantenuto delle proporzioni)
modalità di destinazione del dispositivo
800 x 1280 (ridimensionamento delle identità)
percorso clone primario (TV)
Il driver supporta solo D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT.Offset0, nonché il supporto della rotazione normale
percorso clone secondario (dispositivo)
Il driver supporta solo D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT.Offset270, nonché il supporto per la rotazione normale.
La chiamata alla funzione DxgkDdiCommitVidPn restituisce quindi con queste impostazioni di percorso dall'enumerazione D3DKMDT_VIDPN_PRESENT_PATH_ROTATION:
percorso clone primario (TV)
D3DKMDT_VPPR_IDENTITY
percorso secondario del clone (dispositivo)
D3DKMDT_VPPR_IDENTITY_OFFSET270
Il sistema operativo si aspetta che il driver ruoti il contenuto fornito di 270 gradi.
Se, nel menu a discesa Orientamento nel pannello di controllo del display , l'utente sceglie l'opzione Orizzontale (capovolto), la chiamata alla funzione DxgkDdiCommitVidPn restituisce con queste impostazioni di percorso dall'enumerazione D3DKMDT_VIDPN_PRESENT_PATH_ROTATION:
percorso clone primario (TV)
D3DKMDT_VPPR_ROTATE180
percorso clone secondario (dispositivo)
D3DKMDT_VPPR_ROTATE180_OFFSET270
Se Gestione finestre desktop (DWM) ha già ruotato il contenuto di 180 gradi, il driver deve comunque ruotarlo di altri 270 gradi nel percorso clone secondario. In caso contrario, il driver deve ruotare il contenuto di 180 gradi per la TV e 90 gradi per il dispositivo. Si noti che per ruotare il contenuto, il driver deve impostare il membro Rotate della struttura DXGK_PRESENTFLAGS.