Ubuntu 18.04 - 仅在外接显示器上出现屏幕撕裂

Ubuntu 18.04 - 仅在外接显示器上出现屏幕撕裂

我的 Acer Nitro 5 笔记本上安装了 Ubuntu 18.04,使用的是 NVIDIA 驱动程序元包 nvidia-driver-450。我观察到通过 HDMI 电缆连接到笔记本的外接显示器出现大量屏幕撕裂。我可以在视频中以及拖动窗口时观察到这种情况。但是,笔记本显示器上没有屏幕撕裂,只有外接显示器上出现屏幕撕裂。

我已经尝试过options nvidia-drm modeset=1解决方案,它只解决了笔记本显示器的屏幕撕裂问题,但没有解决外接显示器的屏幕撕裂问题。

我也尝试在 NVIDIA X 服务器设置中设置“强制组合管道”,它解决了这个问题,但是当我重新启动系统时,笔记本电脑显示器不再被识别(屏幕变黑,并且未在 xrandr 中列出)。这似乎是因为笔记本电脑显示器是 PRIME 显示器,如下面的链接所示,它无法处理 X 服务器生成的 X 配置文件。

NVIDIA 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

相关内容