USB4 电源管理要求
USB4 主机路由器必须可靠地支持 USB4 睡眠以及进入和退出。 隧道协议不得在进入或退出 USB4 睡眠时以电子方式发出与各自的隧道断开连接的信号。 此外,在 USB4 域从睡眠中恢复后,USB4 主机路由器必须通过适当的隧道重播协议唤醒。
隧道设备协议(PCIe、USB 3.x 和 Display)会与关联的 USB4 主机路由器设备建立电源关系,使连接管理器可以在隧道设备空闲时启动进入睡眠的操作。 从 Windows 11 开始的 PCIe 和 USB 3.x 设备驱动程序支持根据 USB4 ACPI 要求中描述的基于 ACPI 的 (_DSD) 端口映射来识别关联的 USB4 主机路由器设备并对其进行电源管理。
Windows 11 中的图形堆栈也已更新,以标识 USB4 主机路由器设备,并对 USB4 主机路由器设备进行电源管理。 这需要从 IHV 提供的图形驱动程序中获得支持,如图形驱动程序要求所述。 USB4 连接管理器从 ACPI 获取主机路由器设备 ID,并将其写入 DP-IN 适配器配置空间中的 ADP_DP_CS_2.CM_ID。 如 ACPI 要求中所述,主机接口实例必须始终以一个 3 位的数字 (0-7) 结尾。
图形驱动程序要求
若要确保电源管理关联正确,图形堆栈必须能够识别监视器连接到的 USB4 DP-IN 适配器。 这是通过 USB4 域设置实现的,该设置由 DPCD 通过 USB4 DP-IN 适配器注册,供图形堆栈读取。 这些要求在 DisplayPort™2.0 规范(勘误表)中定义。
DPCD 字段名称 | DPCD 字段地址 | 注意 |
---|---|---|
USB4_Driver_ID | E000Fh [3:0] | 唯一标识系统中的主机路由器。 这是由 USB4 连接管理器设置的,从 ACPI 获取主机路由器设备 ID,并将其写入到 DP-IN 适配器配置空间中的 ADP_DP_CS_2.CM_ID。 |
USB4_ROUTER_TOPOLOGY_ID | E001Bh - E001Fh | 唯一标识主机路由器域中的 USB4 设备 |
DP_IN_Adapter_Number | E000Eh [5:0] | 在 USB4 设备上唯一标识 DP-IN 适配器 |
DP 隧道支持 | E000Dh [0] | 值为 1 表示 USB4 隧道 |
图形驱动程序要求如下:
- WDDM 3.0 或更高版本的驱动程序
- 驱动程序会公开新的适配器上限以指示 USB4 支持
- 驱动程序公开的所有静态视频呈现网络 (VidPN) 目标都需要报告为电源组件
- 连接到同一个静态目标的每个 USB4 动态目标都必须连接到同一个主机路由器。 也就是说,USB4_Driver_ID 必须有相同的值。 不支持将 USB4 DisplayPort 监视器连接到“仅显示”或“间接显示”WDDM 驱动程序。
USB4 驱动程序功能
已将该 SupportUsb4Targets
功能添加到在开始时从驱动程序查询的 DXGK_DISPLAY_DRIVERCAPS_EXTENSION 结构。 设置此值的操作仅对 WDDM 3.0 驱动程序有效,只有在驱动程序确实满足上面列出的所有要求时才应设置此值。
报告 USB4 监视器 DPCD 值
在 WDDM 3.0 中,有一个新的 DXGK_CONNECTION_CHANGE.MonitorConnect.MonitorConnectFlags
字段,该字段包含一个由驱动程序用来指示此监视器是 USB4 连接监视器的 Usb4DisplayPortMonitor
标志。
typedef struct _DXGK_CONNECTION_MONITOR_CONNECT_FLAGS
{
union
{
struct
{
UINT Usb4DisplayPortMonitor : 1;
UINT Reserved :31;
};
UINT Value;
};
} DXGK_CONNECTION_MONITOR_CONNECT_FLAGS;
typedef struct _DXGK_CONNECTION_CHANGE {
ULONGLONG ConnectionChangeId;
D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId :24;
DXGK_CONNECTION_STATUS ConnectionStatus : 4;
UINT Reserved : 4;
union {
struct {
D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY LinkTargetType;
DXGK_CONNECTION_MONITOR_CONNECT_FLAGS MonitorConnectFlags;
} MonitorConnect;
struct {
D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY BaseTargetType;
D3DDDI_VIDEO_PRESENT_TARGET_ID NewTargetId;
} TargetConnect;
struct {
D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY BaseTargetType;
D3DDDI_VIDEO_PRESENT_TARGET_ID NewTargetId;
} TargetJoin;
};
} DXGK_CONNECTION_CHANGE, *PDXGK_CONNECTION_CHANGE;
typedef struct _DXGK_CONNECTION_USB4_INFO
{
UINT Dpcd_DP_IN_Adapter_Number;
UINT Dpcd_USB4_Driver_ID;
BYTE Dpcd_USB4_ROUTER_TOPOLOGY_ID[5];
} DXGK_CONNECTION_USB4_INFO, *PDXGK_CONNECTION_USB4_INFO;
typedef struct _DXGKARG_QUERYCONNECTIONCHANGE
{
DXGK_CONNECTION_CHANGE ConnectionChange; // out: Buffer into which the oldest available change is copied by driver
PDXGK_CONNECTION_USB4_INFO pUsb4MonitorInfo; // inout: Pointer to an operating system allocated structure driver should
// complete if MonitorConnect.Flags.Usb4DisplayPortMonitor was set
} DXGKARG_QUERYCONNECTIONCHANGE;
如果 DisplayPort™ 监视器已连接到指定的视频呈现网络 (VidPN) 目标并连接到 USB4 DP-IN 适配器,则驱动程序应:
- 设置
DXGK_CONNECTION_CHANGE.MonitorConnect.Flags.Usb4DisplayPortMonitor
- 填充
DXGKARG_QUERYCONNECTIONCHANGE.pUsb4MonitorInfo
中的字段
作为 PoFx 组件报告的所有静态 VidPN 目标
若要在图形堆栈和 USB 堆栈之间启用正确的电源管理,需要通过 DxgkDdiQueryAdapterInfo(DXGKQAITYPE_NUMPOWERCOMPONENTS)
和 DxgkDdiQueryAdapterInfo(DXGKQAITYPE_POWERCOMPONENTINFO)
将所有静态 VidPN 目标报告为电源管理框架 (PoFx) 组件。
从同一静态 VidPN 目标创建的所有动态目标
支持连接到动态 VidPN 目标的 USB4 监视器。 但是,连接到静态 VidPN 目标的所有 USB4 动态 VidPN 目标都必须有相同的 USB4_Driver_ID values
,并且必须连接到同一个 USB4 主机路由器。
CLx 低功耗状态
为了节省电力并减少热负荷,连接管理器允许第一个深度链路进入 CL0 和 CL1(如果硬件和当前隧道协议支持)。 面向上游的端口 (UFP) 和面向下游的端口 (DFP) 必须支持 CL0 和 CL1,才能在该链接上启用低功耗状态。 随后,如果 TMU 精度要求和链路上的隧道活动允许,则链路可以进入 CL0 或 CL1 以节省电力。
另请参阅
Thunderbolt 是 Intel Corporation 或其子公司的商标。
“USB4™”是 USB 实现者论坛的商标,只适用于基于并符合 USB4™ 规范的产品。