当前位置: 首页 > news >正文

Windows 图形显示驱动开发-WDDM 3.0功能- 硬件翻转队列(六)

将 Present 请求映射到硬件翻转队列时间戳

在特定适配器上启用硬件翻转队列时,时间戳会附带所有翻转调用。 换句话说,KMD 不需要处理旧和新的 DxgkDdiSetVidPnSourceAddress 语义的组合。

OS 会自动将基于间隔的现有 Present API 请求转换为对 KMD 的基于时间戳的翻转调用。 以下各节讨论了各种情况,以及如何映射到 KMD 接收的标志、持续时间和时间戳的组合。

撕裂和非字节翻转语义

启用硬件翻转队列时,撕裂翻转的语义在概念上是相同的。 达到 TargetFlipTime 后,KMD 会提交翻转以显示,同时仍遵循 FlipImmediate、FlipImmediateNoTearing 和 FlipOnNextVSync 等标志。 换句话说,KMD 表现得好像 OS 在 TargetFlipTime 以相同的翻转标志和参数向它提交了翻转。

例如,如果将 FlipOnNextVSync 设置为 1,并且 TargetFlipTime 位于帧中间,则翻转应仅显示在下一个 VSync 上。

FlipOverwrite 支持和硬件翻转队列

硬件翻转队列是翻转覆盖功能的严格超集,由 DXGK_DRIVERCAPS 中的 MaxQueuedMultiPlaneOverlayFlipVSync 值控制。

因此,如果驱动程序通过将 MaxHwQueuedFlips 设置为大于 1 的值选择进入硬件翻转队列,则 OS 将忽略 MaxQueuedMultiPlaneOverlayFlipVSync 值。

TargetFlipTime 过期的多次翻转
当给定 MPO 平面有多个排队翻转且 TargetFlipTime 已过期时,硬件显示队列必须选择最近排队的过期翻转并将其提交显示。 其余过期的翻转应被视为已取消,其相应的翻转队列日志项应包含 DXGK_HWFLIPQUEUE_TIMESTAMP_CANCELLED 作为 PresentTimestamp 值。

Duration 和 TargetFlipTime 之间的交互

当屏幕上显示此结构中指定的翻转时,DXGKARG_SETVIDPNSOURCEADDRESSWITHMULTIPLANEOVERLAY3 结构中的 Duration 参数应生效。 它为 VidPnSourceId 在所有平面上指定的输出指定新的所需显示刷新率行为。 在 WDDM 3.1 和 Windows Server 2022 版本中,为了简化不支持排队自定义 持续时间 更改的硬件的驱动程序实现,OS 仅在完成以前的翻转请求后提交具有新的 Duration 参数的翻转请求。

将 Present 间隔映射到 TargetFlipTime

刷新率固定时的映射间隔

若要保留现有 Present 间隔语义,OS 必须使用 Present 间隔和刷新率计算目标翻转时间。 但是,将目标翻转时间完全设置为预期的 VSync 时间,翻转应命中屏幕会导致频繁出现故障。 这些故障是由于实际 VSync 计时偏移一点时错过的 VSync。 为了防止出现故障,OS 从计算的目标翻转时间中减去一半的 VSync 间隔。

以下是将 Present 间隔映射到目标翻转时间的简化公式:

TargetFlipTime = PreviousFlipStartVSyncTime + (PreviousFlipPresentInterval * FixedRefreshRate) - (FixedRefreshRate / 2)

存在虚拟刷新率 WDDM 2.9 功能时的映射间隔

虚拟刷新速率功能可能会暂时将显示刷新率提升到当前刷新速率的整数倍数(即 24 Hz 可以提升到 144 Hz 或 192 Hz)。 对于能够支持此提升的设备,上一节中的公式被修改为使用当前刷新率的最快倍数:

TargetFlipTime = PreviousFlipStartVSyncTime + (PreviousFlipPresentInterval * FixedRefreshRate) - (FastestRefreshRate / 2)

将刷新率更改为非ultiple 时的映射间隔

当刷新速率更改为当前刷新速率的非多余时(例如,从 24 Hz 更改为 60 Hz),OS 需要检查队列翻转以查看其计算目标时间是否仍然对新的刷新率有效。 如果需要更改目标翻转时间,OS 将取消排队翻转,并使用新计算的目标翻转时间重新排队。

相关文章:

  • 联想拯救者触摸板会每次开机都自动关闭、联想笔记本触摸板关闭、笔记本电脑触摸板自动关闭的解决方法
  • 演员马晓琳正式加入创星演员出道计划,开启演艺事业新篇章
  • 基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统
  • @maptalks/gl-layers中的VectorTileLayer的setStyle属性的全部line配置
  • 群体智能优化算法-模拟退火优化算法(Simulated Annealing, SA,含Matlab源代码)
  • 前端Tailwind CSS面试题及参考答案
  • 实时时钟芯片HYM1381的使用(51单片机)
  • 在K8S中挂载 Secret 到 Pod
  • 【C#知识点详解】ExcelDataReader介绍
  • day3 微机运算基础
  • 【LINUX操作系统】 动静态库的链接原理
  • 指令系统2(Load/Store 指令)
  • 打靶笔记:利用站点Install功能连接Kali本地数据库
  • 传输层协议 — TCP协议与套接字
  • Practical Data Science with SAP Machine Learning Techniques for Enterprise Data
  • KMP-子串匹配算法-关键点理解
  • 蓝桥杯 对联【算法赛】
  • 仙剑奇侠传1隐藏宝箱
  • 【小派项目书】sprintboot + vue 语言实现
  • 单机游戏的工作逻辑
  • 湖南4个县市区被确定为野生蘑菇中毒高风险区:中毒尚无特效解毒药
  • 东部沿海大省浙江,为何盯上内河航运?
  • 关税互降后的外贸企业:之前暂停的订单加紧发货,后续订单考验沟通谈判能力
  • 夜读丨母亲为燕子打开家门
  • 知名猎头公司创始人兼首席执行官庄华因突发疾病逝世,享年62岁
  • 新剧|《藏海传》定档,《折腰》《人生若如初见》今日开播