Freigeben über


Unterstützung der mehrschichtigen Überlagerung

Die Multiplane-Überlagerung (Multiplane Overlay, MPO) ist ein WDDM-Feature, mit dem die Grafikhardware mehrere Inhaltsebenen in ein einzelnes Bild verfassen kann, das dann auf einem Bildschirm angezeigt werden kann. Es handelt sich im Wesentlichen um eine hardwarebeschleunigte Methode zum Kompositing verschiedener "Ebenen" von Inhalten – bei denen es sich um ein Video, einen Desktop, ein Anwendungsfenster usw. handeln kann, ohne die CPU einbeziehen oder andere Systemressourcen verwenden zu müssen, um die Mischung in der Software zu erledigen.

Das MPO-Feature ist ab Windows 8.1 (WDDM 1.3) verfügbar. In diesem Artikel wird beschrieben, wie Sie diese Funktion in Ihrem Treiber implementieren.

MPO-Funktionen, die von Anzeigetreibern im Benutzermodus aufgerufen werden

In der folgenden Tabelle sind MPO-Funktionen für den Benutzermodus aufgeführt, die vom Betriebssystem implementiert werden, und dass Benutzermodusanzeigetreiber (UMDs) aufgerufen werden können.

Funktion Beschreibung
pfnPresentMultiPlaneOverlayCb (D3D) Kopiert Inhalte aus einer Quell-MPO-Zuordnung in eine Zielzuordnung.
pfnPresentMultiPlaneOverlayCb (DXGI) Kopiert Inhalte aus einer Quell-MPO-Zuordnung in eine Zielzuordnung.

Von der UMD implementierte MPO-Funktionen

Dieser Abschnitt enthält Funktionen, die ein WDDM 1.3 und höher UMD implementieren muss, um MPOs zu unterstützen.

In der folgenden Tabelle sind die Funktionen aufgeführt, die eine UMD implementieren muss, um MPOs zu unterstützen.

Funktion Beschreibung
pfnCheckMultiPlaneOverlaySupport (D3D) Wird von der Direct3D-Laufzeit aufgerufen, um die Details zur Hardwareunterstützung für MPOs zu überprüfen.
pfnCheckMultiPlaneOverlaySupport (DXGI) Wird von der DirectX Graphics Infrastructure (DXGI)-Laufzeit aufgerufen, um die Details zur Hardwareunterstützung für MPOs zu überprüfen.
pfnPresentMultiplaneOverlay (D3D) Wird von der Direct3D-Laufzeit aufgerufen, um die UMD zu benachrichtigen, dass das Rendern einer Anwendung abgeschlossen ist, und fordern Sie an, dass die UMD die Quelloberfläche anzeigt. Der Treiber sollte diese Oberfläche anzeigen, indem ein Farbfüllvorgang kopiert, gekippt oder ausgeführt wird.
pfnPresentMultiplaneOverlay (DXGI) Wird von der DXGI-Laufzeit aufgerufen, um die UMD zu benachrichtigen, dass das Rendern einer Anwendung abgeschlossen ist, und fordert an, dass die UMD die Quelloberfläche anzeigt. Der Treiber sollte die Oberfläche durch Kopieren, Kippen oder Ausführen eines Farbfüllvorgangs anzeigen.

In der folgenden Tabelle sind die Funktionen aufgeführt, die eine UMD optional implementieren kann.

Funktion Beschreibung
pfnGetMultiPlaneOverlayCaps Wird von der DXGI-Laufzeit aufgerufen, um anzufordern, dass die UMD grundlegende Überlagerungsebenenfunktionen erhält.
pfnGetMultiplaneOverlayGroupCaps Wird von der DXGI-Laufzeit aufgerufen, um anzufordern, dass die UMD eine Gruppe von Überlagerungsebenenfunktionen erhält.

MPO-Benutzermodusstrukturen und Enumerationen

Alle Benutzermodusstrukturen und Enumerationen, die mit MPO-Gerätetreiberschnittstellen (DDIs) verwendet werden.

DDI Beschreibung
D3DDDI_MULTIPLANE_ALLOCATION_INFO Gibt Informationen zu einer MPO-Zuordnung an.
D3DDDI_MULTIPLANE_OVERLAY_ATTRIBUTES Wird von der UMD zum Angeben von Überlagerungsebenenattributen verwendet.
D3DDDI_MULTIPLANE_OVERLAY_BLEND Gibt einen Mischvorgang an, der auf einer Überlagerungsebene ausgeführt werden soll.
D3DDDI_MULTIPLANE_OVERLAY_CAPS Wird von der UMD verwendet, um Überlagerungsebenenfunktionen anzugeben.
D3DDDI_MULTIPLANE_OVERLAY_FEATURE_CAPS Identifiziert Überlagerungsfunktionen.
D3DDDI_MULTIPLANE_OVERLAY_FLAGS Identifiziert einen Flip-Vorgang, der auf einer Überlagerungsebene ausgeführt werden soll.
D3DDDI_MULTIPLANE_OVERLAY_GROUP_CAPS Wird von der UMD verwendet, um eine Gruppe von Überlagerungsebenenfunktionen anzugeben.
D3DDDI_MULTIPLANE_OVERLAY_GROUP_CAPS_INPUT Gibt Informationen zu einer MPO-Funktionsgruppe an.
D3DDDI_MULTIPLANE_OVERLAY_STRETCH_QUALITY Identifiziert Filterprozesse, die die Hardware ausführen soll, wenn sie MPO-Daten gestreckt oder verkleinern soll.
D3DDDI_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT Identifiziert das Videoframeformat der Überlagerungsebene. Nur der D3DDDI_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_PROGRESSIVE Wert wird unterstützt.
D3DDDI_MULTIPLANE_OVERLAY_YCbCr_FLAGS Identifiziert YUV-Bereichs- und Konvertierungsinformationen, die ein MPO beschreiben.
D3DDDI_PRESENT_MULTIPLANE_OVERLAY Gibt eine anzuzeigende Überlagerungsebene an.
D3DDDIARG_CHECKMULTIPLANEOVERLAYSUPPORT Wird in einem Aufruf der PfnCheckMultiPlaneOverlaySupport (D3D)-Funktion verwendet, um Details zur Hardwareunterstützung für MPOs zu überprüfen.
D3DDDIARG_PRESENTMULTIPLANEOVERLAY Gibt eine anzuzeigende MPO-Ressource an.
D3DDDICB_PRESENTMULTIPLANEOVERLAY Beschreibt MPO-Zuordnungen, in die Inhalte kopiert werden.

Vom Kernelmodus implementierte MPO-Kernelmodusfunktionen

In der folgenden Tabelle sind die MPO-Funktionen aufgeführt, die der Kernelmodus-Miniporttreiber (KMD) implementiert.

Funktion Beschreibung
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT Vom DirectX-Grafik-Kernelsubsystem aufgerufen, um die Details der Hardwareunterstützung für MPOs zu überprüfen.
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3 Die folgende Funktion wird aufgerufen, um zu bestimmen, ob eine bestimmte Mehrebenenüberlagerungskonfiguration unterstützt wird.
DXGKDDI_GETMULTIPLANEOVERLAYCAPS Wird aufgerufen, um MPO-Funktionen abzurufen. Unterstützung für diesen DDI ist für alle WDDM 2.2-Treiber erforderlich, die mehrere Ebenen unterstützen möchten.
DXGKDDI_POSTMULTIPLANEOVERLAYPRESENT Wird aufgerufen, nachdem eine neue Mehrebenenüberlagerungskonfiguration wirksam wurde, sodass der Treiber den Hardwarezustand optimieren kann. Optional für WDDM 1.3 2.0 oder höhere Treiber, die Mehrebenenüberlagerungen unterstützen.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY3 Wird aufgerufen, um die angezeigte Überlagerungskonfiguration zu ändern.
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT2 DxgkDdiCheckMultiPlaneOverlaySupport2 wird aufgerufen, um zu bestimmen, ob eine bestimmte Mehrebenenüberlagerungskonfiguration unterstützt wird.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY Legt die Adressen mehrerer Oberflächen fest, einschließlich der Swapchain von Desktop Window Manager (DWM), die einer bestimmten Videodarstellungsquelle zugeordnet sind. Diese Funktion wird verwendet, um mehrere Oberflächen (einschließlich der Swapchain des DWM) auf dem Bildschirm darzustellen.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 wird aufgerufen, um die angezeigte Overlaykonfiguration zu ändern.

MPO-Kernelmodusstrukturen

In der folgenden Tabelle sind die Strukturen aufgeführt, die KMD verwendet.

Struktur Beschreibung
DXGK_CHECK_MULTIPLANE_OVERLAY_SUPPORT_PLANE Gibt die Unterstützungsattribute an, die von der Hardware für MPOs bereitgestellt werden.
DXGK_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO Gibt Einschränkungen für die Hardwareunterstützung von MPOs an.
DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES Wird von der KMD zum Angeben von Überlagerungsebenenattributen verwendet.
DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES2 DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES2 wird von der KMD verwendet, um Überlagerungsebenenattribute anzugeben.
DXGK_MULTIPLANE_OVERLAY_BLEND Gibt einen Mischvorgang an, der auf einer Überlagerungsebene ausgeführt werden soll.
DXGK_MULTIPLANE_OVERLAY_FLAGS Identifiziert einen Flip-Vorgang, der auf einer Überlagerungsebene ausgeführt werden soll.
DXGK_MULTIPLANE_OVERLAY_PLANE Gibt eine Überlagerungsebene an, die in einem Aufruf der DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay-Funktion angezeigt werden soll.
DXGK_MULTIPLANE_OVERLAY_PLANE2 DXGK_MULTIPLANE_OVERLAY_PLANE2 wird mit der DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2-Funktion verwendet, um eine anzuzeigende Überlagerungsebene anzugeben.
DXGK_MULTIPLANE_OVERLAY_PLANE_WITH_SOURCE DXGK_MULTIPLANE_OVERLAY_PLANE_WITH_SOURCE beschreibt die Attribute der mehrebenen Überlagerungsebene, die Zuordnung und das Video, die die Identifikationsnummer der Netzwerkquelle darstellen.
DXGK_MULTIPLANE_OVERLAY_VSYNC_INFO Gibt eine Überlagerungsebene an, die während eines VSync-Intervalls angezeigt werden soll.
DXGK_MULTIPLANE_OVERLAY_YCbCr_FLAGS Identifiziert YUV-Bereichs- und Konvertierungsinformationen, die ein MPO beschreiben.
DXGK_PRESENTMULTIPLANEOVERLAYINFO Gibt Informationen zu einer VidPN-Eingabe und einer Anzuzeigenden Überlagerungsebene an.
DXGK_PRESENTMULTIPLANEOVERLAYLIST Gibt eine Überlagerungsebene an, die in einem Aufruf der DxgkDdiPresent-Funktion angezeigt werden soll.
DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT Wird in einem Aufruf der DxgkDdiCheckMultiPlaneOverlaySupport-Funktion verwendet, um Details zur Hardwareunterstützung für MPOs zu überprüfen.
DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT2 DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT2 wird an die DxgkDdiCheckMultiPlaneOverlaySupport2-Funktion übergeben, um zu bestimmen, ob eine bestimmte Mehrebenenüberlagerungskonfiguration unterstützt wird.
DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY Enthält Argumente für die Funktion DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay.
DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 wird an die DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2-Funktion übergeben, um die angezeigte Overlaykonfiguration zu ändern.

MPO-Kernelmodus-Enumerationen

In der folgenden Tabelle sind die von KMD verwendeten Enumerationen aufgeführt.

Enumeration Beschreibung
DXGK_MULTIPLANE_OVERLAY_STEREO_FLIP_MODE Identifiziert den Stereo-Flip-Modus der Überlagerungsebene. Nur der DXGK_MULTIPLANE_OVERLAY_STEREO_FLIP_NONE Wert wird unterstützt.
DXGK_MULTIPLANE_OVERLAY_STEREO_FORMAT Identifiziert das Stereopräsentationsformat der Überlagerungsebene. Nur der DXGK_MULTIPLANE_OVERLAY_STEREO_FORMAT_MONO Wert wird unterstützt.
DXGK_MULTIPLANE_OVERLAY_STRETCH_QUALITY Identifiziert Filterprozesse, die die Hardware ausführen soll, wenn sie MPO-Daten gestreckt oder verkleinern soll.
DXGK_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT Identifiziert das Videoframeformat der Überlagerungsebene. Nur der DXGK_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_PROGRESSIVE Wert wird unterstützt.

Der D3DDDICAPS_GET_MULTIPLANE_OVERLAY_GROUP_CAPS Wert in D3DDDICAPS_TYPE gibt die UMD-Unterstützung für MPOs an.