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

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

WDDM 3.0 之前的翻转队列模型

许多新式显示控制器支持对按顺序显示的多个帧排队的能力。 从 WDDM 2.1 开始,OS 支持将在下一个 VSync 中显示的多个未完成的翻转覆盖请求。 显示微型端口驱动程序 (KMD) 通过 DXGK_DRIVERCAPS 中的 MaxQueuedMultiPlaneOverlayFlipVSync 值来表示这种支持。 此功能对于减少高帧速率游戏方案中的延迟非常有用,在这种方案中,多个帧以间隔 0 依次呈现,目的是只显示最近的帧。

在视频播放方案中,要按顺序显示的多个未来帧的内容是预先已知的,并且可以排队到 GPU。 这种提前排队允许 CPU 在处理排队帧时进入低功率状态,从而节省大量电源。 但是,在 WDDM 3.0 之前,OS 没有机制提交需要在屏幕上保留至少一个 VSync 间隔的帧,而无需进一步的 CPU 干预。 基本硬件翻转队列一节介绍了一种解决方案,该解决方案使 CPU 能够进入低功耗状态,并将排队的帧处理卸载到 GPU。

在 WDDM 3.0 之前的游戏方案中,GPU 完成将场景呈现到交换链后缓冲区后,会有一个到 CPU 的往返,以便将请求提交以将帧内容呈现到屏幕。 对于接近 VSync 的繁重 GPU 工作负荷,此往返可能会导致帧延迟并错过预期目标时间,从而导致可观察的帧故障。 “高级硬件翻转队列”部分引入了一种机制,用于避免此 CPU 往返,并将已完成的帧呈现给屏幕且延迟较低。 高级硬件翻转队列要求同时具有基本硬件翻转队列和 GPU 硬件计划阶段 2 功能。

基本硬件翻转队列

下图演示了呈现三个帧的情况,每个帧在屏幕上停留一个 VSync 间隔

 

示意图中的填充图案显示了 Dxgkrnl 软件翻转队列处理和应用程序线程必须唤醒并执行 CPU 工作的时间。 在每个 VSync 上,显示控制器必须向 OS 发出完成翻转的 CPU 通知,并且 OS 必须提交下一个翻转请求。 应用程序还必须在每个 VSync 上唤醒,并查询当前统计信息,以最终了解三帧中的最后一帧何时显示。

从 WDDM 3.0 开始,提供了可以向显示控制器队列提交多个未来帧的硬件翻转队列 DDI。 如前所述,此机制允许 GPU 的 CPU 和部分在显示控制器处理多个排队帧时转换到较低电源状态。 此转换可提高支持硬件的视频播放方案的电源效率。

下图说明了建议的体系结构。

借助硬件翻转队列方法,应用程序和 Dxgkrnl CPU 组件在 v2 和 v4 时间之间的两个 VSync 间隔内处于完全空闲状态,从而使 CPU 能够进入低功耗状态。 只有当应用程序请求等待的帧 N+2 完成时,CPU 才会得到通知。

高级硬件翻转队列

在 WDDM 3.0 之前的游戏方案中,GPU 完成将场景呈现到交换链后缓冲区后,会有一个到 CPU 的往返,以便将请求提交以将帧内容呈现到屏幕。 下图显示了此方案。

如果呈现完成得离 VSync 太近,这种往返的代价可能会导致帧错过目标,如下图所示。

 

一些显示器控制器本身支持等待条件,允许显示在 GPU 完成呈现帧时提交翻转请求,而无需 CPU 往返。 由于硬件翻转队列可以将已完成的帧 N 提交到没有 CPU 往返的显示器,因此它可能会避免错过的帧,如下图所示:


http://www.kler.cn/a/589848.html

相关文章:

  • WPF窗口读取、显示、修改、另存excel文件——CAD c#二次开发
  • wordpress导入mysql数据库文件的方法及注意事项
  • Python----计算机视觉处理(Opencv:图片颜色识别:RGB颜色空间,HSV颜色空间,掩膜)
  • 基于CPLD+MCU的3U机箱模拟量采样板(AIO-I),主要功能由模拟量采集,模拟量输出,PWM采集和输出
  • Qt SQL-1
  • 洛谷 P1182 数列分段 Section II 二分详细讲解
  • vue3vue-elementPlus-admin框架中form组件的upload写法
  • 人工智能辅助 3D 建模:Claude + Blender MCP 体验
  • Java高频面试之集合-13
  • vllm-openai多服务器集群部署AI模型
  • 365天之第P10周:Pytorch实现车牌识别
  • [HelloCTF]PHPinclude-labs超详细WP-Level 0
  • 本地部署 RAGFlow - 修改默认端口
  • 【npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree】
  • 论文阅读:2023-arxiv Can AI-Generated Text be Reliably Detected?
  • 重构版:JavaScript 的 new 操作符——从“黑箱仪式”到“亲手造物”的认知跃迁
  • 大语言模型入门文献推荐
  • 多模态模型Orpheus,基于病理图像的乳腺癌复发风险智能评估工具|顶刊解读·25-03-17
  • Oracle 查询表占用空间(表大小)的方法
  • 设计模式-组件协作