返回博客

Arch 英特尔核显关闭垂直同步

linuxarchintel-graphicsobsvsync

一句话结论:Arch + Intel 核显闪屏,多半是垂直同步(VSYNC)导致的画面撕裂。在 KDE 里把垂直同步设为“从不”,或在家目录添加 ~/.drircvblank_mode=0)即可解决;我最后用的是后者。

问题:什么时候会闪屏

在 Arch 安装过程中,屏幕会随机闪屏(机器是 Intel 处理器,我的 AMD 笔记本上没有这种情况)。另外我先把 sshd 最小化配置好远程装系统,进到 SDDM / KDE 桌面后一切正常,所以问题只集中在下面两种场景:

  1. 在没有进入桌面之前的终端跑开机输出界面时会闪
  2. 在使用 OBS 时录屏会闪

原因

Intel 核显在默认垂直同步(VSYNC)行为下,画面容易产生撕裂,在终端开机输出和 OBS 录屏这类场景最明显。

KDE 里的快速尝试

在网上看到一条 2020 年的视频,UP 主给了两个方案:

  1. 在 KDE 设置 -> 桌面效果面板中开启“显示 FPS”选项。这个会在屏幕右上角常驻 FPS 统计,不影响点击但影响美观,我直接 pass。
  2. 在 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 环境,具体细节可能随版本变化。

相关阅读

常见问题

Arch 上 Intel 核显为什么会闪屏?

通常是垂直同步(VSYNC)默认行为导致的画面撕裂,在终端开机输出和 OBS 录屏时最容易出现。可在 KDE 显示设置里把垂直同步改为“从不”,或通过 ~/.drirc 配置 vblank_mode=0。

KDE 显示设置里没有“从不”选项怎么办?

如果垂直同步下拉里没有“从不”,可以试其它选项;都不行就手动写 ~/.drirc,按文章里的 device 配置填入 vblank_mode=0 即可关闭 VSYNC。

关闭垂直同步会不会有副作用?

关闭后画面可能出现撕裂(这正是 VSYNC 本来要防止的)。对日常使用和录屏通常影响不大;如果在意,可以只对指定应用(如 OBS)生效。

需要卸载 xf86-video-intel 吗?

不必要。改 ~/.drirc 就能解决,卸载驱动反而可能影响其它功能;能用就不用动。