跳转到内容

WDDM、HAGS 与 MPO:为什么卡顿不是帧率问题

核验于 3 分钟阅读

Windows 显示栈如何合成画面、硬件加速 GPU 调度与多平面叠加改变了什么,以及怎么验证差别。

测试环境Pro (26H2) · 版本号 26300.9457 · x64
E1
版本号
26300.9457
版本
Pro (26H2)
架构
x64
支持
文档(E1)
证据
E1官方文档
核验日期
2026-10-29
页面类型
概念

三层决定你看到什么,只有一层是游戏:

  1. WDDM——Windows 显示驱动模型:OS 如何调度 GPU 工作与管理显存。
  2. 合成——DWM 把所有窗口合成为最终画面。
  3. 呈现——翻转、叠加还是拷贝:这一帧怎么送到面板。

“卡顿”通常意味着帧节奏坏了,而不是平均帧率下降。平均 120 帧但每隔几秒来一帧 80ms,体感比稳定 90 帧更差。

概念 是什么 改变了什么
WDDM 3.x 驱动模型版本 调度、显存管理、功能可用性
HAGS(硬件加速 GPU 调度) 让 GPU 自己管理命令队列 降低 CPU 开销,改变节奏行为
MPO(多平面叠加) 显示硬件直接合成图层,而不是 DWM 拷贝 省电、降延迟,但也是闪烁/卡顿 bug 来源

HAGS 与 MPO 是栈的特性,不是“开了就更好”的开关。两者都出现过特定驱动下的 bug,关掉就恢复正常。

有 MPO 时,显示控制器可以把视频或游戏窗口直接叠加,而不必让 DWM 把一切合成到一个表面。这省电、降延迟——同时意味着驱动的叠加路径进入了关键路径。

被归因于 MPO 的现象:

  • 视频开始播放时闪一下或短暂黑帧;
  • 只在浏览器窗口播放视频时卡;
  • 光标或覆盖层撕裂;
  • 多显示器与单显示器表现不同。

标准诊断方法是在驱动注册表里关闭 MPO(显示适配器类下的厂商键),看现象是否消失。这是诊断,不是永久修复——你会失去省电收益。

终端窗口
Get-CimInstance Win32_VideoController | Select-Object Name,DriverVersion,DriverDate,VideoModeDescription
dxdiag /t $env:TEMP\dxdiag.txt
Get-Counter '\GPU Engine(*)\Utilization Percentage' -MaxSamples 2

dxdiag 会报告驱动模型与各适配器的功能级别。计数器能看出是否有某个进程占满了拷贝引擎——那是合成路径在做不该它做的事的典型信号。

要谈卡顿就要帧时间,不是平均值:

  • 帧间隔(present interval),不是 fps;
  • 99 分位或最差帧时间,不是均值;
  • 同一场景、同一设置、同一驱动,多跑几次。

Windows 自带工具在这里很弱。显卡厂商的覆盖层与帧时间捕获工具能给逐帧数据;只显示平均值的工具分不清流畅和卡顿。

现象 先试
只在窗口内播放视频时卡 关 MPO 验证,再查驱动更新
快显卡但 CPU 占用高 开 HAGS(驱动支持的话)
切窗口时黑闪 MPO/驱动,不是 Windows 设置
只有一个显示器卡 线材/链路带宽,再看 MPO
帧率一直低 GPU 占用、温度、功耗墙——不是栈

一次只改一项,并记下来改了什么。栈里的变量足够多,同时改两项等于什么都没学到。

E1。栈行为有微软文档依据。实验室是虚拟显示适配器,没有 MPO 或 HAGS 路径,未复现卡顿,也不发布帧时间数据。

来源