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


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

В этой статье описывается функция многопланового наложения (MPO), представленная в Windows 8.1 (WDDM 1.3). В нем перечислены системные и реализованные драйвером функции, используемые для поддержки этой функции в драйвере отображения в пользовательском режиме (UMD) и драйвере мини-порта в режиме ядра (KMD) в WDDM 1.3 и более поздних версиях. В нем также перечислены структуры и перечисления, используемые с MPOS.

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

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

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

Функция Описание
D3D: pfnPresentMultiPlaneOverlayCb Копирует содержимое из исходной области памяти MPO в целевую область памяти.
DXGI: pfnPresentMultiPlaneOverlayCb Копирует содержимое из исходного распределения MPO в целевое распределение.

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

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

  • Direct3D: UMD предоставляет указатели на функции D3D MPO через члены структуры D3DDDI_DEVICEFUNCS при вызове функции CreateDevice UMD.

  • DXGI: UMD предоставляет указатели на функции DXGI MPO через члены структуры DXGI1_3_DDI_BASE_FUNCTIONS, когда вызывается её функция для конкретного адаптера CreateDevice(D3D10). Дополнительные сведения см. в разделе "Поддержка DDI DXGI".

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

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

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

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

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

В этом разделе перечислены структуры и перечисления пользовательского режима, используемые с DDIS MPO.

Struct/Enum Описание
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 (качество растяжения многослойного наложения D3DDDI) Определяет процессы фильтрации, которые оборудование должно выполнять при растягивание или сжатие данных 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) для проверки сведений о поддержке оборудования для MPO.
D3DDDIARG_PRESENTMULTIPLANEOVERLAY Указывает ресурс MPO для отображения.
D3DDDICB_PRESENTMULTIPLANEOVERLAY Описывает выделение MPO, в которое копируется содержимое и из которого оно извлекается.

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

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

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

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

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

Структура Описание
DXGK_CHECK_MULTIPLANE_OVERLAY_SUPPORT_PLANE Указывает атрибуты поддержки, которые предоставляет оборудование для MPOS.
DXGK_CHECK_MULTIPLANE_OVERLAY_SUPPORT_RETURN_INFO Указывает ограничения на поддержку оборудования MPO.
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.

Перечисление Описание
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.