Enumerazione delle modalità di origine e destinazione vidPN cofunzionali

In questo argomento viene descritto il modo in cui il gestore di video presenta la rete (VidPN) e il driver miniport di visualizzazione collaborano per enumerare le modalità disponibili su origini e destinazioni video presenti. Prima di leggere questo materiale, è necessario avere familiarità con il materiale negli argomenti seguenti:

Di tanto in tanto, il manager VidPN chiede al driver miniport di visualizzare le modalità disponibili nelle origini e destinazioni del video di una scheda di visualizzazione. In genere, la richiesta ha il modello seguente:

  1. Il responsabile VidPN crea o ottiene un VidPN che dispone di modalità aggiunte ad alcune, ma non tutte, delle relative origini e destinazioni.

  2. Il responsabile VidPN chiama DxgkDdiIsSupportedVidPn per determinare se il VidPN può essere esteso per formare un VidPN funzionale supportato nella scheda di visualizzazione. Vale a dire, chiede se le modalità possono essere aggiunte alle origini e alle destinazioni rimanenti senza modificare le modalità bloccate esistenti.

  3. Il manager VidPN chiama DxgkDdiEnumVidPnCofuncModality per ottenere le modalità disponibili nelle origini e nelle destinazioni che non hanno ancora modalità bloccate.

Uno degli argomenti passati a DxgkDdiEnumVidPnCofuncModality è un handle per un oggetto VidPN denominato VidPN che vincola VidPN.

DxgkDdiEnumVidPnCofuncModality deve eseguire le operazioni seguenti:

  • Esaminare il vidPN che vincola.

  • Per ogni origine e destinazione che non dispone di una modalità bloccata, 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 bloccata, modificare i flag di supporto per il ridimensionamento in modo che siano cofunzionali con i vincoli.

  • Per ogni percorso che non dispone di una trasformazione di rotazione bloccata, modificare i flag di supporto di rotazione in modo che siano cofunzionali con i vincoli.

  • Per ogni origine con una modalità bloccata, 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 del vincolare VidPN

Le proprietà seguenti di VidPN che vincolano sono i vincoli che devono essere rispettati da DxgkDdiEnumVidPnCofuncModality.

  • Topologia (set di associazioni tra origini e destinazioni)

  • Modalità aggiunte

  • Supporto di scalabilità, rotazione e rotazione di ogni percorso

  • Base 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 dal vidPN con vincolo, seguire questa procedura:

  • Per iniziare, chiamare la funzione pfnGetTopology per ottenere un puntatore a un'interfaccia di topologia VidPN che rappresenta la topologia VidPN che vincola la topologia di VidPN.

  • Chiamare le funzioni pfnAcquireFirstPathInfo e pfnAcquireNextPathInfo per ottenere informazioni su ogni percorso nella topologia vidPN che vincola. Le informazioni su un determinato percorso (ID origine, ID di destinazione, trasformazione della scalabilità, trasformazione rotazione, base colore di destinazione e così via) sono contenute in una struttura D3DKMDT_VIDPN_PRE edizione Standard NT_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) è bloccata nel set di modalità di origine. Se il set di modalità di origine ha una modalità bloccata, probabilmente non è necessario esaminare le modalità rimanenti nel set. Se il set di modalità non dispone di una modalità bloccata, esaminare le modalità rimanenti nel set chiamando pfnAcquireFirstModeInfo e pfnAcquireNextModeInfo.

    Utilizzare una procedura simile per esaminare i set di modalità di destinazione e per determinare quali set di modalità di destinazione hanno modalità bloccate.

Regolazione dei set di modalità

Quando si esaminano i set di modalità associati alle origini e alle destinazioni nella topologia vidPN, prendere nota dei set di modalità aggiunti. Se un set di modalità non dispone di una modalità bloccata, determinare se deve essere regolato. Un set di modalità deve essere regolato se contiene modalità non funzionali con i vincoli o se non dispone 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 monitor. Anche se una destinazione video presente nella scheda di visualizzazione supporta una particolare modalità (in base ai vincoli), è consigliabile elencare tale modalità solo 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 vincolare, determinare se il percorso ha una trasformazione di ridimensionamento bloccata. Per fare questa determinazione, esaminare vpnPath.ContentTransformation.Scaling, dove vpnPath è la struttura D3DKMDT_VIDPN_PRE edizione Standard NT_PATH che rappresenta il percorso. Se vpnPath.ContentTransformation.Scaling è impostato su D3DKMDT_VPPS_IDENTITY, D3DKMDT_VPPS_CENTERED o D3DKMDT_VPPS_STRETCHED, quindi la trasformazione di ridimensionamento per il percorso viene bloccata. In caso contrario, la trasformazione di ridimensionamento non viene aggiunta.

Se il percorso non dispone di una trasformazione di ridimensionamento bloccata, determinare se i flag di supporto per il ridimensionamento del percorso devono essere modificati. I flag di supporto devono essere modificati se mostrano il supporto per un tipo di ridimensionamento non funzionale 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_PRE edizione Standard NT_PATH_SCALING_SUPPORT che contiene i flag.

Regolazione 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_PRE edizione Standard NT_PATH. Se vpnPath.ContentTransformation.Rotation è impostato su D3DKMDT_VPPR_IDENTITY, D3DKMDT_VPPR_ROTATE90, D3DKMDT_VPPR_ROTATE180 o D3DKMDT_VPPR_ROTATE270, quindi la trasformazione di rotazione per il percorso viene bloccata. In caso contrario, la trasformazione rotazione non viene bloccata. I flag di supporto per la rotazione si trovano in vpnPath.ContentTransformation.RotationSupport.

Creazione di report di metodi di multicampionamento

Se la scheda di visualizzazione dispone di uno o più codec di output video in grado di eseguire l'antialiasing tramite multicampionamento, è necessario segnalare i metodi di multicampionamento disponibili (in base ai vincoli), per ogni origine con una modalità bloccata. Per segnalare i metodi di multicampionamento disponibili, seguire questa procedura:

La struttura D3DDDI_MULTISAMPLINGMETHOD ha due membri, che è necessario impostare, che caratterizzano un metodo di multicampionamento. Il membro NumSamples indica il numero di subpixel 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 di livello migliori notevolmente la qualità dell'immagine presentata.

Enumerazione Pivot

Come descritto in precedenza, DxgkDdiEnumVidPnCofuncModality deve creare set di modalità che sono cofunzionali con il 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:

  • Set di modalità di una particolare origine video presente

  • Il set di modalità di un determinato video presenta la destinazione

  • Trasformazione del ridimensionamento di un particolare percorso vidPN presente

  • Trasformazione della rotazione di un particolare percorso vidPN presente

Se il pivot di enumerazione è un set di modalità, DxgkDdkEnumVidPnCofuncModality deve lasciare invariata tale modalità. 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.