LINUX.ORG.RU

Не получается добавить своё разрешение экрана «gtx 560»

 , ,


0

1

Добрый день.

Имеется видеокарточка GTX 560 и монитор ASUS PB258. И у меня не получается выставить разрешение экрана в 2560х1440, максимальное через настройку монитора (в cinnamon) 1920х1080, через утилиту nvidia-settings тоже.

Но есть одна очень интересная деталь, раньше у меня стоял драйвер nouveau, я так же не мог поставить нужное разрешение через GUI, но зато мог добавить новое разрешение через xrandr
Просто:

xrandr --newmode "2560x1440R"  241.50  2560 2608 2640 2720  1440 1443 1448 1481 +hsync -vsync
xrandr --addmode HDMI-0 2560x1440R
xrandr --output HDMI-0 --mode 2560x1440R

и всё работало.

Но сейчас, когда я поставил официальные дрова, на ввод xrandr --addmode HDMI-0 2560x1440R консоль выдаёт мне:

X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  139 (RANDR)
  Minor opcode of failed request:  18 (RRAddOutputMode)
  Serial number of failed request:  31
  Current serial number in output stream:  32

Пробую через xorg.conf, но чувствую не вывожу, очень уж мудрён этот xorg.conf…
Сейчас xorg.conf выглядит так:

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 390.141  (dvs-builder@U64-P08-12)  Mon Dec 28 16:13:08 UTC 2020

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 390.141  (dvs-builder@U64-P08-12)  Mon Dec 28 16:12:07 UTC 2020

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

Section "Files"
    FontPath        "/usr/lib64/X11/fonts/TTF/"
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      "Ancor Communications Inc ASUS PB258"
    HorizSync       24.0 - 99.0
    VertRefresh     23.0 - 76.0
    Modeline       "2560x1440"  241.50  2560 2608 2640 2720  1440 1443 1448 1481 +hsync -vsync
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 560"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "DFP-1"
    Option         "metamodes" "2560x1440 +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
        Modes      "2560x1440"
    EndSubSection
EndSection

Но толку никакого.

В общем уже не знаю что делать.

Ответ на: комментарий от anonymous

Для cvt 2560 1440:

# 2560x1440 59.96 Hz (CVT 3.69M9) hsync: 89.52 kHz; pclk: 312.25 MHz
Modeline "2560x1440_60.00"  312.25  2560 2752 3024 3488  1440 1443 1448 1493 -hsync +vsync

Но на драйвере nouveau, он не принимал эти настройки, то есть, xrandr --newmode добавлял разрешение, но xrandr --addmode их не принимал. Нужно было указать параметр -r, и для cvt -r 2560 1440 он показывает:

# 2560x1440 59.95 Hz (CVT 3.69M9-R) hsync: 88.79 kHz; pclk: 241.50 MHz
Modeline "2560x1440R"  241.50  2560 2608 2640 2720  1440 1443 1448 1481 +hsync -vsync

Вот с этими настройками всё работало.

BlancoDima ()
Ответ на: комментарий от BlancoDima

В секции Monitor0 определен режим с названием 2560x1440, а в секции Screen0 в опции MetaModes указано 2560x1440+0+0. Из-за этого получается

[    50.743] (WW) NVIDIA(0): No valid modes for "2560x1440+0+0"; removing.
[    50.743] (WW) NVIDIA(0): 
[    50.743] (WW) NVIDIA(0): Unable to validate any modes; falling back to the default mode
[    50.743] (WW) NVIDIA(0):     "nvidia-auto-select".
[    50.743] (WW) NVIDIA(0): 
[    50.744] (II) NVIDIA(0): Validated MetaModes:
[    50.744] (II) NVIDIA(0):     "DFP-1:nvidia-auto-select"
[    50.744] (II) NVIDIA(0): Virtual screen size determined to be 1920 x 1080

Попробуй убрать +0+0 из metamodes.

iliyap ★★★★★ ()
Ответ на: комментарий от iliyap

Ну, к сожалению ничего не поменялось. А в логе https://pastebin.com/JBmmwqvT поменялась только строчка No valid modes for "2560x1440+0+0"; removing., теперь это No valid modes for "2560x1440"; removing. На самом деле в опции MetaModes раньше было указано 1920x1080+0+0, это я уже сам поменял, в надежде что поможет. Опция эта создаётся через GUI nvidia-settings, там просто из списка выбераешь нужное разрешение или ставишь «авто», вот если поставить «авто», то в конфиг добавляется nvidia-auto-select+0+0.

В общем, он ругается на моё вписаное разрешение, потому что его нет в списке. А вот откуда он этот список берёт, и как его поменять я пока не докапался.

BlancoDima ()
Ответ на: комментарий от BlancoDima

Включи дебаг и разреши добавлять свои режимы.

Section "Device"
   Identifier "Device0"
   Option "ModeValidation" "AllowNonEdidModes"
   Option "ModeDebug" "true"
EndSection

Должно добавить, а если не добавит то увидишь почему.

no-such-file ★★★★★ ()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Очень интересный эффект! Вот лог https://pastebin.com/X2pYaj2S

Во первых, появилось много новых разрешений экрана, правда самое большое из них это 2048x1152. Во вторых, при добавлении разрешения через xrandr, после ввода команды xrandr --addmode HDMI-0 2560x1440R, консоль опять показала ошибку, а в лог добавилось:

[   716.651] (WW) NVIDIA(GPU-0):   Validating Mode "2560x1440R":
[   716.651] (WW) NVIDIA(GPU-0):     Mode Sources: User Specified, RandR Specified
[   716.651] (WW) NVIDIA(GPU-0):     2560 x 1440 @ 60 Hz
[   716.651] (WW) NVIDIA(GPU-0):       Pixel Clock      : 241.50 MHz
[   716.651] (WW) NVIDIA(GPU-0):       HRes, HSyncStart : 2560, 2608
[   716.651] (WW) NVIDIA(GPU-0):       HSyncEnd, HTotal : 2640, 2720
[   716.651] (WW) NVIDIA(GPU-0):       VRes, VSyncStart : 1440, 1443
[   716.651] (WW) NVIDIA(GPU-0):       VSyncEnd, VTotal : 1448, 1481
[   716.651] (WW) NVIDIA(GPU-0):       Sync Polarity    : +H -V 
[   716.651] (WW) NVIDIA(GPU-0):     Mode is rejected: PixelClock (241.5 MHz) too high for
[   716.651] (WW) NVIDIA(GPU-0):     Display Device (Max: 225.0 MHz).
[   716.651] (WW) NVIDIA(GPU-0):     Mode "2560x1440R" is invalid.
[   716.651] (WW) NVIDIA(GPU-0): 

Вот тут конечно интересно, почему он думает что PixelClock Max: 225.0

Может быть можно ему вручную указать максимальный PixelClock?

Вообще посмотрел лог, похоже он пробует все возможные разрешения применить, и если они не помещаются в PixelClock 225, отбраковывает их. Ещё нашёл интересную строчку

[    82.767] (--) NVIDIA(GPU-0): Ancor Communications Inc ASUS PB258 (DFP-1): 225.0 MHz maximum pixel clock

(--) - это же значит что он у самого устройства спрашивает параметры?

BlancoDima ()
Ответ на: комментарий от BlancoDima

UPD. Добавил вручную разрешение 2560х1440 44Гц! через xrandr:

$ cvt 2560 1440 44
# 2560x1440 43.99 Hz (CVT) hsync: 65.06 kHz; pclk: 222.75 MHz
Modeline "2560x1440_44.00"  222.75  2560 2720 2992 3424  1440 1443 1448 1479 -hsync +vsync
$ xrandr --newmode "2560x1440_44.00"  222.75  2560 2720 2992 3424  1440 1443 1448 1479 -hsync +vsync
$ xrandr --addmode HDMI-0 2560x1440_44.00
$ xrandr --output HDMI-0 --mode 2560x1440_44.00

Очевидно, оно добавилось и применилось потому что помещается в 225MHz pclk. Осталось разобраться как поменять это ограничение.

На свободных дровах, работало на 241.50MHz при 60Гц монитора.

BlancoDima ()
Ответ на: комментарий от BlancoDima

Можешь добавить

Option     "ModeValidation" "NoMaxPClkCheck"

Либо просто HorizSync чтобы влезало hsync: 89.52 kHz. Допустим 25-90.

PS: вангану что ничего не выйдет. Вероятно у тебя HDMI порт не вывозит 60Гц.

no-such-file ★★★★★ ()
Последнее исправление: no-such-file (всего исправлений: 5)
Ответ на: комментарий от no-such-file

560TI точно тащит 2560 60Гц на HDMI. Да, надо было отключать(передвигать) ограничение генератора по частоте для ядерного модуля. nouveau:hdmimhz

Elyas ★★★★★ ()
Последнее исправление: Elyas (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Я бы думал в сторону HDMI порта, если бы на свободном драйвере не работало. На nouveau проблем с разрешением не было, только тормозило всё.

Поставил NoMaxPClkCheck, иксы загрузились в чёрный экран, а в лог насыпало 20 000 строк. В основном он там перебирал все возможные разрешения, и всех их принимал как рабочие.

Я пока думаю в сторону опций для установки своего pclk. Курю мануал по настройке xorg.conf от nvidia.

BlancoDima ()