Compartir a través de


Novedades para las versiones 1.10 y posteriores de IddCx

En este artículo se describen las actualizaciones realizadas en IddCx versión 1.10. Un único archivo binario de controlador de pantalla indirecta (IDD) compilado con IddCx 1.10 se puede ejecutar en Windows 10, versión 1803 y versiones posteriores mediante comprobaciones en tiempo de ejecución para comprobar si los cambios de DDI en IddCx 1.10 están disponibles en ese sistema. Para obtener más información, consulte Creación de un controlador WDF para varias versiones de Windows.

Los cambios de IddCx 1.10 se dividen en las siguientes categorías:

  • Actualizar la versión IddCxGetVersion (consola y remoto). Para obtener una lista completa de la información de versión relacionada con IddCx, consulte Versiones de IddCx.
  • Agregar compatibilidad con la gama de colores anchos (WCG) HDR10 (rango dinámico alto) y SDR (rango dinámico estándar) para pantallas indirectas.

Versión actualizada de IddCxGetVersion

Se ha actualizado el valor devuelto por IddCxGetVersion, pero difiere en función del sistema operativo:

  • La versión de la plataforma Windows 11, versión 24H2, devuelve 0x1A80 (IDDCX_VERSION_GERMANIUM).
  • La actualización de septiembre de Windows 11, versión 22H2, devuelve 0x1A00 (IDDCX_VERSION_SV3).

Este control de versiones es significativo para los controladores remotos en los que el comportamiento del sistema operativo difiere ligeramente.

Compatibilidad con la gama de colores amplia HDR y SDR

Para obtener información introductoria sobre el color en Windows, incluido SDR WCG, consulte DirectX con color avanzado en pantallas HDR y SDR.

Compatibilidad con DDI del controlador y el sistema operativo

En la medida de lo posible, se ampliaron las DDI existentes para permitir que un controlador informara de su compatibilidad con:

  • HDR10
  • SDR WCG
  • Recepción de datos que describen los fotogramas HDR enviados a un IDD

Se han agregado nuevas variantes de las DDI existentes cuando estas no han podido ampliarse. En la mayoría de los casos, estos cambios se aplican tanto a la consola como a los controladores remotos, pero también se definen algunos detalles específicos de los controladores remotos.

La versión 1.10 y los controladores posteriores que admiten HDR deben usar las variantes DDI más recientes. Los controladores más antiguos o los que que no admiten HDR pueden seguir usando las funciones existentes. En las secciones siguientes se proporciona información general sobre los cambios.

En la tabla siguiente se enumeran las DDI implementadas por el controlador que se han agregado a IddCx 1.10 y se nombra el equivalente anterior si lo hubiera. El sistema operativo puede llamar a estas funciones si el controlador informa de ellas, incluso para adaptadores que no intentan admitir HDR.

Funciones de controlador que el sistema operativo llama para los adaptadores HDR Función equivalente anterior
EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO N/D
EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA* N/D
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

*: no se llama a la función para controladores remotos.

**: es posible que no se llame a la función para controladores remotos en función de las marcas de adaptador establecidas por el controlador.

En la tabla siguiente se enumeran las funciones implementadas por el sistema operativo agregadas a IddCx 1.10 y se nombra el equivalente anterior si lo hubiera. Un controlador de la versión 1.10 puede llamar a las variantes más recientes una vez que determina que estas funciones están disponibles en el sistema operativo en el que se ejecuta el controlador.

Funciones más recientes a las que debe llamar un controlador para adaptadores HDR Equivalente anterior
IddCxSwapChainReleaseAndAcquireBuffer2 IddCxSwapChainReleaseAndAcquireBuffer/IddCxSwapChainReleaseAndAcquireSystemBuffer
IddCxMonitorQueryHardwareCursor3 IddCxMonitorQueryHardwareCursor2 o IddCxMonitorQueryHardwareCursor
IddCxAdapterDisplayConfigUpdate2* IddCxAdapterDisplayConfigUpdate*
IddCxMonitorUpdateModes2 IddCxMonitorUpdateModes

*: solo para su uso por controladores remotos.

Compatibilidad con HDR del adaptador de informes

La versión 1.10 y los controladores posteriores deben establecer la marca IDDCX_ADAPTER_FLAGS_CAN_PROCESS_FP16 agregada a IDDCX_ADAPTER_FLAGS para notificar la compatibilidad con superficies FP16. Las superficies FP16 se pueden usar para HDR10 o simplemente SDR WCG. Establecer esta marca implica que un controlador hace todo lo necesario para habilitar WCG HDR10 o SDR, incluidos:

Notificación de las funcionalidades de HDR de destino

Si un controlador desea habilitar HDR para un adaptador, debe proporcionar información adicional sobre cada conector de destino a través de su función EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO. Se necesita información específica del conector de destino porque solo algunos de los destinos disponibles pueden admitir algunos aspectos de HDR.

Metadatos HDR

Cuando el controlador proporciona un descriptor de supervisión que contiene metadatos HDR, el sistema operativo llama a EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA para proporcionar los metadatos de HDR predeterminados al controlador. El controlador debe mantener estos datos predeterminados y usarlos al enviar tramas de información HDR10 (SMPTE ST.2086) al monitor. Cuando un controlador llama a IddCxSwapChainReleaseAndAcquireBuffer2, el sistema operativo también proporciona información de metadatos de HDR. Si estos metadatos indican que se debe usar el valor predeterminado, se hace referencia a los datos predeterminados almacenados.

Cuando se establece un modo HDR, el sistema operativo envía el estado de metadatos de HDR con cada trama. Estos metadatos indican al controlador qué metadatos de HDR debe usar a través de la estructura IDDCX_METADATA2 introducida. Los metadatos son un nuevo bloque de metadatos o una indicación de que el controlador debe usar los metadatos predeterminados que el sistema operativo proporcionó anteriormente o los mismos metadatos que el marco anterior.

Nota: los metadatos de HDR no están disponibles para los controladores remotos porque los metadatos HDR de 10 deben provenir del subsistema de pantalla del cliente.

Notificación de modos de HDR

Cuando una pantalla está conectada a un destino, el sistema operativo consulta el controlador para los modos de supervisión y destino admitidos actualmente. Para anunciar correctamente las funcionalidades de HDR, se necesita información adicional para cada uno de estos modos, por lo que un controlador HDR debe exponer las siguientes DDI introducidas en la versión 1.10:

Estos modos extendidos indican las posibles profundidades de bits y formatos de superficie que se pueden usar. Un controlador también puede actualizar una lista de modo de destino llamando a IddCxMonitorUpdateModes2.

El sistema operativo deduce variaciones de modos para HDR y SDR WCG en función de la información devuelta por la devolución de llamada EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO del controlador antes de que se notifiquen los modos.

El sistema operativo valida los modos para intentar detectar modos repetidos que se deben combinar y notificar como un solo modo. Por ejemplo, un destino que admite 1080p a 60 Hz en 8 bits y 10 bits por canal se debe notificar como un modo único. Sin embargo, si el destino admite estos modos, pero se requieren diferentes cantidades de ancho de banda, sigue siendo correcto que estos modos se notifiquen por separado.

Tipo gamma agregado

La DDI de EVT_IDD_CX_MONITOR_SET_GAMMA_RAMP existente se ha ampliado para que el sistema operativo pueda proporcionar la transformación de matriz 3x4 necesaria para admitir pantallas HDR a los controladores que anuncian compatibilidad con HDR.

Nivel de blanco de SDR

Los datos de píxeles del cursor del mouse siempre son SDR. Cuando se establece un monitor en modo HDR, el nivel de blanco de SDR debe aplicarse a los cursores del mouse. IddCx v.10 proporciona esta funcionalidad en dos lugares:

  • Se agregó a los metadatos por fotograma recibidos por un controlador al llamar a IddCxSwapChainReleaseAndAcquireBuffer2.
  • También forma parte de la función IddCxMonitorQueryHardwareCursor3 introducida para que un controlador pueda representar actualizaciones de cursor en el nivel de blanco correcto sin necesidad de recibir un nuevo fotograma. El nivel de blanco predeterminado de SDR es de 80 nits.

Espacio de color de superficie

Aunque el controlador notificó el espacio de color como parte de la información del modo, el sistema operativo informa del espacio de color real usado por un fotograma específico en la estructura IDDCX_METADATA2 introducida.

HDR con controladores remotos

Siempre que sea posible, el comportamiento del sistema operativo y del controlador debe ser el mismo para un controlador remoto y para un controlador de consola. Las excepciones son estas:

  • Los metadatos de HDR no se proporcionan a los controladores remotos. Se espera que el sistema cliente proporcione estos metadatos en función de la pantalla conectada físicamente. No tiene sentido usar metadatos determinados por el servidor.
  • Tampoco se envía la transformación de matriz de colores 3x4. De nuevo, se espera que un controlador remoto use los datos equivalentes del sistema cliente.
  • Los controladores remotos pueden proporcionar los datos de colorimetría y el nivel de blanco de SDR que se usará en el servidor.
  • Los modos de monitor también son opcionales para los controladores remotos. Si un controlador remoto establece la marca de adaptador IDDCX_ADAPTER_FLAGS_ALL_TARGET_MODES_MONITOR_COMPATIBLE, el sistema operativo no la pedirá para los modos de supervisión y, en su lugar, solo usa los modos de destino. Esta funcionalidad permite a un controlador especificar modos inusuales sin necesidad de notificar el modo de supervisión equivalente; por ejemplo, en función de un tamaño de ventana de cliente en lugar de un tamaño de monitor.

Compatibilidad con un controlador 1.10 que se ejecuta a nivel descendente

Los controladores de la versión 1.10 que se ejecutan en versiones anteriores de Windows deben realizar varios pasos para garantizar la compatibilidad. En concreto, los controladores deben:

  • Seguir exportando todas las funciones existentes, como EVT_IDD_CX_PARSE_MONITOR_DESCRIPTION, EVT_IDD_CX_MONITOR_QUERY_TARGET_MODES y EVT_IDD_CX_ADAPTER_COMMIT_MODES.
  • Usar la macro IDD_CX_CLIENT_CONFIG_INIT para establecer el tamaño de la estructura IDD_CX_CLIENT_CONFIG.
  • No intentar llamar a ninguna función implementada por el sistema operativo que no esté disponible en versiones anteriores. Usar IDD_IS_FUNCTION_AVAILABLE para comprobar la disponibilidad.
  • No se puede exportar ninguna de las funciones v1.10. Un controlador puede usar la macro IDD_IS_FIELD_AVAILABLE para comprobar si debe escribir la devolución de llamada EvtIddCxXxx en la estructura IDD_CX_CLIENT_CONFIG.
  • IDD_IS_FIELD_AVAILABLE también puede ayudar a un controlador a determinar si es seguro establecer IDDCX_ADAPTER_FLAGS_CAN_PROCESS_FP16 o IDDCX_ADAPTER_FLAGS_ALL_TARGET_MODES_MONITOR_COMPATIBLE. Si una de las DDI de v1.10 no está disponible, el controlador no debe establecer la marca.

Ejemplo de cómo se puede usar IDD_IS_FIELD_AVAILABLE:

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

Para obtener más información, consulte Compilación de controladores IddCx 1.4.