一句话结论:Arch + Intel 核显闪屏,多半是垂直同步(VSYNC)导致的画面撕裂。在 KDE 里把垂直同步设为“从不”,或在家目录添加
~/.drirc(vblank_mode=0)即可解决;我最后用的是后者。
问题:什么时候会闪屏
在 Arch 安装过程中,屏幕会随机闪屏(机器是 Intel 处理器,我的 AMD 笔记本上没有这种情况)。另外我先把 sshd 最小化配置好远程装系统,进到 SDDM / KDE 桌面后一切正常,所以问题只集中在下面两种场景:
- 在没有进入桌面之前的终端跑开机输出界面时会闪
- 在使用 OBS 时录屏会闪
原因
Intel 核显在默认垂直同步(VSYNC)行为下,画面容易产生撕裂,在终端开机输出和 OBS 录屏这类场景最明显。
KDE 里的快速尝试
在网上看到一条 2020 年的视频,UP 主给了两个方案:
- 在 KDE 设置 -> 桌面效果面板中开启“显示 FPS”选项。这个会在屏幕右上角常驻 FPS 统计,不影响点击但影响美观,我直接 pass。
- 在 KDE 设置 -> 显示器设置 -> 垂直同步里选择“从不”。
遇到的情况:没有“从不”选项
我的垂直同步下拉里没有“从不”,尝试其它选项也全部无效。
最终方案:~/.drirc
在 Arch Wiki 找到正解:在家目录添加配置文件 ~/.drirc,把 vblank_mode 设为 0,即禁用垂直同步。
<device screen="0" driver="dri2">
<application name="Default">
<option name="vblank_mode" value="0"/>
</application>
</device>
效果
OBS 和 Arch 原生终端闪屏的问题都解决了。本来是冲着修 OBS 来的,结果顺带把老问题也一并修好了。
备注
- 有说法是卸载
xf86-video-intel就会恢复。个人觉得没必要,又不是不能用,改配置文件就好。 - 本文记录于 2021 年,操作基于当时的 Arch / KDE 环境,具体细节可能随版本变化。
相关阅读
- 在 Manjaro 上折腾 SMB 服务 —— 另一篇 Linux 折腾记录
- 看看全部技术笔记
- Shiina Labs 开源项目