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.
Die UMD stellt Zeiger auf DXGI-MPO-Funktionen über Member der DXGI1_3_DDI_BASE_FUNCTIONS Struktur bereit, wenn die adapterspezifische CreateDevice(D3D10) -Funktion aufgerufen wird. Weitere Informationen finden Sie unter Unterstützen von DXGI DDI.
Die UMD stellt Zeiger auf Direct3D-MPO-Funktionen über Member der D3DDDI_DEVICEFUNCS Struktur in einem Aufruf der CreateDevice-Funktion des Treibers bereit.
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.