Поделиться через


Поддержка многопланового наложения

Поддержка многопланового наложения (MPO) — это функция WDDM, которая позволяет графическому оборудованию создавать несколько слоев содержимого на одном изображении, которое затем может отображаться на экране. Это, по сути, аппаратный ускоренный метод создания различных "плоскостей" содержимого - где плоскость может быть видео, рабочий стол, окно приложения и т. д. - без необходимости включать ЦП или использовать другие системные ресурсы для смешивания программного обеспечения.

Функция MPO доступна начиная с Windows 8.1 (WDDM 1.3). В этой статье описывается, как реализовать эту возможность в драйвере.

Функции MPO, вызываемые драйверами отображения в пользовательском режиме

В следующей таблице перечислены функции MPO в пользовательском режиме, реализующие операционную систему и которые могут вызывать драйверы отображения в пользовательском режиме (UMD).

Function Description
pfnPresentMultiPlaneOverlayCb (D3D) Копирует содержимое из исходного выделения MPO в целевое выделение.
pfnPresentMultiPlaneOverlayCb (DXGI) Копирует содержимое из исходного выделения MPO в целевое выделение.

Функции MPO, реализованные UMD

В этом разделе содержатся функции, которые WDDM 1.3 и более поздних версий UMD должны реализовать для поддержки MPOS.

В следующей таблице перечислены функции, которые должен реализовать UMD для поддержки MPOS.

Function Description
pfnCheckMultiPlaneOverlaySupport (D3D) Вызывается средой выполнения Direct3D, чтобы проверить сведения о поддержке оборудования для MPOS.
pfnCheckMultiPlaneOverlaySupport (DXGI) Вызывается средой выполнения инфраструктуры графики DirectX (DXGI), чтобы проверить сведения о поддержке оборудования для MPOS.
pfnPresentMultiplaneOverlay (D3D) Вызывается средой выполнения Direct3D, чтобы уведомить UMD о том, что приложение завершило отрисовку и запросить отображение исходной поверхности UMD. Драйвер должен отобразить эту поверхность, скопировав, перевернуть или выполнить операцию заливки цвета.
pfnPresentMultiplaneOverlay (DXGI) Вызывается средой выполнения DXGI, чтобы уведомить UMD о том, что приложение завершило отрисовку и запрашивает отображение исходной поверхности UMD. Драйвер должен отобразить поверхность, скопировав, перевернуть или выполнить операцию заливки цвета.

В следующей таблице перечислены функции, которые может реализовать UMD.

Function Description
pfnGetMultiPlaneOverlayCaps Вызывается средой выполнения DXGI, чтобы запросить, чтобы UMD получил базовые возможности плоскости наложения.
pfnGetMultiplaneOverlayGroupCaps Вызывается средой выполнения DXGI, чтобы запросить, чтобы UMD получил группу возможностей плоскости наложения.

Структуры и перечисления пользовательского режима MPO

Все структуры и перечисления в пользовательском режиме, используемые с интерфейсами драйверов устройств MPO (DDIs).

DDI Description
D3DDDI_MULTIPLANE_ALLOCATION_INFO Указывает сведения о выделении MPO.
D3DDDI_MULTIPLANE_OVERLAY_ATTRIBUTES Используется UMD для указания атрибутов плоскости наложения.
D3DDDI_MULTIPLANE_OVERLAY_BLEND Определяет операцию смешивания, выполняемую на плоскости наложения.
D3DDDI_MULTIPLANE_OVERLAY_CAPS Используется UMD для указания возможностей плоскости наложения.
D3DDDI_MULTIPLANE_OVERLAY_FEATURE_CAPS Определяет возможности наложения.
D3DDDI_MULTIPLANE_OVERLAY_FLAGS Определяет операцию переверки, выполняемую на плоскости наложения.
D3DDDI_MULTIPLANE_OVERLAY_GROUP_CAPS Используется UMD для указания группы возможностей плоскости наложения.
D3DDDI_MULTIPLANE_OVERLAY_GROUP_CAPS_INPUT Указывает сведения о группе возможностей MPO.
D3DDDI_MULTIPLANE_OVERLAY_STRETCH_QUALITY Определяет процессы фильтрации, которые оборудование должно выполнять при растягивание или сжатие данных MPO.
D3DDDI_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT Определяет формат видеокадров плоскости наложения. Поддерживается только значение D3DDDI_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_PROGRESSIVE.
D3DDDI_MULTIPLANE_OVERLAY_YCbCr_FLAGS Определяет диапазон и сведения о преобразовании YUV, описывающие MPO.
D3DDDI_PRESENT_MULTIPLANE_OVERLAY Указывает плоскость наложения для отображения.
D3DDDIARG_CHECKMULTIPLANEOVERLAYSUPPORT Используется в вызове функции pfnCheckMultiPlaneOverlaySupport (D3D) для проверки сведений о поддержке оборудования для MPOS.
D3DDDIARG_PRESENTMULTIPLANEOVERLAY Указывает ресурс MPO для отображения.
D3DDDICB_PRESENTMULTIPLANEOVERLAY Описывает выделение MPO, в которое копируется и из нее копируется содержимое.

Функции драйвера в режиме ядра MPO

В следующей таблице перечислены функции MPO, которые реализует драйвер мини-порта (KMD) в режиме ядра.

Function Description
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT Вызывается подсистемой ядра графики DirectX для проверки сведений о поддержке оборудования для MPOS.
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3 Следующая функция вызывается, чтобы определить, поддерживается ли определенная конфигурация многоуровневого наложения.
DXGKDDI_GETMULTIPLANEOVERLAYCAPS Вызывается для получения возможностей MPO. Поддержка этого DDI необходима для любого драйвера WDDM 2.2, который хочет поддерживать несколько самолетов.
DXGKDDI_POSTMULTIPLANEOVERLAYPRESENT Вызывается после того, как была вложена новая конфигурация многоуровневого наложения, что позволяет драйверу оптимизировать состояние оборудования. Необязательно для драйверов WDDM 1.3 2.0 или более поздних версий, поддерживающих многоуровневые наложения.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY3 Вызывается для изменения отображаемой конфигурации наложения.
DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT2 DxgkDdiCheckMultiPlaneOverlaySupport2 вызывается, чтобы определить, поддерживается ли определенная конфигурация многоуровневого наложения.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY Задает адреса нескольких поверхностей, включая буферную цепочку диспетчера окон рабочего стола (DWM), связанную с определенным источником видео. Эта функция используется для представления нескольких поверхностей (включая цепочку буферов DWM) на экране.
DXGKDDI_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2 вызывается для изменения отображаемой конфигурации наложения.

Структуры режима ядра MPO

В следующей таблице перечислены структуры, которые использует KMD.

Структура Description
DXGK_CHECK_MULTIPLANE_OVERLAY_SUPPORT_PLANE Указывает атрибуты поддержки, которые предоставляет оборудование для MPOS.
DXGK_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO Указывает ограничения на поддержку оборудования ДЛЯ MPOS.
DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES Используется KMD для указания атрибутов плоскости наложения.
DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES2 DXGK_MULTIPLANE_OVERLAY_ATTRIBUTES2 используется KMD для указания атрибутов плоскости наложения.
DXGK_MULTIPLANE_OVERLAY_BLEND Определяет операцию смешивания, выполняемую на плоскости наложения.
DXGK_MULTIPLANE_OVERLAY_FLAGS Определяет операцию переверки, выполняемую на плоскости наложения.
DXGK_MULTIPLANE_OVERLAY_PLANE Указывает плоскость наложения для отображения в вызове функции DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay.
DXGK_MULTIPLANE_OVERLAY_PLANE2 DXGK_MULTIPLANE_OVERLAY_PLANE2 используется с функцией DxgkDdiSetPnSourceAddressWithMultiPlaneOverlay2, чтобы указать плоскость наложения для отображения.
DXGK_MULTIPLANE_OVERLAY_PLANE_WITH_SOURCE DXGK_MULTIPLANE_OVERLAY_PLANE_WITH_SOURCE описывает атрибуты плоскости многоуровневого наложения, выделение и видео, которые представляют идентификационный номер источника сети.
DXGK_MULTIPLANE_OVERLAY_VSYNC_INFO Указывает плоскость наложения, отображаемую во время интервала VSync.
DXGK_MULTIPLANE_OVERLAY_YCbCr_FLAGS Определяет диапазон и сведения о преобразовании YUV, описывающие MPO.
DXGK_PRESENTMULTIPLANEOVERLAYINFO Указывает сведения о входных данных VidPN и плоскости наложения для отображения.
DXGK_PRESENTMULTIPLANEOVERLAYLIST Указывает плоскость наложения для отображения в вызове функции DxgkDdiPresent.
DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT Используется в вызове функции DxgkDdiCheckMultiPlaneOverlaySupport для проверки сведений о поддержке оборудования для MPOS.
DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT2 DXGKARG_CHECKMULTIPLANEOVERLAYSUPPORT2 передается функции DxgkDdiCheckMultiPlaneOverlaySupport2, чтобы определить, поддерживается ли определенная конфигурация многоуровневого наложения.
DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY Содержит аргументы для функции DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay.
DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY2 передается функции DxgkDdiSetVidPnSourceAddressWithMultiPlaneOverlay2, чтобы изменить отображаемую конфигурацию наложения.

Перечисления в режиме ядра MPO

В следующей таблице перечислены перечисления, используемые KMD.

Перечисление Description
DXGK_MULTIPLANE_OVERLAY_STEREO_FLIP_MODE Идентифицирует режим стереолиста плоскости наложения. Поддерживается только DXGK_MULTIPLANE_OVERLAY_STEREO_FLIP_NONE значение.
DXGK_MULTIPLANE_OVERLAY_STEREO_FORMAT Определяет формат представления стереоплана плоскости наложения. Поддерживается только DXGK_MULTIPLANE_OVERLAY_STEREO_FORMAT_MONO значение.
DXGK_MULTIPLANE_OVERLAY_STRETCH_QUALITY Определяет процессы фильтрации, которые оборудование должно выполнять при растягивание или сжатие данных MPO.
DXGK_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT Определяет формат видеокадров плоскости наложения. Поддерживается только DXGK_MULTIPLANE_OVERLAY_VIDEO_FRAME_FORMAT_PROGRESSIVE значение.

Значение D3DDDICAPS_GET_MULTIPLANE_OVERLAY_GROUP_CAPS в D3DDDICAPS_TYPE указывает ПОДДЕРЖКУ UMD для MPOS.