These notes are a summary of the results of a series of tests I have run, using a few different nVidia graphics cards in Linux PCs. The specific goal is to judge the usefulness of these systems for CAVE VR applications.
The tests were run on a dual processor, 933 MHz Dell workstation; I also ran some tests on a single processor, 500 MHz machine for comparison. The cards tested were a Quadro2MXR, GeForce2 GTS, TNT2 Pro, and PCI TNT2 Vanta. The specs of the computers and cards used are listed below.
Most of the following sections discuss the rendering performance of the cards, and factors that affect it. But I also cover the possibilities for multiple displays, and the full-scene anti-aliasing of the Quadro & GeForce.
For a basic test of the cards, I used the SPECglperf benchmark. SPECglperf measures the speed of low-level primitive operations, such as triangle strips. It does not provide an overall application-level test of a system, as SPECviewperf tries to do, but does give some idea of the relative performance of different systems. A very brief summary of the results is that the GeForce2 and Quadro2 (which are roughly equal in speed) are capable of rendering 3D primitives 2 or more times as fast as an Onyx2/IR, but only when fill performance is not an issue. As the size of triangles increases above about 16 pixels, the performance drops to between equal to or half of the IR's performance (although if Z buffering is not used, the GeForce & Quadro remain faster than the IR). Pixel operations (particularly texture definition) also tend to favor smaller sizes - the nVidia cards' speed peaks at around 128x128 pixel images or textures. But even at 512x512 (roughly video size), the pixel-pushing speed is still good.
Besides GLperf, I used two CAVE programs as application-level tests. One was a version of Crayoland that can be given a fixed viewpoint and then measures its frame rate after running for 15 seconds. The second is a simple Performer program that loads a model, then measures the average frame rate as well as app, cull, and draw times over 500 frames. The results of these tests will be mentioned in the following sections as they apply.
The X server can be configured to run with either a 24 bit depth or a 16 bit depth (8 bits is possible, but does not provide any RGB GLX visuals; 32 bits did not work when I tried it). At a 16 bit depth, RGB visuals have 5 bits of red color resolution, 6 of green, and 5 of blue. Rendering in 16 bit mode can be significantly faster than at 24 bits, especially for medium sized triangles. However, it also limits one to a 16 bit Z buffer, which can produce severe errors when the ratio of far to near clipping distance is great.
A slower CPU or motherboard can limit the speed of a graphics card by not feeding data to it fast enough. On the single processor 500MHz PC, the maximum rendering rate of very small triangles was reduced. There was an even more significant difference in the speed of pixel operations.
The AGP port is designed for fast graphics cards that might be hobbled by the speed of PCI; it can transfer data at 2 or 4 times the speed of PCI. In comparing the two TNT2 cards, the AGP one was generally about 1.5x as fast as the PCI card (note: I don't know what the difference is meant to be between "TNT2 Pro" and "TNT2 Vanta", so I can't say how that might have affected things [update: according to Jesse Laeuchli, the Vanta is basically a cheaper version of the TNT2, with a slower clock speed and slower memory]). It might have been more relevant to compare two GeForce2MX cards, but I didn't have access to any.
The Linux drivers that nVidia provides are still being developed, so it's interesting to see how they compare with the "real" drivers for Windows. Strangely, neither operating system is an overall winner - Windows 98 was much faster at drawing triangles, but Linux was much faster at pixel operations.
Being able to drive multiple displays from a single machine is highly desirable for CAVE-type applications. In particular, we are interested in being able to get two video channels from a PC, in order to drive passive stereo displays, but more than two channels would also be nice.