VidPN-Objekte und -Schnittstellen
Der VidPN-Manager (Video Present Network) verwendet ein VidPN-Objekt, um Informationen zu Zuordnungen zwischen vorhandenen Videoquellen, Videoobjekten und Anzeigemodi zu verwalten. Weitere Informationen finden Sie im Thema Einführung in Video Present Networks .
VidPN-Objekt
Ein VidPN-Objekt enthält die folgenden Unterobjekte.
Topologie
Quellmodussatz
Festlegen des Zielmodus
Überwachen des Quellmodus
Festlegen des Überwachungshäufigkeitsbereichs
Monitordeskriptorsatz
Pfad
`Source`
Ziel
Quellmodus
Zielmodus
Überwachen des Quellmodus
Das folgende Diagramm veranschaulicht ein VidPN-Objekt und seine Unterobjekte.
Das obige Diagramm veranschaulicht, ob eine bestimmte Zuordnung 1:1, 1:n, n:1 oder n:n ist. Das Diagramm zeigt beispielsweise, dass eine Quelle zu mehr als einem Pfad gehören kann, ein Ziel jedoch nur zu einem Pfad gehören kann.
Auf die blauen Objekte im Diagramm wird über Handles und Schnittstellen zugegriffen, und auf die grauen Objekte wird über Strukturzeiger zugegriffen. Eine Schnittstelle in diesem Kontext ist eine Struktur, die Funktionszeiger enthält. Die DXGK_VIDPNTOPOLOGY_INTERFACE-Struktur enthält z. B. Zeiger auf Funktionen (implementiert vom VidPN-Manager), die der Anzeigeminiporttreiber aufruft, um ein Topologieobjekt zu überprüfen und zu ändern. Wenn der Anzeigeminiporttreiber eine dieser Funktionen aufruft, muss er ein Handle für ein Topologieobjekt bereitstellen. In der folgenden Tabelle sind die Handle-, Schnittstellen- und Zeigerdatentypen aufgeführt, die für den Zugriff auf ein VidPN-Objekt und dessen Unterobjekte verwendet werden.
Object | Access-Methode und -Datentyp |
---|---|
VidPN (VidPN-Schnittstelle) | Zugriff über Handle und Schnittstelle. D3DKMDT_HVIDPN, DXGK_VIDPN_INTERFACE |
Topologie (VidPN-Topologieschnittstelle) | Zugriff über Handle und Schnittstelle. D3DKMDT_HVIDPNTOPOLOGY, DXGK_VIDPNTOPOLOGY_INTERFACE |
Source mode set (VidPN Source Mode Set Interface) | Zugriff über Handle und Schnittstelle. D3DKMDT_HVIDPNSOURCEMODESET, DXGK_VIDPNSOURCEMODESET_INTERFACE |
Target mode set (VidPN Target Mode Set Interface) | Zugriff über Handle und Schnittstelle. D3DKMDT_HVIDPNTARGETMODESET, DXGK_VIDPNTARGETMODESET_INTERFACE |
Überwachen des Quellmodus | Zugriff über Handle und Schnittstelle. D3DKMDT_HMONITORSOURCEMODESET, DXGK_MONITORSOURCEMODESET_INTERFACE |
Pfad | Zugriff über den Strukturzeiger. D3DKMDT_VIDPN_PRESENT_PATH |
`Source` | Zugriff über den Strukturzeiger. D3DKMDT_VIDEO_PRESENT_SOURCE |
Ziel | Zugriff über den Strukturzeiger. D3DKMDT_VIDEO_PRESENT_TARGET |
Quellmodus | Zugriff über den Strukturzeiger. D3DKMDT_VIDPN_SOURCE_MODE |
Zielmodus | Zugriff über den Strukturzeiger. D3DKMDT_VIDPN_TARGET_MODE |
Überwachen des Quellmodus | Zugriff über den Strukturzeiger. D3DKMDT_MONITOR_SOURCE_MODE |
Festlegen des Überwachungshäufigkeitsbereichs | Zugriff über den Strukturzeiger. [DXGK_MONITORFREQUENCYRANGESET_INTERFACE |
Monitordeskriptorsatz | Zugriff über den Strukturzeiger. [DXGK_MONITORDESCRIPTORSET_INTERFACE |
VidPN-Manager
Der VidPN-Manager, der eine der Komponenten des DirectX-Grafikkernsubsystems ist, arbeitet mit dem Display-Miniporttreiber zusammen, um VidPNs zu erstellen und zu verwalten. In den folgenden Schritten wird beschrieben, wie der Anzeigeminiporttreiber ein Handle und eine Schnittstelle zu einem VidPN-Objekt abruft.
Während der Initialisierung ruft das DirectX-Grafikkernsubsystem die DxgkDdiStartDevice-Funktion des Anzeigeminiporttreibers auf. Dieser Aufruf stellt dem Display-Miniporttreiber eine DXGKRNL_INTERFACE-Struktur bereit, die Zeiger auf Funktionen enthält, die vom DirectX-Grafikkernsystem implementiert werden. Eine dieser Funktionen ist DxgkCbQueryVidPnInterface.
Irgendwann benötigt der VidPN-Manager Hilfe vom Display-Miniporttreiber, sodass er dem Anzeige-Miniporttreiber durch Aufrufen einer der folgenden Funktionen ein Handle für ein VidPN-Objekt bereitstellt:
Der Anzeige-Miniporttreiber übergibt das in Schritt 2 abgerufene Handle an DxgkCbQueryVidPnInterface, das einen Zeiger auf eine DXGK_VIDPN_INTERFACE-Struktur zurückgibt.
Nachdem der Anzeigeminiporttreiber über ein Handle und eine Schnittstelle zu einem VidPN-Objekt verfügt, kann er Handles und Schnittstellen (nach Bedarf) zu den primären Unterobjekten abrufen: Topologie, Quellmodussatz, Zielmodussatz und Quellmodussatz. Beispielsweise kann der Anzeige-Miniporttreiber pfnGetTopology (eine der Funktionen in der VidPN-Schnittstelle) aufrufen, um ein Handle für ein VidPN-Topologieobjekt und einen Zeiger auf eine DXGK_VIDPNTOPOLOGY_INTERFACE-Struktur abzurufen.
Die folgenden Funktionen (in der VidPN-Schnittstelle) stellen Handles und Schnittstellen zu den primären Unterobjekten eines VidPN-Objekts bereit.
Beachten Sie, dass zwei der Funktionen in der vorherigen Liste über entsprechende Funktionen verfügen, die VidPN-Unterobjekte freigeben.
Nachdem der Anzeigeminiporttreiber ein Handle und eine Schnittstelle zu einem der primären Unterobjekte von VidPNs abgerufen hat, kann er die Schnittstellenfunktionen aufrufen, um Deskriptoren von Objekten abzurufen, die mit dem Unterobjekt verknüpft sind. Bei einem Handle und einer Schnittstelle zu einem Topologieobjekt könnte der Anzeigeminiporttreiber beispielsweise die folgenden Schritte ausführen, um Deskriptoren aller Pfade in der Topologie abzurufen.
-
Rufen Sie die pfnAcquireFirstPathInfo-Funktion der VidPN-Topologieschnittstelle auf, um einen Zeiger auf eine D3DKMDT_VIDPN_PRESENT_PATH-Struktur zu erhalten, die den ersten Pfad in der Topologie beschreibt.
-
Rufen Sie die pfnAcquireNextPathInfo-Funktion wiederholt auf, um Zeiger auf D3DKMDT_VIDPN_PRESENT_PATH Strukturen abzurufen, die die verbleibenden Pfade in der Topologie beschreiben.
Ebenso kann der Anzeige-Miniporttreiber Deskriptoren der Modi in einem festgelegten Modus abrufen, indem die Funktionen pfnAcquireFirstModeInfo und pfnAcquireNextModeInfo einer der folgenden Modussatzschnittstellen aufgerufen werden.
Beachten Sie, dass die DXGK_VIDPNSOURCEMODESET_INTERFACE-Schnittstelle über keine Funktion zum Entfernen eines Modus aus einem Quellmodussatz verfügt. Wenn der Anzeige-Miniporttreiber einen Quellmodussatz aktualisieren muss, ändert er keinen vorhandenen Modus durch Hinzufügen und Entfernen von Modi. Stattdessen wird ein neuer Modussatz erstellt, der den alten Modussatz ersetzt. Ein Beispiel für eine Funktion, die Modussätze aktualisieren muss, ist die DxgkDdiEnumVidPnCofuncModality-Funktion des Anzeige-Miniporttreibers. Beim Aktualisieren eines Quellmodussatzes werden die folgenden Schritte ausgeführt:
Rufen Sie pfnCreateNewModeInfo der DXGK_VIDPNSOURCEMODESET_INTERFACE-Schnittstelle auf, um einen Zeiger auf eine D3DKMDT_VIDPN_SOURCE_MODE-Struktur (zugeordnet vom VidPN-Manager) abzurufen.
Rufen Sie pfnAddMode wiederholt auf, um dem Quellmodussatz Modi hinzuzufügen.
Rufen Sie die pfnAssignSourceModeSet-Funktion des DXGK_VIDPN_INTERFACE auf, um den neuen Modus zuzuweisen, der einer bestimmten Videoquelle festgelegt ist. Der neue Quellmodussatz ersetzt den Quellmodussatz, der dieser Quelle derzeit zugewiesen ist.
Das Aktualisieren eines Zielmodussatzes ähnelt dem Aktualisieren eines Quellmodussatzes. Die DXGK_VIDPNTARGETMODESET_INTERFACE-Schnittstelle verfügt über die folgenden Funktionen:
VidPN-Schnittstelle zum Festlegen des Zielmodus
Eine pfnCreateNewModeInfo-Funktion zum Erstellen einer neuen Zielmodusgruppe und eine pfnAddMode-Funktion zum Hinzufügen von Modi zum Satz.
Es gibt keine Schnittstelle (Reihe von Funktionen) zum Abrufen der Quelle und des Ziels, die zu einem bestimmten Pfad gehören. Der Anzeige-Miniporttreiber kann bestimmen, welche Quelle und welches Ziel zu einem bestimmten Pfad gehören, indem er die Member VidPnSourceId und VidPnTargetId der D3DKMDT_VIDPN_PRESENT_PATH Struktur untersucht, die den Pfad darstellt.
Weitere Informationen
Bestimmen, ob ein VidPN auf einem Grafikkarte unterstützt wird
Auflisten von kofunktionellen VidPN-Quell- und Zielmodi