LinuxQuestions.org
Visit Jeremy's Blog.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Newbie
User Name
Password
Linux - Newbie This Linux forum is for members that are new to Linux.
Just starting out and have a question? If it is not in the man pages or the how-to's this is the place!

Notices


Reply
  Search this Thread
Old 04-24-2014, 12:25 AM   #1
Automatic
Member
 
Registered: Mar 2013
Posts: 42

Rep: Reputation: Disabled
[Close Enough][XORG] three monitors, two GPUs, one screen.


I use Linux on pretty much all my computers, however, my desktop is the singular one I don't, because I feel the multiple monitor support in it is just inferior to Windows. I absolutely love Linux on my headless servers, and, my single monitor laptops & HTPCs, but, my desktop... eh. I tried Linux on it a few years ago, couldn't get multi-head to work, gave up. Tried it again, still can't, however, this time I'm going to help before sinking back into Windows on it.

I feel literally everything on the net is either out-of-date, of, I'm seriously confused. I would bet on it being a little of each, items like the Arch wiki state:-

Code:
Warning: As of August 2013, Xinerama is broken when using the proprietary NVIDIA driver from 319 upwards. Users wishing to use Xinerama with the NVIDIA driver should use the NVIDIA 313 driver, which works only with Linux kernels earlier than 3.10. See this thread for more information.
And yet, I seem to be able to use it perfectly fine using version 337.12-1 on kernel 3.14.1-1.

However, my main issue is that I'd like to play a few source games, whenever I run them, I get:-
Code:
Could not find required opengl entry point 'glgeterror'
Googling this error results in literally every post recommending you disable Xinerama, lo and behold, disabling allows it to work (Actually, it doesn't, it just suppresses the error, thus-far, no game actually launches, but, least it's progress, I guess. I'll look into this error a bit later), unfortunately, this also disables my ease-of-access of being able to utilize my multi-monitor setup. In the same posts as the "Disable Xinerama" posts, there are also people stating "NVIDIA drivers have supported xrandr since last year", which, seems to be true:-

Code:
$ for screen in {0..2}; do echo -e "\n\nScreen ${screen}:-\n\n"; xrandr --screen ${screen}; done


Screen 0:-


Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 16384 x 16384
DVI-I-0 disconnected primary (normal left inverted right x axis y axis)
DVI-I-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 298mm
   1920x1080     60.00*+ 144.00   119.98    99.93  
   1440x900     119.85  
   1280x1024    119.96    75.02    60.02  
   1024x768     119.99    75.03    60.00  
   800x600      119.97    75.00    60.32  
   640x480      120.01    75.00    59.94  
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)


Screen 1:-


Screen 1: minimum 8 x 8, current 1920 x 1080, maximum 16384 x 16384
DVI-I-0 disconnected primary (normal left inverted right x axis y axis)
DVI-I-1 disconnected (normal left inverted right x axis y axis)
DVI-I-2 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 298mm
   1920x1080     60.00*+ 144.00   119.98    99.93  
   1440x900     119.85  
   1280x1024    119.96    75.02    60.02  
   1024x768     119.99    75.03    60.00  
   800x600      119.97    75.00    60.32  
   640x480      120.01    75.00    59.94  


Screen 2:-


Screen 2: minimum 8 x 8, current 1920 x 1080, maximum 16384 x 16384
DVI-I-3 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 298mm
   1920x1080     60.00*+ 144.00   119.98    99.93  
   1440x900     119.85  
   1280x1024    119.96    75.02    60.02  
   1024x768     119.99    75.03    60.00  
   800x600      119.97    75.00    60.32  
   640x480      120.01    75.00    59.94
Unfortunately, all three of my monitors are over three different virtual environments. What I don't want:-
  • Having to explicitly tell each application, before it launches, what screen to be on. I want to be able to drag and drop between screens.
  • Have the monitor similar to NVIDIA's 'Surround' or AMD's 'Eyefinity', when I maximize a window, I want it on just that monitor, no crazy "You only have one logical monitor" things.

Is this possible? It's not like I can't google for help, but, I literally can't find any keywords to Google, all I've found so far are:-
  1. Xinerama (Which works amazingly, just, not with Valve game's older source games (Although, Portal 2 & non-valve games seem to work, so, there's that))
  2. TwinView (Not tested it myself, but, reading the documentation looks to be like Eyefinity/Surround, which, I don't want)
  3. RandR (Seems to only want to create unique virtual screens, and, not the Xinerama setup).

(tl;dr here!) Any help? The two pieces of help I want (I don't really care which, both equally as valid):-
  1. Getting Valve's older games to work on Xinerama
  2. Getting something that's not Xinerama to emulate Xinerama.

EDIT:- After a little more Googling, it appears as though xrandr does emulate what Xinerama does, however, for some reason, I can't test it at all because it thinks I only have one monitor, unless I specifically define all three monitors on unique screens (like above), at which time it no longer is on the same screen (Duh...), so, how do I get it to accept all three of my monitors on the same screen?

Code:
$ xrandr
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 16384 x 16384
DVI-I-0 disconnected primary (normal left inverted right x axis y axis)
DVI-I-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 298mm
   1920x1080     60.00 + 144.00   119.98*   99.93  
   1440x900     119.85  
   1280x1024    119.96    75.02    60.02  
   1024x768     119.99    75.03    60.00  
   800x600      119.97    75.00    60.32  
   640x480      120.01    75.00    59.94  
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
This was auto-generated by Nvidia's GUI monitor configuration thingy (As per the comments at the top state):-
Code:
$ cat 10-monitors.conf
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 337.12  (buildmeister@swio-display-x64-rhel04-11)  Fri Apr  4 15:17:43 PDT 2014

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
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"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "BenQ xl2411t"
    HorizSync       30.0 - 160.0
    VertRefresh     56.0 - 144.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 590"
    BusID          "PCI:5:0:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "metamodes" "1920x1080_120 +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection
I found someone that said if you just assign all three monitors, but, without screens to go along side it'll work, it did:-

Code:
$ cat 10-devices.conf
Section "Device"
    #Center monitor
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 590"
    BusID          "PCI:5:0:0"
EndSection

Section "Device"
    #Left monitor
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 590"
    BusID          "PCI:6:0:0"
    Screen          0
EndSection

Section "Device"
    #Right monitor
    Identifier     "Device2"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 590"
    BusID          "PCI:6:0:0"
    Screen          1
EndSection
Code:
$ cat 10-monitors.conf.old
Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "BenQ xl2411t"
    HorizSync       30.0 - 160.0
    VertRefresh     56.0 - 144.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "BenQ xl2411t"
    HorizSync       30.0 - 160.0
    VertRefresh     56.0 - 144.0
    Option         "DPMS"
EndSection

Section "Monitor"
    Identifier     "Monitor2"
    VendorName     "Unknown"
    ModelName      "BenQ xl2411t"
    HorizSync       30.0 - 160.0
    VertRefresh     56.0 - 144.0
    Option         "DPMS"
EndSection
Code:
$ cat 15-screen.conf.old
Section "Screen"
    #Center monitor
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
        Virtual     5760 1080
    EndSubSection
EndSection

#Section "Screen"
    #Left monitor
#    Identifier     "Screen1"
#    Device         "Device1"
#    Monitor        "Monitor1"
#    DefaultDepth    24
#    Option         "Stereo" "0"
#    Option         "metamodes" "DVI-I-2: nvidia-auto-select +0+0"
#    Option         "SLI" "Off"
#    Option         "MultiGPU" "Off"
#    Option         "BaseMosaic" "off"
#    SubSection     "Display"
#        Depth       24
#    EndSubSection
#EndSection
#
#Section "Screen"
    #Right monitor
#    Identifier     "Screen2"
#    Device         "Device2"
#    Monitor        "Monitor2"
#    DefaultDepth    24
#    Option         "Stereo" "0"
#    Option         "metamodes" "DVI-I-3: nvidia-auto-select +0+0"
#    Option         "SLI" "Off"
#    Option         "MultiGPU" "Off"
#    Option         "BaseMosaic" "off"
#    SubSection     "Display"
#        Depth       24
#    EndSubSection
#EndSection
EDIT2:- I can get it to work on two of my three monitors using this:-
Code:
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 337.12  (buildmeister@swio-display-x64-rhel04-11)  Fri Apr  4 15:17:43 PDT 2014

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" RightOf "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
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"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "BenQ xl2411t"
    HorizSync       30.0 - 160.0
    VertRefresh     56.0 - 144.0
    Option         "DPMS"
EndSection

Section "Monitor"
    # HorizSync source: unknown, VertRefresh source: unknown
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "BenQ xl2411t"
    HorizSync       0.0 - 0.0
    VertRefresh     0.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 590"
    BusID          "PCI:5:0:0"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 590"
    BusID          "PCI:6:0:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "metamodes" "1920x1080_120 +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "DFP-0"
    Option         "metamodes" "DVI-I-2: 1920x1080_120 +0+0, DVI-I-3: 1920x1080_120 +1920+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection
This allows me to have one unique monitor, and, two 'Xinerama'-emulated monitor, I tried combining the two:-
Code:
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 337.12  (buildmeister@swio-display-x64-rhel04-11)  Fri Apr  4 15:17:43 PDT 2014

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
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"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "BenQ xl2411t"
    HorizSync       30.0 - 160.0
    VertRefresh     56.0 - 144.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 590"
    BusID          "PCI:5:0:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "metamodes" "DVI-I-1: 1920x1080_120 +0+0, DVI-I-2: 1920x1080_120 +1920+0, DVI-I-3: 1920x1080_120 +3840+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection
But, it didn't work.

EDIT:- Using 'BaseMosaic' allows it to work, but, has *huge* amounts of screen tearing, it's literally impossible to do anything with anything moving. Static or not at all. This isn't all that helpful, here's the config:-

Code:
$ cat /etc/X11/x*d/10-monitors.conf
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 337.12  (buildmeister@swio-display-x64-rhel04-11)  Fri Apr  4 15:17:43 PDT 2014

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
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"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "BenQ xl2411t"
    HorizSync       30.0 - 160.0
    VertRefresh     56.0 - 144.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 590"
    BusID          "PCI:5:0:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "metamodes" "DVI-I-1: 1920x1080_120 +0+0, DVI-I-2: 1920x1080_120 +1920+0, DVI-I-3: 1920x1080_120 +3840+0"
    Option         "SLI" "true"
    Option         "MultiGPU" "false"
    Option         "BaseMosaic" "true"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection
EDIT:- After four hours, I've basically come to a standstill, I have to live with two things to get this working:-

1. Vertical Sync is non-existent.
2. I can't use one of my monitors sideways (I.E. 1080x1920 (I'm really pissed about this)), if I use it sideways, the second I move my mouse onto the monitor, my entire system crashes, absolutely no indication of an error from the xorg logs. Googling it seems like it's an issue xorg has had since '07 (Probably earlier), with multiple fixes being pushed to fix it, none of which worked for everyone, only some.

Although, I do:-
1. Barely see the Vertical Sync issues due to the 144Hz refresh rate (Not perfect, but, an okay work around, I guess)
2. Get to play Valve games

Not really the best, I do love the customization of Linux, but, I also really do like my sideways monitor and Vertical Sync always. Here's my final xorg.conf:-
Code:
# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 337.12  (buildmeister@swio-display-x64-rhel04-11)  Fri Apr  4 15:17:43 PDT 2014

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
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"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "BenQ xl2411t"
    HorizSync       30.0 - 160.0
    VertRefresh     56.0 - 144.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 590"
    BusID          "PCI:5:0:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "DFP-0"
    Option         "metamodes" "GPU-6d02422c-80f3-7f23-ace2-2169e38cd723.GPU-0.DVI-I-1: 1920x1080_144 +1920+0, GPU-4e0aac48-9391-931e-1041-707515642f3f.GPU-1.DVI-I-2: 1920x1080_144 +0+0, GPU-4e0aac48-9391-931e-1041-707515642f3f.GPU-1.DVI-I-3: 1920x1080_144 +3840+0"
    Option         "MultiGPU" "Off"
    Option         "SLI" "off"
    Option         "BaseMosaic" "on"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection
How I generated it:-
1. Generate normal config using NVIDIA's GUI
2. Change "BaseMosaic" to true
3. Restart
4. NVIDIA's GUI option will now allow a lot more configuration options, at the expense of dodgy rotation and sync support, and, I wouldn't be surprised if more.

If anyone has a fix for the above, I'd love to hear it, but, I guess this is close-enough for now.

Last edited by Automatic; 04-24-2014 at 03:35 AM.
 
Old 05-18-2014, 03:59 AM   #2
unSpawn
Moderator
 
Registered: May 2001
Posts: 29,331
Blog Entries: 55

Rep: Reputation: 3529Reputation: 3529Reputation: 3529Reputation: 3529Reputation: 3529Reputation: 3529Reputation: 3529Reputation: 3529Reputation: 3529Reputation: 3529Reputation: 3529
Since you marked this solved I'm taking it off of the 0-reply list. Thanks for posting your feedback.


//NTLB
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Triple Monitors Xorg with AMD&NVIDIA: XRANDR and Xinerama not working. kernel_geek Linux - Hardware 1 03-27-2011 03:07 PM
radeon and dual head, to xrandr or not to xrandr, that's the question i92guboj Linux - Desktop 1 06-17-2009 06:48 AM
Compiling xrandr and xinerama on suse based distro (64 bits) HRCerqueira Linux - Desktop 0 06-11-2007 05:14 PM
Best way to emulate IE in Firefox 1.5? LColumbo10 Linux - Software 5 05-02-2006 06:45 AM
xinerama and non-xinerama displays edgood1 Linux - Software 0 04-02-2005 04:08 PM


All times are GMT -5. The time now is 03:09 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration