Enumerazione delle modalità di origine e destinazione di Cofunctional VidPN
Questo argomento descrive come il gestore di rete (VidPN) e il driver miniport visualizzato collaborano per enumerare le modalità disponibili in origini e destinazioni video presenti. Prima di leggere questo materiale, è necessario avere familiarità con il materiale negli argomenti seguenti:
Da un momento all'altro, il manager VidPN chiede al driver di miniport di visualizzare le modalità disponibili in un video della scheda di visualizzazione presenti origini e destinazioni. In genere, la richiesta ha il modello seguente:
Il gestore VidPN crea o ottiene un VidPN che dispone di modalità aggiunte ad alcuni, ma non tutti, delle relative origini e destinazioni.
Il gestore VidPN chiama DxgkDdiIsSupportedVidPn per determinare se è possibile estendere VidPN per formare un VidPN funzionale supportato nella scheda di visualizzazione. In questo caso, chiede se le modalità possono essere aggiunte alle origini rimanenti e alle destinazioni senza modificare le modalità aggiunte esistenti.
Il manager VidPN chiama DxgkDdiEnumVidPnCofuncModality per ottenere le modalità disponibili sulle origini e sulle destinazioni che non hanno ancora aggiunto le modalità.
Uno degli argomenti passati a DxgkDdiEnumVidPnCofuncModality è un handle a un oggetto VidPN denominato VidPN constraining VidPN.
DxgkDdiEnumVidPnCofuncModality deve eseguire le operazioni seguenti:
Controllare il vincolo di VidPN.
Per ogni origine e destinazione che non dispone di una modalità aggiunta, modificare il set di modalità in modo che sia il set di modalità più grande possibile che sia cofunzionale con i vincoli.
Per ogni percorso che non dispone di una trasformazione di ridimensionamento aggiunta, modificare i flag di supporto di ridimensionamento in modo che siano cofunzionali con i vincoli.
Per ogni percorso che non dispone di una trasformazione di rotazione aggiunta, modificare i flag di supporto di rotazione in modo che siano cofunzionali con i vincoli.
Per ogni origine con una modalità aggiunta, segnalare i metodi di multicampionamento disponibili per tale origine.
I paragrafi seguenti forniscono informazioni dettagliate su come eseguire ognuna delle attività nell'elenco puntato precedente.
Controllo dei vincoli di VidPN
Le proprietà seguenti dell'associazione VidPN sono i vincoli che devono essere onorati da DxgkDdiEnumVidPnCofuncModality.
Topologia (set di associazioni tra origini e destinazioni)
Modalità aggiunte
Ridimensionamento, supporto di scalabilità, rotazione e supporto di rotazione di ogni percorso
Base del colore di destinazione di ogni percorso
Intervalli dinamici del coefficiente di colore di destinazione di ogni percorso
Tipo di contenuto (grafica o video) di ogni percorso
Rampa gamma di ogni percorso
Per estrarre i vincoli da VidPN con vincolo, seguire questa procedura:
Iniziare chiamando la funzione pfnGetTo topologia per ottenere un puntatore a un'interfaccia di topologia VidPN che rappresenta la topologia di VidPN che limita la topologia di VidPN.
Chiamare le funzioni pfnAcquireFirstPathInfo e pfnAcquireNextPathInfo per ottenere informazioni su ogni percorso nella topologia di VidPN. Informazioni su un percorso specifico (ID origine, ID di destinazione, trasformazione di scalabilità, trasformazione di rotazione, base colore di destinazione e così via) è contenuto in una struttura di D3DKMDT_VIDPN_PRESENT_PATH .
Per ogni percorso, passare l'ID di origine del percorso alla funzione pfnAcquireSourceModeSet per ottenere l'origine del percorso.
Chiamare la funzione pfnAcquirePinnedModeInfo per determinare quale modalità (se presente) viene aggiunta nel set di modalità di origine. Se il set di modalità di origine ha una modalità aggiunta, probabilmente non è necessario esaminare le modalità rimanenti nel set. Se il set di modalità non ha una modalità aggiunta, esaminare le modalità rimanenti nel set chiamando pfnAcquireFirstModeInfo e pfnAcquireNextModeInfo.
Usare una procedura simile per esaminare i set di modalità di destinazione e per determinare quali set di modalità di destinazione hanno aggiunto le modalità.
Regolazione dei set di modalità
Quando si esaminano i set di modalità associati alle origini e alle destinazioni nella topologia di VidPN, prendere nota dei set di modalità aggiunti. Se un set di modalità non dispone di una modalità aggiunta, determinare se deve essere modificato. Un set di modalità deve essere modificato se contiene modalità non funzionanti con i vincoli o se manca di modalità disponibili che sono cofunzionali con i vincoli.
Per i video presenti destinazioni con monitor connessi, è necessario considerare anche il set di modalità supportate dal monitoraggio. Anche se una destinazione video presente nella scheda di visualizzazione supporta una modalità specifica (dato i vincoli), è consigliabile elencare solo tale modalità nella modalità di destinazione impostata se il monitor connesso supporta anche la modalità. Per determinare le modalità supportate dal monitoraggio connesso, seguire questa procedura:
-
Chiamare pfnAcquireMonitorSourceModeSet. Se un set di modalità non richiede alcuna regolazione, è possibile lasciarlo solo. Se è necessario regolare un set di modalità, è necessario creare un nuovo set di modalità e sostituire il set di modalità esistente con quello nuovo.
-
Per creare e popolare un nuovo set di modalità di origine, chiamare pfnCreateNewSourceModeSet.
_DXGK_VIDPNSOURCEMODESET_INTERFACE
Chiamare quindi pfnCreateNewModeInfo e pfnAddMode.
-
Chiamare infine pfnAssignSourceModeSet per sostituire il set di modalità di origine esistente con quello nuovo.
Modifica dei flag di supporto per il ridimensionamento
Per ogni percorso nella topologia di VidPN vincolata, determinare se il percorso ha una trasformazione di ridimensionamento aggiunta. Per stabilire tale determinazione, controllare vpnPath. ContentTransformation.Scaling, dove VPNPath è la struttura D3DKMDT_VIDPN_PRESENT_PATH che rappresenta il percorso. Se vpnPath. ContentTransformation.Scaling è impostato su D3DKMDT_VPPS_IDENTITY, D3DKMDT_VPPS_CENTERED o D3DKMDT_VPPS_STRETCHED, quindi viene aggiunta la trasformazione di ridimensionamento per il percorso. In caso contrario, la trasformazione di ridimensionamento non viene aggiunta.
Se il percorso non ha una trasformazione di ridimensionamento aggiunta, determinare se è necessario aggiustare i flag di supporto del percorso. I flag di supporto devono essere modificati se mostrano il supporto per un tipo di ridimensionamento non funzionante con i vincoli o se non riescono a mostrare il supporto per un tipo di ridimensionamento che è cofunzionale con i vincoli. Per modificare i flag di supporto per il ridimensionamento, impostare i membri della struttura D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT che contiene i flag.
Modifica dei flag di supporto per la rotazione
La regolazione dei flag di supporto di rotazione di un percorso è simile alla modifica dei flag di supporto per il ridimensionamento di un percorso. Si supponga che VPNPath sia una struttura D3DKMDT_VIDPN_PRESENT_PATH. Se vpnPath. ContentTransformation.Rotation è impostato su D3DKMDT_VPPR_IDENTITY, D3DKMDT_VPPR_ROTATE90, D3DKMDT_VPPR_ROTATE180 o D3DKMDT_VPPR_ROTATE270, quindi viene aggiunta la trasformazione di rotazione per il percorso. In caso contrario, la trasformazione di rotazione non viene aggiunta. I flag di supporto di rotazione si trovano in VPNPath. ContentTransformation.RotationSupport.
Creazione di report di metodi di multicampionamento
Se la scheda di visualizzazione include uno o più codec di output video in grado di antialiasing tramite multicampionamento, è necessario segnalare i metodi di multicampionamento disponibili (in base ai vincoli), per ogni origine con una modalità aggiunta. Per segnalare i metodi multicampionamento disponibili, seguire questa procedura:
- Creare una matrice di strutture D3DDDI_MULTISAMPLINGMETHOD
- Passare la matrice alla funzione pfnAssignMultisamplingMethodSetdell'interfaccia VidPN.
La struttura D3DDDI_MULTISAMPLINGMETHOD ha due membri, che è necessario impostare, che caratterizzano un metodo multicampionamento. Il membro NumSamples indica il numero di sottopixel campionati. Il membro NumQualityLevels indica il numero di livelli di qualità in cui il metodo può funzionare. È possibile specificare un numero qualsiasi di livelli di qualità, purché ogni aumento del livello migliora in modo noticabilmente la qualità dell'immagine presentata.
Enumerazione pivot
Come descritto in precedenza, DxgkDdiEnumVidPnCofuncModality deve creare set di modalità che sono cofunzionali con il parametro VidPN passato nel parametro hConstrainingVidPn . In alcuni casi , DxgkDdiEnumVidPnCofuncModality deve aumentare il comportamento in base a informazioni aggiuntive (un pivot di enumerazione) passate nei parametri EnumPivotType e EnumPivot .
Il pivot di enumerazione può essere uno dei seguenti:
Il set di modalità di un determinato video presenta l'origine
Il set di modalità di un determinato video presenta la destinazione
Trasformazione della scalabilità di un determinato percorso vidPN
Trasformazione di rotazione di un determinato percorso vidPN
Se l'enumerazione pivot è un set di modalità, DxgkDdkEnumVidPnCofuncModality deve lasciare invariata tale modalità impostata. Se il pivot di enumerazione è la trasformazione di ridimensionamento (rotazione) di un percorso, dxgkDdiEnumVidPnCofuncModality non deve modificare i flag di supporto del ridimensionamento (rotazione) per tale percorso.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per