There are two basic ways to get multiple heads - either use a single graphics card with multi-channel output, or use multiple cards.
The GeForce2MX and Quadro2MXR chips include a feature called "TwinView", which allows them to drive two video displays from a single card. The ASUS V7100 and Inno3D Tornado cards use the GeForce2MX, and some (but not all) models include 2 VGA outputs (or one VGA and one DVI, which can be converted to VGA with an adapter); the Elsa Synergy III card uses the Quadro2MXR and has one VGA and one DVI output.
The TwinView feature is enabled by adding its options to the Screen section of the XF86Config file (in /etc/X11). The options that I have used are:
Option "TwinView" "true" Option "SecondMonitorHorizSync" "31-57" Option "SecondMonitorVertRefresh" "50-90" Option "MetaModes" "1024x768, 1024x768" Option "TwinViewOrientation" "RightOf" Option "ConnectedMonitor" "crt,crt"
All of the Quadro2MXR benchmark results given previously were obtained when running a single 1024x768 display, without TwinView. When TwinView is enabled as above, the triangle-rendering performance decreases (pixel operations are more or less unchanged). Part, but not all, of this would be due to the increased frame buffer size. Even with the GeForce2, increasing the display size from 1024x768 to 1280x1024 (and not changing the size of the benchmark programs' windows) resulted in moderately lower speeds. On the Quadro2MXR, changing the TwinViewOrientation to "Clone" (so that the frame buffer was then 1024x768, not 2048x768) did yield better benchmark results, but still not as good as without TwinView at all. In any event, although the performance drop measured by GLperf was up to 50%, in the Crayoland and Harlem tests it was only about 10% or less.
The alternative solution, using multiple graphics cards, was at best partially successful. The latest nVidia drivers do support multiple cards; in theory one should be able to run a many-headed system with several PCI cards and, optionally, one AGP card (as far as anyone can find, there are no motherboards that support more than one AGP port). So, I attempted to pack up to 4 PCI TNT2 cards and the AGP Quadro2 card into a single machine. Trying to run a PCI card and the AGP card simultaneously was unsuccessful - the system would lock up when X was started. Multiple PCI cards did work, but only up to 3. Running 4 at the same time produced a warning message from the NVdriver kernel module (the message claimed that the maximum number of devices was exceeded, but from examining the source it appears that the maximum had merely been reached at that point); X would start successfully, but then any time I tried to run a CAVE program using all 4 displays, the X server would crash.
One major problem with using multiple cards is that the Linux version of Performer does not currently support multiple pipes. Trying to start a CAVE program that uses two displays yields the error message "PF Warning(2): Linux: pfMultipipe(2) ignored - Not supported." This precludes running most current CAVE applications on this sort of system.
On the other hand, Crayoland did run successfully with up to 3 cards. The chart below shows the relative performance of 1, 2, and 3 heads at three different display resolutions. The difference in frame rate between 1 and 2 heads is extremely small. At lower resolutions, the frame rates are fairly good - possibly with GeForce2MX cards the performance would be acceptable even at 1024x768. One thing to note is that the dual processors were very important with multiple cards; when I ran Crayoland on two cards with the machine booted in single-processor mode, there were frequent, visible pauses (a pause of a few frames roughly once a second).