Sure! - I've been wanting to get back to this and do a HOWTO - but I'll post what I can for now and my xorg.conf - I had to build this file (xorg.conf) myself since nvidia's control panel doesn't really take in account more than 2 monitors ... - When starting in on this project I recommend you start with getting one twinview working - then move onto the next, etc - saving your xorg.conf every-time you make a change so you can see exactly the results. I think I had about 30+ xorg.conf backup's that i had various notes about when i was finished. I think what the solution would be for a 3 monitor setup would be to create 1 twinview setup with two monitors and 1 independent monitor setup. Once you had that configured you could go the same route i did and enable xinerama along with installing xserver-xgl and i bet it would span all 3 monitors with 3d effects enabled... Remember - my setup is seen as 3 monitors - but again i had to enable twinview on them in order to get the 3d acceleration enabled on that card. so for you - 1 twinview, 1 standalone, enable xinerama and you should be able to use all 3 / drag windows across, etc - but compiz may not work - if not then try xserver-xgl and see if that works across all 3
Here are some more details -
- First - start with latest nvidia drivers - I installed EnvyNG from the package manager, then used that to install the latest drivers. after reboot you can start with your first twinview setup and go from there - don't try to do it all at once if you haven't before - it will confuse the hell outa ya! - To keep it simple I'm using all the same monitors at the same resolution - I wouldn't want to add even more complexity with various resolutions per monitor - but I'm sure if there is a will there is a way...
<( If anyone knows how to get around any of the limitations below or to do this a different way let me know! )>
#1 - I had to pair up the two DVI interfaces on each card to make 3 separate twinview arrangements. To keep it organized I connected one top row monitor and one bottom row monitor to each of my 3 dual DVI graphics cards. So at this point you can look at my arrangement as having 3 seperate twinview virtual monitors comprised of 2 monitors each.
I tried about every combination possible to get to this point - Here were some of my results and why I ended up with this configuration:
#1a - Each Monitor Individually
- With this configuration you could have seperate X screens per monitor - but in order to combine the screens into a virtual desktop you had to use Xinerama to do it. Once you enabled Xinerama - say goodbye to compiz-fusion effects - it has something to do with nvidia's drivers and composite - I dont know the technical reasons - but once you enabled Xinerama with each monitor configured individually your compiz-fusion effects will no longer work (it wont load). The funny thing is I could load up the gears Gl test and span it across all 6 monitors and it was VERY smooth and hardware rendering was working. But - no compiz-fusion = NO EYE CANDY = no thanks!
#2 Once all 3 twinview setups were working - without xinerama enabled these acted like 3 separate x Screens.. Compiz was working on each individually but you of course couldn't drag windows across the 3 sections and they acted independently - again - no thanks! I believe the next hangup I had was that if again I enabled xinerama - it would disable compiz effects..
#3 My final solution was a combination of the 3 twinview configurations, enable xinerama, and installing xserver-xgl from the package manager. Once these things were in place i had one large virtual screen with 3D enabled across all 6 monitors! I heard that there were issues with xserver-xgl but I haven't had any issues and I've been running on this for a few weeks now.. I will revisit the original xserver-xorg configuration again in the future to see if I can get it to work - but the limitation seems to be that if I enable xinerama with it - compiz-fusion will no longer work.. and without enabling xinerama - i was stuck with 3 separate xscreens! (so if i can find a solution to merge the 3 twinview screens without using xinerama - I'm all for it!).
- without xserver-xgl - 3d graphics would not span all 6 monitors because i believe they get disabled with the xinerama again..
#4 - the final issue had to do with the fact that now that i had all 6 monitors working as one - xserver-xgl now decided that when i maximize a window - it needs to maximize across all 6 monitors! I looked for various options and the one i came up with was a hack of the xinerama library itself - (do a search on google for fake xinerama) - but.. I now see that compiz-fusion has its own settings for settings monitor arrangements and you can manually enter them. The benefit of the fake xinerama deal was that it also allowed the bootup / login screen to show up in one monitor instead of expanded across all 6 -
#5 - there are still some quirks - some windows just don't seem to want to listen to compiz-fusion or the fake xinerama layout information - for example GKSU window will show up right smack in the middle of the virtual 6 monitor screen - so it shows up inbetween the middle top and middle bottom monitors - split across them.. ggrrr. - same with the logout selection display..
Ok - there is a lot of information here - and more to post later in a formal howto - Let me know if you have any questions!
Shane Menshik
D2 GLOBAL INC.
xorg.conf for 6 monitor setup - using 3 x nvidia cards with 6 20" LCD monitors at 1680x1050 60hz - creates 3 virtual monitors using twinview then xinerama to combine them together - then used xserver-xgl ontop of it all to enable compiz - it creates one BIG virtual monitor across all 6 monitors..
I'm sure there are some things in here that can be removed - but I hadn't had time to clean this up - and if it aint broke - don't fix it
Code:
# xorg.conf file modifications by Shane Menshik - D2 GLOBAL INC
# LAST UPDATED 08-25-2008
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" LeftOf "Screen0"
Screen 2 "Screen2" RightOf "Screen0"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
Option "AIGLX" "true"
Option "RenderAccel" "true"
Option "AllowGLXWithComposite" "true"
Option "XGL" "true"
EndSection
Section "Files"
RgbPath "/etc/X11/rgb"
FontPath "/usr/share/fonts/X11/misc"
FontPath "/usr/share/fonts/X11/util"
FontPath "/usr/share/fonts/X11/100dpi/:unscaled"
FontPath "/usr/share/fonts/X11/75dpi/:unscaled"
FontPath "/usr/share/fonts/X11/Type1"
FontPath "/usr/share/fonts/X11/100dpi"
FontPath "/usr/share/fonts/X11/75dpi"
FontPath "/usr/share/fonts/X11/encodings"
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection
Section "Module"
Load "dri"
Load "dbe"
Load "extmod"
Load "type1"
Load "freetype"
Load "glx"
EndSection
Section "ServerFlags"
Option "Xinerama" "1"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
# Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
Option "CorePointer"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor0"
VendorName "Unknown"
ModelName "DELL 2009W"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
Option "DPMS"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor1"
VendorName "Unknown"
ModelName "DELL 2009W"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
Option "DPMS"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor2"
VendorName "Unknown"
ModelName "DELL 2009W"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
Option "DPMS"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor3"
VendorName "Unknown"
ModelName "DELL 2009W"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
Option "DPMS"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor4"
VendorName "Unknown"
ModelName "DELL 2009W"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
Option "DPMS"
EndSection
Section "Monitor"
# HorizSync source: edid, VertRefresh source: edid
Identifier "Monitor5"
VendorName "Unknown"
ModelName "DELL 2009W"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Videocard0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 8800 GTX"
BusID "PCI:3:0:0"
Option "AllowGLXWithComposite" "true"
Option "XAANoOffscreenPixmaps"
Option "NoLogo" "true"
Option "backingstore" "true"
EndSection
Section "Device"
Identifier "Videocard1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 8800 GTX"
BusID "PCI:4:0:0"
Option "AllowGLXWithComposite" "true"
Option "XAANoOffscreenPixmaps"
Option "NoLogo" "true"
Option "backingstore" "true"
EndSection
Section "Device"
Identifier "Videocard2"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 8800 GTX"
BusID "PCI:7:0:0"
Option "AllowGLXWithComposite" "true"
Option "XAANoOffscreenPixmaps"
Option "NoLogo" "true"
Option "backingstore" "true"
EndSection
Section "Device"
Identifier "Videocard3"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 8800 GTX"
BusID "PCI:4:0:0"
Option "AllowGLXWithComposite" "true"
Option "XAANoOffscreenPixmaps"
Option "NoLogo" "true"
Option "backingstore" "true"
Screen 1
EndSection
Section "Device"
Identifier "Videocard4"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 8800 GTX"
BusID "PCI:3:0:0"
Option "AllowGLXWithComposite" "true"
Option "XAANoOffscreenPixmaps"
Option "NoLogo" "true"
Option "backingstore" "true"
Screen 0
EndSection
Section "Device"
Identifier "Videocard5"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce 8800 GTX"
BusID "PCI:7:0:0"
Option "AllowGLXWithComposite" "true"
Option "XAANoOffscreenPixmaps"
Option "NoLogo" "true"
Option "backingstore" "true"
Screen 1
EndSection
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
Option "AllowGLXWithComposite" "true"
Option "AddARGBGLXVisuals" "True"
Option "TwinView" "1"
Option "metamodes" "DFP-0: 1680x1050_60 +0+1050, DFP-1: 1680x1050_60 +0+0"
SubSection "Display"
Depth 24
EndSubSection
Defaultdepth 24
EndSection
Section "Screen"
Identifier "Screen1"
Device "Videocard1"
Monitor "Monitor1"
DefaultDepth 24
Option "AllowGLXWithComposite" "true"
Option "AddARGBGLXVisuals" "True"
Option "TwinView" "1"
Option "metamodes" "DFP-0: 1680x1050_60 +0+1050, DFP-1: 1680x1050_60 +0+0"
SubSection "Display"
Depth 24
EndSubSection
Defaultdepth 24
EndSection
Section "Screen"
Identifier "Screen2"
Device "Videocard2"
Monitor "Monitor2"
DefaultDepth 24
Option "AllowGLXWithComposite" "true"
Option "AddARGBGLXVisuals" "True"
Option "TwinView" "1"
Option "metamodes" "DFP-0: 1680x1050_60 +0+1050, DFP-1: 1680x1050_60 +0+0"
SubSection "Display"
Depth 24
EndSubSection
Defaultdepth 24
EndSection
Section "Screen"
Identifier "Screen3"
Device "Videocard3"
Monitor "Monitor3"
DefaultDepth 24
Option "AllowGLXWithComposite" "true"
Option "AddARGBGLXVisuals" "True"
Option "TwinView" "0"
Option "metamodes" "DFP-1: 1680x1050_60 +0+0"
SubSection "Display"
Depth 24
EndSubSection
Defaultdepth 24
EndSection
Section "Screen"
Identifier "Screen4"
Device "Videocard4"
Monitor "Monitor4"
DefaultDepth 24
Option "AllowGLXWithComposite" "true"
Option "AddARGBGLXVisuals" "True"
Option "TwinView" "0"
Option "metamodes" "DFP-0: 1680x1050_60 +0+0"
SubSection "Display"
Depth 24
EndSubSection
Defaultdepth 24
EndSection
Section "Screen"
Identifier "Screen5"
Device "Videocard5"
Monitor "Monitor5"
DefaultDepth 24
Option "AllowGLXWithComposite" "true"
Option "AddARGBGLXVisuals" "True"
Option "TwinView" "0"
Option "metamodes" "DFP-1: 1680x1050_60 +0+0"
SubSection "Display"
Depth 24
EndSubSection
Defaultdepth 24
EndSection
Section "DRI"
Mode 0666
EndSection
Section "Extensions"
Option "Composite" "Enable"
EndSection
Bookmarks