双屏 DPI 缩放不一致引发 DWM 重采样振铃(GIF 蓝黄斑纹)
2026/11/2...大约 5 分钟
双屏 DPI 缩放不一致引发 DWM 重采样振铃 — GIF 蓝黄斑纹排查
核心结论
在 per-monitor DPI(每显示器独立缩放)开启时,两屏缩放比不一致(内屏 125% / 副屏 100%)会让 DWM 在跨屏合成时对内容做不同比例的重采样;对 GIF 这类低分辨率、低色深索引色位图,采样核在硬色度边缘产生过冲(overshoot)/ 振铃(ringing),蓝黄通道过冲叠加即表现为蓝黄相间斑纹。
一句话:不是面板、线缆、色域或 HDR 的问题,是缩放比不一致下的重采样伪影。 把副屏缩放改成与内屏一致(125%)即消失,改回 100% 即复现。
现象与关键判据
| 观察 | 含义 |
|---|---|
| 副屏(HDMI 外接)播放特定 GIF 出现蓝黄色斑纹,拖到内屏后减弱直至消失 | 与两屏渲染/合成路径差异强相关 |
| 对副屏截图,截图本身仍带斑纹(把截图拖到内屏看也一样) | 异常已被编码进像素数据 → 排除物理层(面板 / 排线 / 线缆 / 接口信号) |
「截图也带斑纹」是整条排查链路里最省时间的一步:它把问题从「显示器坏了」直接锁到「渲染/合成层」。
分层排除法(实际执行的 6 层)
| 层 | 检查内容 | 数据 | 结论 |
|---|---|---|---|
| 1 | 物理层 | 截图自带斑纹 | 排除面板/线缆/接口 |
| 2 | 输出色彩路径(像素格式 / 像素时钟 / 位深 / 压缩) | 两屏均 32bpp RGB(PixelFormat=21, ColorBasis=2);内屏 346.5 MHz(1080p144)、副屏 148.5 MHz(标准 1080p60 CEA);副屏无 YCbCr 4:2:0 触发条件 | 带宽与格式均正常,排除压缩/降采样 |
| 3 | HDR / WCG 误判 | 两屏 EDID 均无 CTA-861-HDR 静态元数据;Features 位仅 sRGB/RGB444/YCbCr444;无 AdvColor 注册项、无每显示器 ICC 绑定 | 系统未启用高级色彩路径,排除 |
| 4 | NVIDIA 颜色覆盖 | 驱动 Class 键、Session/VolatileSettings、HKCU\Software\NVIDIA Corporation 均无 ColorFormat/Range/Depth/DigitalVibrance 覆盖项 | 驱动处于默认 RGB 全范围路径,排除 |
| 5 | EDID 能力声明 | 副屏仅声明 sRGB/RGB444/YCbCr444,无深色/无 HDR/无广色域,与内屏同属标准色域(位深字段 5 = 8bit+FRC vs 0 = 默认 8bit,非实际输出差异) | 排除能力声明冲突 |
| 6 | DPI 缩放差异 | 内屏 125%(120 DPI)、副屏 100%(96 DPI);Win8DpiScaling = 0(未强制统一缩放)、DpiScalingVer = 4096 (0x1000)(启用新版 per-monitor DPI) | 根因方向——时间与位置上与现象强相关 |
显式核对项里的经典陷阱:如果 Win8DpiScaling 被设为 1(「所有显示器使用同一缩放」),跨屏不会触发重采样路径切换,这条根因就不成立——因此必须查注册表确认 per-monitor DPI 真的生效,而不是看设置界面文字。
机理
- 窗口跨屏移动时,DWM 需在两种不同缩放比例之间做跨屏合成。
- GIF 是低分辨率、低色深的索引色位图,色阶少,颜色过渡边缘本就是硬色度边界。
- DWM 对这种位图按不同比例重采样时,采样核在硬色度边缘产生过冲 / 振铃,蓝通道与黄通道的过冲叠加 → 蓝黄斑纹。
- GIF 的低分辨率/低色深是放大器,不是根因;真正触发条件是两屏缩放不一致 + 跨屏合成路径变更。
验证实验(A/B/A)
| 实验 | 操作 | 结果 |
|---|---|---|
| 1 | 副屏缩放改为 125%(与内屏统一) | 斑纹消失 |
| 2 | 保持 125%,跨屏往复拖动 GIF 窗口 | 斑纹不再出现 |
| 3(回归) | 副屏缩放还原 100% | 斑纹复现 |
三步闭环证明因果,而不是「改完看起来好了」。
处置与复用
- 规避:两屏缩放统一(本例副屏 100% → 125%),代价极小。
- 回归风险:副屏还原 100% 后斑纹必然复现,属预期行为,不要当新故障重查。
- 同类症状的优先级:跨屏显示同一内容出现彩色过冲/振铃、且内容为低分辨率低色深位图(GIF、缩略图)时,先查两屏 DPI 缩放是否一致,再考虑色域 / 线缆 / 面板等物理因素。
- 反向推论:只有当内容跨屏移动才出问题、截图也带伪影、且物理层排除干净时,才轮到「合成路径」这个方向;三者缺一就先别往这里查。
相关
- 同属「浏览器/渲染层的视觉异常」但根因在构建期:Vue CSS fit-content 被 cssnano 去重
- 同为环境侧劣化被误判为软件故障:WiFi 5GHz DFS 雷达避让致图片加载慢
- 源笔记摘要:sources/PostMortem.md
