Windows 图形显示驱动开发-WDDM 3.2-自动显示切换(六)

ops/2025/3/3 4:41:48/

显示切换后应保持不变的显示属性

显示切换不应更改以下任何显示属性:

  1. 桌面分辨率
  2. VidPn 路径(包括 VidPn 源模式、目标模式、缩放等)
  3. DPI
  4. 夜灯设置
  5. Gamma
  6. 显示拓扑
  7. HDR 开启/关闭
  8. SDR 白色等级
  9. 颜色配置文件
  10. 监视器的 OPM 目标类型
  11. 显示器亮度

匹配 GPU 上限,以实现无缝切换体验

为了给用户提供无缝的切换体验,显示器在切换后的配置应与切换前保持一致。 要实现这种行为,两个 GPU 都需要相同的 GPU 功能支持。 例如,如果一个 GPU 支持 HDR,而另一个 GPU 不支持,那么在一个 GPU 上启用 HDR 时进行切换就不会是无缝的。

下表列出了 GPU 显示功能和特性,并说明了两个 GPU 之间的对齐要求。

功能需要无缝支持的 GPU
HDR如果面板支持 HDR,那么两个 GPU 要么支持 fp16 HDR,要么不支持 HDR。
Hw 游标否。 OS 能适应不同的游标功能,而不会对用户造成明显的干扰。
MPO否。 OS 能适应不同的 MPO 功能,而不会对用户造成明显的干扰。
PSR两个 GPU 都需要支持这一功能。
EDID/DisplayID两个 GPU 必须公开相同的 EDID/DisplayId。
亮度上限两个 GPU 都必须支持相同的亮度接口和亮度上限。
亮度级别两个 GPU 需要公开相同的亮度级别和时间间隔。
解决方法两个 GPU 需要支持相同的源模式和目标分辨率。
刷新率参阅如果 GPU1 不支持 GPU0 运行面板时的刷新率
动态刷新率否。 OS 可适应不同的虚拟刷新率支持。
可变刷新率参阅如果 GPU1 不支持 GPU0 运行面板时的刷新率
如果 GPU1 不支持 GPU0 运行面板时的刷新率,则会出现问题

如果 GPU1 不支持与 GPU0 相同的模式,那么缩减模式很可能会存储在显示拓扑数据库中。 然后,当系统切换回 GPU0 时,将设置缩减模式。 例如,如果 GPU0 支持 120Hz,但 GPU1 只支持 60Hz,那么可能会发生以下序列:

  1. 系统配置为 GPU0 控制显示器,并且模式为 120Hz。
  2. 用户手动切换为 GPU1。
  3. 显示拓扑数据库为显示器存储了 120Hz,但 GPU1 不支持,因此 OS 选择了 60Hz。
  4. 60Hz 已设定并存储在显示拓扑数据库中。
  5. 用户手动切换回 GPU0。
  6. 显示拓扑数据库从数据库中读取 60Hz。

为提供最佳体验,OEM 应选择同时支持内部面板最大刷新率的 iGPU 和 dGPU。 如果这是不可能的,而一个 GPU 无法支持面板的最大刷新速率,那么能够支持面板刷新率的 GPU 必须支持 Windows 动态刷新率(DRR)功能,并且需要包含以下范围:

  • 其他 GPU 的最高刷新率。
  • 内部面板的最高刷新率。

例如,如果面板可支持 300Hz,而 iGPU 只能支持 60Hz,那么 dGPU 必须支持 VRR,频率范围至少为 60Hz 至 300Hz。

总之,ADS 对刷新率的要求是:

  1. 内部面板的最大刷新率由 iGPU 和 dGPU 支持。
  2. 支持内部面板最大刷新率的 GPU 必须支持从其他 GPU 所能支持的最高刷新率到内部面板最大刷新率范围的 DRR。

HDR 和 Dolby Vision

OS 在切换后,GPU1 的内部面板上会设置与切换前 GPU0 内部面板上相同的 HDR/Dolby 视觉状态。 用户应该不会注意到任何变化。

夜灯

夜灯是通过 WDDM gamma 或色彩矩阵接口(DDI)实现的。 在这两种情况下,OS 切换到 GPU1 后,设置的夜灯级别与切换前的 GPU0 相同。

颜色配置文件

OS 会在面板切换后应用与切换前相同的颜色配置文件。

显示故障检查屏幕

目前,OS 支持在非 POST 设备上显示 bug 检查屏幕。 当发生 bug 检查时,OS:

  • 不会切换多路复用器。
  • 使用当前操作系统的支持来显示故障检查屏幕。

在评估要显示 bug 检查的潜在目标时,OS 会跳过与切换到不同目标的多路复用器相连的任何目标。

在从 GPU0 分离的 HPD 被处理的那一小段时间里,来自 GPU1 的 HPD 尚未完全处理。 如果在此时间段内发生故障检测,用户将不会看到故障检测。 如果在 PSR 仍处于启用状态的一小段时间内发生 bug 检查,控制显示器的驱动程序应确保在 OS 调用DxgkDdiSystemDisplayEnable 时面板未处于 PSR 模式。

内容自适应亮度算法

在理想情况下,两个 GPU 使用的内容自适应算法应该产生相同的效果。 然而,相同的效果可能不会出现,用户在切换内部面板时可能会注意到差异。


http://www.ppmy.cn/ops/162391.html

相关文章

探究高空视频全景AR技术的实现原理

1. 引言 笔者认为现阶段AR技术的应用是还是比较坑爹的,大都是噱头多但是实用的成分少,拿出来做做DEMO是可以,但是难以在实际的项目中落地产生实际的经济价值。一方面是很难在业务上难以找到合适的应用场景(可能管线相关的项目算一…

UniApp 中封装 HTTP 请求与 Token 管理(附Demo)

目录 1. 基本知识2. Demo3. 拓展 1. 基本知识 从实战代码中学习,上述实战代码来源:芋道源码/yudao-mall-uniapp 该代码中,通过自定义 request 函数对 HTTP 请求进行了统一管理,并且结合了 Token 认证机制 请求封装原理&#xff…

C++ 设计模式 十二:责任链模式 (读书 现代c++设计模式)

责任链 文章目录 责任链场景指针链代理链总结**责任链模式的核心思想****何时需要使用责任链模式?****责任链模式解决的核心问题****与其他设计模式的协同使用****与其他模式的对比****经典应用场景****实现步骤与关键点****注意事项****总结** 今天是第十二种设计模…

基于Java+Jsp+SpringMVC漫威手办商城系统设计和实现

基于JavaJspSpringMVC漫威手办商城系统设计和实现 🍅 作者主页 网顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系统 &am…

基于C语言模拟一个简易的冯诺依曼式计算机CPU的工作(bupt计导)

1 高层数据结构设计 (包括:重要的数据常量定义、数据变量定义,即各模块要共享的数据类型和参数设计,相当于头文件内容,加文字描述) 1.1 全局常量/变量定义 int Memory[50000]; //内存,下标0-1638…

(IDE接入DeepSeek)简单了解DeepSeek接入辅助开发与本地部署建议

重点:IDE接入DeepSeek是否收费 收费! 本文章主要是为了给小白避雷,目前很多文章告诉大家怎么接入DeepSeek,但是并未告知大家是否收费。如果是想白嫖的,就可以不用去接入了。 一、引言 最近爆火的AI人工智能工具DeepSe…

Python使用总结之Python文本转语音引擎:pyttsx3完全指南

Python使用总结之Python文本转语音引擎:pyttsx3完全指南 在开发需要语音输出功能的应用时,文本转语音(TTS)技术是一个非常有用的工具。Python的pyttsx3库提供了一个简单且离线的方式来实现这一功能,无需依赖互联网连接或外部API。本文将详细…

SQL-Server链接服务器访问Oracle数据

SQL Server 链接服务器访问 Oracle 离线安装 .NET Framework 3.5 方法一:使用 NetFx3.cab 文件 下载 NetFx3.cab 文件,并将其放置在 Windows 10 系统盘的 C:Windows 文件夹中。 以管理员身份运行命令提示符,输入以下命令并回车: …