如何在16.04中使用Nvidia GTX 960 M解决屏幕撕裂问题?

我的16.04安装存在相当严重的屏幕撕裂问题。例如,如果我拖动一个窗口横向移动屏幕,它会分裂,底部会比顶部滞后很多,并且在观看视频时,屏幕底部会比顶部晚几帧。 我尝试了以下问题中提供的解决方案,但不幸的是都没有起到作用: - [如何消除14.04和XBMC上的屏幕撕裂?](link1) - [Ubuntu中使用Nvidia/Intel图形出现屏幕撕裂](link2) 我的显卡是Nvidia GeForce GTX 960M,我正在使用来自nvidia-361的NVIDIA二进制驱动程序-版本361.42。 这个问题在我运行15.10时也存在。

似乎什么都无法解决这个问题。只有切换到英特尔显卡,但那真的很糟糕。 - Riki137
@Riki137 如何切换回英特尔显卡? - user3728501
15.10/16.04发生的问题导致本地编辑无法正常工作,原因是由于一个所谓的mesa bug。所谓的修复方法是在使用nvidia驱动程序时切换到modesetting模式。tearfree选项无法与modesetting一起使用,并且无法切换到sna。可以通过修改ubuntu-drivers-common并调整unity greeter的休眠时间来解决这个问题以绕过mesa bug。但是我不会在这里发布作为答案,因为这不是100%干净的解决方案(可能在UF中有一个帖子)。xserver中有一个修复方法,可能会在明年出现在Ubuntu中。(或者使用14.04) - doug
1我也遇到了使用 Nvidia Quadro M1200 出现的问题,即使更新了驱动程序(版本为381.09),只有切换到英特尔 GPU 才能解决,就像下面 @qwr 的答案一样。 - Garrett
4个回答

在/g/上我找到了一个简单的解决方法。将这个命令添加到你的启动命令中即可。
nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
当然,如果您使用的是Nvidia驱动程序,这个方法是有效的。 编辑:对于多监视器设置,我建议使用Nvidia X服务器设置程序,进入X服务器显示配置,使用保存到X配置文件。现在找到/etc/X11/xorg.conf,并在每个监视器设置之后添加{ForceCompositionPipeline = On}。 此外,您还可以执行sudo apt install compton,并将compton添加到启动命令中。 编辑:我不知道这种情况已经持续多久了,但是NVIDIA X Server设置程序nvidia-settings具有以图形方式进行ForceFullCompositionPipeline的选项。在“X Server Display Configuration”菜单中,点击“Advanced...”,勾选“Force Full Composition Pipeline”,然后点击“Save to X Configuration File”。如果您没有预定义的配置文件路径,请在文件路径文本框中键入/etc/X11/xorg.conf并保存。

1谢谢,这个方法确实有效,但它也导致了我的其中一个显示器变黑。 - nana
所以,如果发生这种情况,请继续在“显示器”中启用该显示器。 - nana
What do you mean by /g/? - Garrett
3对于其他新手,请记住你可以在终端中测试这个(在将其添加到启动脚本并重新登录之前)以查看是否有效。不幸的是,对我来说这没有起作用(Nvidia Quadro M1200,nVidia版本381.09)。 - Garrett
对我也没用。我使用的是GF940M显卡。看起来M系列芯片或启用集成显卡的电脑无法做到这一点。 - dat tutbrus
@Garrett,那是4chan上的/g/板块。 - Managor

到目前为止,我尝试过的唯一一个解决方案虽然不是很好,但总算有点作用:使用英特尔GPU而不是Nvidia GPU。这样可以减少大部分屏幕撕裂现象。 在Nvidia X Server设置(nvidia-settings)中,转到PRIME配置文件并选择“Intel(省电模式)”。或者使用sudo prime-select intel命令。 我正在使用nvidia-370,这是当前官方发布的版本,配备Nvidia 940MX。讽刺的是,他们的驱动程序似乎仍然比英特尔的驱动程序差。好的一面是,我的电池续航时间几乎翻了一番,所以这是一个相当不错的折衷。 更新:在内核4.7.0上使用默认的英特尔驱动程序,完全没有屏幕撕裂问题。nvidia-387与grub中的nomodeset似乎也可以正常工作,但亮度调节被禁用,所以我暂时不使用它。

我已经遇到这个问题很久了,现在我只安装了nouveau驱动程序。尝试一下这篇帖子中的解决方案,我很想知道它是否有效:http://ubuntuforums.org/showthread.php?t=2235382 也许这个也可以?但对我来说没有用... https://psyq123.wordpress.com/2015/09/20/another-way-to-fix-tearing-and-vsync-issues-using-the-nvidia-driver/ 好的,费了些功夫,但我按照以下步骤修复了它: 打开命令行界面并执行以下操作:
sudo nvidia-xconfig

然后:

sudo nvidia-settings
Xserver 的设置中调整屏幕分辨率和刷新率(我将我的设置为 1920x1200 @60hz),并将其保存到 xorg.conf 文件中。 然后执行以下操作:
sudo nano /etc/X11/xorg.conf
编辑设备部分如下:
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 650"
Option "RegistryDwords" "PerfLevelSrc=0x2222"
Option "TripleBuffer" "True"
EndSection

这将将显卡设置为性能模式并启用三重缓冲。

nvidia-settings/OpenGL 中设置:

Sync to Vblank
Allow Flipping
Use Conformant Texture Clamping
保存您的配置并重新启动X服务器。

3我在NVIDIA设置中找不到更改刷新率的选项,也找不到设置同步到垂直空白、允许翻转或使用符合纹理夹紧的选项。更改我的xorg.conf也没有帮助,可能是因为我有多个“设备”部分。还是谢谢您的回复! - Gilly
真的很令人沮丧的问题... 更多相关信息在这里:https://www.youtube.com/watch?v=-55y5sgHcbo (对我也不起作用) - draoi
很不幸,对我也没有起作用。目前我只能使用英特尔图形,并希望在更新中修复此问题。似乎有许多人受到了类似的问题的影响。 - Gilly
“Vblank Allow Flipping Use Conformant Texture Clamping”这个选项在哪里? - user3728501
我不知道,看起来如果那个选项曾经存在的话,现在已经消失了。至少从通过驱动管理器安装的NVIDIA驱动程序中是这样。也许你可以尝试从NVIDIA官网安装NVIDIA驱动程序,但这样做会有损系统的风险。 - draoi
使用sudo来运行图形应用程序不是一个好的做法,对吗?gksudo才是正确的方式,不是吗? - Jaroslav Záruba

这可能有点晚了,但是我真诚地建议你切换到XFCE4或类似的非合成桌面环境。至少在我的情况下(联想Y580,opensuseLeap 42.1 + bumblebee),这就是我摆脱屏幕撕裂和火狐浏览器滚动缓慢的方法。祝好!

2解决问题和绕过问题是两回事。但很高兴你在这里分享你的经验。欢迎来到AskUbuntu! - mook765
谢谢你的建议 - 即使是XFCE也无法解决我的屏幕撕裂问题。我想我的笔记本可能只是被诅咒了。但希望这个解决方法能帮到其他人。 - Gilly