From d1efbf04562be8b9fb4417ebde005532736003ea Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 8 Nov 2002 15:35:46 +0000 Subject: [PATCH] implemented automatic code gen and individual function validation --- progs/tests/Makefile | 9 + progs/tests/functions.py | 56 -- progs/tests/getprocaddress.c | 1141 ++++------------------------------------- progs/tests/getprocaddress.py | 97 ++++ 4 files changed, 193 insertions(+), 1110 deletions(-) delete mode 100644 progs/tests/functions.py create mode 100644 progs/tests/getprocaddress.py diff --git a/progs/tests/Makefile b/progs/tests/Makefile index efa4ad0..f67a7c7 100644 --- a/progs/tests/Makefile +++ b/progs/tests/Makefile @@ -11,6 +11,7 @@ LIBS = -L../lib -lglut -lGLU -lGL -L/usr/X11R6/lib -lX11 -lXext -lm PROGS = cva \ dinoshade \ fogcoord \ + getprocaddress \ manytex \ multipal \ projtex \ @@ -42,3 +43,11 @@ default: $(PROGS) clean: rm -f $(PROGS) rm -f *.o + + +# auto code generation +getprocaddress: getprocaddress.c getproclist.h + +getproclist.h: ../bin/APIspec getprocaddress.c getprocaddress.py + python getprocaddress.py > getproclist.h + diff --git a/progs/tests/functions.py b/progs/tests/functions.py deleted file mode 100644 index d1a8cc3..0000000 --- a/progs/tests/functions.py +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env python - -# $Id: functions.py,v 1.1 2001/11/18 23:16:56 brianp Exp $ - -# Helper for the getprocaddress.c test. - - -import string - -def PrintHead(): - print """ -static const char *functions[] = {""" - - -def PrintTail(): - print""" - NULL -}; -""" - - -def PrintFunctions(specFile): - - # init some vars - prevCategory = '' - funcName = '' - - f = open(specFile) - for line in f.readlines(): - - # split line into tokens - tokens = string.split(line) - - if len(tokens) > 0 and line[0] != '#': - - if tokens[0] == 'name': - if funcName != '': - if category != prevCategory: - print ' "-%s",' % category - prevCategory = category - - print ' "gl%s",' % funcName - funcName = tokens[1] - - elif tokens[0] == 'category': - category = tokens[1] - - #endif - #endif - #endfor -#enddef - - -PrintHead() -PrintFunctions("../bin/APIspec") -PrintTail() diff --git a/progs/tests/getprocaddress.c b/progs/tests/getprocaddress.c index 919ec9c..95f34ad 100644 --- a/progs/tests/getprocaddress.c +++ b/progs/tests/getprocaddress.c @@ -1,4 +1,4 @@ -/* $Id: getprocaddress.c,v 1.5 2002/11/07 16:35:02 brianp Exp $ */ +/* $Id: getprocaddress.c,v 1.6 2002/11/08 15:35:46 brianp Exp $ */ /* * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. @@ -36,1046 +36,56 @@ #include -/* This big list of functions can be generated automatically by - * running the functions.py script. +static GLboolean +test_ActiveTextureARB(void *func) +{ + PFNGLACTIVETEXTUREARBPROC activeTexture = (PFNGLACTIVETEXTUREARBPROC) func; + GLint t; + GLboolean pass; + (*activeTexture)(GL_TEXTURE1_ARB); + glGetIntegerv(GL_ACTIVE_TEXTURE_ARB, &t); + pass = (t == GL_TEXTURE1_ARB); + (*activeTexture)(GL_TEXTURE0_ARB); /* restore default */ + return pass; +} + + +static GLboolean +test_SecondaryColor3fEXT(void *func) +{ + PFNGLSECONDARYCOLOR3FEXTPROC secColor3f = (PFNGLSECONDARYCOLOR3FEXTPROC) func; + GLfloat color[4]; + GLboolean pass; + (*secColor3f)(1.0, 1.0, 0.0); + glGetFloatv(GL_CURRENT_SECONDARY_COLOR_EXT, color); + pass = (color[0] == 1.0 && color[1] == 1.0 && color[2] == 0.0); + (*secColor3f)(0.0, 0.0, 0.0); /* restore default */ + return pass; +} + + +static GLboolean +test_ActiveStencilFaceEXT(void *func) +{ + PFNGLACTIVESTENCILFACEEXTPROC activeFace = (PFNGLACTIVESTENCILFACEEXTPROC) func; + GLint face; + GLboolean pass; + (*activeFace)(GL_BACK); + glGetIntegerv(GL_ACTIVE_STENCIL_FACE_EXT, &face); + pass = (face == GL_BACK); + (*activeFace)(GL_FRONT); /* restore default */ + return pass; +} + + + + +/* + * The following header file is auto-generated with Python. The Python + * script looks in this file for functions named "test_*" as seen above. */ -static const char *functions[] = { - "-1.0", - "glNewList", - "glEndList", - "glCallList", - "glCallLists", - "glDeleteLists", - "glGenLists", - "glListBase", - "glBegin", - "glBitmap", - "glColor3b", - "glColor3bv", - "glColor3d", - "glColor3dv", - "glColor3f", - "glColor3fv", - "glColor3i", - "glColor3iv", - "glColor3s", - "glColor3sv", - "glColor3ub", - "glColor3ubv", - "glColor3ui", - "glColor3uiv", - "glColor3us", - "glColor3usv", - "glColor4b", - "glColor4bv", - "glColor4d", - "glColor4dv", - "glColor4f", - "glColor4fv", - "glColor4i", - "glColor4iv", - "glColor4s", - "glColor4sv", - "glColor4ub", - "glColor4ubv", - "glColor4ui", - "glColor4uiv", - "glColor4us", - "glColor4usv", - "glEdgeFlag", - "glEdgeFlagv", - "glEnd", - "glIndexd", - "glIndexdv", - "glIndexf", - "glIndexfv", - "glIndexi", - "glIndexiv", - "glIndexs", - "glIndexsv", - "glNormal3b", - "glNormal3bv", - "glNormal3d", - "glNormal3dv", - "glNormal3f", - "glNormal3fv", - "glNormal3i", - "glNormal3iv", - "glNormal3s", - "glNormal3sv", - "glRasterPos2d", - "glRasterPos2dv", - "glRasterPos2f", - "glRasterPos2fv", - "glRasterPos2i", - "glRasterPos2iv", - "glRasterPos2s", - "glRasterPos2sv", - "glRasterPos3d", - "glRasterPos3dv", - "glRasterPos3f", - "glRasterPos3fv", - "glRasterPos3i", - "glRasterPos3iv", - "glRasterPos3s", - "glRasterPos3sv", - "glRasterPos4d", - "glRasterPos4dv", - "glRasterPos4f", - "glRasterPos4fv", - "glRasterPos4i", - "glRasterPos4iv", - "glRasterPos4s", - "glRasterPos4sv", - "glRectd", - "glRectdv", - "glRectf", - "glRectfv", - "glRecti", - "glRectiv", - "glRects", - "glRectsv", - "glTexCoord1d", - "glTexCoord1dv", - "glTexCoord1f", - "glTexCoord1fv", - "glTexCoord1i", - "glTexCoord1iv", - "glTexCoord1s", - "glTexCoord1sv", - "glTexCoord2d", - "glTexCoord2dv", - "glTexCoord2f", - "glTexCoord2fv", - "glTexCoord2i", - "glTexCoord2iv", - "glTexCoord2s", - "glTexCoord2sv", - "glTexCoord3d", - "glTexCoord3dv", - "glTexCoord3f", - "glTexCoord3fv", - "glTexCoord3i", - "glTexCoord3iv", - "glTexCoord3s", - "glTexCoord3sv", - "glTexCoord4d", - "glTexCoord4dv", - "glTexCoord4f", - "glTexCoord4fv", - "glTexCoord4i", - "glTexCoord4iv", - "glTexCoord4s", - "glTexCoord4sv", - "glVertex2d", - "glVertex2dv", - "glVertex2f", - "glVertex2fv", - "glVertex2i", - "glVertex2iv", - "glVertex2s", - "glVertex2sv", - "glVertex3d", - "glVertex3dv", - "glVertex3f", - "glVertex3fv", - "glVertex3i", - "glVertex3iv", - "glVertex3s", - "glVertex3sv", - "glVertex4d", - "glVertex4dv", - "glVertex4f", - "glVertex4fv", - "glVertex4i", - "glVertex4iv", - "glVertex4s", - "glVertex4sv", - "glClipPlane", - "glColorMaterial", - "glCullFace", - "glFogf", - "glFogfv", - "glFogi", - "glFogiv", - "glFrontFace", - "glHint", - "glLightf", - "glLightfv", - "glLighti", - "glLightiv", - "glLightModelf", - "glLightModelfv", - "glLightModeli", - "glLightModeliv", - "glLineStipple", - "glLineWidth", - "glMaterialf", - "glMaterialfv", - "glMateriali", - "glMaterialiv", - "glPointSize", - "glPolygonMode", - "glPolygonStipple", - "glScissor", - "glShadeModel", - "glTexParameterf", - "glTexParameterfv", - "glTexParameteri", - "glTexParameteriv", - "glTexImage1D", - "glTexImage2D", - "glTexEnvf", - "glTexEnvfv", - "glTexEnvi", - "glTexEnviv", - "glTexGend", - "glTexGendv", - "glTexGenf", - "glTexGenfv", - "glTexGeni", - "glTexGeniv", - "glFeedbackBuffer", - "glSelectBuffer", - "glRenderMode", - "glInitNames", - "glLoadName", - "glPassThrough", - "glPopName", - "glPushName", - "glDrawBuffer", - "glClear", - "glClearAccum", - "glClearIndex", - "glClearColor", - "glClearStencil", - "glClearDepth", - "glStencilMask", - "glColorMask", - "glDepthMask", - "glIndexMask", - "glAccum", - "glDisable", - "glEnable", - "glFinish", - "glFlush", - "glPopAttrib", - "glPushAttrib", - "glMap1d", - "glMap1f", - "glMap2d", - "glMap2f", - "glMapGrid1d", - "glMapGrid1f", - "glMapGrid2d", - "glMapGrid2f", - "glEvalCoord1d", - "glEvalCoord1dv", - "glEvalCoord1f", - "glEvalCoord1fv", - "glEvalCoord2d", - "glEvalCoord2dv", - "glEvalCoord2f", - "glEvalCoord2fv", - "glEvalMesh1", - "glEvalPoint1", - "glEvalMesh2", - "glEvalPoint2", - "glAlphaFunc", - "glBlendFunc", - "glLogicOp", - "glStencilFunc", - "glStencilOp", - "glDepthFunc", - "glPixelZoom", - "glPixelTransferf", - "glPixelTransferi", - "glPixelStoref", - "glPixelStorei", - "glPixelMapfv", - "glPixelMapuiv", - "glPixelMapusv", - "glReadBuffer", - "glCopyPixels", - "glReadPixels", - "glDrawPixels", - "glGetBooleanv", - "glGetClipPlane", - "glGetDoublev", - "glGetError", - "glGetFloatv", - "glGetIntegerv", - "glGetLightfv", - "glGetLightiv", - "glGetMapdv", - "glGetMapfv", - "glGetMapiv", - "glGetMaterialfv", - "glGetMaterialiv", - "glGetPixelMapfv", - "glGetPixelMapuiv", - "glGetPixelMapusv", - "glGetPolygonStipple", - "glGetString", - "glGetTexEnvfv", - "glGetTexEnviv", - "glGetTexGendv", - "glGetTexGenfv", - "glGetTexGeniv", - "glGetTexImage", - "glGetTexParameterfv", - "glGetTexParameteriv", - "glGetTexLevelParameterfv", - "glGetTexLevelParameteriv", - "glIsEnabled", - "glIsList", - "glDepthRange", - "glFrustum", - "glLoadIdentity", - "glLoadMatrixf", - "glLoadMatrixd", - "glMatrixMode", - "glMultMatrixf", - "glMultMatrixd", - "glOrtho", - "glPopMatrix", - "glPushMatrix", - "glRotated", - "glRotatef", - "glScaled", - "glScalef", - "glTranslated", - "glTranslatef", - "glViewport", - "-1.1", - "glArrayElement", - "glColorPointer", - "glDisableClientState", - "glDrawArrays", - "glDrawElements", - "glEdgeFlagPointer", - "glEnableClientState", - "glGetPointerv", - "glIndexPointer", - "glInterleavedArrays", - "glNormalPointer", - "glTexCoordPointer", - "glVertexPointer", - "glPolygonOffset", - "glCopyTexImage1D", - "glCopyTexImage2D", - "glCopyTexSubImage1D", - "glCopyTexSubImage2D", - "glTexSubImage1D", - "glTexSubImage2D", - "glAreTexturesResident", - "glBindTexture", - "glDeleteTextures", - "glGenTextures", - "glIsTexture", - "glPrioritizeTextures", - "glIndexub", - "glIndexubv", - "glPopClientAttrib", - "glPushClientAttrib", - "-1.2", - "glBlendColor", - "glBlendEquation", - "glDrawRangeElements", - "glColorTable", - "glColorTableParameterfv", - "glColorTableParameteriv", - "glCopyColorTable", - "glGetColorTable", - "glGetColorTableParameterfv", - "glGetColorTableParameteriv", - "glColorSubTable", - "glCopyColorSubTable", - "glConvolutionFilter1D", - "glConvolutionFilter2D", - "glConvolutionParameterf", - "glConvolutionParameterfv", - "glConvolutionParameteri", - "glConvolutionParameteriv", - "glCopyConvolutionFilter1D", - "glCopyConvolutionFilter2D", - "glGetConvolutionFilter", - "glGetConvolutionParameterfv", - "glGetConvolutionParameteriv", - "glGetSeparableFilter", - "glSeparableFilter2D", - "glGetHistogram", - "glGetHistogramParameterfv", - "glGetHistogramParameteriv", - "glGetMinmax", - "glGetMinmaxParameterfv", - "glGetMinmaxParameteriv", - "glHistogram", - "glMinmax", - "glResetHistogram", - "glResetMinmax", - "glTexImage3D", - "glTexSubImage3D", - "glCopyTexSubImage3D", - "-1.3", - "glActiveTexture", - "glClientActiveTexture", - "glMultiTexCoord1d", - "glMultiTexCoord1dv", - "glMultiTexCoord1f", - "glMultiTexCoord1fv", - "glMultiTexCoord1i", - "glMultiTexCoord1iv", - "glMultiTexCoord1s", - "glMultiTexCoord1sv", - "glMultiTexCoord2d", - "glMultiTexCoord2dv", - "glMultiTexCoord2f", - "glMultiTexCoord2fv", - "glMultiTexCoord2i", - "glMultiTexCoord2iv", - "glMultiTexCoord2s", - "glMultiTexCoord2sv", - "glMultiTexCoord3d", - "glMultiTexCoord3dv", - "glMultiTexCoord3f", - "glMultiTexCoord3fv", - "glMultiTexCoord3i", - "glMultiTexCoord3iv", - "glMultiTexCoord3s", - "glMultiTexCoord3sv", - "glMultiTexCoord4d", - "glMultiTexCoord4dv", - "glMultiTexCoord4f", - "glMultiTexCoord4fv", - "glMultiTexCoord4i", - "glMultiTexCoord4iv", - "glMultiTexCoord4s", - "glMultiTexCoord4sv", - "glLoadTransposeMatrixf", - "glLoadTransposeMatrixd", - "glMultTransposeMatrixf", - "glMultTransposeMatrixd", - "glSampleCoverage", - "glCompressedTexImage3D", - "glCompressedTexImage2D", - "glCompressedTexImage1D", - "glCompressedTexSubImage3D", - "glCompressedTexSubImage2D", - "glCompressedTexSubImage1D", - "glGetCompressedTexImage", - "-1.4", - "glBlendFuncSeparate", - "glFogCoordf", - "glFogCoordfv", - "glFogCoordd", - "glFogCoorddv", - "glFogCoordPointer", - "glMultiDrawArrays", - "glMultiDrawElements", - "glPointParameterf", - "glPointParameterfv", - "glPointParameteri", - "glPointParameteriv", - "glSecondaryColor3b", - "glSecondaryColor3bv", - "glSecondaryColor3d", - "glSecondaryColor3dv", - "glSecondaryColor3f", - "glSecondaryColor3fv", - "glSecondaryColor3i", - "glSecondaryColor3iv", - "glSecondaryColor3s", - "glSecondaryColor3sv", - "glSecondaryColor3ub", - "glSecondaryColor3ubv", - "glSecondaryColor3ui", - "glSecondaryColor3uiv", - "glSecondaryColor3us", - "glSecondaryColor3usv", - "glSecondaryColorPointer", - "glWindowPos2d", - "glWindowPos2dv", - "glWindowPos2f", - "glWindowPos2fv", - "glWindowPos2i", - "glWindowPos2iv", - "glWindowPos2s", - "glWindowPos2sv", - "glWindowPos3d", - "glWindowPos3dv", - "glWindowPos3f", - "glWindowPos3fv", - "glWindowPos3i", - "glWindowPos3iv", - "glWindowPos3s", - "glWindowPos3sv", - "-GL_ARB_multitexture", - "glActiveTextureARB", - "glClientActiveTextureARB", - "glMultiTexCoord1dARB", - "glMultiTexCoord1dvARB", - "glMultiTexCoord1fARB", - "glMultiTexCoord1fvARB", - "glMultiTexCoord1iARB", - "glMultiTexCoord1ivARB", - "glMultiTexCoord1sARB", - "glMultiTexCoord1svARB", - "glMultiTexCoord2dARB", - "glMultiTexCoord2dvARB", - "glMultiTexCoord2fARB", - "glMultiTexCoord2fvARB", - "glMultiTexCoord2iARB", - "glMultiTexCoord2ivARB", - "glMultiTexCoord2sARB", - "glMultiTexCoord2svARB", - "glMultiTexCoord3dARB", - "glMultiTexCoord3dvARB", - "glMultiTexCoord3fARB", - "glMultiTexCoord3fvARB", - "glMultiTexCoord3iARB", - "glMultiTexCoord3ivARB", - "glMultiTexCoord3sARB", - "glMultiTexCoord3svARB", - "glMultiTexCoord4dARB", - "glMultiTexCoord4dvARB", - "glMultiTexCoord4fARB", - "glMultiTexCoord4fvARB", - "glMultiTexCoord4iARB", - "glMultiTexCoord4ivARB", - "glMultiTexCoord4sARB", - "glMultiTexCoord4svARB", - "-GL_ARB_transpose_matrix", - "glLoadTransposeMatrixfARB", - "glLoadTransposeMatrixdARB", - "glMultTransposeMatrixfARB", - "glMultTransposeMatrixdARB", - "-GL_ARB_multisample", - "glSampleCoverageARB", - "-unused", - "gl__unused413", - "-GL_ARB_texture_compression", - "glCompressedTexImage3DARB", - "glCompressedTexImage2DARB", - "glCompressedTexImage1DARB", - "glCompressedTexSubImage3DARB", - "glCompressedTexSubImage2DARB", - "glCompressedTexSubImage1DARB", - "glGetCompressedTexImageARB", - "-GL_ARB_vertex_blend", - "glWeightbvARB", - "glWeightsvARB", - "glWeightivARB", - "glWeightfvARB", - "glWeightdvARB", - "glWeightubvARB", - "glWeightusvARB", - "glWeightuivARB", - "glWeightPointerARB", - "glVertexBlendARB", - "-GL_ARB_matrix_palette", - "glCurrentPaletteMatrixARB", - "glMatrixIndexubvARB", - "glMatrixIndexusvARB", - "glMatrixIndexuivARB", - "glMatrixIndexPointerARB", - "-GL_EXT_blend_color", - "glBlendColorEXT", - "-GL_EXT_polygon_offset", - "glPolygonOffsetEXT", - "-GL_EXT_texture3D", - "glTexImage3DEXT", - "glTexSubImage3DEXT", - "-GL_SGIS_texture_filter4", - "glGetTexFilterFuncSGIS", - "glTexFilterFuncSGIS", - "-GL_EXT_subtexture", - "glTexSubImage1DEXT", - "glTexSubImage2DEXT", - "-GL_EXT_copy_texture", - "glCopyTexImage1DEXT", - "glCopyTexImage2DEXT", - "glCopyTexSubImage1DEXT", - "glCopyTexSubImage2DEXT", - "glCopyTexSubImage3DEXT", - "-GL_EXT_histogram", - "glGetHistogramEXT", - "glGetHistogramParameterfvEXT", - "glGetHistogramParameterivEXT", - "glGetMinmaxEXT", - "glGetMinmaxParameterfvEXT", - "glGetMinmaxParameterivEXT", - "glHistogramEXT", - "glMinmaxEXT", - "glResetHistogramEXT", - "glResetMinmaxEXT", - "-GL_EXT_convolution", - "glConvolutionFilter1DEXT", - "glConvolutionFilter2DEXT", - "glConvolutionParameterfEXT", - "glConvolutionParameterfvEXT", - "glConvolutionParameteriEXT", - "glConvolutionParameterivEXT", - "glCopyConvolutionFilter1DEXT", - "glCopyConvolutionFilter2DEXT", - "glGetConvolutionFilterEXT", - "glGetConvolutionParameterfvEXT", - "glGetConvolutionParameterivEXT", - "glGetSeparableFilterEXT", - "glSeparableFilter2DEXT", - "-GL_SGI_color_table", - "glColorTableSGI", - "glColorTableParameterfvSGI", - "glColorTableParameterivSGI", - "glCopyColorTableSGI", - "glGetColorTableSGI", - "glGetColorTableParameterfvSGI", - "glGetColorTableParameterivSGI", - "-GL_SGIX_pixel_texture", - "glPixelTexGenSGIX", - "-GL_SGIS_pixel_texture", - "glPixelTexGenParameteriSGIS", - "glPixelTexGenParameterivSGIS", - "glPixelTexGenParameterfSGIS", - "glPixelTexGenParameterfvSGIS", - "glGetPixelTexGenParameterivSGIS", - "glGetPixelTexGenParameterfvSGIS", - "-GL_SGIS_texture4D", - "glTexImage4DSGIS", - "glTexSubImage4DSGIS", - "-GL_EXT_texture_object", - "glAreTexturesResidentEXT", - "glBindTextureEXT", - "glDeleteTexturesEXT", - "glGenTexturesEXT", - "glIsTextureEXT", - "glPrioritizeTexturesEXT", - "-GL_SGIS_detail_texture", - "glDetailTexFuncSGIS", - "glGetDetailTexFuncSGIS", - "-GL_SGIS_sharpen_texture", - "glSharpenTexFuncSGIS", - "glGetSharpenTexFuncSGIS", - "-GL_SGIS_multisample", - "glSampleMaskSGIS", - "glSamplePatternSGIS", - "-GL_EXT_vertex_array", - "glArrayElementEXT", - "glColorPointerEXT", - "glDrawArraysEXT", - "glEdgeFlagPointerEXT", - "glGetPointervEXT", - "glIndexPointerEXT", - "glNormalPointerEXT", - "glTexCoordPointerEXT", - "glVertexPointerEXT", - "-GL_EXT_blend_minmax", - "glBlendEquationEXT", - "-GL_SGIX_sprite", - "glSpriteParameterfSGIX", - "glSpriteParameterfvSGIX", - "glSpriteParameteriSGIX", - "glSpriteParameterivSGIX", - "-GL_ARB_point_parameters", - "glPointParameterfARB", - "glPointParameterfvARB", - "-GL_EXT_point_parameters", - "glPointParameterfEXT", - "glPointParameterfvEXT", - "-GL_SGIS_point_parameters", - "glPointParameterfSGIS", - "glPointParameterfvSGIS", - "-GL_SGIX_instruments", - "glGetInstrumentsSGIX", - "glInstrumentsBufferSGIX", - "glPollInstrumentsSGIX", - "glReadInstrumentsSGIX", - "glStartInstrumentsSGIX", - "glStopInstrumentsSGIX", - "-GL_SGIX_framezoom", - "glFrameZoomSGIX", - "-GL_SGIX_tag_sample_buffer", - "glTagSampleBufferSGIX", - "-GL_SGIX_polynomial_ffd", - "glDeformationMap3dSGIX", - "glDeformationMap3fSGIX", - "glDeformSGIX", - "glLoadIdentityDeformationMapSGIX", - "-GL_SGIX_reference_plane", - "glReferencePlaneSGIX", - "-GL_SGIX_flush_raster", - "glFlushRasterSGIX", - "-GL_SGIS_fog_function", - "glFogFuncSGIS", - "glGetFogFuncSGIS", - "-GL_HP_image_transform", - "glImageTransformParameteriHP", - "glImageTransformParameterfHP", - "glImageTransformParameterivHP", - "glImageTransformParameterfvHP", - "glGetImageTransformParameterivHP", - "glGetImageTransformParameterfvHP", - "-GL_EXT_color_subtable", - "glColorSubTableEXT", - "glCopyColorSubTableEXT", - "-GL_PGI_misc_hints", - "glHintPGI", - "-GL_EXT_paletted_texture", - "glColorTableEXT", - "glGetColorTableEXT", - "glGetColorTableParameterivEXT", - "glGetColorTableParameterfvEXT", - "-GL_SGIX_list_priority", - "glGetListParameterfvSGIX", - "glGetListParameterivSGIX", - "glListParameterfSGIX", - "glListParameterfvSGIX", - "glListParameteriSGIX", - "glListParameterivSGIX", - "-GL_EXT_index_material", - "glIndexMaterialEXT", - "-GL_EXT_index_func", - "glIndexFuncEXT", - "-GL_EXT_compiled_vertex_array", - "glLockArraysEXT", - "glUnlockArraysEXT", - "-GL_EXT_cull_vertex", - "glCullParameterdvEXT", - "glCullParameterfvEXT", - "-GL_SGIX_fragment_lighting", - "glFragmentColorMaterialSGIX", - "glFragmentLightfSGIX", - "glFragmentLightfvSGIX", - "glFragmentLightiSGIX", - "glFragmentLightivSGIX", - "glFragmentLightModelfSGIX", - "glFragmentLightModelfvSGIX", - "glFragmentLightModeliSGIX", - "glFragmentLightModelivSGIX", - "glFragmentMaterialfSGIX", - "glFragmentMaterialfvSGIX", - "glFragmentMaterialiSGIX", - "glFragmentMaterialivSGIX", - "glGetFragmentLightfvSGIX", - "glGetFragmentLightivSGIX", - "glGetFragmentMaterialfvSGIX", - "glGetFragmentMaterialivSGIX", - "glLightEnviSGIX", - "-GL_EXT_draw_range_elements", - "glDrawRangeElementsEXT", - "-GL_EXT_light_texture", - "glApplyTextureEXT", - "glTextureLightEXT", - "glTextureMaterialEXT", - "-GL_SGIX_async", - "glAsyncMarkerSGIX", - "glFinishAsyncSGIX", - "glPollAsyncSGIX", - "glGenAsyncMarkersSGIX", - "glDeleteAsyncMarkersSGIX", - "glIsAsyncMarkerSGIX", - "-GL_INTEL_parallel_arrays", - "glVertexPointervINTEL", - "glNormalPointervINTEL", - "glColorPointervINTEL", - "glTexCoordPointervINTEL", - "-GL_EXT_pixel_transform", - "glPixelTransformParameteriEXT", - "glPixelTransformParameterfEXT", - "glPixelTransformParameterivEXT", - "glPixelTransformParameterfvEXT", - "-GL_EXT_secondary_color", - "glSecondaryColor3bEXT", - "glSecondaryColor3bvEXT", - "glSecondaryColor3dEXT", - "glSecondaryColor3dvEXT", - "glSecondaryColor3fEXT", - "glSecondaryColor3fvEXT", - "glSecondaryColor3iEXT", - "glSecondaryColor3ivEXT", - "glSecondaryColor3sEXT", - "glSecondaryColor3svEXT", - "glSecondaryColor3ubEXT", - "glSecondaryColor3ubvEXT", - "glSecondaryColor3uiEXT", - "glSecondaryColor3uivEXT", - "glSecondaryColor3usEXT", - "glSecondaryColor3usvEXT", - "glSecondaryColorPointerEXT", - "-GL_EXT_texture_perturb_normal", - "glTextureNormalEXT", - "-GL_EXT_multi_draw_arrays", - "glMultiDrawArraysEXT", - "glMultiDrawElementsEXT", - "-GL_EXT_fog_coord", - "glFogCoordfEXT", - "glFogCoordfvEXT", - "glFogCoorddEXT", - "glFogCoorddvEXT", - "glFogCoordPointerEXT", - "-GL_EXT_coordinate_frame", - "glTangent3bEXT", - "glTangent3bvEXT", - "glTangent3dEXT", - "glTangent3dvEXT", - "glTangent3fEXT", - "glTangent3fvEXT", - "glTangent3iEXT", - "glTangent3ivEXT", - "glTangent3sEXT", - "glTangent3svEXT", - "glBinormal3bEXT", - "glBinormal3bvEXT", - "glBinormal3dEXT", - "glBinormal3dvEXT", - "glBinormal3fEXT", - "glBinormal3fvEXT", - "glBinormal3iEXT", - "glBinormal3ivEXT", - "glBinormal3sEXT", - "glBinormal3svEXT", - "glTangentPointerEXT", - "glBinormalPointerEXT", - "-GL_SUNX_constant_data", - "glFinishTextureSUNX", - "-GL_SUN_global_alpha", - "glGlobalAlphaFactorbSUN", - "glGlobalAlphaFactorsSUN", - "glGlobalAlphaFactoriSUN", - "glGlobalAlphaFactorfSUN", - "glGlobalAlphaFactordSUN", - "glGlobalAlphaFactorubSUN", - "glGlobalAlphaFactorusSUN", - "glGlobalAlphaFactoruiSUN", - "-GL_SUN_triangle_list", - "glReplacementCodeuiSUN", - "glReplacementCodeusSUN", - "glReplacementCodeubSUN", - "glReplacementCodeuivSUN", - "glReplacementCodeusvSUN", - "glReplacementCodeubvSUN", - "glReplacementCodePointerSUN", - "-GL_SUN_vertex", - "glColor4ubVertex2fSUN", - "glColor4ubVertex2fvSUN", - "glColor4ubVertex3fSUN", - "glColor4ubVertex3fvSUN", - "glColor3fVertex3fSUN", - "glColor3fVertex3fvSUN", - "glNormal3fVertex3fSUN", - "glNormal3fVertex3fvSUN", - "glColor4fNormal3fVertex3fSUN", - "glColor4fNormal3fVertex3fvSUN", - "glTexCoord2fVertex3fSUN", - "glTexCoord2fVertex3fvSUN", - "glTexCoord4fVertex4fSUN", - "glTexCoord4fVertex4fvSUN", - "glTexCoord2fColor4ubVertex3fSUN", - "glTexCoord2fColor4ubVertex3fvSUN", - "glTexCoord2fColor3fVertex3fSUN", - "glTexCoord2fColor3fVertex3fvSUN", - "glTexCoord2fNormal3fVertex3fSUN", - "glTexCoord2fNormal3fVertex3fvSUN", - "glTexCoord2fColor4fNormal3fVertex3fSUN", - "glTexCoord2fColor4fNormal3fVertex3fvSUN", - "glTexCoord4fColor4fNormal3fVertex4fSUN", - "glTexCoord4fColor4fNormal3fVertex4fvSUN", - "glReplacementCodeuiVertex3fSUN", - "glReplacementCodeuiVertex3fvSUN", - "glReplacementCodeuiColor4ubVertex3fSUN", - "glReplacementCodeuiColor4ubVertex3fvSUN", - "glReplacementCodeuiColor3fVertex3fSUN", - "glReplacementCodeuiColor3fVertex3fvSUN", - "glReplacementCodeuiNormal3fVertex3fSUN", - "glReplacementCodeuiNormal3fVertex3fvSUN", - "glReplacementCodeuiColor4fNormal3fVertex3fSUN", - "glReplacementCodeuiColor4fNormal3fVertex3fvSUN", - "glReplacementCodeuiTexCoord2fVertex3fSUN", - "glReplacementCodeuiTexCoord2fVertex3fvSUN", - "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN", - "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN", - "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN", - "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN", - "-GL_EXT_blend_func_separate", - "glBlendFuncSeparateEXT", - "glBlendFuncSeparateINGR", - "-GL_EXT_vertex_weighting", - "glVertexWeightfEXT", - "glVertexWeightfvEXT", - "glVertexWeightPointerEXT", - "-GL_NV_vertex_array_range", - "glFlushVertexArrayRangeNV", - "glVertexArrayRangeNV", - "-GL_NV_register_combiners", - "glCombinerParameterfvNV", - "glCombinerParameterfNV", - "glCombinerParameterivNV", - "glCombinerParameteriNV", - "glCombinerInputNV", - "glCombinerOutputNV", - "glFinalCombinerInputNV", - "glGetCombinerInputParameterfvNV", - "glGetCombinerInputParameterivNV", - "glGetCombinerOutputParameterfvNV", - "glGetCombinerOutputParameterivNV", - "glGetFinalCombinerInputParameterfvNV", - "glGetFinalCombinerInputParameterivNV", - "-GL_MESA_resize_buffers", - "glResizeBuffersMESA", - "-GL_MESA_window_pos", - "glWindowPos2dMESA", - "glWindowPos2dvMESA", - "glWindowPos2fMESA", - "glWindowPos2fvMESA", - "glWindowPos2iMESA", - "glWindowPos2ivMESA", - "glWindowPos2sMESA", - "glWindowPos2svMESA", - "glWindowPos3dMESA", - "glWindowPos3dvMESA", - "glWindowPos3fMESA", - "glWindowPos3fvMESA", - "glWindowPos3iMESA", - "glWindowPos3ivMESA", - "glWindowPos3sMESA", - "glWindowPos3svMESA", - "glWindowPos4dMESA", - "glWindowPos4dvMESA", - "glWindowPos4fMESA", - "glWindowPos4fvMESA", - "glWindowPos4iMESA", - "glWindowPos4ivMESA", - "glWindowPos4sMESA", - "glWindowPos4svMESA", - "-GL_IBM_multimode_draw_arrays", - "glMultiModeDrawArraysIBM", - "glMultiModeDrawElementsIBM", - "-GL_IBM_vertex_array_lists", - "glColorPointerListIBM", - "glSecondaryColorPointerListIBM", - "glEdgeFlagPointerListIBM", - "glFogCoordPointerListIBM", - "glIndexPointerListIBM", - "glNormalPointerListIBM", - "glTexCoordPointerListIBM", - "glVertexPointerListIBM", - "-GL_3DFX_tbuffer", - "glTbufferMask3DFX", - "-GL_EXT_multisample", - "glSampleMaskEXT", - "glSamplePatternEXT", - "-GL_SGIS_texture_color_mask", - "glTextureColorMaskSGIS", - "-GL_SGIX_igloo_interface", - "glIglooInterfaceSGIX", - "-GL_NV_fence", - "glGenFencesNV", - "glDeleteFencesNV", - "glSetFenceNV", - "glTestFenceNV", - "glFinishFenceNV", - "glIsFenceNV", - "glGetFenceivNV", - "-GL_NV_evaluators", - "glMapControlPointsNV", - "glMapParameterivNV", - "glMapParameterfvNV", - "glGetMapControlPointsNV", - "glGetMapParameterivNV", - "glGetMapParameterfvNV", - "glGetMapAttribParameterivNV", - "glGetMapAttribParameterfvNV", - "glEvalMapsNV", - "-GL_NV_register_combiners2", - "glCombinerStageParameterfvNV", - "glGetCombinerStageParameterfvNV", - "-GL_NV_vertex_program", - "glBindProgramNV", - "glDeleteProgramsNV", - "glExecuteProgramNV", - "glGenProgramsNV", - "glAreProgramsResidentNV", - "glRequestResidentProgramsNV", - "glGetProgramParameterfvNV", - "glGetProgramParameterdvNV", - "glGetProgramivNV", - "glGetProgramStringNV", - "glGetTrackMatrixivNV", - "glGetVertexAttribdvNV", - "glGetVertexAttribfvNV", - "glGetVertexAttribivNV", - "glGetVertexAttribPointervNV", - "glIsProgramNV", - "glLoadProgramNV", - "glProgramParameter4fNV", - "glProgramParameter4dNV", - "glProgramParameter4dvNV", - "glProgramParameter4fvNV", - "glProgramParameters4dvNV", - "glProgramParameters4fvNV", - "glTrackMatrixNV", - "glVertexAttribPointerNV", - "glVertexAttrib1sNV", - "glVertexAttrib1fNV", - "glVertexAttrib1dNV", - "glVertexAttrib2sNV", - "glVertexAttrib2fNV", - "glVertexAttrib2dNV", - "glVertexAttrib3sNV", - "glVertexAttrib3fNV", - "glVertexAttrib3dNV", - "glVertexAttrib4sNV", - "glVertexAttrib4fNV", - "glVertexAttrib4dNV", - "glVertexAttrib4ubNV", - "glVertexAttrib1svNV", - "glVertexAttrib1fvNV", - "glVertexAttrib1dvNV", - "glVertexAttrib2svNV", - "glVertexAttrib2fvNV", - "glVertexAttrib2dvNV", - "glVertexAttrib3svNV", - "glVertexAttrib3fvNV", - "glVertexAttrib3dvNV", - "glVertexAttrib4svNV", - "glVertexAttrib4fvNV", - "glVertexAttrib4dvNV", - "glVertexAttrib4ubvNV", - "glVertexAttribs1svNV", - "glVertexAttribs1fvNV", - "glVertexAttribs1dvNV", - "glVertexAttribs2svNV", - "glVertexAttribs2fvNV", - "glVertexAttribs2dvNV", - "glVertexAttribs3svNV", - "glVertexAttribs3fvNV", - "glVertexAttribs3dvNV", - "glVertexAttribs4svNV", - "glVertexAttribs4fvNV", - "glVertexAttribs4dvNV", - "glVertexAttribs4ubvNV", - "-GL_ARB_window_pos", - "glWindowPos2dARB", - "glWindowPos2fARB", - "glWindowPos2iARB", - "glWindowPos2sARB", - "glWindowPos2dvARB", - "glWindowPos2fvARB", - "glWindowPos2ivARB", - "glWindowPos2svARB", - "glWindowPos3dARB", - "glWindowPos3fARB", - "glWindowPos3iARB", - "glWindowPos3sARB", - "glWindowPos3dvARB", - "glWindowPos3fvARB", - "glWindowPos3ivARB", - "glWindowPos3svARB", - "-EXT_stencil_two_side", - "glActiveStencilFaceEXT", +#include "getproclist.h" - NULL -}; static int @@ -1089,46 +99,69 @@ extension_supported(const char *haystack, const char *needle) static void -test_functions( const char *extensions ) +check_functions( const char *extensions ) { + struct name_test_pair *entry; int failures = 0, passes = 0; + int totalFail = 0, totalPass = 0; int doTests; - int i; - for (i = 0; functions[i]; i++) { - if (functions[i][0] == '-') { - if (functions[i][1] == '1') { + for (entry = functions; entry->name; entry++) { + if (entry->name[0] == '-') { + if (entry->name[1] == '1') { doTests = 1; } else { /* check if the named extension is available */ - doTests = extension_supported(extensions, functions[i]+1); + doTests = extension_supported(extensions, entry->name+1); } if (doTests) - printf("Testing %s functions\n", functions[i] + 1); + printf("Testing %s functions\n", entry->name + 1); + totalFail += failures; + totalPass += passes; failures = 0; passes = 0; } else if (doTests) { - void *p = (void *) glXGetProcAddressARB((const GLubyte *) functions[i]); - if (p) { - passes++; + void *funcPtr = (void *) glXGetProcAddressARB((const GLubyte *) entry->name); + if (funcPtr) { + if (entry->test) { + GLboolean b; + printf(" Validating %s:", entry->name); + b = (*entry->test)(funcPtr); + if (b) { + printf(" Pass\n"); + passes++; + } + else { + printf(" FAIL!!!\n"); + failures++; + } + } + else { + passes++; + } } else { - printf(" glXGetProcAddress(%s) failed!\n", functions[i]); + printf(" glXGetProcAddress(%s) failed!\n", entry->name); failures++; } } - if (doTests && (!functions[i + 1] || functions[i + 1][0] == '-')) { + if (doTests && (!(entry+1)->name || (entry+1)->name[0] == '-')) { if (failures > 0) { - printf(" %d failures\n", failures); + printf(" %d failed.\n", failures); } - else if (i > 0) { + if (passes > 0) { printf(" %d passed.\n", passes); } } } + totalFail += failures; + totalPass += passes; + + printf("-----------------------------\n"); + printf("Total: %d pass %d fail\n", totalPass, totalFail); } @@ -1186,7 +219,7 @@ print_screen_info(Display *dpy, int scrnum, Bool allowDirect) } if (glXMakeCurrent(dpy, win, ctx)) { - test_functions( (const char *) glGetString(GL_EXTENSIONS) ); + check_functions( (const char *) glGetString(GL_EXTENSIONS) ); } else { fprintf(stderr, "Error: glXMakeCurrent failed\n"); diff --git a/progs/tests/getprocaddress.py b/progs/tests/getprocaddress.py new file mode 100644 index 0000000..e5d2fbb --- /dev/null +++ b/progs/tests/getprocaddress.py @@ -0,0 +1,97 @@ +#!/usr/bin/env python + +# $Id: getprocaddress.py,v 1.1 2002/11/08 15:35:47 brianp Exp $ + +# Helper for the getprocaddress.c test. + + +import re, string + +def PrintHead(): + print """ +struct name_test_pair { + const char *name; + GLboolean (*test)(void *); +}; + +static struct name_test_pair functions[] = {""" + + +def PrintTail(): + print""" + { NULL, NULL } +}; +""" + + +def HaveTest(function): + testFuncs = [ + "glActiveTextureARB", + "glSampleCoverageARB" + ] + if function in testFuncs: + return 1 + else: + return 0 + + +def FindTestFunctions(): + """Scan getprocaddress.c for lines that start with "test_" to find + extension function tests. Return a list of names found.""" + functions = [] + f = open("getprocaddress.c") + if not f: + return functions + for line in f.readlines(): + v = re.search("^test_([a-zA-Z0-9]+)", line) + if v: + func = v.group(1) + #print "Found -%s-" % func + functions.append(func) + f.close + return functions + + +def PrintFunctions(specFile, tests): + + # init some vars + prevCategory = '' + funcName = '' + + f = open(specFile) + for line in f.readlines(): + + # split line into tokens + tokens = string.split(line) + + if len(tokens) > 0 and line[0] != '#': + + if tokens[0] == 'name': + if funcName != '': + if category != prevCategory: + print ' { "-%s", NULL},' % category + prevCategory = category + +# if HaveTest("gl" + funcName): + if funcName in tests: + test = "test_%s" % funcName + else: + test = "NULL" + print ' { "gl%s", %s },' % (funcName, test) + funcName = tokens[1] + + elif tokens[0] == 'category': + category = tokens[1] + + #endif + #endif + #endfor +#enddef + + +tests = FindTestFunctions() +PrintHead() +PrintFunctions("../bin/APIspec", tests) +PrintTail() + + -- 2.7.4