The following are charts showing some graphics benchmark results from an Onyx2 and three different nVidia-based graphics cards. The benchmark used was SPECglperf version 3.1.2, using the pre-compiled Linux binary and the provided script files (distributed in GLscrip8.tgz); for the Onyx I compiled the GLperf source, with -O2 optimization and loop unrolling enabled. All of the nVidia cards were tested on the same PC. I tested the cards with both a 24 bit depth and a 16 bit depth, and at a resolution of 1024x768. I did not run any of the color-indexed tests, only the RGB ones.
The first two bar charts show the results of single, fairly arbitrary, test cases from the OPClist.rgb script. Unfortunately, there was no test in the standard scripts that combined all the features common to VR applications - those with Z-buffering tended not to use texture mapping, and vice versa.
The "Tristrips" result is the number of triangles per second when rendering Z-buffered, smooth shaded triangle strips in immediate mode with 1 infinite light source, where each triangle has an area of 50 pixels. The "Textured tristrips" result is for 50 pixel, smooth shaded triangle strips with a 64x64 RGB, linear modulated texture, in immediate mode with 1 infinite light (no Z-buffering). The "Disjoint triangles" result is for 25 pixel, Z-buffered, smooth shaded individual triangles, in immediate mode with 1 infinite light. Note that because the disjoint triangles are smaller than the tristripped ones, it's not really fair to compare the numbers between tests.
The "Points" result is for rendering single pixel points, with no Z-buffering or lighting, in a display list.
The "Lines" result is for Z-buffered, flat shaded lines in a line strip,with no lighting, in a display list.
The "Textured disjoint quads" is for 100 pixel, smooth shaded, individual quadrilaterals, with a 64x64 RGB, linear modulated texture and 1 infinite light, in a display list.
The next chart shows selected results from the DrawPixl, ReadPixl, and TexImage scripts.
The "Draw Pixels" test writes a 512x512, RGB, unsigned byte image to the frame buffer in immediate mode. The "Read Pixels" test reads a 512x512 RGB, unsigned byte image back from the frame buffer, in immediate mode. The "Texture Downloads" test defines a 512x512, RGB, unsigned byte texture map without mipmapping, in immediate mode.
The extremely poor DrawPixl result for the TNT2 seemed suspicious (especially when compared to the texture download performance), but I've run several tests, with both PCI & AGP cards and 16 & 24 bits, and the results are consistent.
The next four graphs show the basic triangle rendering performance of the different systems in more detail. They are from the TriFill script, which measures the triangles per second speed while varying the pixel size of the individual triangles.
The first graph is for textured, non-Z-buffered triangle strips in immediate mode; the texture is again a 64x64 RGB, linear modulated one; smooth shading and 1 infinite light are used. The second graph is for non-textured, Z-buffered triangle strips in immediate mode, with smooth shading and 1 infinite light. The third and fourth graphs show these two tests run with display lists instead of immediate mode.
The next four graphs show more detailed results for the pixel-pushing tests. They show how the speed of pixel reading & writing, and texture definition, varies with the size of the image involved.
The first graph shows the speed of glDrawPixels for RGB, ubyte images. The second graph shows the speed of glReadPixels for RGB, ubyte images. The third graph shows the speed of glTexImage2D for RGB, ubyte textures without mipmapping. The fourth graph shows the speed of glTexImage2D for RGB, ubyte, mipmapped textures. All of these tests were run in immediate mode.