问题描述
我这里有联想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启动器,我执行了以下操作:
-
打开Dash并键入’chrome’。
-
将Chrome图标拖动到任何文件夹(我使用的是我的主文件夹)
-
右键单击我的主文件夹中的图标,然后单击“属性”
-
在命令框中,在”%U”之后添加开关。
-
将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
部分。