A. GLperf is an executable benchmark that measures the performance of
OpenGL 2D and 3D graphics operations. These operations are low-level
primitives (points, lines, triangles, pixels, etc.) rather than entire
models such as those used in the Viewperf benchmark.
Q. What is the purpose of GLperf?
A. The purpose of GLperf is two-fold: to standardize the method by
which vendors report OpenGL primitive performance on their systems, and to
use interactive graphs and other data analysis tools to present a much fuller
performance picture than that provided by isolated primitive numbers.
Q. Who has developed GLperf and who will maintain it?
A. The benchmark was developed and will be maintained by the OpenGL
Performance Characterization (OPC) project group, a graphics benchmarking
organization that operates under the auspices of the Graphics Performance
Characterization (GPC) Group.
Q. What is a GLperf script?
A. A GLperf script describes the graphics primitives that will be
included in performance tests. One script tests performance, for example,
based on a 50-pixel triangle strip. A script allows many disparate
primitives to be tested during one GLperf run and allows easy changes and
comparisons between different tests.
Q. What GLperf scripts are used for reporting results?
A. The OPC project group has approved a set of 13 GLperf scripts for
reporting results within its Web publication, the GPC News. These
are split into 10 RGB scripts and three color index scripts. The scripts
are further divided by functionality: the OPClist scripts (RGB and color
index) contain a number of tests for a variety of graphics primitives and
other operations (such as window-clears). These tests are probably the
closest parallel to primitive-level results available from most vendors
today. Other scripts feature specific graphics operations, such as
CopyPixl.rgb, DrawPixl.rgb, ReadPixl.rgb, TexImage.
rgb measure glCopyPixels, glDrawPixels, glReadPixels and
glTexImage2D RGB operations. DrawPixl.ndx and ReadPixl.ndx
are the color index analogs to DrawPixl.rgb and ReadPixl.rgb
.
Remaining scripts address underlying graphics concepts that affect OpenGL
performance -- BgnEnd.rgb measures performance as it varies with the
number of primitives batched together (in a glBegin/glEnd pair),
FillRate.rgb measures how fast rasterization operations are performed
(how many pixels are drawn per second), Light.rgb measures the effect
of the number of enabled light sources on drawing a particular primitive,
and LineFill.rgb and TriFill.rgb measure the effect of
increasing primitive size on the drawing rates of lines and triangles,
respectively.
Q. Can vendors choose to omit results from some of the GLperf scripts
or tests?
A. No, except for those vendors whose windowing systems or OpenGL
implementations don't support the operations being tested. An example of
this would be a vendor whose windowing system does not support color index
windows, only RGB. This vendor could report all the RGB results, but omit
the color index results.
Q. Why are there so many numbers, instead of just one?
A. One number is certainly preferable for marketing purposes. It does
not serve justice, however, to boil down meaningful results into one
meaningless number. Take the analogy of buying a car: one must compare many
aspects of each car to arrive at the best buying decision. Most car shoppers
do not take totally unrelated metrics and composite them for comparison
purposes. They don’t, for example, take an average of the acceleration, top
speed, trunk space, fuel efficiency, leg room, gas tank capacity and inverted
braking distance. So why would one insist on doing so for something as
complex as 3D graphics performance? Rather, one should choose the metrics
most related to one's needs and compare using those figures. A CAD user,
for example, might not care particularly how fast a system can transfer an
image from memory to the screen, but this is vitally important to others,
such as those in the film and video industry.
Q. What is the difference between Viewperf and GLperf?
A. Both Viewperf and GLperf measure the graphics performance of a
system through the OpenGL API. They were designed, however, with different
goals in mind. While Viewperf draws an entire model with differing sizes of
primitives (as you would see in an actual application), GLperf artificially
assigns a specific size to every primitive drawn within a test. While
Viewperf attempts to emulate what an application would do graphically and
measure it, GLperf makes no such attempt. Instead, GLperf provides a more
controlled environment within which to extract and measure the highest
performance or "upper bound" of a particular system.
Another difference is that Viewperf reports results in frames drawn per
second, whereas GLperf measures its results in primitives drawn per second,
whether the primitive is pixels, points, lines, triangles or some other
object. To give an analogy to the automotive world, GLperf would be the
equivalent of a speedometer measuring top speed, while Viewperf would be a
stopwatch measuring the average speed through a slalom course.
Q. How do I look at all these numbers and make sense of them?
A. A substantial amount of work went into making the visualization
and analysis of GLperf data as simple as possible. This goal is realized in
the form of Java applets that read the GLperf performance results from the
server's database, and allow tabular and graphical comparisons on the
client's web browser. At the top level, the GLperf visualization tools are
broken into two branches: the OPClist and the other scripts. Going down the
OPClist branch, one can construct a performance comparison by selecting the
desired primitives from one list, and the desired systems on another list.
The other branch allows users to choose from the different GLperf scripts to
display the data that most interests them. Each choice enables a table to
be displayed with graphs on one axis and system configurations on the other.
By selecting different cells, different sets of data will be displayed.
Also, the axes can be linear or a log scale, allowing the most flexible
plotting of data.
Q. What systems are capable of running GLperf?
A. Those systems supporting OpenGL drivers on OS/2, Windows 95,
Windows NT and UNIX derivatives.
This document was prepared by John Spitzer, spit@sgi.com, chair of the OPC project group.