[I want to preface this with... I have enough money to buy another machine and not do multiseat. Multiseat should SHOWCASE what is possible with Linux and Open Source. We shouldn't be complacent with the old MS formula of one person = one computer.]
Over the last year, I've gone from SunRay clients to Userful.com multiseat to home brewed multiseat.
I believe there are many families out there that can take advantage of a multiseat situation. I found that SunRay clients did not have enough graphics throughput for even small flash movies, so I went to multiseat. A great way to go if you have a dual head card is Userful.com's 2 seat license -- it's easy. Unfortunately my 6 year old son has seen OpenGL (bzflag) on my workstation so I have gone down a path to get multiseat working for he and his sister on the extra P4 2.4 AGP box. I should explain here, I've got the multiseat working with vesa drivers before I start purchasing new cards. I've got the 2 keyboards and mice all figured out etc.
I bought 3 video cards (knowing that I would just use 2):
ATI Radeon 9550 AGP
ATI Radeon 9200 PCI
Nvidia GeForce 6200 PCI
After fiddling with drivers in Ubuntu, and not feeling much freedom to explorer, I reverted to my old ways with Gentoo. Using the latest gentoo-sources kernel I was able to install the ati-drivers and nvidia-drivers.
BREAKAGE #1 - MULTI-VENDOR OpenGL
libGL.so libraries want to be in the same place for X to find them. So it seems it is very difficult to run 2 Xs with different libGL.so. I tried setting up with LD_LIBRARY_PATH to have one or the other flip to their library area but I had no luck. "find /usr -name libGL.so" will help find the layout of where Gentoo installs the drivers. Of course "eselect opengl set nvidia" clobbers the normal spot and sets up symlinks and /etc/ld.so.conf
So... It seems the best thing to do is run with either 2 nvidia or 2 ati.
First I try the 9550 AGP. I get the default ati-drivers set things up and get DRI and GLX (glxinfo glxgears) happy. BZFlag being my benchmark, it seems fine.
I pull the 9550, and put in the 9200 PCI, to test one card at a time. Something is wrong -- oh, ATI DOES NOT SUPPORT BELOW 9500 with their current drivers. I try older unmasked drivers. They don't build. I eventually tried an old kernel and they built against it, the 8.28.8 compiled against kernel 2.6.18.x. But that old of a kernel is unacceptable long term. So I tried the "ati" or "radeon" driver. Hey! DRI works and OpenGL with Mesa. glxgears are fast even! BZFlag unfortunately is unplayable. I conclude that "fglrx" is required for OpenGL gaming with an ATI card, even though Mesa seemed promising.
BREAKAGE #2 - ATI only supports NEW CARDS
ATI believes that if you upgrade your kernel (or distro) you must not want decent OpenGL performance. So my 9200 is worthless as far as 3D unless I want to run something ancient.
OK... lets try Nvidia. I borrow a Quadro4 380 AGP to keep my 6200 PCI company. It turns out, I have to go back 2 major revs back to the 96.43.01. Hey but it builds with a modern kernel .22-.24! And it works. Now we are in business! Might not be the newest driver, but it's not obsolete from a kernel point of view. I try both cards individually and get a good BZFlag experience. Put them both in... make my tweaks to gdm/custom.conf to launch both. We've got multiseat! Both run glxgears smooth and at a good speed. To my amazement I start bzflag on both and let the tanks drive around in circles for a few minutes. Feeling pretty good, I show my wife. LOOK! 1 Computer... 2 Seats... doing 3D graphics! Of course she acts a little excited because she knows that it will help me feel acknowledged.
BREAKAGE #3 - Nvidia only supports NEW CARDS but doesn't abandon old ones.
OK... I can live with this. As long as that magic 96.43.01 stays in Gentoo portage and compiles against future kernels for 3 years. (yeah right)
So... I turn my son and his cousin loose on BZFlag. I stand there feeling pretty proud for a few minutes. Uh.. "Uncle Scott, it froze up." Of course my son bangs the mouse, "Mine too." Crap.. oh... starts responding again and then locks up. This time tight, have to reset the machine.
BREAKAGE #4 - Video drivers just suck
So 96.43.01 apparently isn't perfect. It seems to get memory leaks or the same kernel driver "nvidia" freaks out because it's never been tested like this. Jitters don't go away even when I fire up only one head/seat. I actually had to PULL the second Nvidia card OUT of the computer for the jitters to stop.
Fiddling around with just the desktop on the second head I found... it would fall asleep. I would have to hit a key on the FIRST head's keyboard to wake it up. (this is with just the second head launching, first head is at a virtual console switched away to VT7 I think)
They SEEMED stable -- but here I am, defeated. With the fine people here at phoronix, I'd like to start discussion about how to do this "right" and what "might work" and the future of multiseat.
I tried AGP + PCI to get multi seat.
What would you do?
-Would an SLI motherboard with two PCI-X slots be able to run two separate X sessions with two modern cards? I'm talking without SLI or Crossfire. I don't know if this is possible? Would the two PCI-X simply behave to me like two PCI slots?
-Xephyr will not do OpenGL this fast right? If Mesa isn't fast enough?
-Will closed source drivers always be this inflexible? But still desired for that OpenGL shot in the arm?
-What about going with ONE ATI 9550 and running two Xgl on one real X? Will that give good BZFlag level OpenGL?
I guess my last statement was off. You can still get an MX4000 (4000MX was wrong). I'm wondering how long Nvidia will be supportig a driver for these cards. Other options in PCI -- FX5200 and of course the 6200 that I bought. That's it in PCI, end of the road.
The Quadro 380 and MX4000 are only supported with an older driver. (96.x.x, 2 major revs older)
Upon more inspection, it seems like my 6200 PCI will work with the 169.x.x driver.
I guess now all I need for my test (on the newer driver) is a semi-modern Nvidia AGP card. Which you would think I'd have laying around, but noooo.