适用于 IddCx 1.10 及更高版本的汇报

本页介绍 IddCx 版本 1.10 中所做的更改。 针对 IddCx 1.10 生成的单个间接显示驱动程序 (IDD) 二进制文件可以在 Windows 10 版本 1803 及更高版本上运行,以验证 IddCx 1.10 中的 DDI 更改是否在该系统上可用。 有关详细信息,请参阅 为多个版本的 Windows 生成 WDF 驱动程序

IddCx 1.10 更改分为以下类别:

  • (控制台和远程) 更新 IddCxGetVersion 版本。 有关 IddCx 相关版本信息的完整列表,请参阅 IddCx 版本
  • 向间接显示器添加 HDR10 (高动态范围) 和 SDR (标准动态范围) 宽色域 (WCG) 支持。

更新了 IddCxGetVersion 版本

IddCxGetVersion 返回的值已更新,但因操作系统而异:

  • Windows 11版本 22H2 9 月更新返回0x1A00 (IDDCX_VERSION_SV3) 。
  • 2024 Windows 平台版本将返回0x1A80。

此版本控制对于操作系统行为略有不同的远程驱动程序非常重要。

HDR 和 SDR 宽色域支持

有关 Windows 上颜色(包括 SDR WCG)的一些介绍性信息,请参阅 HDR 和 SDR 显示器上具有高级颜色的 DirectX

驱动程序 DDI 和 OS 支持

在可能的情况下,扩展了现有 DDI,以允许驱动程序报告对以下项的支持:

  • HDR10
  • SDR WCG
  • 接收描述发送到 IDD 的任何 HDR 帧的数据

当无法扩展现有 DDI 时,会添加现有 DDI 的较新变体。 在大多数情况下,这些更改适用于主机和远程驱动程序,但还定义了特定于远程驱动程序的一些详细信息。

支持 HDR 的版本 1.10 及更高版本的驱动程序必须使用更新的 DDI 变体。 较旧的驱动程序或不支持 HDR 的驱动程序可以继续使用现有函数。 此更改后面的部分中提供了这些更改的概述。

下表列出了 IddCx 1.10 中添加的驱动程序实现的 DDI,并命名以前的等效项(如果有)。 如果驱动程序报告了这些函数,OS 可能会调用这些函数,即使对于不支持 HDR 的适配器也是如此。

OS 为 HDR 适配器调用的驱动程序函数 以前的等效函数
EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO N/A
EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA* N/A
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 中添加的 OS 实现的函数,并将以前的等效函数命名为 () (如果有)。 如果 1.10 版驱动程序已确定这些函数在运行驱动程序的操作系统中可用,则可以调用较新的变体。

驱动程序必须为 HDR 适配器调用的较新函数 以前的等效项
IddCxSwapChainReleaseAndAcquireBuffer2 IddCxSwapChainReleaseAndAcquireBuffer/IddCxSwapChainReleaseAndAcquireSystemBuffer
IddCxMonitorQueryHardwareCursor3 IddCxMonitorQueryHardwareCursor2IddCxMonitorQueryHardwareCursor
IddCxAdapterDisplayConfigUpdate2* IddCxAdapterDisplayConfigUpdate*
IddCxMonitorUpdateModes2 IddCxMonitorUpdateModes

*:仅供远程驱动程序使用。

报告适配器 HDR 支持

版本 1.10 及更高版本的驱动程序应设置添加到 IDDCX_ADAPTER_FLAGSIDDCX_ADAPTER_FLAGS_CAN_PROCESS_FP16 标志,以报告对 FP16 图面的支持。 FP16 图面可用于 HDR10 或仅用于 SDR WCG。 设置此标志意味着驱动程序会执行启用 HDR10 或 SDR WCG 所需的一切操作,包括:

报告目标 HDR 功能

如果驱动程序希望为适配器启用 HDR,则必须通过其 EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO 功能提供有关每个目标连接器的其他信息。 需要特定于目标连接器的信息,因为只有部分可用目标可能支持 HDR 的某些方面。

HDR 元数据

当驱动程序提供包含 HDR 元数据的监视器描述符时,OS 会调用 EVT_IDD_CX_MONITOR_SET_DEFAULT_HDR_METADATA ,为驱动程序提供默认 HDR 元数据。 驱动程序必须保留此默认数据,并在将 HDR10 信息帧 (SMPTE ST.2086) 发送到监视器时使用它。 当驱动程序调用 IddCxSwapChainReleaseAndAcquireBuffer2 时,OS 还提供 HDR 元数据信息。 如果此元数据指示应使用默认值,则引用的是存储的默认数据。

设置 HDR 模式后,OS 会随每个帧发送 HDR 元数据状态。 此元数据通过引入的 IDDCX_METADATA2 结构告知驱动程序要使用哪个 HDR 元数据。 元数据是新的元数据块,或者指示驱动程序应使用 OS 以前提供的默认元数据或与上一帧相同的元数据。

注意:HDR 元数据不可用于远程驱动程序,因为任何 HDR10 元数据都应来自客户端上的显示子系统。

报告 HDR 模式

当显示器连接到目标时,OS 会查询驱动程序以查找当前支持的监视器和目标模式。 若要正确播发 HDR 功能,每种模式都需要额外的信息,因此 HDR 驱动程序必须公开 v1.10 中引入的以下 DDI:

这些扩展模式指示可以使用的可能的位深度和图面格式。 驱动程序还可以通过调用 IddCxMonitorUpdateModes2 来更新目标模式列表。

操作系统根据报告任何模式之前驱动程序 EVT_IDD_CX_ADAPTER_QUERY_TARGET_INFO回调返回 的信息推断 HDR 和 SDR WCG 的模式变化。

OS 会验证模式,以尝试检测应合并并报告为单个模式的重复模式。 例如,在每通道 8 位和 10 位的 60 Hz 下支持 1080p 的目标应报告为单个模式。 但是,如果目标支持这些模式,但它们需要不同数量的带宽,则仍可以单独报告这些模式。

添加的伽玛类型

扩展了现有的 EVT_IDD_CX_MONITOR_SET_GAMMA_RAMP DDI,以便 OS 可以提供支持 HDR 显示器所需的 3x4 矩阵转换,以便向播发 HDR 支持的驱动程序提供支持。

SDR 白色级别

鼠标光标像素数据始终为 SDR。 在 HDR 模式下设置监视器时,必须将 SDR 白级别应用于鼠标光标。 IddCx v.10 在两个位置提供此功能:

图面颜色空间

即使驱动程序将颜色空间报告为模式信息的一部分,OS 也会报告引入 IDDCX_METADATA2 结构中特定帧使用的实际颜色空间。

将 HDR 与远程驱动程序配合使用

如果可能,远程驱动程序的 OS 和驱动程序行为应与控制台驱动程序的行为相同。 例外情况包括:

  • 未向远程驱动程序提供 HDR 元数据。 客户端系统应基于物理连接的显示器提供此元数据。 使用服务器确定的元数据毫无意义。
  • 也不会发送 3x4 颜色矩阵转换。 同样,远程驱动程序应使用来自客户端系统的等效数据。
  • 远程驱动程序可以提供要用于服务器的色度数据和 SDR 白级别。
  • 对于远程驱动程序,监视模式也是可选的。 如果远程驱动程序设置 IDDCX_ADAPTER_FLAGS_ALL_TARGET_MODES_MONITOR_COMPATIBLE 适配器标志,则操作系统不会要求它进行监视模式,而只会使用目标模式。 此功能允许驱动程序指定异常模式,而无需报告等效的监视模式;例如,基于客户端窗口大小而不是监视器大小。

支持运行较低级别的 1.10 驱动程序

在较旧的 Windows 版本上运行的版本 1.10 驱动程序需要执行几个步骤来确保兼容性。 具体而言,驱动程序必须:

如何使用 IDD_IS_FIELD_AVAILABLE 的示例:

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

有关详细信息,请参阅 生成 IddCx 1.4 驱动程序