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


Обновления для IddCx версии 1.10 и более поздних

На этой странице описаны изменения, внесенные в IddCx версии 1.10. Двоичный файл драйвера непрямого отображения (IDD), созданный для IddCx 1.10, может выполняться в Windows 10 версии 1803 и выше с помощью проверок среды выполнения, чтобы проверить, доступны ли изменения DDI в IddCx 1.10 в этой системе. Дополнительные сведения см. в статье Создание драйвера WDF для нескольких версий Windows.

Изменения IddCx 1.10 делятся на следующие категории:

  • Обновите версию IddCxGetVersion (консольная и удаленная версия). Полный список версий, связанных с IddCx, см. в разделе Версии IddCx.
  • Добавлена поддержка HDR10 (высокий динамический диапазон) и SDR (стандартный динамический диапазон) Wide Color Gamut (WCG) для косвенных дисплеев.

Обновленная версия IddCxGetVersion

Значение, возвращаемое IddCxGetVersion , было обновлено, но отличается в зависимости от ОС:

  • В Windows 11 версии 22H2 обновление за сентябрь возвращает 0x1A00 (IDDCX_VERSION_SV3).
  • Выпуск платформы Windows 2024 года вернет 0x1A80.

Такое управление версиями имеет важное значение для удаленных драйверов, в которых поведение ОС немного отличается.

Поддержка широкой цветовой гаммы HDR и SDR

Некоторые вводные сведения о цвете в Windows, включая SDR WCG, см. в разделе DirectX с расширенным цветом на дисплеях HDR и SDR.

Поддержка DDI драйвера и ОС

По возможности существующие DDIs были расширены, чтобы позволить драйверу сообщать о поддержке:

  • HDR10
  • SDR WCG
  • Получение данных, описывающих все кадры HDR, отправляемые в IDD

Новые варианты существующих DDIs были добавлены, если не удалось расширить существующие DDIs. В большинстве случаев эти изменения применимы как к консоли, так и к удаленным драйверам, но также определены некоторые сведения, относящиеся к удаленным драйверам.

Драйверы версии 1.10 и более поздних версий, поддерживающих HDR, должны использовать более новые варианты DDI. Старые драйверы или драйверы, которые не поддерживают HDR, могут продолжать использовать существующие функции. Общие сведения об изменениях приведены в следующих разделах.

В следующей таблице перечислены реализованные драйвером DDIs, добавленные в IddCx 1.10, и приведены имена предыдущих эквивалентов, если они были. ОС может вызывать эти функции, если драйвер сообщает о них, даже для адаптеров, которые не пытаются поддерживать HDR.

Функции драйвера, вызываемые ОС для адаптеров HDR Предыдущая эквивалентная функция
EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO Н/Д
EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA* Н/Д
EVT_IDD_CX_PARSE_MONITOR_DESCRIPTION2** EVT_IDD_CX_PARSE_MONITOR_DESCRIPTION
EVT_IDD_CX_MONITOR_QUERY_TARGET_MODES2 EVT_IDD_CX_MONITOR_QUERY_TARGET_MODES
EVT_IDD_CX_ADAPTER_COMMIT_MODES2 EVT_IDD_CX_ADAPTER_COMMIT_MODES

*: Функция не вызывается для удаленных драйверов.

**: Функция может не вызываться для удаленных драйверов в зависимости от флагов адаптера, установленных драйвером.

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

Новые функции, которые должен вызывать драйвер для адаптеров HDR Предыдущий эквивалент
IddCxSwapChainReleaseAndAcquireBuffer2 IddCxSwapChainReleaseAndAcquireBuffer/IddCxSwapChainReleaseAndAcquireSystemBuffer
IddCxMonitorQueryHardwareCursor3 IddCxMonitorQueryHardwareCursor2 или IddCxMonitorQueryHardwareCursor
IddCxAdapterDisplayConfigUpdate2* IddCxAdapterDisplayConfigUpdate*
IddCxMonitorUpdateModes2 IddCxMonitorUpdateModes

*: для использования только удаленными драйверами.

Поддержка HDR адаптера отчетов

Драйверы версии 1.10 и более поздних версий должны установить флаг IDDCX_ADAPTER_FLAGS_CAN_PROCESS_FP16 , добавленный в IDDCX_ADAPTER_FLAGS , чтобы сообщить о поддержке поверхностей FP16. Поверхности FP16 можно использовать для HDR10 или только SDR WCG. Установка этого флага подразумевает, что драйвер выполняет все необходимые действия для включения HDR10 или SDR WCG, в том числе:

Возможности целевого hdr для создания отчетов

Если драйвер хочет включить HDR для адаптера, он должен предоставить дополнительные сведения о каждом целевом соединителе с помощью функции EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO . Требуются сведения о целевом соединителе, так как только некоторые из доступных целевых объектов могут поддерживать некоторые аспекты HDR.

Метаданные HDR

Когда драйвер предоставляет дескриптор монитора, содержащий метаданные HDR, ОС вызывает EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA , чтобы передать драйверу метаданные HDR по умолчанию. Драйвер должен сохранить эти данные по умолчанию и использовать их при отправке информационных кадров HDR10 (SMPTE ST.2086) на монитор. Когда драйвер вызывает IddCxSwapChainReleaseAndAcquireBuffer2, ОС также предоставляет сведения о метаданных HDR. Если эти метаданные указывают на то, что следует использовать значение по умолчанию, то на него ссылаются сохраненные данные по умолчанию.

Если установлен режим HDR, ОС отправляет состояние метаданных HDR с каждым кадром. Эти метаданные сообщают драйверу, какие метаданные HDR использовать через представленную IDDCX_METADATA2 структуру. Метаданные представляют собой новый блок метаданных или указывают на то, что драйвер должен использовать либо метаданные по умолчанию, предоставленные ОС ранее, либо те же метаданные, что и предыдущий кадр.

Примечание. Метаданные HDR недоступны удаленным драйверам, так как все метаданные HDR10 должны поступать из подсистемы отображения на клиенте.

Создание отчетов в режимах HDR

Когда дисплей подключен к целевому объекту, ОС запрашивает у драйвера поддерживаемые в настоящее время режимы монитора и целевого объекта. Для правильного объявления возможностей HDR требуются дополнительные сведения для каждого из этих режимов, поэтому драйвер HDR должен предоставлять следующие DDIs, представленные в версии 1.10:

Эти расширенные режимы указывают возможные битовые глубины и форматы поверхности, которые можно использовать. Драйвер также может обновить список целевых режимов, вызвав IddCxMonitorUpdateModes2.

ОС определяет варианты режимов для WCG HDR и SDR на основе сведений, возвращенных обратным вызовом EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO драйвера до получения сведений о режимах.

ОПЕРАЦИОННая система проверяет режимы, чтобы попытаться обнаружить повторяющиеся режимы, которые должны быть объединены и переданы как один режим. Например, целевой объект, поддерживающий 1080p с частотой 60 Гц как в 8 битах, так и в 10 битах на канал, должен быть передан в одном режиме. Однако если целевой объект поддерживает эти режимы, но для них требуется различная пропускная способность, то эти режимы по-прежнему можно сообщать отдельно.

Добавленный гамма-тип

Существующая EVT_IDD_CX_MONITOR_SET_GAMMA_RAMP DDI была расширена, чтобы ОПЕРАЦИОННая система предоставляла преобразование матрицы 3x4, необходимое для поддержки HDR-дисплеев, для драйверов, объявляющих поддержку HDR.

Уровень белого SDR

Данные о пикселях курсора мыши всегда являются SDR. Если монитор установлен в режиме HDR, к курсорам мыши необходимо применить уровень белого SDR. IddCx версии 10 предоставляет эту возможность в двух местах:

  • Он был добавлен в метаданные кадра, полученные драйвером при вызове IddCxSwapChainReleaseAndAcquireBuffer2.
  • Она также является частью представленной функции IddCxMonitorQueryHardwareCursor3 , чтобы драйвер может отображать обновления курсора на правильном белом уровне без необходимости получения нового кадра. Уровень белого SDR по умолчанию составляет 80 нит.

Цветовое пространство Surface

Несмотря на то, что драйвер сообщил цветовое пространство как часть сведений о режиме, ОС сообщает фактическое цветовое пространство, используемое определенным кадром в представленной IDDCX_METADATA2 структуре.

HDR с удаленными драйверами

По возможности поведение ОС и драйвера для удаленного драйвера должно совпадать с поведением драйвера консоли. Однако имеются исключения.

  • Метаданные HDR не предоставляются удаленным драйверам. Ожидается, что клиентская система предоставит эти метаданные на основе физически подключенного дисплея. Использовать метаданные, определяемые сервером, бессмысленно.
  • Преобразование цветовой матрицы 3x4 также не отправляется. Опять же, предполагается, что удаленный драйвер будет использовать эквивалентные данные из клиентской системы.
  • Удаленные драйверы могут предоставлять данные колориметрии и уровень белого SDR для использования на сервере.
  • Режимы мониторинга также являются необязательными для удаленных драйверов. Если удаленный драйвер устанавливает флаг адаптера IDDCX_ADAPTER_FLAGS_ALL_TARGET_MODES_MONITOR_COMPATIBLE , ОС не будет запрашивать режимы мониторинга и просто использует целевые режимы. Эта возможность позволяет драйверу указывать необычные режимы без необходимости сообщать о эквивалентном режиме мониторинга; например, на основе размера окна клиента, а не размера монитора.

Поддержка драйвера версии 1.10, работающего на нижнем уровне

Для обеспечения совместимости драйверов версии 1.10, работающих в более ранних выпусках Windows, необходимо выполнить несколько действий. В частности, драйверы должны:

  • Продолжайте экспортировать все существующие функции, такие как EVT_IDD_CX_PARSE_MONITOR_DESCRIPTION, EVT_IDD_CX_MONITOR_QUERY_TARGET_MODES и EVT_IDD_CX_ADAPTER_COMMIT_MODES.
  • Используйте макрос IDD_CX_CLIENT_CONFIG_INIT , чтобы задать размер структуры IDD_CX_CLIENT_CONFIG .
  • Не пытайтесь вызывать функции, реализованные в ОС, которые недоступны в более ранних выпусках. Используйте IDD_IS_FUNCTION_AVAILABLE для проверка доступности.
  • Ни одна из функций версии 1.10 не может быть экспортирована. Драйвер может использовать макрос IDD_IS_FIELD_AVAILABLE, чтобы проверка, следует ли записывать обратный вызов EvtIddCxXxx в структуру IDD_CX_CLIENT_CONFIG.
  • IDD_IS_FIELD_AVAILABLE также может помочь драйверу определить, безопасно ли устанавливать IDDCX_ADAPTER_FLAGS_CAN_PROCESS_FP16 или IDDCX_ADAPTER_FLAGS_ALL_TARGET_MODES_MONITOR_COMPATIBLE. Если один из DDIs версии 1.10 недоступен, драйвер не должен устанавливать флаг .

Пример использования IDD_IS_FIELD_AVAILABLE :

    if (IDD_IS_FIELD_AVAILABLE(IDD_CX_CLIENT_CONFIG, EvtIddCxParseMonitorDescription2))
    {
        IddCxClientConfig.EvtIddCxParseMonitorDescription2 = ParseMonitorDescription2;
    }

Дополнительные сведения см. в статье Создание драйверов IddCx 1.4.