当前位置: 首页>>技术问答>>正文


Ubuntu 16.04 Skylake第六代屏幕闪烁

, ,

问题描述

我这里有联想ThinkPad t460s。它是NVMe PCI SSD版本。 CPU是带有Intel HD 520的i7 6600U(Skylake第6代)。

大约一个月前(2016年3月开始),我安装了Ubuntu GNOME 16.04 Beta 1.除了已知问题(触摸板物理按钮问题,盖子关闭问题)之外,其他一切似乎都运行良好。

这时,我使用的是内核版本4.4.0-7。几天后,有几个内核更新(4.4.0-12,4.4.0-14和4.4.0-15)。突然,我正在经历屏幕闪烁。这真的很难看,我再也不能工作了。所以,我确实将内核版本降级到4.4.0-7并将其置于保持状态(通过apt-mark保持)。屏幕闪烁消失了。现在,我在浏览时有一些图形工件(firefox,chromium)。我想通过禁用”smooth scrolling”选项我设法摆脱了这些。

还有其他人遇到过类似的问题吗?或者有没有人已经找到解决这个问题的方法?

PS:几天前我正在安装Ubuntu GNOME 16.04 Final Beta并尝试使用内核版本4.4.0-16,它解决了触摸板的物理按钮问题。但不幸的是,屏幕闪烁没有解决。所以,我再次回到内核版本4.4.0-7,如上所述。

最佳解决方案

@brianjcohen带领我朝着正确的方向前进。关于 chrome 的Bug报告就该问题的一些背景进行了一些很好的讨论,但显然它有点像英特尔驱动程序选项的x.org问题。如果您愿意,可以在此处引用它:

https://bugs.chromium.org/p/chromium/issues/detail?id=606152#c63

要解决此问题,请使用以下命令以root身份在/usr/share/X11/xorg.conf.d/20-intel.conf上创建或编辑该文件:

Section "Device"
    Identifier "Intel Graphics"
    Driver "intel"
    Option "AccelMethod" "sna"
    Option "TearFree" "true"
    Option "DRI" "3"
EndSection
  • 从讨论中,AccelMethod默认应该是sna,但显然没有明确地设置它可能导致X崩溃。 sna肯定比将其降级为uxa更快。

  • TearFree有助于防止视频渲染中的撕裂

  • DRI是关于驱动程序如何呈现的方法,我认为这是关键选项。你可以在这里找到一大堆:https://en.wikipedia.org/wiki/Direct_Rendering_Infrastructure#DRI3

  • 您还可以阅读man 4 intel的手册页

次佳解决方案

更新:昨天,我刚刚安装了Ubuntu GNOME 16.04。它附带了最新的内核版本:4.4.0-18。它似乎已经为我解决了屏幕闪烁问题(至少到现在为止)。另外,触摸板的物理按钮按预期工作(即滚动和拖放工作)。 Web浏览器中似乎有一些Screen Tearing(firefox和chromium)。但它确实无法与之前的屏幕闪烁问题相提并论。在firefox中,我设法通过禁用”smooth scrolling”选项来摆脱屏幕撕裂。不幸的是,相同的程序似乎对 chrome 没有帮助。

第三种解决方案

我在新的联想X1 Carbon运行库存16.04(4.4.0-33内核,Skylake GT2显卡)上遇到了这个问题。我尝试了上面的两个答案(basicdays和Mike O’Connell’s),但都没有奏效。前者导致图形显著缓慢;后者根本无法初始化图形。

最后,我通过提到的另一种方法here解决了这个问题,即:我删除了有问题的Intel-specific图形驱动程序。到目前为止一切似乎都很好 – Chrome中没有闪烁,而其他应用程序中的一些小问题似乎也消失了。

简而言之,运行它然后重新启动,一切都应该是好的:

sudo apt-get purge xserver-xorg-video-intel

第四种方案

尝试:

将英特尔驱动程序从SNA切换到UXA对我有所帮助(在戴尔Skylake这里)。

Section "Device"
   Identifier  "Intel Graphics"
   Driver      "intel"
   Option      "AccelMethod"  "uxa"
EndSection

通过添加到/usr/share/X11/xorg.conf.d中的文件将其添加到xorg配置中

第五种方案

来自reddit的用户报告说,英特尔DRM分支(http://kernel.ubuntu.com/~kernel-ppa/mainline/drm-intel-nightly/current/)的内核4.6.0-994-generic修复了他的屏幕闪烁。

第六种方案

我不是100%肯定这是其他人都有的同样问题。但我遇到的问题(联想T460s,Skylake运行16.04)是因为我会在谷歌浏览器中遇到single-frame闪烁和偶尔撕裂,特别是如果页面上有视频或动画效果。这个问题在Firefox中无法重现。我能够通过使用–disable-gpu-driver-bug-workarounds –enable-native-gpu-memory-buffers启动Chrome来解决此问题,然后通过转到chrome://flags将所有实验标志重置为默认值。我认为,解释是默认情况下(我不确定这是否是Ubuntu-specific)正如标志所暗示的那样,已启用已知GPU错误的解决方法,我认为这些解决方法不再是必需的,而且是实际上适得其反。

更多信息:https://bugs.chromium.org/p/chromium/issues/detail?id=606152

要将这些启动开关添加到我的Chrome启动器,我执行了以下操作:

  1. 打开Dash并键入’chrome’。

  2. 将Chrome图标拖动到任何文件夹(我使用的是我的主文件夹)

  3. 右键单击我的主文件夹中的图标,然后单击“属性”

  4. 在命令框中,在”%U”之后添加开关。

  5. 将Chrome图标拖动到我的启动器以将其锁定在那里。

编辑:我正在运行4.4.0-22.39,我还没有尝试过任何其他内核版本。

第七种方案

我确实找到了以下内核启动参数,因为它们在尝试了一些noted Xorg fixes(或者)之后会影响屏幕闪烁:

  • 禁用RC6睡眠模式:i915.enable_rc6=0 OR

  • 禁用面板自我刷新i915.enable_psr=0

更多信息here

要添加这些,请使用创建和编辑/etc/modprobe.d/i915.conf

options i915.preliminary_hw_support=1 i915.enable_psr=0

或尝试

options i915.preliminary_hw_support=1 i915.enable_rc6=0

然后我重新启动以使用这些新模块选项,并通过睡眠/唤醒周期测试闪烁。没有人似乎有所帮助。至于16.10,可能不需要i915.preliminary_hw_support=1部分。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7031.html,未经允许,请勿转载。