DXGK_SET_TIMING_PATH_INFO 结构 (d3dkmddi.h)

用于保存用于修改 SetTiming 路径的信息的结构。

语法

typedef struct _DXGK_SET_TIMING_PATH_INFO {
  D3DDDI_VIDEO_PRESENT_TARGET_ID     VidPnTargetId;
  union {
    D3DDDI_COLOR_SPACE_TYPE             OutputColorSpace;
    D3DDDI_OUTPUT_WIRE_COLOR_SPACE_TYPE OutputWireColorSpace;
  };
  D3DKMDT_WIRE_FORMAT_AND_PREFERENCE SelectedWireFormat;
  union {
    struct {
      DXGK_PATH_UPDATE     VidPnPathUpdates : 2;
      UINT                 Active : 1;
      UINT                 IgnoreConnectivity : 1;
      UINT                 PreserveInherited : 1;
      UINT                 SyncLockGroup : 3;
      DXGK_SYNC_LOCK_STYLE SyncLockStyle : 4;
#if ...
      UINT                 Reserved : 20;
#else
      UINT                 Reserved : 27;
#endif
    } Input;
    UINT InputFlags;
  };
  union {
    struct {
      UINT RecheckMPO : 1;
      UINT Reserved : 31;
    } Output;
    UINT OutputFlags;
  };
  DXGK_CONNECTION_CHANGE             TargetState;
  union {
    struct {
      DXGK_GLITCH_CAUSE    GlitchCause;
      DXGK_GLITCH_EFFECT   GlitchEffect;
      DXGK_GLITCH_DURATION GlitchDuration;
      UINT8                Reserved;
    };
    UINT DiagnosticInfo;
  };
} DXGK_SET_TIMING_PATH_INFO;

成员

VidPnTargetId

显示适配器的视频存在目标的标识符。

OutputColorSpace

一个D3DDDI_COLOR_SPACE_TYPE值,用于描述用于传输像素的输出颜色空间。 驱动程序负责发送适当的元数据,以确保显示设备设置为正确解释此颜色空间的像素。

输出颜色空间是固定的,直到由另一个 SetTiming 调用修改。 如果提供给此目标的交换链上设置的颜色空间不同于输出颜色空间,则驱动程序需要在扫描期间转换为输出颜色空间。

如果在目标上启用了多个像素平面,则驱动程序必须在有效的合成颜色空间(通常为线性空间)中执行平面合成,并将组合像素转换为输出颜色空间。

由于 SelectedWireFormat 已指示颜色编码和 chroma 子采样,因此 OutputColorSpace 仅用于确定应使用其对像素值进行编码的初选和伽玛;其他元素:颜色模型、范围和 cositing 应被忽略,因为它们由 SelectedWireFormat 定义。 鉴于没有计划支持具有 Rec.709 主副本的 ST.2084 gamma 或 2.2 gamma 和 Rec 2020 主要副本,因此 RS2 版本中的 OS 仅设置两个值,即:

  • D3DDDI_COLOR_SPACE_RGB_FULL_G22_NONE_P709,适用于 SDR
  • D3DDDI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020,适用于 HDR10

OutputWireColorSpace

操作系统还使用D3DDDI_COLOR_SPACE_TYPE枚举类型来指定 MPO 的输入颜色空间,因此从 WDDM 2.3 开始,它已弃用。 WDDM 2.3 及更高版本的驱动程序应使用新类型D3DDDI_OUTPUT_WIRE_COLOR_SPACE_TYPE。

SelectedWireFormat

一个D3DKMDT_WIRE_FORMAT_AND_PREFERENCE值,该值指示要为路径设置的线路格式。 首选项字段在此上下文中保留,因此驱动程序应忽略该字段。 在剩余的五个位字段中,OS 将设置 30 位中的一个,以指示应驱动链接的颜色编码和位深度。

Input

Input.VidPnPathUpdates

描述自上一次成功调用以来,与此路径对应的 VidPn 元素是如何更改的。

DXGK_SET_TIMING_PATH_INFO结构中的字段已从此摘要中排除,因此驱动程序始终需要评估这些字段以进行任何更改。 例如,如果 OS 调用 SetTimings 以在某个路径上空闲监视器,则会清除 Active 标志,VidPnPathUpdates 将设置为 DXGK_PATH_UPDATE_UNMODIFIED,如果它随后调用 SetTimings 来为监视器供电,则将设置 Active 标志,并且 VidPnPathUpdates 仍将设置为 DXGK_PATH_UPDATE_UNMODIFIED。

Input.Active

如果已设置,则指示路径应激活或保持活动状态。 如果清除,则指示路径应停用或保持非活动状态。

Input.IgnoreConnectivity

如果已设置,则指示驱动程序应强制输出到目标,即使未检测到任何显示设备。 如果清除,驱动程序应报告更新的 ConnectionStatus(如果连接已更改)。

Input.PreserveInherited

如果已设置,则指示驱动程序应保留以前驱动程序配置的计时和内容。 仅当适配器由驱动程序的当前实例以外的其他配置时才使用此标志。 最初,当路径在启动期间由固件初始化时,将使用此选项。 如果明确,则不请求任何特殊行为。

Input.SyncLockGroup

同步锁组输入。 从 WDDM 2.4 开始可用。 指示哪个组同步显示每个路径所属。 由于 WDDM 2.4 - WDDM 2.6 仅支持每个适配器的单个同步组,并且始终在可能的情况下启用同步,因此当启用可同步的显示器时,此值设置为 1;当不需要同步显示时,此值设置为 0,并且应始终与 value DXGK_SYNC_LOCK_STYLE_NONE 的 SyncLockStyle 配对。

Input.SyncLockStyle

同步锁样式输入。 从 WDDM 2.4 开始可用。 指示 OS 请求的同步样式。 对于 WDDM 2.4 - WDDM 2.6 驱动程序,如果启用可同步的显示器,则此值设置为 DXGK_SYNC_LOCK_STYLE_IDENTICAL ,否则DXGK_SYNC_LOCK_STYLE_NONE。

Input.Reserved

该值已预留供系统使用。

InputFlags

一组标志,指定 OS 希望驱动程序执行的操作。

Output

Output.RecheckMPO

如果已设置,则指示 OS 需要由于此路径上的更改而发出 CheckMPO。

Output.Reserved

该值已预留供系统使用。

OutputFlags

TargetState

指示此调用导致的目标状态。 由于更改计时可能会导致已修改的目标和 OS 不打算更改的目标的连接状态,因此此字段将传达每个路径的状态。

如果目标状态保持不变,则此字段应包含目标上报告的最后一个状态的副本,包括以前报告的相同 ConnectionChangeId。

如果目标状态发生更改,此字段应包含排队的连接更改的副本,该副本反映 SetTiming 调用产生的状态。

GlitchCause

一个 DXGK_GLITCH_CAUSE 值,该值指示显示管道中哪些基础更改 () 导致故障。

GlitchEffect

一个DXGK_GLITCH_EFFECT值,该值指示故障如何呈现给用户。

GlitchDuration

一个DXGK_GLITCH_DURATION值,该值指示故障大约持续了多长时间。 这旨在反映根本问题存在的时长,但在某些情况下,可见效果可能更长。 例如,当同步丢失的时间足以使监视器必须重新检测时,显示设备可能需要许多帧才能恢复。 这是应报告的基础问题的时长,而不是恢复时间,因为恢复时间因设备而异。

Reserved

该值已预留供系统使用。

DiagnosticInfo

驱动程序为每个路径填写的信息集,用于描述计时更改的任何副作用。 在许多情况下,故障是不可避免的,因此这些字段会尝试了解根本原因和用户影响的程度。

要求

要求
Header d3dkmddi.h