在使用Intel图形卡的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
根据this question,将其添加到/etc/X11/xorg.conf.d/20-intel-graphics.conf中,但问题是该命令使我的双显示器表现为一个显示器(两个显示器上显示相同的图片)。我尝试删除TripleBufferDRI行,但没有改变任何东西。这个副作用在this Arch Linux Forum thread中提到,并提供了一个可能的解决方案,即在内核引导参数中添加i915.semaphores=1。我不知道这个7年前的建议是否仍然适用,如果我能够调整内核引导参数,我可能一开始就不会使用Ubuntu。 我也尝试了根据this question的建议设置chrome://flags/#ignore-gpu-blacklist Chrome标志,但在chrome://gpu/中似乎没有任何变化。 我正在使用i3作为我的窗口管理器。我使用的是X,而不是Wayland(i3与Wayland不兼容)。

1对于i3,尝试运行Compton合成管理器。它应该能够消除任何撕裂现象。 - Michal Przybylowicz
1我在19.10版本上也遇到了这个问题。 - Sam Johnson
几个月后,我再次尝试解决这个问题,结果又回到了我自己在谷歌上提出的问题,却没有找到解决办法。 - user677955
@Michal 这不是这样的。 - user677955
你在Firefox中也遇到屏幕撕裂的问题吗? - WinEunuuchs2Unix
我今天意外重新启用了i3,看起来它已经修复了(Ubuntu 20.10)。 - user677955
4个回答

我成功修复了我的i7 Ubuntu 20.04,只需修改我的/etc/X11/xorg.conf文件,将DRI3添加如下,我在这里找到了here
Section "Module"
    Load "dri3"
EndSection

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

或许有帮助 https://cd-rw.org/t/fix-video-tearing-in-chrome-chromium-opera-browsers-linux/851 - nobody
这个解决了屏幕撕裂的问题,但是把我所有的显示器(现在有3个)变成了一个,它们都显示相同的图像。我该如何修复这个问题? - user677955
结果显示,输出被从HDMI-1改名为HDMI1(我不知道是因为这个原因还是其他原因)。我在我的~/.xinitrc文件中将xrandr命令更改为xrandr --output HDMI1 --left-of HDMI2等等,现在我又有了3个显示器。 - user677955
没关系,我的屏幕还是在撕裂,我想那只是一厢情愿的想法。 - user677955

我在19.10版本的最新Kubuntu和Intel GPU的i915驱动程序上遇到了同样的问题。 我认为通过以下设置,我成功解决了这个问题: settings

--

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

你说这种撕裂现象只出现在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服务器:
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文件中。 重启并查看是否解决了你的问题。希望能对你有所帮助!

gnome-terminal中没有屏幕撕裂时,这并不令人惊讶。它不需要高性能图形处理来保持其相对静态的显示,没有视频或图形动画。 从另一个问答中,有几位用户(, , , , )报告说在Ubuntu >= 16.10上使用Intel显卡会导致严重的屏幕撕裂/闪烁问题。常见的“解决方案”是添加启动参数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专门针对Intel显卡的页面上,你会找到其他建议:
  • 创建/编辑/etc/modprobe.d/i915.conf并插入options i915 enable_fbc=1
  • 创建/编辑/etc/modprobe.d/i915.conf并插入options i915 fastboot=1
这只是一些提示,你应该访问该页面并仔细阅读。
我在另一个被删除的回答中提到了《compton》, 在Ubuntu Bionic(18.04)man页面有详细描述。虽然它在Ubuntu上可用,但该答案因引用来自Linux Mint社区的非Ubuntu用户而被投票降级。由于您使用的是I3窗口管理器,它并不是Ubuntu的一部分,所以您可能会在其中取得成功。