Ubuntu 18.04 上的屏幕撕裂

Eri*_*ris 4 nvidia laptop tearing 18.04

我最近切换到 Ubuntu 18.04,遇到了很多问题,但设法解决了大部分问题。我正在使用带有 i5-7200U 和 NVidia GTX950M 的笔记本电脑。我已经安装了最新的驱动程序,wine 游戏运行得很好。

问题是:我不知道系统中使用的是哪种图形卡,是集成的还是专用的,并且在浏览器上滚动时移动东西时有很多屏幕撕裂等。

有没有办法强制启用 vsync 或以其他方式修复撕裂?

编辑:根据大卫的要求,这是第一个命令的结果:https : //paste.ubuntu.com/p/JXZXcBn56T/

至于日志:https : //paste.ubuntu.com/p/rtMyC88sRg/

小智 7

尝试此处的说明。快速修复效果很好。这是白天和黑夜。我所要做的就是将命令复制并粘贴到终端中,但永久不起作用。我无法制作 xorg.conf 文件。

https://www.cmscritic.com/how-to-fix-nvidia-screen-tearing-in-xfce-mate-kde-lxde-and-others/#/

如果您正在运行 Xrce、LXDE、MATE 或其他未运行合成器(如 Compton)的桌面环境,并且您有一个相当新的 NVIDIA 卡,您可能会竭尽全力摆脱正在经历的可怕的屏幕撕裂. 当您在 Linux 下运行专有 NVIDIA 驱动程序并拥有上述(或任何非复合)桌面环境之一时,通常会发生这种屏幕撕裂。对我们所有人来说幸运的是,有一个修复程序,我将向您介绍如何消除令人讨厌的 NVIDIA 屏幕撕裂。

我不打算详细说明为什么会发生这种情况,因为坦率地说,我不知道,而且我对如何让它消失更感兴趣。

对我来说,在 Firefox 中来回移动窗口或滚动时,撕裂是非常明显的。那为什么还要受苦呢?让我们摆脱它,好吗?

要测试并查看修复程序是否适合您,请打开终端并执行以下命令(只需从此处复制并粘贴):

nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceCompositionPipeline = On }"
Run Code Online (Sandbox Code Playgroud)

您的屏幕可能会闪烁一秒钟,然后您应该会看到显着的改善。测试 Firefox 和移动窗口。修复对你有用吗?如果是这样,我们需要让它永久化,因为这只是暂时的修复,但别担心,我会告诉你如何做。如果它不适合您,您可以尝试将行稍微更改为:

nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
Run Code Online (Sandbox Code Playgroud)

请注意,在上面的行中,我们只是 ForceCompositionPipelineForeFullCompositionPipeline.

一旦您确定这确实解决了您的问题,我们需要确保它是永久性的。如果它不起作用或引起问题,只需重新启动即可返回正常桌面。

现在我们已经确定我们的修复有效,可以一劳永逸地解决屏幕撕裂问题,现在是时候坚持更改了。首先,我们需要确保/etc/X11 目录中存在 xorg.conf 。要找出答案,请在终端中键入以下命令并按Enter

ls /etc/X11
Run Code Online (Sandbox Code Playgroud)

如果您看到如下所列的 xorg.conf 文件,请继续。

$ ls /etc/X11  
app-defaults xinit Xreset Xsession.d  
默认显示管理器 xkb Xreset.d Xsession.options  
字体 xorg.conf Xresources xsm  
rgb.txt xorg.conf.backup Xsession

如果没有,请跳过下一部分,继续阅读;如果你找不到 /etc/X11/xorg.conf ,我已经在下面进一步介绍了你该怎么做

对于列出了 xorg.conf 的用户,在同一个终端窗口中,通过键入以下命令并按 来备份文件 Enter

cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup
Run Code Online (Sandbox Code Playgroud)

现在使用您最喜欢的文本编辑器(我自己是 nano 文本编辑器的粉丝)以 root 身份打开文件并输入以下命令:

sudo nano /etc/X11/xorg.conf
Run Code Online (Sandbox Code Playgroud)

这将打开您的编辑器,然后您需要根据屏幕部分下的哪一行在下面添加一行,因此它最终看起来与此类似:

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option "metamodes" "nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection
Run Code Online (Sandbox Code Playgroud)

因此,如果我们测试了上面的两个 nvidia-settings 行中,带有 ForceFullCompositionPipeline 的那一行有效,请使用上面的示例,如果 ForceCompositionPipeline 有效,只需在上面的示例中使用它即可。

你们中的一些人可能已经有一个选项“元模式” /etc/X11/xorg.conf,就像下面的双显示器设置示例一样:

Option "metamodes" "VGA-0: 1152x864_60 +0+0, DVI-D-0: 1680x1050_60 +0+864"
Run Code Online (Sandbox Code Playgroud)

如果是这种情况,只需更改该行,使其看起来像这样:

Option "metamodes" "VGA-0: 1152x864_60 +0+0, DVI-D-0: 1680x1050_60 +0+864 { ForceCompositionPipeline = On }"
Run Code Online (Sandbox Code Playgroud)

重新启动,你的撕裂应该消失了!

如果找不到怎么办 /etc/X11/xorg.conf

现在,对于像我一样没有安装 /etc/X11/xorg.conf(例如,大多数人运行 Ubuntu)的人,您可能会惊慌地认为您将无法应用此修复程序。不用担心,我遇到了同样的问题,我不会让你悬着的。

在我的主机上,我运行的是 Linux Mint 18,但我怀疑这应该适用于任何发行版。我没有 xorg.conf,所以我所做的是启动 nvidia-settings 工具并通过转到 X 服务器显示配置部分并在文件名下输入 /etc/X11/xorg.conf(取消选中合并with existing 如果它被选中,因为这仅在您拥有一个的情况下有用),然后单击Save to X Configuration File

在此处输入图片说明
保存到 X 配置文件

这应该为您生成一个,然后您可以使用上述步骤进行修改。


dou*_*oug 7

对于 NVIDIA Optimus,您需要使用主要同步。

  1. 在终端中创建/etc/modprobe.d/zz-nvidia-modeset.conf文件:

    sudo nano /etc/modprobe.d/zz-nvidia-modeset.conf
    
    Run Code Online (Sandbox Code Playgroud)
  2. 插入这一行:

    options nvidia_drm modeset=1
    
    Run Code Online (Sandbox Code Playgroud)
  3. Ctrl+ O, Enter, Ctrl+X保存文件并退出。

  4. 运行此命令:

    sudo update-initramfs -u
    
    Run Code Online (Sandbox Code Playgroud)
  5. 重启。

要检查重启后是否一切正常,请运行以下命令:

xrandr --verbose
Run Code Online (Sandbox Code Playgroud)

向上滚动并查看顶部结果区域。你应该看到:

PRIME Synchronization: 1 
        supported: 0, 1
Run Code Online (Sandbox Code Playgroud)

看这个例子:

xrandr 结果