Novedades para las versiones 1.10 y posteriores de IddCx

En esta página se describen los cambios realizados en IddCx versión 1.10. Un único binario de controlador de pantalla indirecto (IDD) compilado con IddCx 1.10 se puede ejecutar en Windows 10, versión 1803 y 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:

  • Actualice 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.
  • Agrega compatibilidad con la gama de colores anchos HDR10 (rango dinámico alto) y SDR (rango dinámico estándar) a pantallas indirectas.

Versión actualizada de IddCxGetVersion

El valor devuelto por IddCxGetVersion se ha actualizado, pero difiere según el sistema operativo:

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

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 anchos HDR y SDR

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

Compatibilidad con DDI del controlador y el sistema operativo

Siempre que sea posible, se ampliaron las DDIs existentes para permitir que un controlador notifique la compatibilidad con:

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

Las variantes más recientes de los DDIs existentes se agregaron cuando no se pudieron ampliar las DDIs existentes. 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 o controladores más antiguos 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 los DDIs implementados por el controlador agregados en IddCx 1.10 y se asigna el nombre equivalente anterior si había uno. El sistema operativo puede llamar a estas funciones si el controlador los informa, incluso para adaptadores que no intentan admitir HDR.

Funciones de controlador que el sistema operativo llama a 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 en IddCx 1.10 y se asignan nombres a los equivalentes anteriores si había uno. Un controlador de la versión 1.10 puede llamar a las variantes más recientes si ha determinado que estas funciones están disponibles en el sistema operativo en el que se ejecuta el controlador.

Funciones más recientes que un controlador debe llamar a 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

Los controladores de la versión 1.10 y posteriores deben establecer la marca de 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:

Funcionalidades HDR de destino de informes

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 monitor que contiene metadatos HDR, el sistema operativo llama a EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA para proporcionar los metadatos HDR predeterminados al controlador. El controlador debe mantener estos datos predeterminados y usarlos al enviar fotogramas 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 HDR. Si estos metadatos indican que se debe usar el valor predeterminado, se trata de los datos predeterminados almacenados a los que se hace referencia.

Cuando se establece un modo HDR, el sistema operativo envía el estado de metadatos HDR con cada fotograma. Estos metadatos indican al controlador qué metadatos HDR usar a través de la estructura de 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 HDR no están disponibles para los controladores remotos porque los metadatos HDR10 deben provenir del subsistema de pantalla del cliente.

Informes de modos HDR

Cuando una pantalla está conectada a un destino, el sistema operativo consulta al controlador para los modos de supervisión y destino admitidos actualmente. Para anunciar correctamente las funcionalidades HDR, se necesita información adicional para cada uno de estos modos, por lo que un controlador HDR debe exponer las siguientes DDIs 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 del controlador EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO 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 requieren diferentes cantidades de ancho de banda, sigue siendo correcto para que estos modos se notifiquen por separado.

Tipo gamma agregado

El EVT_IDD_CX_MONITOR_SET_GAMMA_RAMP DDI 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 la 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 un modo HDR, el nivel blanco de SDR debe aplicarse a los cursores del mouse. IddCx v.10 proporciona esta funcionalidad en dos lugares:

  • Se ha agregado 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 las actualizaciones del cursor en el nivel de blanco correcto sin necesidad de recibir un nuevo fotograma. El nivel de blanco de SDR predeterminado es de 80 nits.

Espacio de colores de superficie

Aunque el controlador notificó el espacio de color como parte de la información del modo, el sistema operativo notifica el espacio de color real usado por un marco específico en la estructura de 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 que con un controlador de consola. Las excepciones son estas:

  • Los metadatos 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 blanco de SDR que se usará en el servidor.
  • Los modos de supervisión también son opcionales para los controladores remotos. Si un controlador remoto establece la marca de adaptador de IDDCX_ADAPTER_FLAGS_ALL_TARGET_MODES_MONITOR_COMPATIBLE , el sistema operativo no lo solicitará para los modos de supervisión y, en su lugar, solo usará 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 en el 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:

  • Siga 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.
  • Use la macro IDD_CX_CLIENT_CONFIG_INIT para establecer el tamaño de la estructura de IDD_CX_CLIENT_CONFIG .
  • No intente llamar a ninguna función implementada por el sistema operativo que no esté disponible en versiones anteriores. Use IDD_IS_FUNCTION_AVAILABLE para comprobar la disponibilidad.
  • Ninguna de las funciones v1.10 se puede exportar. 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 uno de los DDIs 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, vea Building IddCx 1.4 drivers (Compilación de controladores IddCx 1.4).