Xorg增加虚拟屏幕大小超过8192 x 8192

paz*_*zof 7 multiple-monitors xorg screen-resolution external-display display

我有一台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))

我确实在某个地方读过一个声明(编辑: 这里),英特尔的图形处理器不支持比8192x8192像素更高的虚拟屏幕分辨率(我的系统使用Core i7-6700HQIntel HD Graphics 530图形处理器的CPU ),但遗憾的是我无法确认这些信息 - 希望如此不是这种情况.

编辑:事实上可能并非如此:

#: glxinfo -l | grep GL_MAX_TEXTURE_SIZE
GL_MAX_TEXTURE_SIZE = 16384
GL_MAX_TEXTURE_SIZE = 16384
Run Code Online (Sandbox Code Playgroud)

我的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)
Run Code Online (Sandbox Code Playgroud)

Ale*_*mko 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"
Run Code Online (Sandbox Code Playgroud)

Screen Sections例如,我有两个显示器,我正在尝试使用 3 个显示器 - 我认为Screen Sections无论生成什么,您都不需要三个。

Monitor 1: 3840x2160 x 32 in
Monitor 2: 3840x2160 x 32 in
Monitor 3: 1920x1080 x 22 in
Run Code Online (Sandbox Code Playgroud)

8192x8192如果您需要高于此尺寸,请检查您的 glx 是否可以处理上述情况。

glxinfo -l | grep GL_MAX_TEXTURE_SIZE
GL_MAX_TEXTURE_SIZE = 16384
GL_MAX_TEXTURE_SIZE = 16384
Run Code Online (Sandbox Code Playgroud)

修改目录xorg.conf.new中的文件并从命令/home/username添加大小glxinfoVirtual 16384

sudo nano ~/xorg.conf.new
Run Code Online (Sandbox Code Playgroud)

在两个部分的第 24Display小节下添加DepthScreenVirtual 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
Run Code Online (Sandbox Code Playgroud)

复制xorg.xonf.new/etc/X11/xorg.conf然后重新启动。

  sudo cp /home/user/xorg.conf.new /etc/X11/xorg.conf # Modify user
  sudo shutdown -r now
Run Code Online (Sandbox Code Playgroud)

当您重新登录时,将监视器设置为gnomemetacityunity任何您使用的。

更新:

重新启动、注销或解锁后,我发现显示器设置未保存。

这个可能的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}
Run Code Online (Sandbox Code Playgroud)

现在使用系统设置来设置显示器,以~/.config/monitors.xml使用正确的设置创建新文件。

从我的存储库复制 Nicolas Bernaerts 的固定脚本: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
Run Code Online (Sandbox Code Playgroud)