系统环境:linux-zen 7.1.5-zen1-2-zen
WM:niri
昨天更新了新的wayland 1.26后niri出现了闪屏现象。怀疑过显示器,niri,显卡以及内核的问题。通过切换核显以及使用lts内核后发现问题存在,排除显卡以及内核问题。最终通过btrfs回滚解决问题。
排查后发现,昨天对arch进行更新后更新了wayland,可能是wayland 1.26在niri下存在渲染问题(尝试过在kde下使用,未出现问题),具体定位需要进一步确认。niri+arch近期谨慎滚动更新。
又进一步排查了一下,发现了一个可能与这个问题有关的信息。
linux-zen 7.1.6/7.1.7 和 linux-lts 6.18.43 都合入了同一个 AMD DCN page-flip 改动。这个改动存在一个已经确认的竞态条件:内核有可能在硬件真正完成 page flip 之前,就向合成器报告翻页已经完成。这样一来,合成器可能会提前复用一个仍然正在被扫描输出的 buffer,从而造成画面损坏。
上游的修复说明中也明确提到了这种 “display corruption”。该修复已经进入 7.1.8 和 6.18.44,但我出现问题时使用的几个内核版本都还没有包含这个修复。
所以目前来看,这个问题有可能实际上是 AMD DCN 相关的内核回归,而不是 Wayland 1.26 或 niri 本身引入的问题。之前正好在升级 Wayland 后出现,可能只是时间上比较巧合,让我一开始把两者联系在了一起。