(TexMagFilter GL_LINEAR)
where we want the Texture Magnification Filter to be set to GL_LINEAR.
(TexMinFilter GL_NEAREST GL_LINEAR_MIPMAP_LINEAR)
would result in two runs being made, one with the Texture Minification Filter
set to GL_NEAREST, the next with it set to
GL_LINEAR_MIPMAP_LINEAR. If
multiple attribute lists are given, the Cartesian product of the lists is
calculated. Be careful, this can result in an enormous amount of tests!
(ObjsPerBeginEnd from 100 to 10 step -10)
This would set the number of objects to values {100, 90, 80, 70, 60, 50, 40,
30, 20, 10 }. Notice that negative step values are perfectly legal.
You can also step by a percentage of the current value, like:
(ObjsPerBeginEnd from 1 to 256 step 100%)
This would set the number of objects to powers of 2: {1, 2, 4, 8, 16, 32, 64, 128, 256}.
Negative step percentages, like step values, are legal as well.
(Fog *)
or
(Fog ALL)
would produce tests that would have the FogMode parameter set to values {
Off, GL_LINEAR, GL_EXP, GL_EXP2}. Choosing a wildcard on
a type which
is not enumerated (e.g. Size) will produce an error.
printf statement,
which is restricted to use with the UserString property.
This attribute allows you to construct a printf statement of your
choice, using property names as arguments to the printf function.
For example,
TriangleStripTest {
(UserString printf("Triangle strip: %.0f pixels", Size))
(Size from 20 to 100 step 20)
}
is equivalent to the following five tests:
TriangleStripTest {
(UserString "Triangle strip: 20 pixels")
(Size 20)
}
TriangleStripTest {
(UserString "Triangle strip: 40 pixels")
(Size 40)
}
TriangleStripTest {
(UserString "Triangle strip: 60 pixels")
(Size 60)
}
TriangleStripTest {
(UserString "Triangle strip: 80 pixels")
(Size 80)
}
TriangleStripTest {
(UserString "Triangle strip: 100 pixels")
(Size 100)
}
DrawPixelsTest {
([ImageWidth ImageHeight] 16 32 64 128)
}
This is substantially more succinct than the other option:
DrawPixelsTest {
(ImageWidth 16)
(ImageHeight 16)
}
DrawPixelsTest {
(ImageWidth 32)
(ImageHeight 32)
}
DrawPixelsTest {
(ImageWidth 64)
(ImageHeight 64)
}
DrawPixelsTest {
(ImageWidth 128)
(ImageHeight 128)
}
/* */ kind, and C++ are the type which start
with //
and continue to the end of the line. To allow easy creation of input
files, GLperf provides a decent amount of syntactic and semantic error
checking.
In addition to providing flexible specification of tests to run, I have attempted to also provide flexible reporting options. With the enormous amount of state information present in each test, it is not easy to devise a simple reporting mechanism. The standard format allows one line per attribute and specifies in detail which attributes are set to what. You may also choose the "delta" (-d) option which will only show which values have changed from the previous test. Additionally, you can select whether you want the timing metrics to be reported in objects per second or microseconds per object. The microsecond metric is selected by the -u flag. You may also wish to view the performance in terms of pixels rather than objects. The -p flag will allow you to do this.
{ LocalPropertyList }
( PropertyName AttributeValue )
from int to int | from int to int step int | from int to int step int % |
from float to float |
from float to float step float |
from float to float step float %
List -> Value | Value List
Value -> Enumerated | float | int | 0xhex
Wildcard -> ALL | *
Test ------ Drawn ------ Primitive ------ Vertex ------ Points
| | | |
| | | ------ Linear ------ Lines
| | | | |
| | | | ------ LineStrip
| | | | |
| | | | ------ LineLoop
| | | |
| | | ------ Polygonal ----- Triangles
| | | |
| | | ----- TriangleStrip
| | | |
| | | ----- TriangleFan
| | | |
| | | ----- Quads
| | | |
| | | ----- QuadStrip
| | | |
| | | ----- Polygon
| | |
| | ------ RasterPos ----- Bitmap {Image}
| | |
| | ----- Text
| | |
| | ----- DrawPixels {Image, TransferMap, Zoom}
| | |
| | ----- CopyPixels {Image, TransferMap, Zoom}
| |
| ------ Clear
|
------ Transform
|
------ ReadPixels {Image, TransferMap}
|
------ TexImage {Image, TransferMap}
Classes shown in brackets are additional inherited classes (i.e. multiple inheritance).| Property/String Names | Description | Settable? | Printed? | |||
BitmapWidthWidth of Bitmap |
Width of bitmap (width defaults to ImageWidth unless this is set, in which case this sets the subimage width) | Yes | Yes | |||
BitmapHeightHeight of Bitmap |
Height of bitmap (height defaults to ImageHeight unless this is set, in which case this sets the subimage height) | Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
ClearColorBufferClear Color Buffer |
Clear the Color Buffer |
|
True |
Yes | Yes | |
ClearDepthBufferClear Depth Buffer |
Clear the Depth Buffer |
|
False |
Yes | Yes | |
ClearStencilBufferClear Stencil Buffer |
Clear the Stencil Buffer |
|
False |
Yes | Yes | |
ClearAccumBufferClear Accumulation Buffer |
Clear the Accumulation Buffer |
|
False |
Yes | Yes | |
ClearIndexClear Index |
Index value to clear to in color index mode | Yes | Yes | |||
ClearColorClear Color |
Color to clear to in RGB/RGBA mode |
|
Black |
Yes | Yes | |
PointDrawDraw Point Between Clears |
Draws a point between clears to preclude cheating |
|
Off |
Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
CopyPixelsWidthWidth of CopyPixels |
Width of CopyPixels call | Yes | Yes | |||
CopyPixelsHeightHeight of CopyPixels |
Height of CopyPixels call | Yes | Yes | |||
CopyPixelsTypeType of CopyPixels |
Type of CopyPixels call - specifies what kind of buffer to copy |
|
GL_COLOR |
Yes | Yes | |
ReadBufferRead Buffer |
Specifies what buffer to copy from (the source of the CopyPixels) |
|
GL_FRONT |
Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
DrawPixelsWidthWidth of DrawPixels |
Width of DrawPixels call (width defaults to ImageWidth unless DrawPixelsWidth is set, in which case it sets the subimage width) | Yes | Yes | |||
DrawPixelsHeightHeight of DrawPixels |
Height of DrawPixels call (height defaults to ImageHeight unless DrawPixelsHeight is set, in which case it sets the subimage height) | Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
DrawableTypeDrawable Type |
Target drawable (this currently only supports rendering to windows) |
|
WindowDraw |
Yes | Yes | |
RenderModeRender Mode |
Render mode (currently only supports GL_RENDER) |
|
GL_RENDER |
Yes | Yes | |
DitherDither Enabled |
Dithering state |
|
On |
Yes | Yes | |
DrawBufferDraw Buffer |
Buffer destination of drawing |
|
GL_FRONT |
Yes | Yes | |
ColorMaskColor Mask Enabled |
Color masking state - argument specifies boolean flags passed to glColorMask |
|
TTTT |
Yes | Yes | |
IndexMaskIndex Mask Enabled |
Index Mask value | Yes | Yes | |||
ScissorScissoring Enabled |
Scissor test state |
|
Off |
Yes | Yes | |
ScissorXScissor X |
X coordinate of scissor rectangle's origin | Yes | Yes | |||
ScissorYScissor Y |
Y coordinate of scissor rectangle's origin | Yes | Yes | |||
ScissorWidthScissor Width |
Width of scissor rectangle | Yes | Yes | |||
ScissorHeightScissor Height |
Height of scissor rectangle | Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
ImageFormatImage Format |
Format of the Image Data |
|
GL_RGBA |
Yes | Yes | |
ImageTypeImage Type |
Type of the Image Data |
|
GL_UNSIGNED_BYTE |
Yes | Yes | |
ImageAlignmentImage Alignment |
PixelStore Alignment of the Image Data |
|
4 |
Yes | Yes | |
ImageSwapBytesImage Swap Bytes |
PixelStore Swap Bytes State of the Image Data |
|
False |
Yes | Yes | |
ImageLSBFirstImage LSB First |
PixelStore LSB First State of the Image Data, pertains to Bitmap ImageType only |
|
False |
Yes | Yes | |
ImageWidthImage Width |
This is the width of the image data allocated in memory. Under some circumstances, a subimage of this image may be written or read into. This is where ImageWidth is larger than DrawPixelsWidth, ReadPixelsWidth, CopyPixelsWidth, BitmapWidth, or TexImageWidth. By default, these parameters will be equal to ImageWidth unless explicitly set by the user. If these parameters are larger than ImageWidth, they will be clamped to ImageWidth (this is not a bug!). This property has no meaning in the CopyPixels case. | Yes | Yes | |||
ImageHeightImage Height |
This is the height of the image data allocated in memory. Under some circumstances, a subimage of this image may be written or read into. This is where ImageHeight is larger than DrawPixelsHeight, ReadPixelsHeight, CopyPixelsHeight, BitmapHeight, or TexImageHeight. By default, these parameters will be equal to ImageHeight unless explicitly set by the user. If these parameters are larger than ImageHeight, they will be clamped to ImageHeight (this is not a bug!). This property has no meaning in the CopyPixels case. | Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
LineWidthLine Width |
Line width | Yes | Yes | |||
LineStippleLine Stippling Enabled |
Line stipple enable state |
|
Off |
Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
PolygonSidesNumber of Sides in Polygon |
Number of sides on a polygon | Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
AspectAspect |
Ratio of height of polygon to its width | Yes | Yes | |||
PolygonModeFrontPolygon Rasterization Mode/Front Side |
Polygon Rasterization Mode/Front Side |
|
GL_FILL |
Yes | Yes | |
PolygonModeBackPolygon Rasterization Mode/Back Side |
Polygon Rasterization Mode/Back Side |
|
GL_FILL |
Yes | Yes | |
PolygonStipplePolygon Stippling Enabled |
Polygon Stipple enable state |
|
Off |
Yes | Yes | |
TwoSidedTwo Sided Lighting |
Two sided lighting enable state |
|
Off |
Yes | Yes | |
CullFaceCull Face Mode |
Face culling method |
|
Off |
Yes | Yes | |
FacingFrontFraction of Polygons Facing Front |
Fraction of primitives that are facing front, FacingBack + FacingFront must equal 1.0 | Yes | Yes | |||
FacingBackFraction of Polygons Facing Back |
Fraction of primitives that are facing back, FacingBack + FacingFront must equal 1.0 | Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
ColorDimDimension of Color Data |
Dimension of Color Data | Yes | Yes | |||
ProjectionProjection Matrix Type |
Projection Matrix Type |
|
Perspective |
Yes | Yes | |
AcceptObjsFraction of Primitives Trivially Accepted |
Fraction of primitives that are trivially accepted, ClipObjs + AcceptObjs + RejectObjs must equal 1.0 | Yes | Yes | |||
RejectObjsFraction of Primitives Trivially Rejected |
Fraction of primitives that are trivially rejected, ClipObjs + AcceptObjs + RejectObjs must equal 1.0 | Yes | Yes | |||
ClipObjsFraction of Primitives Clipped |
Fraction of primitives that are clipped by window, ClipObjs + AcceptObjs + RejectObjs must equal 1.0 | Yes | Yes | |||
DepthOrderVertex/RasterPos Depth Ordering |
Z Order of drawn primitives |
|
Coplanar |
Yes | Yes | |
TexGenTexture Generation |
Texture generation method |
|
Off |
Yes | Yes | |
TexTargetTexture Target |
Texture enable state |
|
Off |
Yes | Yes | |
TexWidthTexture Width |
Texture image width (level 0) | Yes | Yes | |||
TexHeightTexture Height |
Texture image height (level 0) | Yes | Yes | |||
TexDepthTexture Depth |
Texture image depth (level 0), (supported only with GL_EXT_texture3D) | Yes | Yes | |||
TexExtentTexture Extent |
Texture image extent (fourth dimension), (supported only with GL_SGIS_texture4D) | Yes | Yes | |||
TexBorderTexture Border |
Width of texture border | Yes | Yes | |||
TexCompsInternal Texture Components |
Number of components in or internal format of the texture image (those formats other than 1, 2, 3, 4, only supported with GL_EXT_texture) (dual and quad formats only supported with GL_SGIS_texture_select) |
|
3 |
Yes | Yes | |
TexCompSelectTexture Component Selected |
Texture component that is selected (only supported with GL_SGIS_texture_select) | Yes | Yes | |||
TexLODTexture Level Of Detail |
Texture level of detail for computed texture coordinates of primitives | Yes | Yes | |||
TexMagFilterTexture Magnification Filter |
Texture magnification filter (filter4 only with GL_SGIS_texture_filter4, detail only with GL_SGIS_detail_texture, sharpen only with GL_SGIS_sharpen_texture) |
|
GL_NEAREST |
Yes | Yes | |
TexMinFilterTexture Minification Filter |
Texture minification filter (filter4 only with GL_SGIS_texture_filter4) |
|
GL_NEAREST |
Yes | Yes | |
TexWrapSTexture Wrap S |
Texture wrapping mode for S coordinate (clamp to border only with GL_SGIS_texture_border_clamp, clamp to edge only with GL_SGIS_texture_edge_clamp) |
|
GL_REPEAT |
Yes | Yes | |
TexWrapTTexture Wrap T |
Texture wrapping mode for T coordinate (clamp to border only with GL_SGIS_texture_border_clamp, clamp to edge only with GL_SGIS_texture_edge_clamp) |
|
GL_REPEAT |
Yes | Yes | |
TexWrapRTexture Wrap R |
Texture wrapping mode for R coordinate (clamp to border only with GL_SGIS_texture_border_clamp, clamp to edge only with GL_SGIS_texture_edge_clamp) |
|
GL_REPEAT |
Yes | Yes | |
TexWrapQTexture Wrap Q |
Texture wrapping mode for Q coordinate (clamp to border only with GL_SGIS_texture_border_clamp, clamp to edge only with GL_SGIS_texture_edge_clamp) |
|
GL_REPEAT |
Yes | Yes | |
PostTexFilterRedScalePost Texture Filter Red Scale Factor |
Post-filtering texture scale value for texel's red component (only with GL_SGIX_texture_scale_bias) | Yes | Yes | |||
PostTexFilterRedBiasPost Texture Filter Red Bias Factor |
Post-filtering texture bias value for texel's red component (only with GL_SGIX_texture_scale_bias) | Yes | Yes | |||
PostTexFilterGreenScalePost Texture Filter Green Scale Factor |
Post-filtering texture scale value for texel's green component (only with GL_SGIX_texture_scale_bias) | Yes | Yes | |||
PostTexFilterGreenBiasPost Texture Filter Green Bias Factor |
Post-filtering texture bias value for texel's green component (only with GL_SGIX_texture_scale_bias) | Yes | Yes | |||
PostTexFilterBlueScalePost Texture Filter Blue Scale Factor |
Post-filtering texture scale value for texel's blue component (only with GL_SGIX_texture_scale_bias) | Yes | Yes | |||
PostTexFilterBlueBiasPost Texture Filter Blue Bias Factor |
Post-filtering texture bias value for texel's blue component (only with GL_SGIX_texture_scale_bias) | Yes | Yes | |||
PostTexFilterAlphaScalePost Texture Filter Alpha Scale Factor |
Post-filtering texture scale value for texel's alpha component (only with GL_SGIX_texture_scale_bias) | Yes | Yes | |||
PostTexFilterAlphaBiasPost Texture Filter Alpha Bias Factor |
Post-filtering texture bias value for texel's alpha component (only with GL_SGIX_texture_scale_bias) | Yes | Yes | |||
TexColorTableTexture Color Table Enabled |
Texture color table enable state (only with GL_SGI_texture_color_table) |
|
False |
Yes | Yes | |
TexColorTableWidthTexture Color Table Width |
Texture color table width (only with GL_SGI_texture_color_table) | Yes | Yes | |||
TexColorTableInternalFormatTexture Color Table Internal Format |
Texture color table internal format (only with GL_SGI_texture_color_table) |
|
GL_RGBA8_EXT |
Yes | Yes | |
TexFuncTexture Function |
Texture function (replace only with GL_EXT_texture) |
|
GL_DECAL |
Yes | Yes | |
TexDetailWidthDetail Texture Width |
Detail texture width (only with GL_SGIS_detail_texture) | Yes | Yes | |||
TexDetailHeightDetail Texture Height |
Detail texture height (only with GL_SGIS_detail_texture) | Yes | Yes | |||
TexDetailLevelDetail Texture Level |
Detail texture level (only with GL_SGIS_detail_texture) | Yes | Yes | |||
TexDetailModeDetail Texture Mode |
Detail texture mode (only with GL_SGIS_detail_texture) |
|
GL_ADD |
Yes | Yes | |
FogFogging Mode |
Fogging state and parameter |
|
Off |
Yes | Yes | |
AlphaTestAlpha Test Function |
Alpha test function |
|
Off |
Yes | Yes | |
AlphaRefAlpha Reference Value |
Alpha reference value | Yes | Yes | |||
StencilTestStencil Test Function |
Stencil test function |
|
Off |
Yes | Yes | |
DepthTestDepth Test Function |
Depth test function |
|
Off |
Yes | Yes | |
DepthMaskDepth Mask |
Depth buffer write enable state |
|
On |
Yes | Yes | |
BlendBlend Enabled |
Blend enable state |
|
Off |
Yes | Yes | |
BlendEquationBlend Equation |
Blending equation (logic op only with GL_EXT_blend_logic_op, min/max only with GL_EXT_blend_minmax, subtract modes only with GL_EXT_blend_subtract) |
|
GL_FUNC_ADD_EXT |
Yes | Yes | |
SrcBlendFuncSource Blend Function |
Source blending function (constant color/alpha only with GL_EXT_blend_color) |
|
GL_ONE |
Yes | Yes | |
DstBlendFuncDestination Blend Function |
Destination blend function (constant color/alpha only with GL_EXT_blend_color) |
|
GL_ONE |
Yes | Yes | |
LogicOpLogical Operation |
Bitwise logical operation (only performed with color index visuals/pixel formats) |
|
Off |
Yes | Yes | |
MultisampleMultisample Antialiasing |
Multisample antialiasing enable state |
|
Off |
Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
TwistsPerStripTwists Per Quad Strip |
Number of twists in each quad strip. To get results from this, you must specify FacingFront and FacingBack values different than the default. | Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
RasterPosDimDimension of RasterPos Data |
Dimension of RasterPos data | Yes | Yes | |||
ColorDataColor/Index Data |
Color or index data associated with coordinate data |
|
None |
Yes | Yes | |
TexDataTexture Coordinate Data |
Texture coordinate data associated with coordinate data |
|
None |
Yes | Yes | |
ClipAmountAmount of Image/Bitmap/Text that is Clipped |
Fraction of Image/Bitmap/Text that is clipped out by window (only ClipObjs objects are clipped) | Yes | Yes | |||
ClipModeManner in which Image/Bitmap/Text is Clipped |
Manner in which Image/Bitmap/Text is clipped by window |
|
Random |
Yes | Yes | |
DrawOrderOrder in which Images/Bitmaps/Text are Drawn |
Order in which Images/Bitmaps/Text are read out of memory and drawn on screen |
|
Spaced |
Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
ReadPixelsWidthWidth of ReadPixels |
Width of ReadPixels call; usually defaults to ImageWidth, but if set, allows user to sub-read into a wider image in memory) | Yes | Yes | |||
ReadPixelsHeightHeight of ReadPixels |
Height of ReadPixels call; usually defaults to ImageHeight, but if set, allows user to sub-read into a taller image in memory) | Yes | Yes | |||
ReadBufferRead Buffer |
Specifies what buffer to read from (the source of the ReadPixels) (aux buffers not supported on all systems) |
|
GL_FRONT |
Yes | Yes | |
ReadOrderOrder in which Images/Bitmaps/Text are Read |
Order in which Images are read into system memory |
|
Spaced |
Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
TestTypeTest Type |
Primitive type being tested |
|
ClearTest |
No | Yes | |
FileNameGLperf Script File Name |
File name of GLperf script | Yes | Yes | |||
UserStringUser Defined String |
String to be defined by script writer for easier reading/parsing of results | Yes | No | |||
PrintModeDeltaPrint Mode Delta |
If True, same as setting -d on command line, where successive tests in the report are deltas of previous tests of the same TestType |
|
False |
Yes | Yes | |
PrintModeStateDeltaPrint Mode Delta from Default State |
If True, same as setting -s on command line, where tests in the report are deltas of the default GLperf state |
|
False |
Yes | Yes | |
PrintModeMicrosecPrint Mode Microseconds |
If True, same as setting -u on command line, where results in the report are measured in microseconds rather than frequency (e.g. usec/triangle rather than triangles/sec) |
|
False |
Yes | Yes | |
PrintModePixelsPrint Mode Pixels Per Second |
If True, same as setting -p on command line, where results in the report are measured in pixels rather than objects. (e.g. pixels/sec rather than triangles/sec) |
|
False |
Yes | Yes | |
GLperfVersionGLperf Version |
Version of GLperf that is being run | No | Yes | |||
ExecuteModeExecute Mode |
Mode of test execution |
|
Immediate |
Yes | Yes | |
ObjsNumber of Objects |
Number of objects allocated and defined in memory and traversed. This can have many different meanings. For instance, for Points, it is simply the number of vertexes to be traversed in the loop. For images (DrawPixels, ReadPixels, TexImage, etc.) it is the number of complete images to be sequenced through in the loop. | Yes | Yes | |||
IterationsIterations |
Number of "screenfulls" done per timing period. If set, it takes precedence over MinimumTime | Yes | No | |||
RepsRepetitions |
Number of timing periods performed per test | Yes | No | |||
MinimumTimeTest Time |
Approximate number of seconds per timing period | Yes | No | |||
LoopUnrollVertices Unrolled in Inner Loop |
Number of vertices unrolled in the inner traversal loop. This number must be evenly divisible by the number of vertices in a facet (e.g. triangles - 3, lines - 2, quads - 4, line strip - 1, quad strip - 2) OR the number of vertices in a facet must be evenlydivisible by the number of vertices unrolled. Also, an optional compile time option must be set to support values other than one (see README). | Yes | Yes | |||
LoopFuncPtrsFunction Pointers Used in Inner Loop |
Function pointers are used for all function calls within the timing loop (e.g. glVertex, glColor, glNormal, glTexCoord, glBegin, glEnd, etc.) An optional compile time option must be set to support this feature (see README). |
|
Off |
Yes | Yes | |
DataAlignmentModulo 4096 of Data Alignment |
Modulo 4096 value of data alignment | Yes | Yes | |||
MonthMonth |
Month test was run | No | Yes | |||
DayDay |
Day test was run | No | Yes | |||
YearYear |
Year test was run | No | Yes | |||
HostHost |
Host on which test was run | No | Yes | |||
HostOperatingSystemOperating System |
Operating system on which test was run | No | Yes | |||
HostOperatingSystemVersionOperating System Version |
Version of operating system on which test was run | No | Yes | |||
HostVendorHost Vendor |
Hardware vendor of host on which test was run | No | Yes | |||
HostModelHost Model |
Model of host on which test was run | No | Yes | |||
HostCPUHost CPU |
CPU type of host on which test was run | No | Yes | |||
HostCPUCountHost CPU Count |
Number of CPUs on host on which test was run | No | Yes | |||
HostMemorySizeHost Memory Size |
Memory Size of host on which test was run | No | Yes | |||
HostPrimaryCacheSizeHost Primary Cache Size |
Primary cache size of host on which test was run | No | Yes | |||
HostSecondaryCacheSizeHost Secondary Cache Size |
Secondary cache size of host on which test was run | No | Yes | |||
WindowSystemWindow System |
Windowing system of host on which test was run | No | Yes | |||
DriverVersionDriver Version |
Driver version of host on which test was run | No | Yes | |||
OpenGLVendorOpenGL Vendor |
OpenGL vendor of host on which test was run | No | Yes | |||
OpenGLVersionOpenGL Version |
OpenGL version of host on which test was run | No | Yes | |||
OpenGLExtensionsOpenGL Extensions |
OpenGL extensions of host on which test was run | No | Yes | |||
OpenGLRendererOpenGL Renderer |
OpenGL renderer of host on which test was run | No | Yes | |||
OpenGLClientVendorOpenGL Client Vendor |
OpenGL client vendor of host on which test was run | No | Yes | |||
OpenGLClientVersionOpenGL Client Version |
OpenGL client version of host on which test was run | No | Yes | |||
OpenGLClientExtensionsOpenGL Client Extensions |
OpenGL client extensions of host on which test was run | No | Yes | |||
GLUVersionGLU Version |
GLU version of host on which test was run | No | Yes | |||
GLUExtensionsGLU Extensions |
GLU extensions of host on which test was run | No | Yes | |||
DirectRenderDirect Rendering |
Direct rendering enable state |
|
True |
Yes | Yes | |
DoubleBufferDouble Buffer |
Double buffer visual enable state |
|
True |
Yes | Yes | |
StereoStereo |
Stereo visual enable state |
|
False |
Yes | Yes | |
RgbaRGBA |
RGBA visual enable state |
|
True |
Yes | Yes | |
IndexSizeColor Index Size |
Indicates the minimum index size necessary in the visual/pixel format | Yes | Yes | |||
RedSizeRed Size |
Indicates the minimum red size necessary in the visual/pixel format | Yes | Yes | |||
GreenSizeGreen Size |
Indicates the minimum green size necessary in the visual/pixel format | Yes | Yes | |||
BlueSizeBlue Size |
Indicates the minimum blue size necessary in the visual/pixel format | Yes | Yes | |||
AlphaSizeAlpha Size |
Indicates the minimum alpha size necessary in the visual/pixel format | Yes | Yes | |||
AccumRedSizeAccum Red Size |
Indicates the minimum accumulation buffer red size necessary in the visual/pixel format | Yes | Yes | |||
AccumGreenSizeAccum Green Size |
Indicates the minimum accumulation buffer green size necessary in the visual/pixel format | Yes | Yes | |||
AccumBlueSizeAccum Blue Size |
Indicates the minimum accumulation buffer blue size necessary in the visual/pixel format | Yes | Yes | |||
AccumAlphaSizeAccum Alpha Size |
Indicates the minimum accumulation buffer alpha size necessary in the visual/pixel format | Yes | Yes | |||
DepthSizeDepth Size |
Indicates the minimum depth buffer size necessary in the visual/pixel format | Yes | Yes | |||
StencilSizeStencil Size |
Indicates the minimum stencil buffer size necessary in the visual/pixel format | Yes | Yes | |||
AuxBuffersAuxiliary Buffer Count |
Number of aux buffers that are necessary/available | Yes | Yes | |||
SampleBuffersMultisample Buffer Count |
Number of multisample buffers that are necessary/available | Yes | Yes | |||
SamplesPerPixelMultisamples Per Pixel |
Multisamples requested per pixel | Yes | Yes | |||
FrameBufferLevelFrame BufferLevel |
Framebuffer level (0 is mainplanes, negative is underlay, positive is overlay) | Yes | Yes | |||
VisualIdVisual ID |
Indicates the visual ID of the desired visual (only applies to X, PM) | Yes | Yes | |||
VisualClassVisual Class |
Visual class |
|
-1 |
No | Yes | |
WindowWidthWindow Width |
Width of test window in pixels | Yes | Yes | |||
WindowHeightWindow Height |
Height of test window in pixels | Yes | Yes | |||
ScreenWidthScreen Width |
Width of screen in pixels | Yes | Yes | |||
ScreenHeightScreen Height |
Height of screen in pixels | Yes | Yes | |||
DisplayNameDisplay |
Name of X Display | No | Yes | |||
OpenGLServerVendorOpenGL Server Vendor |
OpenGL server vendor of host on which test was run | No | Yes | |||
OpenGLServerVersionOpenGL Server Version |
OpenGL server version of host on which test was run | No | Yes | |||
OpenGLServerExtensionsOpenGL Server Extensions |
OpenGL server extensions of host on which test was run | No | Yes | |||
GLXVersionGLX Server Version |
GLX server version of host on which test was run | No | Yes | |||
GLXExtensionsGLX Server Extensions |
GLX server extensions of host on which test was run | No | Yes | |||
ScreenNumberScreen Number |
X Screen Number of host on which test was run | No | Yes | |||
SharedMemConnectionShared Memory Connection |
Shared memory connection state |
|
False |
No | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
ImageDepthImage Depth |
This is the depth of the texture image allocated in memory. Under one circumstance, a subimage of this image may be written. This is where ImageDepth is larger than TexImageDepth. By default, this parameter will be equal to ImageDepth unless explicitly set by the user. If TexImageDepth is larger than ImageDepth, it will be clamped to ImageDepth (this is not a bug!). (Supported only with GL_EXT_texture3D) | Yes | Yes | |||
ImageExtentImage Extent |
This is the extent (fourth dimension) of the texture image allocated in memory. Under one circumstance, a subimage of this image may be written. This is where ImageExtent is larger than TexImageExtent. By default, this parameter will be equal to ImageExtent unless explicitly set by the user. If TexImageExtent is larger than ImageExtent, it will be clamped to ImageExtent (this is not a bug!). (Supported only with GL_SGIS_texture4D) | Yes | Yes | |||
TexImageTargetTexImage Target |
Target of TexImage call |
|
GL_TEXTURE_2D |
Yes | Yes | |
TexImageWidthWidth of TexImage |
Width of TexImage call (width defaults to ImageWidth unless TexImageWidth is set, in which case it sets the subimage width) | Yes | Yes | |||
TexImageHeightHeight of TexImage |
Height of TexImage call (height defaults to ImageHeight unless TexImageHeight is set, in which case it sets the subimage height) | Yes | Yes | |||
TexImageDepthDepth of TexImage |
Depth of TexImage call (depth defaults to ImageDepth unless TexImageDepth is set, in which case it sets the subimage depth) (Supported only with GL_EXT_texture3D) | Yes | Yes | |||
TexImageExtentExtent of TexImage |
offset(texImageExtent), | Yes | Yes | |||
TexImageCompsTexImage Ccmponents |
Internal components/format of texture image |
|
3 |
Yes | Yes | |
TexImageBorderBorder of TexImage |
Width of TexImage border | Yes | Yes | |||
SubTexImageWidthWidth of SubTexImage |
Width of SubTexImage call (width defaults to TexImageWidth unless SubTexImageWidth is set, in which case it sets the subtexture width) (only with GL_EXT_subtexture) | Yes | Yes | |||
SubTexImageHeightHeight of SubTexImage |
Height of SubTexImage call (height defaults to TexImageHeight unless SubTexImageHeight is set, in which case it sets the subtexture height) (only with GL_EXT_subtexture) | Yes | Yes | |||
SubTexImageDepthDepth of SubTexImage |
Depth of SubTexImage call (width defaults to TexImageDepth unless SubTexImageDepth is set, in which case it sets the subtexture depth) (only with GL_EXT_subtexture and GL_EXT_texture3D) | Yes | Yes | |||
ResidentTexObjsNumber of Resident Texture Objects |
Number of resident texture objects (out of Objs). This is not a settable property, but can be helpful in analyzing the performance of swapping texture objects. | No | Yes | |||
TexImageSrcSource of Texture Image |
Specifies where you will be loading your texture image from (the source of the texture image). Each option has vastly different semantics. SystemMemory forces the TexImage to be done from system memory with every call. DisplayList preloads the TexImage in a display list and then calls that list within the timing loop. This can be thought of as "binding" the texture on some systems. TexObj preloads the TexImage in a texture object and binds the texture(s) within the timing loop. Framebuffer allows the use of the copy_texture extension to copy an image out of the framebuffer into texture memory. (TexObj requires GL_EXT_texture_object, Framebuffer requires GL_EXT_copy_texture) |
|
SystemMemory |
Yes | Yes | |
TexImageLevelTexture Image Level |
Specifies the level at which to load the texture image | Yes | Yes | |||
TexImageBaseLevelBase Texture Image Level |
Specifies base texture mipmap level for use within the texture LOD extension (requires GL_SGI_texture_lod) | Yes | Yes | |||
TexImageMaximumLevelMaximum Texture Image Level |
Specifies maximum texture mipmap level for use within the texture LOD extension (requires GL_SGI_texture_lod) | Yes | Yes | |||
TexImageMipmapMethod of Calculating Mipmaps |
Specifies how you will be using mipmaps with the texture loads. None specifies that no mipmaps will be used. PreCalculate specifies that the mipmaps will be calculated prior to timing, but that the mipmaps will all be loaded within the loop. gluBuildMipmap requests that the mipmaps be generated within the timing loop using glu routines. If the generate_mipmap extension is supported, GenerateMipmapExt allows automatic generation of the mipmaps within the timing loop. (GenerateMipmapExt requires GL_SGIS_generate_mipmap) |
|
None |
Yes | Yes | |
ObjDrawObject Drawn Between TexImage Loads |
Draws object between TexImage calls to force loading |
|
None |
Yes | Yes | |
DrawOrderOrder in which TexImage sections are Drawn |
Order in which subimage TexImages are pulled out of memory and loaded |
|
Spaced |
Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
CharFontCharacter Font |
Name of the font to use for drawing text |
|
f9x15 |
Yes | Yes | |
CharsPerStringCharacters Per String |
Number of characters per string drawn | Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
MapColorPixelMap Color |
Enable mapping of pixel colors using pixel maps |
|
False |
Yes | Yes | |
MapStencilPixelMap Stencil |
Enable mapping of stencil values using pixel maps |
|
False |
Yes | Yes | |
RedScalePixelTransfer Red Scale Factor |
PixelTransfer red scale factor | Yes | Yes | |||
RedBiasPixelTransfer Red Bias Factor |
PixelTransfer red bias factor | Yes | Yes | |||
GreenScalePixelTransfer Green Scale Factor |
PixelTransfer green scale factor | Yes | Yes | |||
GreenBiasPixelTransfer Green Bias Factor |
PixelTransfer green bias factor | Yes | Yes | |||
BlueScalePixelTransfer Blue Scale Factor |
PixelTransfer blue scale factor | Yes | Yes | |||
BlueBiasPixelTransfer Blue Bias Factor |
PixelTransfer blue bias factor | Yes | Yes | |||
AlphaScalePixelTransfer Alpha Scale Factor |
PixelTransfer alpha scale factor | Yes | Yes | |||
AlphaBiasPixelTransfer Alpha Bias Factor |
PixelTransfer alpha bias factor | Yes | Yes | |||
IndexShiftPixelTransfer Index Shift |
PixelTransfer index shift | Yes | Yes | |||
IndexOffsetPixelTransfer Index Offset |
PixelTransfer index offset | Yes | Yes | |||
DepthScalePixelTransfer Depth Scale Factor |
PixelTransfer depth scale factor | Yes | Yes | |||
DepthBiasPixelTransfer Depth Bias Factor |
PixelTransfer depth bias factor | Yes | Yes | |||
RtoRMapSizePixelMap R to R Size |
PixelMap Red to Red map size | Yes | Yes | |||
GtoGMapSizePixelMap G to G Size |
PixelMap Green to Green map size | Yes | Yes | |||
BtoBMapSizePixelMap B to B Size |
PixelMap Blue to Blue map size | Yes | Yes | |||
AtoAMapSizePixelMap A to A Size |
PixelMap Alpha to Alpha map size | Yes | Yes | |||
ItoRMapSizePixelMap I to R Size |
PixelMap Index to Red map size | Yes | Yes | |||
ItoGMapSizePixelMap I to G Size |
PixelMap Index to Green map size | Yes | Yes | |||
ItoBMapSizePixelMap I to B Size |
PixelMap Index to Blue map size | Yes | Yes | |||
ItoAMapSizePixelMap I to A Size |
PixelMap Index to Alpha map size | Yes | Yes | |||
ItoIMapSizePixelMap I to I Size |
PixelMap Index to Index map size | Yes | Yes | |||
StoSMapSizePixelMap S to S Size |
PixelMap Stencil to Stencil map size | Yes | Yes | |||
ColorTableColor Table Enabled |
Color table enable state (only with GL_SGI_color_table) |
|
False |
Yes | Yes | |
ColorTableWidthColor Table Width |
Color table width (only with GL_SGI_color_table) | Yes | Yes | |||
ColorTableInternalFormatColor Table Internal Format |
Color table internal format (only with GL_SGI_color_table) |
|
GL_RGBA8_EXT |
Yes | Yes | |
ConvolutionTargetConvolution Target |
Type of convolution operation (only with GL_EXT_convolution) |
|
None |
Yes | Yes | |
ConvolutionInternalFormatConvolution Internal Format |
Internal format of covolution operation (only with GL_EXT_convolution) |
|
GL_RGBA |
Yes | Yes | |
ConvolutionWidthConvolution Width |
Width of kernel for covolution operation (only with GL_EXT_convolution) | Yes | Yes | |||
ConvolutionHeightConvolution Height |
Height of kernel for covolution operation (only with GL_EXT_convolution) | Yes | Yes | |||
ConvolutionRedScaleConvolution Red Scale Factor |
Post convolution red scale factor (only with GL_EXT_convolution) | Yes | Yes | |||
ConvolutionRedBiasConvolution Red Bias Factor |
Post convolution red bias factor (only with GL_EXT_convolution) | Yes | Yes | |||
ConvolutionGreenScaleConvolution Green Scale Factor |
Post convolution green scale factor (only with GL_EXT_convolution) | Yes | Yes | |||
ConvolutionGreenBiasConvolution Green Bias Factor |
Post convolution green bias factor (only with GL_EXT_convolution) | Yes | Yes | |||
ConvolutionBlueScaleConvolution Blue Scale Factor |
Post convolution blue scale factor (only with GL_EXT_convolution) | Yes | Yes | |||
ConvolutionBlueBiasConvolution Blue Bias Factor |
Post convolution blue bias factor (only with GL_EXT_convolution) | Yes | Yes | |||
ConvolutionAlphaScaleConvolution Alpha Scale Factor |
Post convolution alpha scale factor (only with GL_EXT_convolution) | Yes | Yes | |||
ConvolutionAlphaBiasConvolution Alpha Bias Factor |
Post convolution alpha bias factor (only with GL_EXT_convolution) | Yes | Yes | |||
PostConvolutionColorTablePost Convolution Color Table Enabled |
Post convolution color table enable state (only with GL_SGI_color_table) |
|
False |
Yes | Yes | |
PostConvolutionColorTableWidthPost Convolution Color Table Width |
Post convolution color table width (only with GL_SGI_color_table) | Yes | Yes | |||
PostConvolutionColorTableInternalFormatPost Convolution Color Table Internal Format |
Post convolution color table internal format (only with GL_SGI_color_table) |
|
GL_RGBA8_EXT |
Yes | Yes | |
ColorMatrixRed0Color Matrix Red 0 |
Color Matrix Red 0 (zeroth element in red vector) (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixRed1Color Matrix Red 1 |
Color Matrix Red 1 (first element in red vector) (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixRed2Color Matrix Red 2 |
Color Matrix Red 2 (second element in red vector) (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixRed3Color Matrix Red 3 |
Color Matrix Red 3 (third element in red vector) (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixGreen0Color Matrix Green 0 |
Color Matrix Green 0 (zeroth element in red vector) (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixGreen1Color Matrix Green 1 |
Color Matrix Green 1 (first element in red vector) (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixGreen2Color Matrix Green 2 |
Color Matrix Green 2 (second element in red vector) (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixGreen3Color Matrix Green 3 |
Color Matrix Green 3 (third element in red vector) (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixBlue0Color Matrix Blue 0 |
Color Matrix Blue 0 (zeroth element in red vector) (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixBlue1Color Matrix Blue 1 |
Color Matrix Blue 1 (first element in red vector) (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixBlue2Color Matrix Blue 2 |
Color Matrix Blue 2 (second element in red vector) (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixBlue3Color Matrix Blue 3 |
Color Matrix Blue 3 (third element in red vector) (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixAlpha0Color Matrix Alpha 0 |
Color Matrix Alpha 0 (zeroth element in red vector) (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixAlpha1Color Matrix Alpha 1 |
Color Matrix Alpha 1 (first element in red vector) (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixAlpha2Color Matrix Alpha 2 |
Color Matrix Alpha 2 (second element in red vector) (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixAlpha3Color Matrix Alpha 3 |
Color Matrix Alpha 3 (third element in red vector) (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixRedScaleColor Matrix Red Scale Factor |
Post color matrix red scale factor (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixRedBiasColor Matrix Red Bias Factor |
Post color matrix red bias factor (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixGreenScaleColor Matrix Green Scale Factor |
Post color matrix green scale factor (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixGreenBiasColor Matrix Green Bias Factor |
Post color matrix green bias factor (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixBlueScaleColor Matrix Blue Scale Factor |
Post color matrix blue scale factor (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixBlueBiasColor Matrix Blue Bias Factor |
Post color matrix blue bias factor (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixAlphaScaleColor Matrix Alpha Scale Factor |
Post color matrix alpha scale factor (only with GL_SGI_color_matrix) | Yes | Yes | |||
ColorMatrixAlphaBiasColor Matrix Alpha Bias Factor |
Post color matrix alpha bias factor (only with GL_SGI_color_matrix) | Yes | Yes | |||
PostColorMatrixColorTablePost Color Matrix Color Table Enabled |
Post color matrix color table enable state (only with GL_SGI_color_table) |
|
False |
Yes | Yes | |
PostColorMatrixColorTableWidthPost Color Matrix Color Table Width |
Post color matrix color table width (only with GL_SGI_color_table) | Yes | Yes | |||
PostColorMatrixColorTableInternalFormatPost Color Matrix Color Table Internal Format |
Post color matrix color table internal format (only with GL_SGI_color_table) |
|
GL_RGBA8_EXT |
Yes | Yes | |
HistogramHistogram Enabled |
Histogram enable state (only with GL_EXT_histogram) |
|
False |
Yes | Yes | |
HistogramWidthHistogram Width |
Histogram width (only with GL_EXT_histogram) | Yes | Yes | |||
HistogramInternalFormatHistogram Internal Format |
Histogram internal format (only with GL_EXT_histogram) |
|
GL_RGBA8_EXT |
Yes | Yes | |
HistogramSinkHistogram Sink |
Histogram sink - pixels thrown out after statistics are taken (only with GL_EXT_histogram) |
|
False |
Yes | Yes | |
MinmaxMinmax Enabled |
Minmax enable state (only with GL_EXT_histogram) |
|
False |
Yes | Yes | |
MinmaxInternalFormatMinmax Internal Format |
Minmax internal format (only with GL_EXT_histogram) |
|
GL_RGBA8_EXT |
Yes | Yes | |
MinmaxSinkMinmax Sink |
Minmax sink - pixels thrown out after statistics are taken (only with GL_EXT_histogram) |
|
False |
Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
TwistsPerStripTwists Per Triangle Strip |
Number of twists in each triangle strip. To get results from this, you must specify FacingFront and FacingBack values other than the default | Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
VertexArrayUse Vertex Array Extension |
Use vertex array extension to define vertices and accompanying data (requires GL_EXT_vertex_array) |
|
False |
Yes | Yes | |
VertexArray11Use 1.1 Vertex Arrays |
Use OpenGL 1.1 definition for vertex arrays to define vertices (require OpenGL 1.1) |
|
False |
Yes | Yes | |
SizePrimitive Size |
Size of single primitive in pixels | Yes | Yes | |||
ObjsPerBeginEndObjects Per Begin/End Structure |
Number of objects defined between each pair of glBegin and glEnd calls | Yes | Yes | |||
VertexDimDimension of Vertex Data |
Dimension of vertex data (may be limited by choice of compile time flags to 3 only, see README) | Yes | Yes | |||
OrientationOrientation |
Orientation on each primitive around its center |
|
Random |
Yes | Yes | |
AntialiasAntialiasing |
Anti-aliased (smooth) drawing enable state, with quality hint data |
|
Off |
Yes | Yes | |
ColorDataColor/Index Data |
Color data associated with vertex data |
|
None |
Yes | Yes | |
NormalDataNormal Data |
Normal data associated with vertex data |
|
None |
Yes | Yes | |
TexDataTexture Coordinate Data |
Texture coordinate data associated with vertex data |
|
None |
Yes | Yes | |
LockArraysUse LockArraysSGI |
Use LockArraysSGI (requires GL_SGI_compiled_vertex_array) |
|
None |
Yes | Yes | |
DrawElementsUse DrawElements |
Use DrawElements for vertex array data (requires OpenGL 1.1) |
|
None |
Yes | Yes | |
InterleavedDataInterleaved Data |
Interleave vertex array data (requires OpenGL 1.1) |
|
None |
Yes | Yes | |
ShadeModelShading Model |
Shading model state |
|
GL_SMOOTH |
Yes | Yes | |
LocalLightsNumber of Local Lights |
Number of local lights | Yes | Yes | |||
InfiniteLightsNumber of Infinite Lights |
Number of infinite lights | Yes | Yes | |||
SpecularComponentSpecular Component |
Material specular component is non-zero when On |
|
On |
Yes | Yes | |
ShininessShininess |
Material's shininess (or specular exponent) | Yes | Yes | |||
LocalViewerLocal Viewer |
Local viewer enable state |
|
Off |
Yes | Yes | |
ColorMaterialModeColor Material Properties |
Component(s) changed with ColorMaterial call |
|
GL_AMBIENT_AND_DIFFUSE |
Yes | Yes | |
ColorMaterialSideColor Material Side |
Side on which the material will change with ColorMaterial |
|
GL_FRONT |
Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
TransformTypeTransform Type |
Type of transform to test |
|
Rotate |
Yes | Yes | |
PointDrawDraw Point Between Transforms |
Enables a point to be drawn between transforms to foil lazy evaluation |
|
Off |
Yes | Yes | |
PushPopPush and Pop Around Transforms |
Enables a push to be done before the transform and a pop afterwards |
|
Off |
Yes | Yes |
| Property/String Names | Description | Settable? | Printed? | |||
PixelZoomXPixel Zoom X |
Pixel Zoom X factor | Yes | Yes | |||
PixelZoomYPixel Zoom Y |
Pixel Zoom Y factor | Yes | Yes |
// Lit triangle example
TrianglesTest {
(InfiniteLights *) // Cycle through all possible number of lights
(NormalData PerVertex) // Supply one normal per vertex
}
Alternately, you could do the same thing by using a range instead of a
wildcard:
// Lit triangle example
TrianglesTest {
(InfiniteLights from 0 to 8) // Cycle through all possible number of lights
(NormalData PerVertex) // Supply one normal per vertex
}
The attributes used in examples above are both local attributes. This means
that they only affect tests created by that one test description. Global
attributes do not occur in a test description but lie outside them, and
affect all test descriptions which follow. Here's an example:
// Global attribute example // These are our two global attributes (AcceptObjs .5) // 50% of primitives will be trivially accepted (RejectObjs .5) // 50% of primitives will be trivially rejected // Here are our test descriptions PointsTest // Do a point test, 50/50 accept/reject LinesTest // Do a lines test, 50/50 accept/reject TrianglesTest // Do a triangles test, 50/50 accept/rejectNotice that the global attribute affected the three test descriptions that followed. If a global attribute does not pertain to a test description which follows, it is harmless. For instance,
(LineWidth 2) // Global attribute
PointsTest // LineWidth doesn't apply to Points, attribute
// is ignored
LinesTest // Global attribute correctly applied to Lines
We have seen that one test description can create many tests by varying
values within an attribute. You are not limited to varying just one
attribute. For example,
PolygonTest {
(NormalData PerVertex)
(InfiniteLights from 1 to 2)
(LocalLights 1 2)
}
This would result in the Cartesian product of all the various attribute
values. In this case, four tests would arise from this one test
description:
(InfiniteLights 1 2)
TrianglesTest {
(InfiniteLights 1) // WARNING! This is the second time it's been used.
}
This will result in two identical tests. This is certainly not counter-intuitive, but should be avoided.
If an attribute belonging to an abstract class doesn't apply to a child class, multiple identical tests can occur. For example:
(ShadeModel GL_FLAT GL_SMOOTH) PointsTestHere, flat-shaded and smooth-shaded points are identical, but this definition will create two cases anyway. Luckily, there aren't many cases of this.
ColorMaterial has no effect in Color Index mode, thus a material must be sent down every time instead. This has not been implemented in GLperf yet.
Stencil test operations have not been implemented yet.
Accumulation buffer operations have not been implemented yet.
Thanks to Michael Gold (SGI) for adding vertex arrays and porting the code to Windows95. Thanks to Suzy Deffeyes (IBM) for porting the code to OS/2 WARP. Thanks to Thomax Rix (Intergraph) for porting to WindowsNT. Also, thanks to Kevin Rushforth and Travis Bryson (both SUN) for their keen eyes and diligence -- they improved GLperf in many ways.
Thanks to Barry Minor (IBM) for coding the better part of the layout code and for doing the TextureImage module in the first version. Thanks to Chris Mussack (IBM) for his invaluable architectural advice during the design of GLperf.