在搭载英特尔显卡的 Ubuntu 19.04 上,Chrome 出现屏幕撕裂

在搭载英特尔显卡的 Ubuntu 19.04 上,Chrome 出现屏幕撕裂

我使用双显示器,其中一个旋转

xrandr --output HDMI-1 --rotate left

我在使用 Google Chrome 时遇到屏幕撕裂问题(安装于Chrome 的 PPA(不是 Chromium)在两个显示器上都存在,但在旋转的显示器上更明显。我在其他程序中似乎没有遇到屏幕撕裂的情况,例如 gnome-terminal。

我的 GPU 是

$ inxi -G
Graphics:  Device-1: Intel UHD Graphics 630 driver: i915 v: kernel 
           Display: x11 server: X.Org 1.20.4 driver: i915 resolution: 1920x1080~60Hz, 1920x1080~60Hz 
           OpenGL: renderer: Mesa DRI Intel UHD Graphics 630 (Coffeelake 3x8 GT2) v: 4.5 Mesa 19.0.8 

我尝试添加

Section "Device"
   Identifier  "Intel Graphics"
   Driver      "intel"
   Option      "TripleBuffer" "true"
   Option      "TearFree"     "true"
   Option      "DRI"          "false"
EndSection

按照/etc/X11/xorg.conf.d/20-intel-graphics.conf这个问题,但问题是该命令使我的双显示器充当一个显示器(两个显示器上都显示相同的图片)。我尝试删除TripleBufferDRI行,但没有任何变化。此副作用在此 Arch Linux 论坛主题可能的解决方案是添加i915.semaphores=1内核启动参数。我不知道这个 7 年前的建议是否仍然有用,如果我处于可以摆弄内核启动参数的情况,我可能一开始就不会使用 Ubuntu。

我也尝试chrome://flags/#ignore-gpu-blacklist按照这个问题,但似乎什么都没有改变chrome://gpu/

我使用 i3 作为窗口管理器。我使用 X,而不是 Wayland(i3 不支持 Wayland)。

答案1

我在使用最新的 Kubuntu 和适用于 Intel GPU 的 i915 驱动程序 19.10 时也遇到了同样的问题。

我认为通过以下设置就可以让它工作: 设置

--

操作系统:Kubuntu 19.10 KDE Plasma 版本:5.16.5 KDE Frameworks 版本:5.62.0 Qt 版本:5.12.4 内核版本:5.3.2-050302-generic

答案2

我可以修复 i7 Ubuntu 20.04,只需修改我的/etc/X11/xorg.conf文件以包含 DRI3 即可,如下所示,我发现这里

Section "Module"
    Load "dri3"
EndSection

Section "Device"
    Identifier  "Intel Graphics"
    Driver      "intel"
    Option      "DRI"   "3"
EndSection

答案3

您说这种撕裂现象只出现在 i3 窗口管理器中。由于您似乎没有使用任何合成器管理器,因此您应该尝试为您的显卡启用垂直同步。

你需要做的第一件事就是禁用轮询在 drm_kms_helper 驱动程序中。创建新文件/etc/modprobe.d/drm_kms_helper.conf(或编辑现有文件/etc/modprobe.d/modprobe.conf),内容如下:

options drm_kms_helper poll=0

必须为您的卡正确配置 i915 模块。内核模式设置必须允许。要配置i915内核模块,请将以下几行添加到/etc/modprobe.d/i915.conf

options i915 modeset=1                  # Allow KMS driver to load
options i915 enable_psr=0               # Panel self refresh
options i915 preliminary_hw_support=1   # This option must be enabled for Skylake cards and later
options i915 semaphores=1               # Try this if you have issues with TearFree Xorg option and SNA aceel method
options i915 fastboot=1                 # Keep uefi/BIOS provided screen on loading
options i915 enable_rc6=7 enable_fbc=1 lvds_downclock=1 # Power saving features
#options i915 enable_guc=3              # Force loading firmware (No effect in latest kernels)

配置你的 xorg-server:

sudo gedit /etc/X11/xorg.conf.d/20-intel.conf

插入以下行:

Section "Device"
  Identifier  "Intel Graphics"
  Driver      "intel"
  Option      "AccelMethod" "sna"
  Option      "DRI" "3"
  Option      "TearFree" "true"
EndSection

默认情况下,Intel xorg 驱动程序启用 V-sync。

您还应该使用chrome://flags命令行开关配置 Google Chrome。以下开关可能会有用:

--in-process-gpu
--enable-gpu-vsync
--disable-font-subpixel-positioning
--enable-accelerated-mjpeg-decode
--enable-accelerated-video
--enable-gpu-memory-buffer-compositor-resources
--enable-gpu-memory-buffer-video-frames
--enable-gpu-rasterization
--enable-smooth-scrolling
--enable-zero-copy
--force-gpu-rasterization
--ignore-gpu-blacklist
--enable-features=CheckerImaging

您可以将此开关添加到/etc/{chromium,chromium-browser,google-chrome}/default

重新启动并查看是否解决了您的问题。希望这对您有所帮助!

答案4

当没有屏幕撕裂时,gnome-terminal这并不奇怪。它不需要高性能图形处理来保持相对静态的显示,没有视频或图形动画。

另一个问答,多位用户() 报告称英特尔显卡会导致 Ubuntu >= 16.10 出现严重的屏幕撕裂/闪烁。经常提出的“解决方案”是添加启动参数i915.enable_rc6=0

不过,请阅读其他问答中的警告,因为这会导致温度升高,因为英特尔 GPU 不会休眠太多。由于 GPU 不会休眠太多,因此这些人的屏幕撕裂现象已经消失。要添加启动参数,请使用:

sudo -H gedit /etc/default/grub

找到 行并将"quiet splash"其更改为"quiet splash i195.enable_rc6-0"

保存文件,退出gedit并运行sudo update-grub。然后重新启动并测试更改。


在里面专门针对英特尔显卡的 Arch Linux 页面你会发现其他建议:

  • 创建 / 编辑/etc/modprobe.d/i915.conf并插入options i915 enable_fbc=1
  • 创建 / 编辑/etc/modprobe.d/i915.conf并插入options i915 fastboot=1

这些只是一些提示,您应该访问该页面并仔细阅读。


我在另一个已删除的答案中提到comptonUbuntu Bionic(18.04)手册页描述。虽然在 Ubuntu 中可用,但答案被否决,因为引用来自 Linux Mint 社区中的非 Ubuntu 用户。由于您使用的是 I3 窗口管理器(不是 Ubuntu 的一部分),因此您可能会成功使用它。

相关内容