Xorg увеличивает размер виртуального экрана до 8192 x 8192

У меня есть один монитор 4K (3840 x 2160) и два монитора QHD (2560 x 1440), и я хочу, чтобы они были рядом. Однако в настоящее время это невозможно, поскольку необходимое для этого горизонтальное виртуальное разрешение составляет 8960 пикселей (3840+2560+2560), а максимальное (горизонтальное) виртуальное разрешение, установленное X-сервером, составляет 8192 пикселя. Есть ли способ увеличить максимальное виртуальное разрешение выше 8192x8192 пикселей?

Что я пробовал до сих пор:

  • У меня нет файла xorg.conf - я пытался создать его вручную, включая подраздел "Display" и установить там другое значение "Virtual", перезагрузился, ничего не изменилось.
  • Пробовал различные варианты команды xrandr с параметрами --fb и/или --panning, установленными на желаемый максимум (8960x2160+0+0), снова безрезультатно. (выход: xrandr: screen cannot be larger than 8192x8192 (desired size 8960x2160))

Я где-то читал претензию (EDIT: здесь), что графические процессоры Intel не поддерживают большее разрешение виртуального экрана, чем 8192x8192 пикселей (в моей системе используется ЦП Core i7-6700HQ с графическим процессором Intel HD Graphics 530), но я, к сожалению, не смог подтвердить эту информацию — надеюсь, это не так. .

EDIT: Вероятно, это не так:

#: glxinfo -l | grep GL_MAX_TEXTURE_SIZE
GL_MAX_TEXTURE_SIZE = 16384
GL_MAX_TEXTURE_SIZE = 16384

Мой вывод xrandr (в настоящее время у меня третий монитор расположен справа внизу, отсюда и разрешение виртуального экрана 8192x3600):

Screen 0: minimum 320 x 200, current 8192 x 3600, maximum 8192 x 8192
eDP-1 connected primary 3840x2160+2560+0 (normal left inverted right x axis y axis) 346mm x 194mm
3840x2160     60.00*+
2048x1536     60.00
1920x1440     60.00
1856x1392     60.01
1792x1344     60.01
1600x1200     60.00
1400x1050     59.98
1280x1024     60.02
1280x960      60.00
1024x768      60.04    60.00
960x720       60.00
928x696       60.05
896x672       60.01
800x600       60.00    60.32    56.25
700x525       59.98
640x512       60.02
640x480       60.00    59.94
512x384       60.00
400x300       60.32    56.34
320x240       60.05
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 connected 2560x1440+4519+2160 (normal left inverted right x axis y axis) 527mm x 296mm
2560x1440     59.95*+
2048x1152     59.90
1920x1200     59.95
1920x1080     60.00    50.00    59.94    24.00    23.98
1920x1080i    60.00    50.00    59.94
1600x1200     60.00
1680x1050     59.88
1280x1024     75.02    60.02
1280x800      59.91
1152x864      75.00
1280x720      60.00    50.00    59.94
1024x768      75.03    60.00
800x600       75.00    60.32
720x576       50.00
720x576i      50.00
720x480       60.00    59.94
720x480i      60.00    59.94
640x480       75.00    60.00    59.94
720x400       70.08
DP-2 connected 2560x1440+0+285 (normal left inverted right x axis y axis) 597mm x 336mm
2560x1440     59.95*+
1280x720      59.86
HDMI-2 disconnected (normal left inverted right x axis y axis)

person pazof    schedule 04.10.2017    source источник
comment
очень вероятно, что вам придется отредактировать исходный код, чтобы обойти такие ограничения   -  person Laszlo Valko    schedule 30.03.2018
comment
Ссылка в вопросе ведет на патч, но, несмотря на изменение рекламируемых ограничений, на самом деле это не помогает.   -  person Marcin Owsiany    schedule 02.04.2018
comment
@LaszloValko был бы признателен за любую информацию о том, как это сделать.   -  person pazof    schedule 24.04.2018
comment
Как и @MarcinOwsiany, я применил исправление ядра по ссылке в вопросе под openSUSE Tumbleweed на HP Spectre x360 с видеокартой Polaris 22 XL / Radeon RX Vega M GL. После этого я мог бы использовать xrandr для запроса конфигурации шириной более 8192 пикселей, но либо собственный экран ноутбука станет черным, либо команда завершится ошибкой configure crtc. Приведенное ниже решение создает два отдельных виртуальных экрана, но я бы предпочел один. Аппаратное обеспечение должно поддерживать это, но я не могу заставить его работать. Если у кого-то есть дополнительная информация, пожалуйста, сообщите нам.   -  person Glen Whitney    schedule 31.03.2019
comment
FTR, есть набор исправлений, который, кажется, устраняет именно эту проблему, которая почти год плавает в списке intel-gfx: lists.freedesktop.org/archives/intel-gfx/2019-January/   -  person Marcin Owsiany    schedule 02.04.2019


Ответы (1)


Я смог исправить это, выполнив следующие шаги, чтобы сгенерировать и изменить файл xorg.conf и поместить его в /etc/X11/xorg.conf.

Я на Ubuntu 16.04 с gnome-session-fallback, используя metacity, и всякий раз, когда я пытался сделать все три с полным разрешением, я получал сообщение об ошибке о том, что виртуальный размер не может пройти дальше 8192x8192.

Я не уверен, что это имеет значение, на gnome unity metacity или нет.

Перед перезагрузкой - сгенерировать файл xorg.conf.new.

$ sudo X :2 -configure 
# will make a file /home/$USER/xorg.conf.new or ~/xorg.conf.new

$ cat ~/xorg.conf.new |grep Screen|more
Screen      0  "Screen0" 0 0
Screen      1  "Screen1" RightOf "Screen0"
Section "Screen"
Identifier "Screen0"
Section "Screen"
Identifier "Screen1"

Например, у меня есть два Screen Sections, и я пытаюсь использовать 3 монитора — я не думаю, что вам нужны три Screen Sections, что бы ни генерировалось.

Monitor 1: 3840x2160 x 32 in
Monitor 2: 3840x2160 x 32 in
Monitor 3: 1920x1080 x 22 in

Убедитесь, что ваш glx может обрабатывать больше 8192x8192, если вам нужно больше этого размера.

glxinfo -l | grep GL_MAX_TEXTURE_SIZE
GL_MAX_TEXTURE_SIZE = 16384
GL_MAX_TEXTURE_SIZE = 16384

Измените файл xorg.conf.new в каталоге /home/username и добавьте размер из команды glxinfo Virtual 16384

sudo nano ~/xorg.conf.new

В подразделе Display с Depthиз 24 в обоих разделах Screen добавить Virtual 16384

 Section "Screen"
 Identifier "Screen0"
 Device     "Card0"
 Monitor    "Monitor0"
 SubSection "Display"
    Viewport   0 0
    Depth     1
 EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     4
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     8
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     15
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     16
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     24
    Virtual 16384 16384  <-- ADD THIS.
 EndSubSection
 EndSection

 Section "Screen"
 Identifier "Screen1"
 Device     "Card1"
 Monitor    "Monitor1"
 SubSection "Display"
    Viewport   0 0
    Depth     1
 EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     4
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     8
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     15
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     16
EndSubSection
SubSection "Display"
    Viewport   0 0
    Depth     24
    Virtual 16384 16384 <-- ADD THIS.
 EndSubSection
 EndSection

Скопируйте xorg.xonf.new в /etc/X11/xorg.conf и перезагрузитесь.

  sudo cp /home/user/xorg.conf.new /etc/X11/xorg.conf # Modify user
  sudo shutdown -r now

Когда вы снова войдете в систему, настройте свои мониторы на gnome, metacity или unity или на то, что вы используете.

Обновлять:

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

Эта возможная проблема gnome может быть связана с этой ошибкой:

https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1292398

Это исправление было найдено из частей нескольких ответов в этом сообщении:

https://askubuntu.com/questions/6137/saving-monitor-settings

Я предпочитаю запускать этот скрипт из терминала, так как я открываю его первым после входа в систему.

Первый вход с плохой конфигурацией - мониторы размещены неправильно:

cd ~/.config
mv ~/.config/monitors.xml{,.bak}

Теперь настройте свои мониторы с помощью системных настроек, чтобы создать новый файл ~/.config/monitors.xml с правильными настройками.

Скопируйте фиксированный скрипт Николаса Бернартса из моего репозитория: https://raw.githubusercontent.com/alextomko/monitors/master/monitors и поместите его в путь для запуска из терминала.

$ ls -l ~/bin
# if you don't have this directory then create it - do not be logged in as root here.

$ mkdir /home/$USER/bin

$ echo $PATH
# should show /home/username/bin if the dir existed or if you had to create.

$ wget -P ~/bin https://raw.githubusercontent.com/alextomko/monitors/master/monitors
$ chmod +x ~/bin/monitors


# Log out, lock, reboot or whatever it takes to make monitor settings lost for you and run the script.
$ monitors
person Alex Tomko    schedule 14.11.2018
comment
xorg.conf генерация файла у меня не работает: sudo X :2 -configure или любой его вариант (например, с другим номером экрана, без sudo и т. д.) выдает фатальную ошибку сервера: Caught signal 11 (Segmentation fault) - Server aborting. Чтобы обойти это, я добавил файл 85-screen.conf под /etc/X11/xorg.conf.d/ и добавил в него раздел Screen (полное содержимое файла здесь ), что, если я не ошибаюсь, должно быть таким же, как и в файле xorg.conf. Перезагрузил, но максимальное виртуальное разрешение по-прежнему 8192x8192. Я что-то упускаю? - person pazof; 21.11.2018
comment
Я также попробовал файл в xorg.conf.d/10-monitor.conf с разделом виртуального экрана ссылка, но это тоже не дало никакого эффекта. У меня все еще есть этот файл, но я не думаю, что он что-то делает. Только после того, как я смог сгенерировать текущую конфигурацию X в этом файле xorg.conf.new, она, похоже, заработала с дополнениями Virtual 16384 в двух разделах экрана. См. полный файл xorg.conf.new, и, возможно, вам может понадобиться выполнить подобный процесс, перейдя в режим tty и убив свой x-сервер, чтобы сгенерировать его. - person Alex Tomko; 21.11.2018
comment
Полный xorg.conf.new файл ссылка. Я мог бы попробовать что-то вроде этого процесса, который я нашел о выполнении настройки, убив lightdm в режиме tty и выполнив sudo X -configure после выполнения процесса в сообщении № 3 ссылка - person Alex Tomko; 21.11.2018
comment
Также у вас есть право intel? sudo lshw -C video | grep product: или xrandr --listproviders. У меня есть какая-то случайная дешевая бортовая информация. Возможно, также попробуйте sudo dpkg-reconfigure xserver-xorg посмотреть, работает ли он успешно, и повторите попытку генерации xorg.conf. - person Alex Tomko; 21.11.2018
comment
echo $DISPLAY показывает :0 для меня, поэтому, если я делаю какой-либо неактивный экран :1 :2 :3 :4 :5 :6 :7 and on, любая из этих работ создает файл. Возможно, ваш экран # :2, сомнительно, но попробовать стоит. - person Alex Tomko; 21.11.2018
comment
Да - Intel HD Graphics 530. Да, все попытки сгенерировать xorg.conf были на отдельном tty и после того, как я убил X. echo $DISPLAY также показывает :0 для меня. Создание xorg.conf вручную и добавление в него конфигурации из xorg.conf.d/85-screen.conf тоже не сработало. Честно говоря, я не понимаю, почему ему все это не нравится. - person pazof; 23.11.2018
comment
Какая версия Ubuntu у вас установлена. Я предполагаю, что вы используете Ubuntu, так как вы также опубликовали это на форумах ubuntu. Какое ядро ​​у вас есть в версии, которую вы используете, и какой X-сервер вы используете, например, unity обычный гном или что? Могу проверить, если пришлете. - person Alex Tomko; 26.11.2018
comment
Я на Arch linux (Antergos) — версия ядра 4.11.9-1-ARCH — обычный гном, версия 3.24.2 — версия X-сервера 1.19.3 (опубликовано на форумах Ubuntu, потому что у меня такое же поведение в Ubuntu 18.04.1 LTS) - person pazof; 27.11.2018
comment
Хм, каждая версия Linux так или иначе отличается — можете ли вы попробовать это на своей Ubuntu 18.04 или она больше не работает? Я никогда не запускал Arch — я попробую его на одном из своих запасных ноутбуков и посмотрю, что там с этим произойдет. - person Alex Tomko; 28.11.2018