解决方案:Intel显卡在Ubuntu 16.10/17.04/17.10中导致屏幕撕裂/闪烁问题,进而引起过度风扇使用。

几个用户(onetwothreefourfive)报告说,在Ubuntu >= 16.10上,英特尔显卡会导致严重的屏幕撕裂/闪烁问题。经常提出的“解决方案”是添加启动参数i915.enable_rc6=0
然而,尽管修复了屏幕闪烁/撕裂问题,这个“解决方案”导致风扇持续运转(从不关闭)且速度过高。我发帖问是否有人知道如何解决风扇问题(或者,另一种情况下,解决闪烁/撕裂问题但不引起风扇问题)。
为了完整起见,我正在使用内核4.11.0-10-generic在Lenovo 910(Kabylake)上运行Ubuntu 16.10/17.04/17.10,并且我的显卡是VGA兼容控制器:Intel Corporation Device 5916(版本02)。
注意:我刚刚确认这个问题在最新的内核(v4.13.0-041300rc4)中仍然存在。将内核恢复到16.04 LTS内核可以修复屏幕撕裂问题,但那只是一个权宜之计。我最近(2017年9月3日)尝试了默认的Debian安装,使用内核4.9.0-3-amd64,没有屏幕闪烁(尽管屏幕旋转了90度)。

注意2:使用引导参数i915.enable_rc6=0会导致系统在长时间使用后出现退化。我尝试观看了3个小时的流媒体视频,机器开始变得迟钝和无响应。

注意3:我提交了一个错误报告

注意4:这可能与问题无关,但当使用指针设备(触摸板)或键盘时,屏幕撕裂完全停止。


当你使用sudo update initramfs -u更新内核时,是否会收到这些警告信息?我有一台Ivy Bridge的电脑,在使用Xorg选项以外的其他方法解决了屏幕撕裂的问题。 - WinEunuuchs2Unix
不,当我执行sudo update-initramfs -u时,我没有收到那些消息。但这很可能是因为我手动从Intel(https://01.org/linuxgraphics/downloads/firmware)安装了这些驱动程序。你愿意分享你使用的选项吗?我会尝试一下。 - Rsync
我当时没有记录它们,而且已经过去一年了,所以记不清每一个步骤。我主要是从Arch Linux获取修复问题的信息。此外,我还使用了Thermald、Powerclamp和TLP来控制风扇和CPU频率。这是我几周前写的一个综合列表 - WinEunuuchs2Unix
你正在运行哪个版本?Ubuntu 16.10/17.04/17.10? - fosslinux
我每个都运行了大约一周。现在我只是在那个分区上使用17.10版本,而我的日常驱动程序则是16.04版本,直到这个问题得到解决。 - Rsync
很明显,i915.enable_rc6=0会导致功耗增加和一些性能下降。那么问题是什么呢?不要使用它。 - Pilot6
@Pilot6 - 同意!我想确保每个人都知道这个问题,因为在许多网站上发布了“i915.enable_rc6 = 0”作为解决方案,即使它并不是。 话虽如此,我还没有看到任何可行的解决方案。 - Rsync
我使用了一台联想IdeaPad Z510,并且不得不使用i915.enable_psr=0命令来禁用英特尔的页面屏幕刷新功能。在16.04版本下对我有效,但是我没有在任何更新的Ubuntu版本上使用过这台特定的机器。 - richbl
谢谢 @richbl。我也尝试过那个方法,但不幸的是它没有起作用。 - Rsync
3个回答

正确的解决方案是创建以下文件:

/etc/X11/xorg.conf.d/20-intel-graphics.conf

具有以下内容:
Section "Device"
   Identifier  "Intel Graphics"
   Driver      "intel"
   Option      "TripleBuffer" "true"
   Option      "TearFree"     "true"
   Option      "DRI"          "false"
EndSection
不要在/usr/share/X11/xorg.conf.d目录下创建这些文件。该目录是用于存放X的示例配置文件,而不是实际加载的文件。

1我不得不将DRI设置为“true”,否则某些使用OpenGL的应用程序将无法运行。可能是由于在编译过程中启用了DRI导致的。尽管启用了这些其他选项,但当它与这些选项一起启用时,我仍然可以获得无撕裂滚动和视频播放。不确定为什么建议在答案中禁用它。 - Lars Haugseth
1这个修复了我在Dell XPS 13 9350上使用纵向外接显示器时出现的持续对角撕裂问题,但它导致屏幕重绘非常缓慢(约10帧每秒?)并且gnome-shell的CPU使用率极高。 - Nick T
4请注意,在Ubuntu中,默认情况下不存在目录**/etc/X11/xorg.conf.d。您需要使用sudo mkdir /etc/X11/xorg.conf.d**命令来创建它。 - Kat Amsterdam
非常感谢!现在我的视频没有闪烁了。 - Brian Cannard
@Fabby,你确定你的编辑是正确的吗?这份文档说:“位于 /usr/lib/X11/xorg.conf.d/ 目录下以 *.conf 结尾的文件(注意:将在 10.10 版本更改为 /usr/share/X11/xorg.conf.d)会在 X 启动时先于读取 xorg.conf 文件被自动加载”。不过,这份文档自2014年以来就没有更新了。 - user677955
我创建了这个文件,但现在我的双显示器表现为单一显示器(我看到相同的图像两次)。 - user677955
我将此应用于我的Latitude 7480和Lenovo T480s工作电脑。最初我使用的是搭载Ubuntu 18.04的戴尔电脑。应用了这个设置后,感觉变得更好了,但显示屏偶尔会冻结,直到主板损坏后我才购买了联想电脑。由于它基本上使用相同的显卡,我尝试了这个修复方法,但仍然偶尔会冻结。后来我撤销了修复,自那以后就没有遇到过问题了。 - AlexStack
对我也起作用了,解决了我在使用Intel NUC(NUC8i5BEH)尝试旋转一个显示器时遇到的问题。在横向模式下没有任何问题,但是当一个显示器被旋转时出现了严重的问题 - 屏幕撕裂,以及桌面的错误渲染:火狐浏览器的一部分显示在错误的显示器上,对话框在鼠标悬停时会移动位置 - 基本上无法使用。不过这个方法解决了所有问题,所以谢谢! - YellowShark

我用以下步骤来解决屏幕闪烁问题,
sudo gedit /usr/share/X11/xorg.conf.d/20-intel_flicker_fix.conf

粘贴这些行,
Section "Device"
  Identifier  "Intel Graphics"
  Driver      "intel"
  Option      "TripleBuffer" "true"
  Option      "TearFree"     "true"
EndSection

保存,重新启动。

如果仍然无法解决问题,您可以使用它进行删除

sudo rm /usr/share/X11/xorg.conf.d/20-intel_flicker_fix.conf

感谢您的建议,Sirajus先生。不幸的是,那没有产生任何效果。 - Rsync
@MBWD,你是否按照提到的设置了“Option "DRI" "false"”?这一项在你列出的修复方法中没有提到。 - Sirajus Salekin
是的,我按照你之前提供的解决方案进行了实施(使用sudo gedit /usr/share/X11/xorg.conf.d/20-intel_flicker_fix.conf命令,并粘贴了相关代码,包括DRI)。但是,这并没有起作用。还有其他什么事情我需要做吗? - Rsync
在运行Ubuntu 18.04的情况下,如果我添加类似于这个的任何配置文件,在每次登录时都会出现一个关于找不到输出的错误,输出显示为"未断开连接"但没有模式或其他内容。会话似乎已经正确配置,尽管错误对话框警告可能存在问题,但每次登录都出现错误明显意味着有些地方出错了。 - dgw
@dgw,你可以尝试在每行Option前面加上#来注释掉它们。然后重新启动,测试错误是否消失。 - Sirajus Salekin
当我启用这些选项时,CPU使用率大幅增加,视频播放变得卡顿。 - Eugene Mala
@EugeneMala,嗨,你能试试不包含“Option DRI false”这一行吗? - Sirajus Salekin
@sirajus-salekin,Option "TearFree" "true" 是我在我的Core i5集成显卡上避免屏幕闪烁和保持CPU使用率低的唯一必要选项。 - Eugene Mala
1选项 "TripleBuffer" "true" 会导致高 CPU 负载,并使 VideosChromeFirefox 的视频播放变慢。 - Eugene Mala
@EugeneMala,我很高兴你找到了最适合你的解决方案。TripleBuffer用于确保应用程序以与刷新率相同的速度运行,这会增加相当多的内存消耗并稍微降低性能,但可以确保我们不会出现卡顿的播放。我想知道为什么你在这方面遇到了麻烦,我的4GB i3似乎运行良好。无论如何,这里有一些其他设置可能会对你有帮助。 - Sirajus Salekin
我正在使用3个显示器,其中一个以“纵向”旋转,可能是这个原因导致在使用"TripleBuffer" "true"时出现了显著的减速。 - Eugene Mala

我不确定是什么解决了这个问题。起初我以为是安装了运行内核版本4.13.0-16的Ubuntu 17.10,但后来我回退到一个17.04的备份,使用了4.10.0-37-generic内核也能正常运行。

我猜测实际上解决问题的是升级了联想固件,根据我的了解,只能通过Windows进行升级。我有一次意外地启动到了Windows分区,并经历了升级过程。但我认为那一定是修复问题的关键。

注意:在17.10发布之前,我也通过编译并使用Kali Linux内核来“解决”这个问题。


1有没有可能你在使用Wayland?当我切换到Wayland后,几乎所有的问题都消失了,而且不需要任何配置。 - Sirajus Salekin