VirtualGL was used as a workaround to do a xinerama-like setup a few years back.
Archaic, in terms of not up-to-date nor up-to-par with a modern system for managing multiple framebuffers.
Yes, I cannot move across separate screens, which might as well be a multiseat setup. Not interested in that lack of flexibility.
BUT, I have managed to get it working somewhat.
Using:
Arch Linux
Kernel 3.12-rc5-1 64-bit
nouveau drivers
vf86-video-modesetting
xorg.conf looks like this (I have two cards, so I claim two cards)
Section "Device"
Identifier "Card0"
Driver "nouveau"
BusID "PCI:1:0:0"
EndSection
Section "Device"
Identifier "Card1"
Driver "nouveau"
BusID "PCI:4:0:0"
EndSection
xrandr --listproviders shows:
Provider 0: id: 0xc7 cap: 0x7, Source Output, Sink Output, Source Offload crtcs: 4 outputs: 3 associated providers: 0 name:nouveau
Provider 1: id: 0x66 cap: 0x7, Source Output, Sink Output, Source Offload crtcs: 4 outputs: 3 associated providers: 0 name:nouveau
I typed:
xrandr --setprovideroutputsource "0x66" "nouveau"
Now it shows:
Provider 0: id: 0xc7 cap: 0x7, Source Output, Sink Output, Source Offload crtcs: 4 outputs: 3 associated providers: 1 name:nouveau
Provider 1: id: 0x66 cap: 0x7, Source Output, Sink Output, Source Offload crtcs: 4 outputs: 3 associated providers: 1 name:nouveau
Notice associated providers now shows 1
Now, I run:
Screen 0: minimum 320 x 200, current 6064 x 1080, maximum 8192 x 8192
DVI-D-1 connected primary 1680x1050+0+0 (normal left inverted right x axis y axis) 408mm x 255mm
1680x1050 60.0*+
1600x1200 60.0
1280x1024 75.0 60.0
1440x900 75.0 59.9
1280x960 60.0
1152x864 75.0
1280x720 60.0
1024x768 75.1 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
640x480 75.0 72.8 66.7 60.0
720x400 70.1
HDMI-1 connected 1440x900+1680+0 (normal left inverted right x axis y axis) 410mm x 257mm
1440x900 59.9*+ 75.0
1280x1024 75.0 60.0
1280x960 60.0
1152x864 75.0
1024x768 75.1 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
640x480 75.0 72.8 66.7 60.0
720x400 70.1
VGA-1 connected 1024x768+3120+0 (normal left inverted right x axis y axis) 304mm x 228mm
1024x768 60.0*+
800x600 60.3
640x480 60.0
720x400 70.1
VGA-2 disconnected (normal left inverted right x axis y axis)
DVI-D-2 disconnected (normal left inverted right x axis y axis)
HDMI-2 connected 1920x1080+4144+0 (normal left inverted right x axis y axis) 708mm x 398mm
1920x1080 60.0*+ 60.0 59.9
1920x1080i 60.1 60.0
1280x1024 75.0 60.0
1280x720 60.0 59.9
1024x768 75.1 70.1 60.0
1440x480i 60.1 60.1
800x600 72.2 75.0 60.3 56.2
720x480 60.0 59.9
640x480 75.0 72.8 60.0 60.0 59.9
720x400 70.1
1280x1024 (0x6c) 135.0MHz
h: width 1280 start 1296 end 1440 total 1688 skew 0 clock 80.0KHz
v: height 1024 start 1025 end 1028 total 1066 clock 75.0Hz
1280x1024 (0x6d) 108.0MHz
h: width 1280 start 1328 end 1440 total 1688 skew 0 clock 64.0KHz
v: height 1024 start 1025 end 1028 total 1066 clock 60.0Hz
1024x768 (0x70) 78.8MHz
h: width 1024 start 1040 end 1136 total 1312 skew 0 clock 60.1KHz
v: height 768 start 769 end 772 total 800 clock 75.1Hz
1024x768 (0x71) 75.0MHz
h: width 1024 start 1048 end 1184 total 1328 skew 0 clock 56.5KHz
v: height 768 start 771 end 777 total 806 clock 70.1Hz
1024x768 (0x72) 65.0MHz
h: width 1024 start 1048 end 1184 total 1344 skew 0 clock 48.4KHz
v: height 768 start 771 end 777 total 806 clock 60.0Hz
800x600 (0x75) 50.0MHz
h: width 800 start 856 end 976 total 1040 skew 0 clock 48.1KHz
v: height 600 start 637 end 643 total 666 clock 72.2Hz
800x600 (0x76) 49.5MHz
h: width 800 start 816 end 896 total 1056 skew 0 clock 46.9KHz
v: height 600 start 601 end 604 total 625 clock 75.0Hz
800x600 (0x77) 40.0MHz
h: width 800 start 840 end 968 total 1056 skew 0 clock 37.9KHz
v: height 600 start 601 end 605 total 628 clock 60.3Hz
800x600 (0x78) 36.0MHz
h: width 800 start 824 end 896 total 1024 skew 0 clock 35.2KHz
v: height 600 start 601 end 603 total 625 clock 56.2Hz
640x480 (0x7b) 31.5MHz
h: width 640 start 656 end 720 total 840 skew 0 clock 37.5KHz
v: height 480 start 481 end 484 total 500 clock 75.0Hz
640x480 (0x7c) 31.5MHz
h: width 640 start 664 end 704 total 832 skew 0 clock 37.9KHz
v: height 480 start 489 end 491 total 520 clock 72.8Hz
640x480 (0x7d) 25.2MHz
h: width 640 start 656 end 752 total 800 skew 0 clock 31.5KHz
v: height 480 start 490 end 492 total 525 clock 60.0Hz
720x400 (0x80) 28.3MHz
h: width 720 start 738 end 846 total 900 skew 0 clock 31.5KHz
v: height 400 start 412 end 414 total 449 clock 70.1Hz
Now, all of my outputs on all cards are available, and I can turn them off and on using arandr, krandr, xrandr, whatever. Also, it does NOT START ANOTHER X SCREEN, so I can fully drag windows everywhere, monitor resolutions and boundaries are respected when maximizing windows, and compositing and hardware accel. works… NO XINERAMA!! YEAAAHHHH!!! Pure xrandr, with the exception of SUPER minimal xorg.conf file.
Now, the problem is, I cannot compile the Nvidia blob on this kernel yet… Pretty frustrating…
Essentially, the Nvidia drivers needs to be able to manage and work with the changes that have happened with the GEM/DRM stack. Basically, the X graphics stack and drivers have changed the way they reference cards.
All I need now is KMS and full Xrandr support in this kernel version (3.12), as well as being able to compile, Ill be good to go.
Is there any word on when we are going to see kernel 3.12 support, as well as further support for communicating with DMA_BUF, GEM, DRM, and the rest of the open-source graphics stack?