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:

  1. Il gestore VidPN crea o ottiene un VidPN che dispone di modalità aggiunte ad alcuni, ma non tutti, delle relative origini e destinazioni.

  2. 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.

  3. 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:

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:

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.