我的屏幕撕裂现象很严重,我不知道该如何解决。我很想完全改用 Ubuntu,但这种撕裂现象实在太烦人了。它只存在于基于 Ubuntu 的发行版中(包括 element OS)。在 Manjaro(Arch fork)上,它不会出现撕裂现象。
PC 配置:主板:Aorus Pro Wifi z390 CPU:Intel i7 9700k RAM:32GB GPU:Nvidia 1060 6GB DisplayPort 输出连接到显示器的 HDMI
显示器报告刷新率为 75hz,Ubuntu 显示器设置报告刷新率为 74.97(可以更改为 60hz,但没有帮助)。
答案1
正如评论中所述,我发布了答案。
要解决撕裂问题,请添加以下命令以在启动时运行:
nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
为此,您可以搜索“启动应用程序首选项”,然后按添加按钮,将命令粘贴到命令字段(您可以在姓名部分),然后按添加。
或者您可以通过以下方式将该命令添加到您的 Crontab:
crontab -e
在终端上运行。- 如果这是您第一次打开 Crontab,系统会要求您选择一个编辑器,例如选择 nano(即数字 1),然后按Enter。
- 将以下行添加到文件末尾:
@reboot nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
- Ctrl使用+保存O并退出。
为了使更改生效,您应该重新启动计算机(两种方法均适用)。
如果执行上述步骤后撕裂问题仍然存在,请执行以下操作:
- 使用安装 compton
sudo apt install compton compton-conf
- 按照已经描述的方法之一添加
compton
在启动时运行。
如果屏幕仍然撕裂:
- 通过运行以下命令将 compton.conf 添加到 .config 文件夹:
touch ~/.config/compton.conf
- 添加
compton --config ~/.config/compton.conf
并重新启动计算机。
答案2
另一个答案中已经提到的技巧是选中 NVIDIA X 服务器设置中的“强制完整合成管道”选项。必须为每个显示器选中此选项。您可以使用命令nvidia-settings
启动配置 GUI 来执行此操作。如果看不到该选项,您必须先单击“高级...”按钮。选中复选框后,单击“应用”以保存设置。
但是,为了在启动时自动运行它,您需要一个命令行来在 crontab 或会话启动中设置这些选项。要获取此命令行,您只需在 GUI 中使用设置当前设置后查询当前设置即可nvidia-settings --query CurrentMetaMode
。对于我的双显示器设置,我得到了此输出(格式化以提高可读性):
Attribute 'CurrentMetaMode' (mypcname:0.0):
id=50, switchable=no, source=RandR ::
DPY-2: nvidia-auto-select @1920x1080 +0+0
{
ViewPortIn=1920x1080,
ViewPortOut=1920x1080+0+0,
ForceCompositionPipeline=On,
ForceFullCompositionPipeline=On
},
DPY-6: nvidia-auto-select @1920x1080 +1920+0
{
ViewPortIn=1920x1080,
ViewPortOut=1920x1080+0+0,
ForceCompositionPipeline=On,
ForceFullCompositionPipeline=On
}
第三行的所有内容都可以直接复制粘贴到
nvidia-settings --assign CurrentMetaMode=...
命令。因此,对于上面的例子,这将起作用:
nvidia-settings --assign CurrentMetaMode="
DPY-2: nvidia-auto-select @1920x1080 +0+0
{
ViewPortIn=1920x1080,
ViewPortOut=1920x1080+0+0,
ForceCompositionPipeline=On,
ForceFullCompositionPipeline=On
},
DPY-6: nvidia-auto-select @1920x1080 +1920+0
{
ViewPortIn=1920x1080,
ViewPortOut=1920x1080+0+0,
ForceCompositionPipeline=On,
ForceFullCompositionPipeline=On
}"
理论上,您可以手动编写这些设置。重要的是部分ForceFullCompositionPipeline=On
。但不幸的是,如果不指定显示器的排列,就无法设置该选项。而且手动确定所需的几何坐标有点麻烦。
答案3
对于 ThinkPad W540,我编写了以下脚本:
echo "options nvidia-drm modeset=1" > /etc/modprobe.d/zz-nvidia-modeset.conf
update-initramfs -u
apt-get purge nvidia-*
apt install nvidia-driver-450
首先,您必须运行 telinit 3,然后运行这些命令。重启后,您将获得正常工作的 nvidia 450 驱动程序,并且绝对不会出现撕裂。我在这台古老的笔记本电脑上运行了 Steam 上的 GTA5,并且可以在 1600x900 分辨率下播放(当然所有设置都设置为低)。我已经在 xubuntu 20.04 上检查过了。