控制面板自我刷新 (PSR)
ADS 功能使用 PSR 来避免切换过程中出现故障。 具体来说,使用 PSR1(全屏更新模式)时,GPU0 和 GPU1 无需协商使用哪种 PSR 模式。
即使在 PSR1 中,面板也需要支持以下的可选功能:
接收器功能 | 详细信息 | 接收器公开方式 |
---|---|---|
DPCD & eDP 版本 | 公开 eDP v1.3 或更高版本。 | DPCD |
PSR 功能和版本 | 接收器应支持版本 1。 | DPCD 00070h 位 7:0 |
支持 VSC SDP 以传达 PSR 状态 | 仅适用于 PSR;接收器应至少支持修订版 2,最多 8 个有效字节,以传输 PSR 状态和 CRC 值。 | DPCD 170 |
接收器应正确报告与 PSR 相关的状态 | 接收器应公开状态,例如链路 CRC 错误、RFB 存储错误、接收器设备自我刷新状态、最大重新同步帧计数、接收器中最后一次实际同步延迟以及最后一次接收 PSR SDP。 | DPCD 2008h、2009h、200Ah 应反映接收器的正确状态。 |
当 GPU1 作为 OS DxgkddiSettimingsfromvidpn 调用的一部分执行链路训练时,驱动程序不知道 GPU0 使用的 DP 通道和带宽设置,因此必须执行完整的链路训练序列,而不是执行快速链路训练。 OS 不会在 GPU 之间协商任何 PSR 策略,因此面板需要支持 GPU 将使用的所有 PSR 版本和功能。 例如,面板必须支持这样一种情况:GPU0 可能使用 PSR2 并具有某些设定的功能,然后 PSR1 将用于切换,接着 GPU1 可能使用 PSR2 并具有不同的功能。
确保面板在切换期间保持在PSR状态
当 GPU1 在面板上设置模式时,不能保证 GPU1 在面板处于 PSR 状态时设置的链接属性会与 PSR 进入模式相匹配。 例如,刷新速率或活动大小可能会发生变化。 如今,DP 或其他行业标准都没有办法让面板报告它可以在改变链接属性时将面板保持在 PSR 中。 从长远来看,我们希望在 DP 规范中加入这一功能。 在此之前,对于支持 ADS 的系统,OEM 必须选择一个 TCon/面板/多路复用器组合,当链路属性(如刷新率、活动大小)在 EDID 中显示的任意两个组合之间发生变化时,该组合仍能保持 PSR 状态。 此方法可确保 PSR 在切换期间保持活动状态。
为了使 ADS HLK 测试能够验证在切换过程中 PSR 是否被保持,我们希望找到一种方法,让操作系统知道在 GPU1 测试模式后 PSR 是否未处于活动状态。 面临的一个挑战是,如果面板不能支持整个链接训练的 PSR,它将如何应对还没有明确规定。
作为 DxgkDdiDisplayMuxPostSwitchToPhase2 的一部分,驱动程序会在 pWasPanelInPSR 中返回一个布尔值,以告知 OS 是否检测到面板不在 PSR 中。
内部面板的 EDID
为了让 OS 在选择显示模式和拓扑结构(连接不同的监视器)时提供预期的行为,两个 GPU 都必须报告内部显示的 EDID/DisplayId。 这一要求确保了存储显示模式和拓扑的 CCD 数据库无论由哪个 GPU 控制内部显示,都能选择相同的设置。
驱动程序向 OS 报告的 EDID 应该是使用 aux 命令从面板上查询到的 EDID,而不进行任何修改。
目前,在启动报告内部面板的驱动程序时,OS 将调用 DxgkDdiQueryAdapterInfo(DXGKQAITYPE_INTEGRATED_DISPLAY_DESCRIPTOR2)。 如果多路复用器从集成目标切换,驱动程序就无法与面板通信,也就无法收集所需的信息。 解决方案是,当启动驱动程序并将多路复用器从其内部目标切换开时,OS 会延迟调用 DxgkDdiQueryAdapterInfo(DXGKQAITYPE_INTEGRATED_DISPLAY_DESCRIPTOR2),直到多路复用器首次切换到内部目标。