«--Scale 2x2» в xrandr заставляет монитор ничего не отображать

11

У меня есть внешний основной монитор 4k, и я пытаюсь подключить внешний монитор 1680x1050 слева от него.

Я пытался использовать:

 xrandr --output HDMI-0 --scale 2x2 --pos 0x0 --fb 7200x2160 --output DP-4 --pos 3360x0

кажется, что это должно работать, и когда я смотрю на то, что компьютер думает, что происходит в nvidia-settings, он правильно отображает монитор 3200x2160 слева от моего 4k.

Однако на моем внешнем мониторе просто отображается черный с мерцающей линией вверху.

Единственный способ исправить это - сбросить масштабирование обратно до 1x1, после чего изображение возвращается (при сохранении размера X-сервера. Это означает, что есть просто мертвое пространство, через которое я должен прокрутиться, чтобы попасть между моими мониторами).

Так что я думаю, что проблема именно в масштабировании 2x2 в xrandr. Я не уверен, что делать?

Компьютер работает 14.04 и имеет nvidia GTX960 с рекомендуемым драйвером (352.63)

Вот мой вывод xrandr:

  Screen 0: minimum 8 x 8, current 7200 x 2160, maximum 16384 x 16384
  DVI-I-0 disconnected (normal left inverted right x axis y axis)
  DVI-I-1 disconnected (normal left inverted right x axis y axis)
  DP-0 disconnected (normal left inverted right x axis y axis)
  DP-1 disconnected (normal left inverted right x axis y axis)
  DP-2 disconnected (normal left inverted right x axis y axis)
  DP-3 disconnected (normal left inverted right x axis y axis)
  HDMI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 474mm x 296mm
     1680x1050      59.9*+   60.0  
     1280x1024      75.0     60.0  
     1280x960       60.0  
     1152x864       75.0  
     1024x768       75.0     70.1     60.0  
     800x600        75.0     72.2     60.3     56.2  
     640x480        75.0     72.8     59.9  
  DP-4 connected primary 3840x2160+3360+0 (normal left inverted right x axis y axis) 527mm x 296mm
     3840x2160      60.0*+   30.0  
     2560x1440      60.0  
     2048x1280      60.0  
     1920x1200      59.9  
     1920x1080      60.0     60.0     59.9     50.0     24.0     60.0     50.0  
     1600x1200      60.0  
     1600x900       60.0  
     1280x1024      75.0     60.0  
     1280x720       60.0     59.9     50.0  
     1152x864       75.0  
     1024x768       75.0     60.0  
     800x600        75.0     60.3  
     720x576        50.0     50.1  
     720x480        59.9     60.1  
     640x480        75.0     59.9     59.9  
m4p85r
источник
У меня та же проблема. Кажется, он работает до масштаба 1,71x1,71. Все большее приводит к тому, что дисплей становится пустым
Мацей Возняк
К сожалению, мне так и не удалось это исправить. Я пытался запустить два монитора, один с масштабированием и один без. Если вы просто пытаетесь работать с 2-кратным масштабированием, то с Cinammon это очень просто. Я верю, что есть способ заставить Unity сделать это тоже.
m4p85r

Ответы:

5

Просто хотел добавить, что это то, с чем я боролся долгое время, и каждый раз я просто сдавался - пока не решил разобраться раз и навсегда. Приведенное ниже решение работает для меня, надеюсь, оно подходит и для вас.

tl; dr: настроить ForceFullCompositionPipeline=On

Задний план

Некоторые из них также надеются предоставить больше ключевых слов в случае, если кто-то с подобной проблемой в конечном итоге ищет решение.

Моя настройка:

  • ThinkPad P50 со встроенным дисплеем 4K с разрешением 3840 × 2160 (основной)
  • Внешний монитор в качестве дополнительного дисплея - Dell U2412M - 1920 × 1200

Я использую Ubuntu Gnome 16.04 LTS.

Когда я подключал монитор через кабель HDMI + конвертер HDMI-DVI (поскольку у монитора нет входа HDMI), все было слишком большим. Различные статьи в Интернете предлагали использовать xrandrдля настройки --scale 2x2этого дисплея, в результате чего он был почти полностью черным, а сверху видна только тонкая линия.

Я столкнулся с этим вопросом, и хотя 2x2.001решение по масштабированию позволило монитору отображать данные, оно также добавило дополнительный пиксель под экраном X, что привело к небольшой прокрутке вверх / вниз, когда курсоры достигают верхней / нижней части экрана.

После долгих поисков, многие из которых привели к проблемам и не нашли решения, я наткнулся на это: https://devtalk.nvidia.com/default/topic/891207/-355-11-358-09-viewportin-on-2nd -monitor-результаты-в-искаженные-дисплей-для-значения-по-3211x1800

Поэтому, чтобы проверить это, я настроил это с помощью следующих команд - предположим, xrandrеще не настроено масштабирование.

$ nvidia-settings -q CurrentMetaMode

  Attribute 'CurrentMetaMode' (lilicorp:1.0): id=50, switchable=no, source=RandR :: DPY-4: nvidia-auto-select @3840x2160 +0+0 {ViewPortIn=3840x2160, ViewPortOut=3840x2160+0+0}, DPY-1: nvidia-auto-select @1920x1200 +3840+0 {ViewPortIn=1920x1200, ViewPortOut=1920x1200+0+0}

Это отображает CurrentMetaModeзначение, и именно здесь я добавил ForceFullCompositionPipeline=Onопцию для обоих дисплеев. Обратите внимание, что DPY-4это мой встроенный дисплей ноутбука, а DPY-1внешний монитор.

Фактическая строка, которая должна быть сконфигурирована, - это строка после ::в выводе этой команды.

$ nvidia-settings --assign CurrentMetaMode="DPY-4: nvidia-auto-select @3840x2160 +0+0 {ViewPortIn=3840x2160, ViewPortOut=3840x2160+0+0, ForceFullCompositionPipeline=On}, DPY-1: nvidia-auto-select @1920x1200 +3840+0 {ViewPortIn=1920x1200, ViewPortOut=1920x1200+0+0, ForceFullCompositionPipeline=On}"

После этого я побежал:

$ xrandr --output DP-1 --scale=2x2

Наконец, разрешение внешнего дисплея было нормальным без прокрутки и других проблем.

Обратите внимание, что после выполнения этих команд, CurrentMetaModeоно немного отличается от назначенного, возможно, из-за применения масштабирования:

$ nvidia-settings -q CurrentMetaMode

  Attribute 'CurrentMetaMode' (lilicorp:1.0): id=50, switchable=no, source=RandR :: DPY-4: nvidia-auto-select @3840x2160 +0+0 {ViewPortIn=3840x2160, ViewPortOut=3840x2160+0+0, ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}, DPY-1: nvidia-auto-select @3840x2400 +3840+0 {Transform=(2.000000,0.000000,0.000000,0.000000,2.000000,0.000000,0.000000,0.000000,1.000000), ViewPortIn=3840x2400, ViewPortOut=1920x1200+0+0, ResamplingMethod=Bilinear, ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}

Надеюсь, что это решает проблему и для кого-то еще!

Милош Левачич
источник
4

У меня была точно такая же проблема. Я решил это с --scale 2x2.001. Как ни странно, --scale 2x1.999либо 2x2.0001не сработало, поэтому обязательно попробуйте несколько чисел около 2.

igogo
источник
У меня была эта проблема тоже ... перебор разработана для мр
juggernauthk108
Какая у тебя грубая сила? Значения 2?
m4p85r
И как странно! Спасибо за пост. Я просто сдался. У меня фактически есть второй компьютер, теперь связанный через синергию. Работает довольно хорошо, когда мне иногда нужны Windows-приложения (второй компьютер - win)
m4p85r
1
Это на самом деле работает. Кто-то должен сообщить об этом ... в любом случае, большое спасибо!
Коломбо
2

Спасибо, Милош, за ваше отличное решение, которое хорошо сработало для меня!

У меня есть небольшое дополнение. Помимо использования командной строки вы также можете удобно установить ForceFullCompositionPipelineпользовательский интерфейс Nvidia-Settings. Для этого вам нужно перейти к «Конфигурация дисплея X-сервера», нажать «Дополнительно» и просто активировать опцию «Принудительно использовать полную композицию конвейера». Пожалуйста, смотрите https://imgur.com/a/3jE78 для примера.


PS: я использую установку с тремя головками с двумя внешними мониторами (1920x1080; 1680x1050) и внутренним монитором 3k (3840x2160). Для этого я применяю следующий xrandr-config:

xrandr --output eDP-1-1 --auto --output HDMI-0 --auto --scale 2x2 --above eDP-1-1 --output DP-1 --auto --scale 2x2 --rotate left --right-of eDP-1-1
Николай Кирххоф
источник