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


Наложение DDI

Этот раздел относится только к Windows 7 и более поздним версиям, а также Windows Server 2008 R2 и более поздним версиям операционной системы Windows.

DDI overlay — это расширение для Direct3D версии 9 DDI для проверки поддержки наложения. DDI overlay состоит из следующих точек входа:

  • Значение D3DDDICAPS_CHECKOVERLAYSUPPORT из перечисления D3DDDICAPS_TYPE используется средой выполнения Direct3D, чтобы проверить, поддерживает ли устройство отображения определенное наложение. Среда выполнения задает D3DDDICAPS_CHECKOVERLAYSUPPORT в элементе Typeструктуры D3DDDIARG_GETCAPS , на которую указывает параметр pData функции GetCaps драйвера, когда среда выполнения вызывает GetCaps. Среда выполнения также задает член pInfo D3DDDIARG_GETCAPS на указатель на структуру DDICHECKOVERLAYSUPPORTINPUT , описывающую наложение. Если драйвер поддерживает наложение, драйвер задает элементы структуры D3DOVERLAYCAPS и возвращает указатель на эту структуру в элементе pDataD3DDDIARG_GETCAPS. В противном случае, если драйвер не поддерживает наложение, драйвер не сможет вызвать функцию GetCaps с D3DDDIERR_UNSUPPORTEDOVERLAYFORMAT или D3DDDIERR_UNSUPPORTEDOVERLAY в зависимости от того, была ли отсутствие поддержки на основе формата наложения. D3DOVERLAYCAPS описано в документации по пакету SDK для DirectX.

    Драйвер задает элементы MaxOverlayDisplayWidth и MaxOverlayDisplayHeight D3DOVERLAYCAPS, чтобы указать любые ограничения, которые могут быть у драйвера и оборудования, которые связаны с окончательным размером наложения (после растяжения данных наложения).

    Драйвер задает биты возможностей D3DOVERLAYCAPS_STRETCHX (0x00000040) и D3DOVERLAYCAPS_STRETCHY (0x00000080) в элементе Caps D3DOVERLAYCAPS, чтобы указать, что оборудование наложения может произвольно растягивать и сжимать данные наложения. Драйверы не должны пытаться эмулировать растяжение наложения через GPU и устанавливать эти ограничения только в том случае, если оборудование наложения поддерживает растягивание. Как правило, приложению требуется меньше накладных расходов, чтобы выполнить растягивание GPU в рамках этапа обработки и композиции видео, чем для драйвера для выполнения отдельного прохода в самом конце для эмуляции растяжения наложения.

  • Драйвер должен обрабатывать следующие новые флаги битовых полей из структуры D3DDDI_OVERLAYINFOFLAGS . Структура D3DDDI_OVERLAYINFOFLAGS определяет тип выполняемой операции наложения. Структура D3DDDI_OVERLAYINFOFLAGS указывается в элементе Flags структуры D3DDDI_OVERLAYINFO при вызове функции CreateOverlay или UpdateOverlay драйвера.

    LimitedRGB
    Наложение имеет ограниченный диапазон RGB, а не rgb полного диапазона. В ограниченном диапазоне RGB диапазон RGB сжимается таким образом, что 16:16:16 — черный, а 235:235:235 — белый.

    YCbCrBT709
    Наложение — BT.709, которое указывает на телевизор высокой четкости (HDTV), а не BT.601.

    YCbCrxvYCC
    Наложение является расширенным YCbCr (xvYCC), а не обычным YCbCr.

  • Если формат отображения составляет 64 бита, а не 32 бита (например, если диспетчер Windows для настольных компьютеров (DWM) использует D3DFMT_A16B16G16R16F для режима отображения), среда выполнения помещает нижние 32 бита наложения цвета в элемент DstColorKeyLow структуры D3DDDI_OVERLAYINFO и верхние 32 бита в элемент DstColorKeyHigh D3DDDI_OVERLAYINFO.