Condividi tramite


Uso delle proporzioni e delle modalità di ridimensionamento personalizzate

Per supportare la scalabilità estesa con mantenimento delle proporzioni e le modalità di ridimensionamento personalizzate disponibili a partire da Windows 7 (dove DXGKDDI_INTERFACE_VERSION= DXGKDDI_INTERFACE_VERSION_WIN7>), le funzionalità seguenti vengono aggiunte a VidPN presenta i dati del percorso usati dai driver miniport visualizzati:

Specifica delle modalità di ridimensionamento

Il comportamento e l'aspetto del desktop sul monitor usando queste modalità di ridimensionamento sono descritti in Ridimensionamento dell'immagine desktop. Quando il gestore della modalità di visualizzazione (DMM) chiama la funzione DxgkDdiEnumVidPnCofuncModality , il driver deve impostare i membri di D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT in base ai tipi di ridimensionamento supportati dal percorso attuale VidPN, come indicato di seguito:

Scalabilità delle identità
Se il percorso può visualizzare il contenuto senza alcuna trasformazione, impostare il membro Identity di D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT su un valore diverso da zero. Quando viene chiamato DxgkDdiEnumVidPnCofuncModality , impostare il membro Scaling della struttura D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATIONsu D3DKMDT_VPPS_IDENTITY.

Ridimensionamento centrato
Se il percorso può visualizzare il contenuto non ridimensionato e centrato sulla destinazione, impostare D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. Centrato. Quando viene chiamato DxgkDdiEnumVidPnCofuncModality , impostare D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION. Ridimensionamento in D3DKMDT_VPPS_CENTERED.

Ridimensionamento esteso
Se il percorso può visualizzare il contenuto ridimensionato per adattarsi alla destinazione senza mantenere le proporzioni dell'origine, impostare D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. Allungato. Quando viene chiamato DxgkDdiEnumVidPnCofuncModality , impostare D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION. Ridimensionamento in D3DKMDT_VPPS_STRETCHED.

Ridimensionamento esteso con mantenimento delle proporzioni
Se il percorso può ridimensionare il contenuto di origine per adattarsi alla destinazione mantenendo le proporzioni dell'origine, impostare D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. AspectRatioCenteredMax. Quando viene chiamato DxgkDdiEnumVidPnCofuncModality , impostare D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION. Ridimensionamento in D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX.

Scalabilità personalizzata
Se il percorso può visualizzare una o più modalità di ridimensionamento non descritte dagli altri membri della struttura D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT , impostare D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. Personalizzato. Quando viene chiamato DxgkDdiEnumVidPnCofuncModality , impostare D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION. Ridimensionamento in D3DKMDT_VPPS_CUSTOM. I fornitori di hardware indipendenti (IHD) possono usare valori di escape privati per informare il driver come interpretare il ridimensionamento personalizzato in una determinata destinazione.

Se le modalità di destinazione e origine aggiunte correnti hanno le stesse proporzioni ma sono dimensioni diverse, il driver miniport di visualizzazione deve impostare solo i membri stretched e Centered . In questo caso DMM cancella qualsiasi valore diverso da zero del membro AspectRatioCenteredMax .

Ridimensionamento da API a DDI

La corrispondenza dei valori di ridimensionamento api in modalità utente ai valori di ridimensionamento DDI del driver miniport visualizzati nell'enumerazione D3DKMDT_VIDPN_PRESENT_PATH_SCALING è illustrata nella tabella seguente.

SetDisplayConfig Valore di ridimensionamento DELL'API Valore di ridimensionamento DDI

DC_IDENTITY

D3DKMDT_VPPS_IDENTITY

DC_CENTERED

D3DKMDT_VPPS_CENTERED

DC_STRETCHED

D3DKMDT_VPPS_STRETCHED

DC_ASPRATIOMAX

D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX

DC_CUSTOM

D3DKMDT_VPPS_CUSTOM

DC_PREFERRED

D3DKMDT_VPPS_PREFERRED

Questo mapping può essere usato con le tabelle in Ridimensionamento dell'immagine desktop per comprendere come i tipi di ridimensionamento in modalità utente vengono convertiti in tipi di ridimensionamento DDI inviati al driver miniport di visualizzazione.

Scalabilità e versioni dei driver

Il comportamento delle diverse versioni del driver miniport di visualizzazione in esecuzione in versioni diverse del sistema operativo è illustrato nella tabella seguente.

Versione del sistema operativo driver

< DXGKDDI_INTERFACE_VERSION DXGKDDI_INTERFACE_VERSION_WIN7

e

>= DXGKDDI_INTERFACE_VERSION_VISTA

> DXGKDDI_INTERFACE_VERSION = DXGKDDI_INTERFACE_VERSION_WIN7

Windows Vista

Il driver ha un comportamento di Windows Vista.

Il driver deve controllare la versione del sistema operativo durante l'inizializzazione e non deve mai esporre o usare i membri AspectRatioCenteredMax eCustom di D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. Se il driver viola questo requisito, DMM ignorerà AspectRatioCenteredMax e Custom e riconoscerà solo i membri Identity, Centered o Stretched . Se il driver tenta di aggiungere la modalità di ridimensionamento D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX in qualsiasi percorso VidPN, DMM restituirà il codice di stato STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION e tratterà questa modalità di ridimensionamento come la modalità di estensione a schermo intero.

Windows 7

Il sistema operativo cancella i valori dei membri AspectRatioCenteredMax e Custom e presuppone che il driver non supporti la scalabilità estesa e le modalità di ridimensionamento personalizzate. DMM imposterà solo le modalità di ridimensionamento D3DKMDT_VPPS_IDENTITY, D3DKMDT_VPPS_STRETCHED o D3DKMDT_VPPS_CENTERED. Il driver si comporta come in Windows Vista.

Il driver deve supportare il membro AspectRatioCenteredMax e il sistema operativo lo usa da Pannello di controllo applicazioni. Il driver può facoltativamente implementare funzionalità personalizzate impostando il membro personalizzato .

DMM conferma sempre che l'interfaccia >del driver = DXGKDDI_INTERFACE_VERSION_WIN7 prima di tentare di controllare e usare i membri AspectRatioCenteredMax o Custom di D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT.

Importante Un driver miniport di visualizzazione che supporta i valori D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX o D3DKMDT_VPPS_CUSTOM non deve mai impostare un valore di D3DKMDT_VPPS_NOTSPECIFIED.

Ridimensionamento con più adattatori

I valori dei tipi di ridimensionamento D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX e D3DKMDT_VPPS_CUSTOM introdotti con Windows 7 vengono archiviati nel database di connessione CCD associato a un'unità di elaborazione grafica (GPU). Se l'utente sposta un monitor da una GPU con un driver che supporta questi membri di ridimensionamento a un'altra GPU, la seconda GPU potrebbe non essere supportata dal driver originale. In questo caso il sistema operativo eseguirà il mapping di questi tipi di ridimensionamento al ridimensionamento predefinito del sistema.

Se entrambe le GPU supportano i tipi di ridimensionamento D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX e D3DKMDT_VPPS_CUSTOM e il driver per la prima GPU implementa la richiesta di scalabilità personalizzata D3DKMDT_VPPS_CUSTOM , se l'utente passa il monitor alla seconda GPU, il driver per la seconda GPU probabilmente non saprà come interpretare la richiesta di ridimensionamento personalizzata. In questo caso il secondo driver deve non riuscire una chiamata alla funzione DxgkDdiCommitVidPn e deve restituire il codice di stato STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED ; il sistema operativo eseguirà il mapping di questo tipo di ridimensionamento al ridimensionamento predefinito del sistema.