У меня установлен Ubuntu 18.04 на моем ноутбуке Acer Nitro 5, и я использую метапакет драйвера NVIDIA nvidia-driver-450. Я наблюдаю много разрывов экрана на моем внешнем мониторе, подключенном к ноутбуку через кабель HDMI. Я могу наблюдать это на видео и когда перетаскиваю окна. Однако на мониторе ноутбука нет разрывов экрана, только на внешнем.
Я уже пробовал решение options nvidia-drm modeset = 1
, оно решило разрыв экрана только для ноутбука монитор, но не внешний.
Я также пробовал установить «Force Composition Pipeline» в настройках сервера NVIDIA X, это решает проблему, но когда я перезапускаю систему, монитор ноутбука перестает распознаваться (экран черный , и он не указан в xrandr). Похоже, это связано с тем, что монитор ноутбука является дисплеем PRIME, как показано в приведенной ниже ссылке, и он не может работать с файлом конфигурации X, который генерирует X-сервер.
Изображение настроек NVIDIA X Server
Может кто-нибудь Помогите мне? Единственное, что я еще не пробовал, это использовать сервер X X.Org (xserver-xorg-video-nouveau), но я не хотел его использовать, потому что у меня GTX 1650, и я понимаю, что Nouveau не т это хорошо.
Я позволил nvidia-settings сгенерировать файл conf. Этот файл был скопирован в: /etc/X11/xorg.conf.d/90-dual.conf
.
Возможно, вам придется настроить оба монитора в вашей конфигурации. См. Пример здесь . Обратите внимание, что я настроил
параметр «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
Итак, с помощью этого , этого и этого поста я смог найти обходной путь. Поскольку использование «Force Composition Pipeline» в NVIDIA X Server останавливает разрыв экрана, но заставляет монитор ноутбука перестать распознаваться, обходной путь - запускать команду 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} ') \ ""
(найдено в этой публикации ) в командах запуска, и теперь у второго монитора нет разрывов экрана, и у меня нет проблем после выключения ноутбука.