Проблемы с разрешением и масштабированием на двух мониторах с Nvidia (один 4K HiDPI, другой VGA с конвертером)

Вопрос или проблема

Я пробую Kubuntu 18.10, у меня есть Nvidia GTX 1060 (драйвер 418), LG 27″ 4k монитор (27UD58-B) и старый HP 22″ монитор с разрешением 1680×1050 (HPw2207) с VGA кабелем и VGA-> DP адаптером.

Мои проблемы заключаются в следующем:
1) Я не могу заставить экран с VGA адаптером использовать разрешение выше 1280*1024

2) Я бы хотел использовать масштабирование экрана, потому что все слишком маленькое на 4k дисплее. Я бы хотел, чтобы масштабирование применялось только к дисплею с высоким разрешением, если это возможно.

Текущая настройка:

Я использую драйверы Nvidia 418.56.

$ nvidia-smi
Mon Apr 15 15:07:47 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.56       Driver Version: 418.56       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 106...  Off  | 00000000:23:00.0  On |                  N/A |
| 10%   64C    P0    25W / 120W |    739MiB /  6076MiB |      3%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0       958      G   /usr/lib/xorg/Xorg                           386MiB |
|    0      1413      G   /usr/bin/kwin_x11                            192MiB |
|    0      1432      G   /usr/bin/krunner                               1MiB |
|    0      1434      G   /usr/bin/plasmashell                         111MiB |
|    0      1509      G   /usr/bin/latte-dock                           29MiB |
|    0      9387      G   /usr/lib/firefox/firefox                       1MiB |
+-----------------------------------------------------------------------------+

и нормальные разрешения выше не доступны:

$ xrandr
Screen 0: minimum 8 x 8, current 4864 x 2160, maximum 32767 x 32767
DVI-D-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 600mm x 340mm
   3840x2160     60.00*+  30.00  
   2560x1440     59.95  
   1920x1080     60.00    59.94  
   1600x900      60.00  
   1280x1024     60.02  
   1280x800      59.81  
   1280x720      60.00    59.94  
   1152x864      59.96  
   1024x768      60.00  
   800x600       60.32  
   720x480       59.94  
   640x480       59.94    59.93  
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)
DP-4 connected 1024x1280+3840+832 left (normal left inverted right x axis y axis) 376mm x 301mm
   1280x1024     60.02*+
   1280x960      60.00  
   1152x864      75.00  
   1024x768      85.00    75.03    70.07    60.00  
   800x600       85.06    75.00    72.19  
   640x480       85.01    59.94  
DP-5 disconnected (normal left inverted right x axis y axis)

Первая проблема: исправление разрешения

Я пытался использовать “addmode” с помощью xrandr, но получил ошибку BadMatch. Это, видимо, нормально для видеокарт nvidia.

$ cvt 1680 1050 60
# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
Modeline "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
$ xrandr --newmode  "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync

$ xrandr --addmode DP-4 1680x1050_60.00
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  18 (RRAddOutputMode)
  Serial number of failed request:  45
  Current serial number in output stream:  46

Мой файл /etc/X11/xorg.conf был сгенерирован nvidia с использованием sudo nvidia-xconfig:

$ sudo nvidia-xconfig

Using X configuration file: "/etc/X11/xorg.conf".
Backed up file '/etc/X11/xorg.conf' as '/etc/X11/xorg.conf.backup'
New X configuration file written to '/etc/X11/xorg.conf'

Файл xorg.conf содержит только один монитор, это нормально. Я пытался добавить строку “Modeline” под Monitor0, но это ничего не изменило.

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 418.56


Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
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"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Вторая проблема: масштабирование

Я предпринял два шага, чтобы позволить экрану HiDPI отображать текст и GUI в более читаемом размере:

1) Системные настройки – шрифты – Принудительно установить DPI шрифтов 144 (вместо 96)
2) Системные настройки – дисплей и мониторы – масштабирование дисплея 1,5 (вместо 1).

Я хотел бы, чтобы эти настройки применялись только к 4k монитору, возможно ли это вообще?

Я нашел обходное решение: я подключил дисплей напрямую к старой башне, у которой есть VGA, и экспортировал edid с использованием

sudo apt install read-edid
sudo get-edid -m 0 > edid.bin

затем я стер старый xorg.conf на машине и создал новый, где принудительно установил edid для монитора на дисплее порт 4:

sudo rm /etc/X11/xorg.conf 
nvidia-xconfig --custom-edid="GPU-0.DP-4:/home/MYNAME/edid.bin"

Та-дам, более высокое разрешение теперь работает. Когда я смотрю на мой файл xorg.conf, я вижу, что была добавлена следующая строка в секцию “Screen”:

   Option         "CustomEDID" "GPU-0.DP-4:/home/MYNAME/Downloads/edid.bin"

вот что я в итоге сделал в отношении масштабирования с монитором высокого разрешения и монитором стандартного разрешения:

Ок, но теперь все слишком большое на 22” .. Нужно уменьшить масштаб до 1.4 в обратном направлении.
Это дает мне экран 3840 + 1.4 * 1680 = 6192 пикселей по ширине, который я должен указать в кадровом буфере.
Затем я указываю позицию экранов с помощью –pos, где 0x0 это верхний левый угол экрана.
https://askubuntu.com/questions/393400/is-it-possible-to-have-different-dpi-configurations-for-two-different-screens
xrandr –output DP-0 –scale 1×1 –pos 0x0 –fb 6192×2160
xrandr –output DP-4 –scale 1.4×1.4 –pos 3840×690

.

Ответ или решение

Решение проблем с разрешением и масштабированием на двух мониторах с использованием NVIDIA (один 4K HiDPI, другой VGA с конвертером) может быть сложной задачей. Давайте рассмотрим данную ситуацию более детально и предложим возможные способы её разрешения.

Теория

  1. Разрешение: VGA-соединения часто имеют ограниченные возможности по поддержке высоких разрешений. Это может быть связано с ограничениями самого кабеля, конвертера или портов на мониторе и графической карте. Использование конвертера может накладывать дополнительные ограничения.

  2. Масштабирование: При работе с HiDPI мониторами (например, 4K) и стандартными мониторами, возникает необходимость в избирательном масштабировании интерфейса для улучшения читаемости. Однако иногда программное обеспечение или драйверы не предоставляют очевидных инструментов для индивидуального масштабирования каждого дисплея.

Пример

Вы столкнулись со следующими проблемами:

  1. Проблема с разрешением: Ваш VGA-монитор через конвертер ограничен разрешением 1280×1024. Попытки использования команды xrandr с добавлением новой модели линии (modeline) привели к ошибке BadMatch, что может указывать на несовместимость вашего дисплея или конвертера с указанным разрешением.

  2. Проблема с масштабированием: Вы хотите настроить масштабирование только для HiDPI монитора, так как интерфейс выглядит слишком мелким.

Применение

Решение проблемы с разрешением:

Вы обнаружили, что создание пользовательского файла EDID и его принудительная загрузка в конфигурацию NVIDIA может обойти ограничения разрешения, возникшие из-за использования конвертера. Порядок действий:

  1. Извлечение EDID: Подключите монитор через VGA к старому ПК и воспользуйтесь read-edid, чтобы экспортировать EDID монитора в файл.

    sudo apt install read-edid
    sudo get-edid -m 0 > edid.bin
  2. Обновление xorg.conf: Удалите старый файл xorg.conf и создайте новый с использованием edid, принудительно задавая его NVIDIA.

    sudo rm /etc/X11/xorg.conf
    nvidia-xconfig --custom-edid="GPU-0.DP-4:/home/USER/edid.bin"

Эти действия позволят использовать разрешение, превышающее 1280×1024, и подтвердят работоспособность решения.

Решение проблемы с масштабированием:

Для настройки индивидуального масштабирования на разных дисплеях воспользуйтесь командой xrandr для изменения параметров framebuffer и позиционирования экранов, как указано:

xrandr --output DP-0 --scale 1x1 --pos 0x0 --fb 6192x2160
xrandr --output DP-4 --scale 1.4x1.4 --pos 3840x690

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

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

Оцените материал
Добавить комментарий

Капча загружается...