我读到,为了避免屏幕撕裂,我应该在 nvidia 设置中启用“强制全合成管道”选项[¹]。但是该选项似乎在我的系统中不可用。
我认为 nvidia-settings 可能被阻止了,但根据下面的博客文章,该选项应该在此版本中可用:
我是否遗漏了什么?
谢谢
答案1
上述解决方案不适用于 Ubuntu 20.04,但问题似乎仍然存在。但可行的解决方案非常简单:
sudo nano /lib/modprobe.d/nvidia-kms.conf
sudo update-initramfs -u
reboot
原文内容nvidia-kms.conf是:
# This file was generated by nvidia-prime
# Set value to 1 to enable modesetting
options nvidia-drm modeset=0
如上所述,modeset=0 必须更改为 modeset=1。
我很奇怪为什么从一开始就没有启用此功能。
答案2
我理解你的痛苦。我总是不知道如何解决我的笔记本电脑上同时配备 Nvidia dGPU(专用 GPU)和 iGPU(集成 GPU)的撕裂问题。
我大胆猜测一下,你的系统是一个 PRIME 系统,在这种情况下,合成管道选项将不可用(即使将它们手动添加到你的 xorg.conf 文件中也不起作用 - 它可能只会让你的屏幕变暗)。
我认为你正在寻找(再次,只是猜测)是PRIME 同步- 这是 Nvidia 同步屏幕的新方法。
尝试这个:
/etc/modprobe.d
在您的目录中创建一个名为 的文件zz-nvidia-tearing.conf
。- 添加以下行:(
options nvidia_387_drm modeset=1
将“387”更改为您的驱动程序版本)。 - 从终端:sudo update-initramfs -u
- 重启。
- 检查 PRIME 同步是否已启用:
xrandr --prop | less
你应该看到类似这样的内容:
Screen 0: minimum 8 x 8, current 3840 x 1080, maximum 16384 x 16384
eDP-1-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
EDID:
00ffffffffffff0030e4210500000000
001a0104951f1178ea9d35945c558f29
1e505400000001010101010101010101
0101010101012e3680a070381f403020
350035ae1000001a542b80a070381f40
3020350035ae1000001a000000fe004c
4720446973706c61790a2020000000fe
004c503134305746362d535042360075
PRIME Synchronization: 1
最重要的是最后一行。如果出于某种原因,您的 PRIME 同步仍未启用(即设置为“1”),请尝试编辑最后一行/etc/modprobe.d/nvidia-graphics-drivers.conf
- 将其更改为:
options nvidia_387_drm modeset=1
(再次,显然将“387”更改为您安装的 Nvidia 驱动程序的版本)。
不要忘记运行:
sudo update-initramfs -u
对 中的任何文件进行任何更改后/etc/modprobe.d
。
如果这仍然不起作用(只要您使用 Nvidia 驱动程序 370 或更高版本,它应该可以起作用),那么您可以尝试将以下内容添加到您GRUB_CMDLINE_LINUX_DEFAULT
的/etc/default/grub
:
nvidia-drm.modeset=1
我不知道你的 GRUB_CMDLINE_LINUX_DEFAULT 是什么样子的,但是在你添加上面的行之后,它可能看起来像这样:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvidia-drm.modeset=1"
我发现 Nvidia 默认不启用 PRIME Sync 的硬件支持功能,这真是令人惊讶。给出的原因是它与 SLI 配合得不好 - 但有多少 Linux 用户真正使用 SLI?我还没有看到。
如果您还有其他问题,请直接提问,我会尽力解答。
祝你好运!
答案3
在最新的(截至撰写本文时)Nvidia Binary Drivers 430.26 中有这样的选项(当然,我在这里假设驱动程序已正确安装并正常工作):
但如果由于某种原因它没有显示出来,还有另一种方法可以通过xorg.conf
文件启用它。
在我的系统中它看起来是这样的:
编辑/etc/X11/xorg.conf
文件并将以下代码添加到屏幕部分(请注意,您的部分中会有更多选项):
Section "Screen"
Option "metamodes" "3440x1440_75 +0+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On};"
EndSection
保存然后重新启动系统。
另一种可能的方法是使用nvidia-settings
:
$ nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceCompositionPipeline=On, ForceFullCompositionPipeline=On }"
答案4
不,您只需要将 X 配置保存到某个地方...然后下次重启时只会继续组合设置...因此成功单击“保存到 X 配置文件”...就是这样。