Many headed video cards for AGP motherboards
Updated: 2005-03-22
Created: 2003-11
The requirements are more or less:
- Linux drivers supporting accelerated 3D and stereo.
- Four screens, which usually means four outputs.
- Each screen at least 640x480, active stereo, either Z-based or
full four-buffered.
- If multiple PCs are used, genlock/framelock, either hardware
or software.
- Pixel shaders not really needed, hardware T&L probably
desirable.
An important constraint is that there can only be one AGP slot
per motherboard (slot, not card: there can be two AGP graphis cards,
as long as one is integrated), and while there can be more than
one
PCI-Express
slot per motherboard, most only have one.
But thanks to NVIDIA and their fashionable SLI products
there are some with two x8 or x16 slots.
Dual x16 slot motherboard are designed for SLI, but SLI is
not mandatory, this making it possible to put two full speed dual
head graphics cards in without connecting them and obtaining a
four head configuration with ordinary dual head graphics cards.
There are also motherboards with both a PCI-Express x16 slot
and an AGP slot, even if
it is an AGP slot but on the PCI, not an AGP, bus.
The other limitation is that there must be a nice Linux driver
with 3D acceleration. Both ATI and NVIDIA seem to have fairly
decent Linux drivers for their cards, and
XiG
does proprietary drivers for various other cards.
There are four levels of recent video card generations, that are
usually labeled by the major release of DirectX (there is a
similar set of OpenGL levels) that supports them:
-
No hardware T&L (DirectX 6), e.g. NVIDIA TNT2, ATI Rage,
Matrox G200/G4x0.
-
Hardware T&L, vertex shaders, no pixel shaders (DirectX 7),
e.g. NVIDIA GeForce/GeForce2/GeForce4 4[246]0, ATI Radeon 7x00.
-
Hardware T&L, vertex shaders, version 1 pixel shaders
(DirectX 8), e.g. NVIDIA GeForce3/GeForce4 4[246]00, ATI Radeon
8500/9[02]00, Matrox Parhelia or P650/P750.
-
Hardware T&L, vertex shaders, version 2 pixel shaders
(DirectX 9), e.g. NVIDIA GeForceFX, ATI Radeon 9[5678]00.
Each generation tends to be a fair bit faster than the previous
one when using just the features of the previous one. In Each
generation there are usually three models, normal, LE/SE/VE/MX that
is slower/cheaper and Pro/Ultra/XT that is faster/hotter/more
expensive.
Note: I haven't really discussed performance much, as I assume
that almost any recent card will do, at least for something as
simple and small as a simulator's CAVE. But I have found some:
There are very few recent games that use pixel shaders at all,
which take a lot of GPU power, to do sophisticated lighting
effects on textures and shadows.
Multiple monitor support is a complicated issue, and even under
Windows there are driver issues, especially with supporting 3D
acceleration on all monitors. One
review discusses some of the more common brands
in this respect.
To get four screens the most straightforward possibilities
(without considering any driver issues, that need to be checked in
detail) are:
- Single PC, one AGP card with four outputs
-
The Matrox G450 based card is probably too slow, and the Xentera
GT4 is probably the fastest, but one would need to check the
Linux driver support. Probably the standard ATI driver would
work.
- Single PC, one AGP card with three outputs
-
This means using the Matrox Parhelia(s), consumer version.
The Parhelia Windows drivers can support 3D acceleration on all
three displays
Then one can cover four displays by having one output cover
both the front and upper window, pre-distorted so when it looks
undistorted when viewed. Or else by using a slower PCI card to
do independently the fourth display (e.g. the right side, in
which almost nothing happens, as it is mostly occluded by the
base of the boom).
- Single PC, two cards (AGP/PCI or PCI/PCI) with two
outputs each.
-
The primary difficulty is finding non-AGP video cards. I think
it is instead fairly easy to support such a setup under X11 on
Linux. I am pretty sure it is possible for 2D applications, less
sure for 3D accelerated ones, in particular using DRI. It may be
easier with the non-DRI driver from NVIDIA.
There are three types of PCI buses, PCI, PCI64 and PCI-X,
and
a fourth type has been announced
PCI-Express,
initially as a replacement for AGP, but also of PCI64 and PCI-X.
PCI is 32 bits wide and 33MHz, PCI64 64 bits wide and 66MHz
(optionally) and PCI-X is twice as fast again as PCI64. There
are PCI slots in every consumer PC, there are 1-2 PCI64 slots in
many cheap (>=CA$300) server-level motherboards, and several
motherboards already have PCI-X slots, but PCI-Express won't be
around for a while yet.
PCI64 and PCI-X is usually put into server for storage bus
cards (SCSI RAID etc.) or for Gigabit Ethernet. I discovered
that one version of the Parhelia supports PCI64.
- Two PCs, each with one AGP card with two outputs
-
Using two separate PCs might require some form of hardware or
software lock, and these two ATI cards support both lock and
stereo, and under Linux too, and are rather cheaper than the
equivalent NVIDIA ones: