我的 Acer Nitro 5 笔记本上安装了 Ubuntu 18.04,使用的是 NVIDIA 驱动程序元包 nvidia-driver-450。我观察到通过 HDMI 电缆连接到笔记本的外接显示器出现大量屏幕撕裂。我可以在视频中以及拖动窗口时观察到这种情况。但是,笔记本显示器上没有屏幕撕裂,只有外接显示器上出现屏幕撕裂。
我已经尝试过options nvidia-drm modeset=1
解决方案,它只解决了笔记本显示器的屏幕撕裂问题,但没有解决外接显示器的屏幕撕裂问题。
我也尝试在 NVIDIA X 服务器设置中设置“强制组合管道”,它解决了这个问题,但是当我重新启动系统时,笔记本电脑显示器不再被识别(屏幕变黑,并且未在 xrandr 中列出)。这似乎是因为笔记本电脑显示器是 PRIME 显示器,如下面的链接所示,它无法处理 X 服务器生成的 X 配置文件。
有人能帮帮我吗?我唯一还没有尝试过的是使用 X X.Org Server (xserver-xorg-video-nouveau),但我不想使用它,因为我有一台 GTX 1650,而且我知道 Nouveau 不是那么好。
答案1
因此,借助这,这和这帖子中,我找到了一个解决方法。由于在 NVIDIA X Server 中使用“Force Composition Pipeline”可以停止屏幕撕裂,但会导致笔记本电脑显示器无法被识别,因此解决方法是在每次启动后运行 Force Composition Pipeline 命令。
我刚刚添加了命令bash -c "sleep 10 && nvidia-settings --assign CurrentMetaMode=\"$(xrandr | sed -nr '/(\S+) connected (primary )?([0-9]+x[0-9]+)(\+\S+).*/{ s//\1: \3 \4 { ForceCompositionPipeline = On }, /; H}; ${ g; s/\n//g; s/, $//; p }')\""
(位于这个帖子) 在启动命令中,现在第二台显示器没有屏幕撕裂,关闭笔记本电脑后也没有出现任何问题。
答案2
我让 nvidia-settings 生成一个 conf 文件。该文件被复制到:/etc/X11/xorg.conf.d/90-dual.conf
。
您可能需要在配置中设置两个显示器。请参阅这里举个例子。请注意,我已经配置了
Option "Xinerama" "0"
在“ServerLayout”部分
以下内容可能不适用于您的显示器,但它可能给出它应该是什么样子的大概内容。复制该文件后,您需要重新启动...
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
Option "Xinerama" "0"
EndSection
Section "Files"
EndSection
Section "Module"
Load "dbe"
Load "extmod"
Load "type1"
Load "freetype"
Load "glx"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor0"
VendorName "Unknown"
ModelName "<your monitor here>"
HorizSync 30.0 - 83.0
VertRefresh 55.0 - 76.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce <your version here>"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
Option "Stereo" "0"
Option "nvidiaXineramaInfoOrder" "DFP-0"
Option "metamodes" "DVI-I-1: nvidia-auto-select +0+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}, DVI-D-0: nvidia-auto-select +1920+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}"
Option "SLI" "Off"
Option "MultiGPU" "Off"
Option "BaseMosaic" "off"
SubSection "Display"
Depth 24
EndSubSection
EndSection