diff --git a/reactos/lib/opengl32/Makefile b/reactos/lib/opengl32/Makefile index b8064cf21d6..f47faadb851 100644 --- a/reactos/lib/opengl32/Makefile +++ b/reactos/lib/opengl32/Makefile @@ -7,14 +7,14 @@ TARGET_NORC = yes TARGET_NAME = opengl32 # -fno-builtin -TARGET_CFLAGS = -D__USE_W32API -DUNICODE -D_M_IX86 +TARGET_CFLAGS = -D__USE_W32API -DUNICODE -D_M_IX86 -Os # require os code to explicitly request A/W version of structs/functions TARGET_CFLAGS += -D_DISABLE_TIDENTS -Wall -Werror TARGET_LFLAGS = -lgdi32 -lntdll -TARGET_SDKLIBS = opengl32.a gdi32.a +TARGET_SDKLIBS = opengl32.a gdi32.a ntdll.a # ntdll.a gdi32.a - may still need these TARGET_OBJECTS = \ diff --git a/reactos/lib/opengl32/gl.c b/reactos/lib/opengl32/gl.c index 60e3fccaa19..30006bbd1db 100644 --- a/reactos/lib/opengl32/gl.c +++ b/reactos/lib/opengl32/gl.c @@ -13,18 +13,19 @@ /* On a x86 we call the ICD functions in a special-way: * * For every glXXX function we export a glXXX entry-point which loads the - * matching "real" function pointer from the NtCurrentTeb()->glDispatch table - * and jmps to the address, leaving the stack alone and letting the "real" - * function return for us. + * matching "real" function pointer from the NtCurrentTeb()->glDispatchTable + * for gl functions in teblist.h and for others it gets the pointer from + * NtCurrentTeb()->glTable and jmps to the address, leaving the stack alone and + * letting the "real" function return for us. + * Royce has implemented this in NASM =D * * On other machines we use C to forward the calls (slow...) */ #define WIN32_LEAN_AND_MEAN #include -/*#include */ -/* -- complains about conflicting types of GL functions we export */ -/* either fix that or put the GLxxx typedefs in here */ +#include +#include #include "opengl32.h" @@ -46,42 +47,56 @@ typedef double GLdouble; typedef double GLclampd; typedef void GLvoid; -#if defined(__GNUC__) && defined(_M_IX86) /* use GCC extended inline asm */ +void STDCALL glEmptyFunc0() {} +void STDCALL glEmptyFunc4( long l1 ) {} +void STDCALL glEmptyFunc8( long l1, long l2 ) {} +void STDCALL glEmptyFunc12( long l1, long l2, long l3 ) {} +void STDCALL glEmptyFunc16( long l1, long l2, long l3, long l4 ) {} +void STDCALL glEmptyFunc20( long l1, long l2, long l3, long l4, long l5 ) {} +void STDCALL glEmptyFunc24( long l1, long l2, long l3, long l4, long l5, + long l6 ) {} +void STDCALL glEmptyFunc28( long l1, long l2, long l3, long l4, long l5, + long l6, long l7 ) {} +void STDCALL glEmptyFunc32( long l1, long l2, long l3, long l4, long l5, + long l6, long l7, long l8 ) {} +void STDCALL glEmptyFunc36( long l1, long l2, long l3, long l4, long l5, + long l6, long l7, long l8, long l9 ) {} +void STDCALL glEmptyFunc40( long l1, long l2, long l3, long l4, long l5, + long l6, long l7, long l8, long l9, long l10 ) {} +void STDCALL glEmptyFunc44( long l1, long l2, long l3, long l4, long l5, + long l6, long l7, long l8, long l9, long l10, + long l11 ) {} +void STDCALL glEmptyFunc48( long l1, long l2, long l3, long l4, long l5, + long l6, long l7, long l8, long l9, long l10, + long l11, long l12 ) {} +void STDCALL glEmptyFunc52( long l1, long l2, long l3, long l4, long l5, + long l6, long l7, long l8, long l9, long l10, + long l11, long l12, long l13 ) {} +void STDCALL glEmptyFunc56( long l1, long l2, long l3, long l4, long l5, + long l6, long l7, long l8, long l9, long l10, + long l11, long l12, long l13, long l14 ) {} -# define X(func, ret, typeargs, args) \ - void WINAPI func typeargs \ - { \ - __asm__( \ - "movl %%fs:0x18, %%eax" "\n\t" \ - "addl %0, %%eax" "\n\t" \ - "jmpl *(%%eax)" "\n\t" \ - : \ - : "n"(0x714+(GLIDX_##func*sizeof(PVOID))) ); \ - } -#elif defined(_MSC_VER) && defined(_M_IX86) /* use MSVC intel inline asm */ - -# define X(func, ret, typeargs, args) \ - ret WINAPI func typeargs \ - { \ - __asm { \ - mov eax, fs:[00000018] \ - jmp *GLIDX_##func(eax) \ - } \ - } - -#else /* use C code */ -#error C -# define X(func, ret, typeargs, args) \ -ret WINAPI func typeargs \ +# define X(func, ret, typeargs, args, icdidx, tebidx, stack) \ +ret STDCALL func typeargs \ { \ - PVOID fn = (PVOID)(NtCurrentTeb()->glDispatch[GLIDX_##func]); \ - return (ret)((ret (*) typeargs)fn)args; \ + PROC *table; \ + PROC fn; \ + if (tebidx >= 0) \ + { \ + table = (PROC *)NtCurrentTeb()->glDispatchTable; \ + fn = table[tebidx]; \ + } \ + else \ + { \ + table = (PROC *)NtCurrentTeb()->glTable; \ + fn = table[icdidx]; \ + } \ + return (ret)((ret(*)typeargs)fn)args; \ } -#endif - GLFUNCS_MACRO + #undef X /* EOF */ diff --git a/reactos/lib/opengl32/glfuncs.h b/reactos/lib/opengl32/glfuncs.h index 9214d6b0d31..eadb5c34859 100644 --- a/reactos/lib/opengl32/glfuncs.h +++ b/reactos/lib/opengl32/glfuncs.h @@ -8,481 +8,350 @@ * !!! AUTOMATICALLY CREATED FROM glfuncs.csv !!! */ -/* To use this macro define a macro X(name, ret, typeargs, args). - * It gets called for every glXXX function. For glVertex3f name would be "glVertex3f", - * ret would be "void", typeargs would be "(GLfloat x, GLfloat y, GLfloat z)" and - * args would be "(x,y,z)". +/* To use this macro define a macro X(name, ret, typeargs, args, icdidx, tebidx, stack). + * It gets called for every glXXX function. i.e. glVertex3f: name = "glVertex3f", + * ret = "void", typeargs = "(GLfloat x, GLfloat y, GLfloat z)", args = "(x,y,z)", + * icdidx = "136", tebidx = "98" and stack = "12". * Don't forget to undefine X ;-) */ #define GLFUNCS_MACRO \ - X(glAccum, void, (GLenum op, GLfloat value), (op,value)) \ - X(glActiveTexture, void, (GLenum texture), (texture)) \ - X(glAddSwapHintRectWIN, void, (GLint x, GLint y, GLsizei width, GLsizei height), (x,y,width,height)) \ - X(glAlphaFunc, void, (GLenum func, GLclampf ref), (func,ref)) \ - X(glAreTexturesResident, GLboolean, (GLsizei n, const GLuint *textures, GLboolean *residences), (n,textures,residences)) \ - X(glArrayElement, void, (GLint i), (i)) \ - X(glBegin, void, (GLenum mode), (mode)) \ - X(glBindTexture, void, (GLenum target, GLuint texture), (target,texture)) \ - X(glBitmap, void, (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap), (width,height,xorig,yorig,xmove,ymove,bitmap)) \ - X(glBlendColor, void, (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha), (red,green,blue,alpha)) \ - X(glBlendEquation, void, (GLenum mode), (mode)) \ - X(glBlendFunc, void, (GLenum sfactor, GLenum dfactor), (sfactor,dfactor)) \ - X(glBlendFuncSeparate, void, (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha), (sfactorRGB,dfactorRGB,sfactorAlpha,dfactorAlpha)) \ - X(glCallList, void, (GLuint list), (list)) \ - X(glCallLists, void, (GLsizei n, GLenum type, const GLvoid *lists), (n,type,lists)) \ - X(glClear, void, (GLbitfield mask), (mask)) \ - X(glClearAccum, void, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red,green,blue,alpha)) \ - X(glClearColor, void, (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha), (red,green,blue,alpha)) \ - X(glClearDepth, void, (GLclampd depth), (depth)) \ - X(glClearIndex, void, (GLfloat c), (c)) \ - X(glClearStencil, void, (GLint s), (s)) \ - X(glClientActiveTexture, void, (GLenum texture), (texture)) \ - X(glClipPlane, void, (GLenum plane, const GLdouble *equation), (plane,equation)) \ - X(glColor3b, void, (GLbyte red, GLbyte green, GLbyte blue), (red,green,blue)) \ - X(glColor3bv, void, (const GLbyte *v), (v)) \ - X(glColor3d, void, (GLdouble red, GLdouble green, GLdouble blue), (red,green,blue)) \ - X(glColor3dv, void, (const GLdouble *v), (v)) \ - X(glColor3f, void, (GLfloat red, GLfloat green, GLfloat blue), (red,green,blue)) \ - X(glColor3fv, void, (const GLfloat *v), (v)) \ - X(glColor3i, void, (GLint red, GLint green, GLint blue), (red,green,blue)) \ - X(glColor3iv, void, (const GLint *v), (v)) \ - X(glColor3s, void, (GLshort red, GLshort green, GLshort blue), (red,green,blue)) \ - X(glColor3sv, void, (const GLshort *v), (v)) \ - X(glColor3ub, void, (GLubyte red, GLubyte green, GLubyte blue), (red,green,blue)) \ - X(glColor3ubv, void, (const GLubyte *v), (v)) \ - X(glColor3ui, void, (GLuint red, GLuint green, GLuint blue), (red,green,blue)) \ - X(glColor3uiv, void, (const GLuint *v), (v)) \ - X(glColor3us, void, (GLushort red, GLushort green, GLushort blue), (red,green,blue)) \ - X(glColor3usv, void, (const GLushort *v), (v)) \ - X(glColor4b, void, (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha), (red,green,blue,alpha)) \ - X(glColor4bv, void, (const GLbyte *v), (v)) \ - X(glColor4d, void, (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha), (red,green,blue,alpha)) \ - X(glColor4dv, void, (const GLdouble *v), (v)) \ - X(glColor4f, void, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red,green,blue,alpha)) \ - X(glColor4fv, void, (const GLfloat *v), (v)) \ - X(glColor4i, void, (GLint red, GLint green, GLint blue, GLint alpha), (red,green,blue,alpha)) \ - X(glColor4iv, void, (const GLint *v), (v)) \ - X(glColor4s, void, (GLshort red, GLshort green, GLshort blue, GLshort alpha), (red,green,blue,alpha)) \ - X(glColor4sv, void, (const GLshort *v), (v)) \ - X(glColor4ub, void, (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha), (red,green,blue,alpha)) \ - X(glColor4ubv, void, (const GLubyte *v), (v)) \ - X(glColor4ui, void, (GLuint red, GLuint green, GLuint blue, GLuint alpha), (red,green,blue,alpha)) \ - X(glColor4uiv, void, (const GLuint *v), (v)) \ - X(glColor4us, void, (GLushort red, GLushort green, GLushort blue, GLushort alpha), (red,green,blue,alpha)) \ - X(glColor4usv, void, (const GLushort *v), (v)) \ - X(glColorMask, void, (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha), (red,green,blue,alpha)) \ - X(glColorMaterial, void, (GLenum face, GLenum mode), (face,mode)) \ - X(glColorPointer, void, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size,type,stride,pointer)) \ - X(glColorSubTable, void, (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data), (target,start,count,format,type,data)) \ - X(glColorTable, void, (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table), (target,internalformat,width,format,type,table)) \ - X(glColorTableParameterfv, void, (GLenum target, GLenum pname, const GLfloat *params), (target,pname,params)) \ - X(glColorTableParameteriv, void, (GLenum target, GLenum pname, const GLint *params), (target,pname,params)) \ - X(glCompressedTexImage1D, void, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data), (target,level,internalformat,width,border,imageSize,data)) \ - X(glCompressedTexImage2D, void, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data), (target,level,internalformat,width,height,border,imageSize,data)) \ - X(glCompressedTexImage3D, void, (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data), (target,level,internalformat,width,height,depth,border,imageSize,data)) \ - X(glCompressedTexSubImage1D, void, (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data), (target,level,xoffset,width,format,imageSize,data)) \ - X(glCompressedTexSubImage2D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data), (target,level,xoffset,yoffset,width,height,format,imageSize,data)) \ - X(glCompressedTexSubImage3D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data), (target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)) \ - X(glConvolutionFilter1D, void, (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image), (target,internalformat,width,format,type,image)) \ - X(glConvolutionFilter2D, void, (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image), (target,internalformat,width,height,format,type,image)) \ - X(glConvolutionParameterf, void, (GLenum target, GLenum pname, GLfloat params), (target,pname,params)) \ - X(glConvolutionParameterfv, void, (GLenum target, GLenum pname, const GLfloat *params), (target,pname,params)) \ - X(glConvolutionParameteri, void, (GLenum target, GLenum pname, GLint params), (target,pname,params)) \ - X(glConvolutionParameteriv, void, (GLenum target, GLenum pname, const GLint *params), (target,pname,params)) \ - X(glCopyColorSubTable, void, (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width), (target,start,x,y,width)) \ - X(glCopyColorTable, void, (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width), (target,internalformat,x,y,width)) \ - X(glCopyConvolutionFilter1D, void, (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width), (target,internalformat,x,y,width)) \ - X(glCopyConvolutionFilter2D, void, (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height), (target,internalformat,x,y,width,height)) \ - X(glCopyPixels, void, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type), (x,y,width,height,type)) \ - X(glCopyTexImage1D, void, (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border), (target,level,internalformat,x,y,width,border)) \ - X(glCopyTexImage2D, void, (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border), (target,level,internalformat,x,y,width,height,border)) \ - X(glCopyTexSubImage1D, void, (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (target,level,xoffset,x,y,width)) \ - X(glCopyTexSubImage2D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target,level,xoffset,yoffset,x,y,width,height)) \ - X(glCopyTexSubImage3D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target,level,xoffset,yoffset,zoffset,x,y,width,height)) \ - X(glCullFace, void, (GLenum mode), (mode)) \ - X(glDeleteLists, void, (GLuint list, GLsizei range), (list,range)) \ - X(glDeleteTextures, void, (GLsizei n, const GLuint *textures), (n,textures)) \ - X(glDepthFunc, void, (GLenum func), (func)) \ - X(glDepthMask, void, (GLboolean flag), (flag)) \ - X(glDepthRange, void, (GLclampd zNear, GLclampd zFar), (zNear,zFar)) \ - X(glDisable, void, (GLenum cap), (cap)) \ - X(glDisableClientState, void, (GLenum array), (array)) \ - X(glDrawArrays, void, (GLenum mode, GLint first, GLsizei count), (mode,first,count)) \ - X(glDrawBuffer, void, (GLenum mode), (mode)) \ - X(glDrawElements, void, (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices), (mode,count,type,indices)) \ - X(glDrawPixels, void, (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels), (width,height,format,type,pixels)) \ - X(glDrawRangeElements, void, (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices), (mode,start,end,count,type,indices)) \ - X(glEdgeFlag, void, (GLboolean flag), (flag)) \ - X(glEdgeFlagPointer, void, (GLsizei stride, const GLboolean *pointer), (stride,pointer)) \ - X(glEdgeFlagv, void, (const GLboolean *flag), (flag)) \ - X(glEnable, void, (GLenum cap), (cap)) \ - X(glEnableClientState, void, (GLenum array), (array)) \ - X(glEnd, void, (void), ()) \ - X(glEndList, void, (void), ()) \ - X(glEvalCoord1d, void, (GLdouble u), (u)) \ - X(glEvalCoord1dv, void, (const GLdouble *u), (u)) \ - X(glEvalCoord1f, void, (GLfloat u), (u)) \ - X(glEvalCoord1fv, void, (const GLfloat *u), (u)) \ - X(glEvalCoord2d, void, (GLdouble u, GLdouble v), (u,v)) \ - X(glEvalCoord2dv, void, (const GLdouble *u), (u)) \ - X(glEvalCoord2f, void, (GLfloat u, GLfloat v), (u,v)) \ - X(glEvalCoord2fv, void, (const GLfloat *u), (u)) \ - X(glEvalMesh1, void, (GLenum mode, GLint i1, GLint i2), (mode,i1,i2)) \ - X(glEvalMesh2, void, (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2), (mode,i1,i2,j1,j2)) \ - X(glEvalPoint1, void, (GLint i), (i)) \ - X(glEvalPoint2, void, (GLint i, GLint j), (i,j)) \ - X(glFeedbackBuffer, void, (GLsizei size, GLenum type, GLfloat *buffer), (size,type,buffer)) \ - X(glFinish, void, (void), ()) \ - X(glFlush, void, (void), ()) \ - X(glFlushHold, GLuint, (void), ()) \ - X(glFogCoordPointer, void, (GLenum type, GLsizei stride, const GLvoid *pointer), (type,stride,pointer)) \ - X(glFogCoordd, void, (GLdouble fog), (fog)) \ - X(glFogCoorddv, void, (const GLdouble *fog), (fog)) \ - X(glFogCoordf, void, (GLfloat fog), (fog)) \ - X(glFogCoordfv, void, (const GLfloat *fog), (fog)) \ - X(glFogf, void, (GLenum pname, GLfloat param), (pname,param)) \ - X(glFogfv, void, (GLenum pname, const GLfloat *params), (pname,params)) \ - X(glFogi, void, (GLenum pname, GLint param), (pname,param)) \ - X(glFogiv, void, (GLenum pname, const GLint *params), (pname,params)) \ - X(glFrontFace, void, (GLenum mode), (mode)) \ - X(glFrustum, void, (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (left,right,bottom,top,zNear,zFar)) \ - X(glGenLists, GLuint, (GLsizei range), (range)) \ - X(glGenTextures, void, (GLsizei n, GLuint *textures), (n,textures)) \ - X(glGetBooleanv, void, (GLenum pname, GLboolean *params), (pname,params)) \ - X(glGetClipPlane, void, (GLenum plane, GLdouble *equation), (plane,equation)) \ - X(glGetColorTable, void, (GLenum target, GLenum format, GLenum type, GLvoid *table), (target,format,type,table)) \ - X(glGetColorTableParameterfv, void, (GLenum target, GLenum pname, GLfloat *params), (target,pname,params)) \ - X(glGetColorTableParameteriv, void, (GLenum target, GLenum pname, GLint *params), (target,pname,params)) \ - X(glGetCompressedTexImage, void, (GLenum target, GLint lod, GLvoid *img), (target,lod,img)) \ - X(glGetConvolutionFilter, void, (GLenum target, GLenum format, GLenum type, GLvoid *image), (target,format,type,image)) \ - X(glGetConvolutionParameterfv, void, (GLenum target, GLenum pname, GLfloat *params), (target,pname,params)) \ - X(glGetConvolutionParameteriv, void, (GLenum target, GLenum pname, GLint *params), (target,pname,params)) \ - X(glGetDoublev, void, (GLenum pname, GLdouble *params), (pname,params)) \ - X(glGetError, GLenum, (void), ()) \ - X(glGetFloatv, void, (GLenum pname, GLfloat *params), (pname,params)) \ - X(glGetHistogram, void, (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values), (target,reset,format,type,values)) \ - X(glGetHistogramParameterfv, void, (GLenum target, GLenum pname, GLfloat *params), (target,pname,params)) \ - X(glGetHistogramParameteriv, void, (GLenum target, GLenum pname, GLint *params), (target,pname,params)) \ - X(glGetIntegerv, void, (GLenum pname, GLint *params), (pname,params)) \ - X(glGetLightfv, void, (GLenum light, GLenum pname, GLfloat *params), (light,pname,params)) \ - X(glGetLightiv, void, (GLenum light, GLenum pname, GLint *params), (light,pname,params)) \ - X(glGetMapdv, void, (GLenum target, GLenum query, GLdouble *v), (target,query,v)) \ - X(glGetMapfv, void, (GLenum target, GLenum query, GLfloat *v), (target,query,v)) \ - X(glGetMapiv, void, (GLenum target, GLenum query, GLint *v), (target,query,v)) \ - X(glGetMaterialfv, void, (GLenum face, GLenum pname, GLfloat *params), (face,pname,params)) \ - X(glGetMaterialiv, void, (GLenum face, GLenum pname, GLint *params), (face,pname,params)) \ - X(glGetMinmax, void, (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values), (target,reset,format,type,values)) \ - X(glGetMinmaxParameterfv, void, (GLenum target, GLenum pname, GLfloat *params), (target,pname,params)) \ - X(glGetMinmaxParameteriv, void, (GLenum target, GLenum pname, GLint *params), (target,pname,params)) \ - X(glGetPixelMapfv, void, (GLenum map, GLfloat *values), (map,values)) \ - X(glGetPixelMapuiv, void, (GLenum map, GLuint *values), (map,values)) \ - X(glGetPixelMapusv, void, (GLenum map, GLushort *values), (map,values)) \ - X(glGetPointerv, void, (GLenum pname, GLvoid* *params), (pname,params)) \ - X(glGetPolygonStipple, void, (GLubyte *mask), (mask)) \ - X(glGetSeparableFilter, void, (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span), (target,format,type,row,column,span)) \ - X(glGetString, const, (GLenum name), (name)) \ - X(glGetTexEnvfv, void, (GLenum target, GLenum pname, GLfloat *params), (target,pname,params)) \ - X(glGetTexEnviv, void, (GLenum target, GLenum pname, GLint *params), (target,pname,params)) \ - X(glGetTexGendv, void, (GLenum coord, GLenum pname, GLdouble *params), (coord,pname,params)) \ - X(glGetTexGenfv, void, (GLenum coord, GLenum pname, GLfloat *params), (coord,pname,params)) \ - X(glGetTexGeniv, void, (GLenum coord, GLenum pname, GLint *params), (coord,pname,params)) \ - X(glGetTexImage, void, (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels), (target,level,format,type,pixels)) \ - X(glGetTexLevelParameterfv, void, (GLenum target, GLint level, GLenum pname, GLfloat *params), (target,level,pname,params)) \ - X(glGetTexLevelParameteriv, void, (GLenum target, GLint level, GLenum pname, GLint *params), (target,level,pname,params)) \ - X(glGetTexParameterfv, void, (GLenum target, GLenum pname, GLfloat *params), (target,pname,params)) \ - X(glGetTexParameteriv, void, (GLenum target, GLenum pname, GLint *params), (target,pname,params)) \ - X(glHint, void, (GLenum target, GLenum mode), (target,mode)) \ - X(glHistogram, void, (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink), (target,width,internalformat,sink)) \ - X(glIndexMask, void, (GLuint mask), (mask)) \ - X(glIndexPointer, void, (GLenum type, GLsizei stride, const GLvoid *pointer), (type,stride,pointer)) \ - X(glIndexd, void, (GLdouble c), (c)) \ - X(glIndexdv, void, (const GLdouble *c), (c)) \ - X(glIndexf, void, (GLfloat c), (c)) \ - X(glIndexfv, void, (const GLfloat *c), (c)) \ - X(glIndexi, void, (GLint c), (c)) \ - X(glIndexiv, void, (const GLint *c), (c)) \ - X(glIndexs, void, (GLshort c), (c)) \ - X(glIndexsv, void, (const GLshort *c), (c)) \ - X(glIndexub, void, (GLubyte c), (c)) \ - X(glIndexubv, void, (const GLubyte *c), (c)) \ - X(glInitNames, void, (void), ()) \ - X(glInterleavedArrays, void, (GLenum format, GLsizei stride, const GLvoid *pointer), (format,stride,pointer)) \ - X(glIsEnabled, GLboolean, (GLenum cap), (cap)) \ - X(glIsList, GLboolean, (GLuint list), (list)) \ - X(glIsTexture, GLboolean, (GLuint texture), (texture)) \ - X(glLightModelf, void, (GLenum pname, GLfloat param), (pname,param)) \ - X(glLightModelfv, void, (GLenum pname, const GLfloat *params), (pname,params)) \ - X(glLightModeli, void, (GLenum pname, GLint param), (pname,param)) \ - X(glLightModeliv, void, (GLenum pname, const GLint *params), (pname,params)) \ - X(glLightf, void, (GLenum light, GLenum pname, GLfloat param), (light,pname,param)) \ - X(glLightfv, void, (GLenum light, GLenum pname, const GLfloat *params), (light,pname,params)) \ - X(glLighti, void, (GLenum light, GLenum pname, GLint param), (light,pname,param)) \ - X(glLightiv, void, (GLenum light, GLenum pname, const GLint *params), (light,pname,params)) \ - X(glLineStipple, void, (GLint factor, GLushort pattern), (factor,pattern)) \ - X(glLineWidth, void, (GLfloat width), (width)) \ - X(glListBase, void, (GLuint base), (base)) \ - X(glLoadIdentity, void, (void), ()) \ - X(glLoadMatrixd, void, (const GLdouble *m), (m)) \ - X(glLoadMatrixf, void, (const GLfloat *m), (m)) \ - X(glLoadName, void, (GLuint name), (name)) \ - X(glLoadTransposeMatrixd, void, (const GLdouble *m), (m)) \ - X(glLoadTransposeMatrixf, void, (const GLfloat *m), (m)) \ - X(glLogicOp, void, (GLenum opcode), (opcode)) \ - X(glMap1d, void, (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points), (target,u1,u2,stride,order,points)) \ - X(glMap1f, void, (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points), (target,u1,u2,stride,order,points)) \ - X(glMap2d, void, (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points), (target,u1,u2,ustride,uorder,v1,v2,vstride,vorder,points)) \ - X(glMap2f, void, (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points), (target,u1,u2,ustride,uorder,v1,v2,vstride,vorder,points)) \ - X(glMapGrid1d, void, (GLint un, GLdouble u1, GLdouble u2), (un,u1,u2)) \ - X(glMapGrid1f, void, (GLint un, GLfloat u1, GLfloat u2), (un,u1,u2)) \ - X(glMapGrid2d, void, (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2), (un,u1,u2,vn,v1,v2)) \ - X(glMapGrid2f, void, (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2), (un,u1,u2,vn,v1,v2)) \ - X(glMaterialf, void, (GLenum face, GLenum pname, GLfloat param), (face,pname,param)) \ - X(glMaterialfv, void, (GLenum face, GLenum pname, const GLfloat *params), (face,pname,params)) \ - X(glMateriali, void, (GLenum face, GLenum pname, GLint param), (face,pname,param)) \ - X(glMaterialiv, void, (GLenum face, GLenum pname, const GLint *params), (face,pname,params)) \ - X(glMatrixMode, void, (GLenum mode), (mode)) \ - X(glMinmax, void, (GLenum target, GLenum internalformat, GLboolean sink), (target,internalformat,sink)) \ - X(glMultMatrixd, void, (const GLdouble *m), (m)) \ - X(glMultMatrixf, void, (const GLfloat *m), (m)) \ - X(glMultTransposeMatrixd, void, (const GLdouble *m), (m)) \ - X(glMultTransposeMatrixf, void, (const GLfloat *m), (m)) \ - X(glMultiDrawArrays, void, (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount), (mode,first,count,primcount)) \ - X(glMultiDrawElements, void, (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount), (mode,count,type,indices,primcount)) \ - X(glMultiTexCoord1d, void, (GLenum target, GLdouble s), (target,s)) \ - X(glMultiTexCoord1dv, void, (GLenum target, const GLdouble *v), (target,v)) \ - X(glMultiTexCoord1f, void, (GLenum target, GLfloat s), (target,s)) \ - X(glMultiTexCoord1fv, void, (GLenum target, const GLfloat *v), (target,v)) \ - X(glMultiTexCoord1i, void, (GLenum target, GLint s), (target,s)) \ - X(glMultiTexCoord1iv, void, (GLenum target, const GLint *v), (target,v)) \ - X(glMultiTexCoord1s, void, (GLenum target, GLshort s), (target,s)) \ - X(glMultiTexCoord1sv, void, (GLenum target, const GLshort *v), (target,v)) \ - X(glMultiTexCoord2d, void, (GLenum target, GLdouble s, GLdouble t), (target,s,t)) \ - X(glMultiTexCoord2dv, void, (GLenum target, const GLdouble *v), (target,v)) \ - X(glMultiTexCoord2f, void, (GLenum target, GLfloat s, GLfloat t), (target,s,t)) \ - X(glMultiTexCoord2fv, void, (GLenum target, const GLfloat *v), (target,v)) \ - X(glMultiTexCoord2i, void, (GLenum target, GLint s, GLint t), (target,s,t)) \ - X(glMultiTexCoord2iv, void, (GLenum target, const GLint *v), (target,v)) \ - X(glMultiTexCoord2s, void, (GLenum target, GLshort s, GLshort t), (target,s,t)) \ - X(glMultiTexCoord2sv, void, (GLenum target, const GLshort *v), (target,v)) \ - X(glMultiTexCoord3d, void, (GLenum target, GLdouble s, GLdouble t, GLdouble r), (target,s,t,r)) \ - X(glMultiTexCoord3dv, void, (GLenum target, const GLdouble *v), (target,v)) \ - X(glMultiTexCoord3f, void, (GLenum target, GLfloat s, GLfloat t, GLfloat r), (target,s,t,r)) \ - X(glMultiTexCoord3fv, void, (GLenum target, const GLfloat *v), (target,v)) \ - X(glMultiTexCoord3i, void, (GLenum target, GLint s, GLint t, GLint r), (target,s,t,r)) \ - X(glMultiTexCoord3iv, void, (GLenum target, const GLint *v), (target,v)) \ - X(glMultiTexCoord3s, void, (GLenum target, GLshort s, GLshort t, GLshort r), (target,s,t,r)) \ - X(glMultiTexCoord3sv, void, (GLenum target, const GLshort *v), (target,v)) \ - X(glMultiTexCoord4d, void, (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q), (target,s,t,r,q)) \ - X(glMultiTexCoord4dv, void, (GLenum target, const GLdouble *v), (target,v)) \ - X(glMultiTexCoord4f, void, (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q), (target,s,t,r,q)) \ - X(glMultiTexCoord4fv, void, (GLenum target, const GLfloat *v), (target,v)) \ - X(glMultiTexCoord4i, void, (GLenum target, GLint s, GLint t, GLint r, GLint q), (target,s,t,r,q)) \ - X(glMultiTexCoord4iv, void, (GLenum target, const GLint *v), (target,v)) \ - X(glMultiTexCoord4s, void, (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q), (target,s,t,r,q)) \ - X(glMultiTexCoord4sv, void, (GLenum target, const GLshort *v), (target,v)) \ - X(glNewList, void, (GLuint list, GLenum mode), (list,mode)) \ - X(glNormal3b, void, (GLbyte nx, GLbyte ny, GLbyte nz), (nx,ny,nz)) \ - X(glNormal3bv, void, (const GLbyte *v), (v)) \ - X(glNormal3d, void, (GLdouble nx, GLdouble ny, GLdouble nz), (nx,ny,nz)) \ - X(glNormal3dv, void, (const GLdouble *v), (v)) \ - X(glNormal3f, void, (GLfloat nx, GLfloat ny, GLfloat nz), (nx,ny,nz)) \ - X(glNormal3fv, void, (const GLfloat *v), (v)) \ - X(glNormal3i, void, (GLint nx, GLint ny, GLint nz), (nx,ny,nz)) \ - X(glNormal3iv, void, (const GLint *v), (v)) \ - X(glNormal3s, void, (GLshort nx, GLshort ny, GLshort nz), (nx,ny,nz)) \ - X(glNormal3sv, void, (const GLshort *v), (v)) \ - X(glNormalPointer, void, (GLenum type, GLsizei stride, const GLvoid *pointer), (type,stride,pointer)) \ - X(glOrtho, void, (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (left,right,bottom,top,zNear,zFar)) \ - X(glPassThrough, void, (GLfloat token), (token)) \ - X(glPixelMapfv, void, (GLenum map, GLint mapsize, const GLfloat *values), (map,mapsize,values)) \ - X(glPixelMapuiv, void, (GLenum map, GLint mapsize, const GLuint *values), (map,mapsize,values)) \ - X(glPixelMapusv, void, (GLenum map, GLint mapsize, const GLushort *values), (map,mapsize,values)) \ - X(glPixelStoref, void, (GLenum pname, GLfloat param), (pname,param)) \ - X(glPixelStorei, void, (GLenum pname, GLint param), (pname,param)) \ - X(glPixelTransferf, void, (GLenum pname, GLfloat param), (pname,param)) \ - X(glPixelTransferi, void, (GLenum pname, GLint param), (pname,param)) \ - X(glPixelZoom, void, (GLfloat xfactor, GLfloat yfactor), (xfactor,yfactor)) \ - X(glPointParameterf, void, (GLenum pname, GLfloat param), (pname,param)) \ - X(glPointParameterfv, void, (GLenum pname, const GLfloat *params), (pname,params)) \ - X(glPointParameteri, void, (GLenum pname, GLint param), (pname,param)) \ - X(glPointParameteriv, void, (GLenum pname, const GLint *params), (pname,params)) \ - X(glPointSize, void, (GLfloat size), (size)) \ - X(glPolygonMode, void, (GLenum face, GLenum mode), (face,mode)) \ - X(glPolygonOffset, void, (GLfloat factor, GLfloat units), (factor,units)) \ - X(glPolygonStipple, void, (const GLubyte *mask), (mask)) \ - X(glPopAttrib, void, (void), ()) \ - X(glPopClientAttrib, void, (void), ()) \ - X(glPopMatrix, void, (void), ()) \ - X(glPopName, void, (void), ()) \ - X(glPrioritizeTextures, void, (GLsizei n, const GLuint *textures, const GLclampf *priorities), (n,textures,priorities)) \ - X(glPushAttrib, void, (GLbitfield mask), (mask)) \ - X(glPushClientAttrib, void, (GLbitfield mask), (mask)) \ - X(glPushMatrix, void, (void), ()) \ - X(glPushName, void, (GLuint name), (name)) \ - X(glRasterPos2d, void, (GLdouble x, GLdouble y), (x,y)) \ - X(glRasterPos2dv, void, (const GLdouble *v), (v)) \ - X(glRasterPos2f, void, (GLfloat x, GLfloat y), (x,y)) \ - X(glRasterPos2fv, void, (const GLfloat *v), (v)) \ - X(glRasterPos2i, void, (GLint x, GLint y), (x,y)) \ - X(glRasterPos2iv, void, (const GLint *v), (v)) \ - X(glRasterPos2s, void, (GLshort x, GLshort y), (x,y)) \ - X(glRasterPos2sv, void, (const GLshort *v), (v)) \ - X(glRasterPos3d, void, (GLdouble x, GLdouble y, GLdouble z), (x,y,z)) \ - X(glRasterPos3dv, void, (const GLdouble *v), (v)) \ - X(glRasterPos3f, void, (GLfloat x, GLfloat y, GLfloat z), (x,y,z)) \ - X(glRasterPos3fv, void, (const GLfloat *v), (v)) \ - X(glRasterPos3i, void, (GLint x, GLint y, GLint z), (x,y,z)) \ - X(glRasterPos3iv, void, (const GLint *v), (v)) \ - X(glRasterPos3s, void, (GLshort x, GLshort y, GLshort z), (x,y,z)) \ - X(glRasterPos3sv, void, (const GLshort *v), (v)) \ - X(glRasterPos4d, void, (GLdouble x, GLdouble y, GLdouble z, GLdouble w), (x,y,z,w)) \ - X(glRasterPos4dv, void, (const GLdouble *v), (v)) \ - X(glRasterPos4f, void, (GLfloat x, GLfloat y, GLfloat z, GLfloat w), (x,y,z,w)) \ - X(glRasterPos4fv, void, (const GLfloat *v), (v)) \ - X(glRasterPos4i, void, (GLint x, GLint y, GLint z, GLint w), (x,y,z,w)) \ - X(glRasterPos4iv, void, (const GLint *v), (v)) \ - X(glRasterPos4s, void, (GLshort x, GLshort y, GLshort z, GLshort w), (x,y,z,w)) \ - X(glRasterPos4sv, void, (const GLshort *v), (v)) \ - X(glReadBuffer, void, (GLenum mode), (mode)) \ - X(glReadPixels, void, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels), (x,y,width,height,format,type,pixels)) \ - X(glRectd, void, (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2), (x1,y1,x2,y2)) \ - X(glRectdv, void, (const GLdouble *v1, const GLdouble *v2), (v1,v2)) \ - X(glRectf, void, (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2), (x1,y1,x2,y2)) \ - X(glRectfv, void, (const GLfloat *v1, const GLfloat *v2), (v1,v2)) \ - X(glRecti, void, (GLint x1, GLint y1, GLint x2, GLint y2), (x1,y1,x2,y2)) \ - X(glRectiv, void, (const GLint *v1, const GLint *v2), (v1,v2)) \ - X(glRects, void, (GLshort x1, GLshort y1, GLshort x2, GLshort y2), (x1,y1,x2,y2)) \ - X(glRectsv, void, (const GLshort *v1, const GLshort *v2), (v1,v2)) \ - X(glReleaseFlushHold, GLenum, (GLuint id), (id)) \ - X(glRenderMode, GLint, (GLenum mode), (mode)) \ - X(glResetHistogram, void, (GLenum target), (target)) \ - X(glResetMinmax, void, (GLenum target), (target)) \ - X(glRotated, void, (GLdouble angle, GLdouble x, GLdouble y, GLdouble z), (angle,x,y,z)) \ - X(glRotatef, void, (GLfloat angle, GLfloat x, GLfloat y, GLfloat z), (angle,x,y,z)) \ - X(glSampleCoverage, void, (GLclampf value, GLboolean invert), (value,invert)) \ - X(glScaled, void, (GLdouble x, GLdouble y, GLdouble z), (x,y,z)) \ - X(glScalef, void, (GLfloat x, GLfloat y, GLfloat z), (x,y,z)) \ - X(glScissor, void, (GLint x, GLint y, GLsizei width, GLsizei height), (x,y,width,height)) \ - X(glSecondaryColor3b, void, (GLbyte red, GLbyte green, GLbyte blue), (red,green,blue)) \ - X(glSecondaryColor3bv, void, (const GLbyte *v), (v)) \ - X(glSecondaryColor3d, void, (GLdouble red, GLdouble green, GLdouble blue), (red,green,blue)) \ - X(glSecondaryColor3dv, void, (const GLdouble *v), (v)) \ - X(glSecondaryColor3f, void, (GLfloat red, GLfloat green, GLfloat blue), (red,green,blue)) \ - X(glSecondaryColor3fv, void, (const GLfloat *v), (v)) \ - X(glSecondaryColor3i, void, (GLint red, GLint green, GLint blue), (red,green,blue)) \ - X(glSecondaryColor3iv, void, (const GLint *v), (v)) \ - X(glSecondaryColor3s, void, (GLshort red, GLshort green, GLshort blue), (red,green,blue)) \ - X(glSecondaryColor3sv, void, (const GLshort *v), (v)) \ - X(glSecondaryColor3ub, void, (GLubyte red, GLubyte green, GLubyte blue), (red,green,blue)) \ - X(glSecondaryColor3ubv, void, (const GLubyte *v), (v)) \ - X(glSecondaryColor3ui, void, (GLuint red, GLuint green, GLuint blue), (red,green,blue)) \ - X(glSecondaryColor3uiv, void, (const GLuint *v), (v)) \ - X(glSecondaryColor3us, void, (GLushort red, GLushort green, GLushort blue), (red,green,blue)) \ - X(glSecondaryColor3usv, void, (const GLushort *v), (v)) \ - X(glSecondaryColorPointer, void, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size,type,stride,pointer)) \ - X(glSelectBuffer, void, (GLsizei size, GLuint *buffer), (size,buffer)) \ - X(glSeparableFilter2D, void, (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column), (target,internalformat,width,height,format,type,row,column)) \ - X(glShadeModel, void, (GLenum mode), (mode)) \ - X(glStencilFunc, void, (GLenum func, GLint ref, GLuint mask), (func,ref,mask)) \ - X(glStencilMask, void, (GLuint mask), (mask)) \ - X(glStencilOp, void, (GLenum fail, GLenum zfail, GLenum zpass), (fail,zfail,zpass)) \ - X(glTexCoord1d, void, (GLdouble s), (s)) \ - X(glTexCoord1dv, void, (const GLdouble *v), (v)) \ - X(glTexCoord1f, void, (GLfloat s), (s)) \ - X(glTexCoord1fv, void, (const GLfloat *v), (v)) \ - X(glTexCoord1i, void, (GLint s), (s)) \ - X(glTexCoord1iv, void, (const GLint *v), (v)) \ - X(glTexCoord1s, void, (GLshort s), (s)) \ - X(glTexCoord1sv, void, (const GLshort *v), (v)) \ - X(glTexCoord2d, void, (GLdouble s, GLdouble t), (s,t)) \ - X(glTexCoord2dv, void, (const GLdouble *v), (v)) \ - X(glTexCoord2f, void, (GLfloat s, GLfloat t), (s,t)) \ - X(glTexCoord2fv, void, (const GLfloat *v), (v)) \ - X(glTexCoord2i, void, (GLint s, GLint t), (s,t)) \ - X(glTexCoord2iv, void, (const GLint *v), (v)) \ - X(glTexCoord2s, void, (GLshort s, GLshort t), (s,t)) \ - X(glTexCoord2sv, void, (const GLshort *v), (v)) \ - X(glTexCoord3d, void, (GLdouble s, GLdouble t, GLdouble r), (s,t,r)) \ - X(glTexCoord3dv, void, (const GLdouble *v), (v)) \ - X(glTexCoord3f, void, (GLfloat s, GLfloat t, GLfloat r), (s,t,r)) \ - X(glTexCoord3fv, void, (const GLfloat *v), (v)) \ - X(glTexCoord3i, void, (GLint s, GLint t, GLint r), (s,t,r)) \ - X(glTexCoord3iv, void, (const GLint *v), (v)) \ - X(glTexCoord3s, void, (GLshort s, GLshort t, GLshort r), (s,t,r)) \ - X(glTexCoord3sv, void, (const GLshort *v), (v)) \ - X(glTexCoord4d, void, (GLdouble s, GLdouble t, GLdouble r, GLdouble q), (s,t,r,q)) \ - X(glTexCoord4dv, void, (const GLdouble *v), (v)) \ - X(glTexCoord4f, void, (GLfloat s, GLfloat t, GLfloat r, GLfloat q), (s,t,r,q)) \ - X(glTexCoord4fv, void, (const GLfloat *v), (v)) \ - X(glTexCoord4i, void, (GLint s, GLint t, GLint r, GLint q), (s,t,r,q)) \ - X(glTexCoord4iv, void, (const GLint *v), (v)) \ - X(glTexCoord4s, void, (GLshort s, GLshort t, GLshort r, GLshort q), (s,t,r,q)) \ - X(glTexCoord4sv, void, (const GLshort *v), (v)) \ - X(glTexCoordPointer, void, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size,type,stride,pointer)) \ - X(glTexEnvf, void, (GLenum target, GLenum pname, GLfloat param), (target,pname,param)) \ - X(glTexEnvfv, void, (GLenum target, GLenum pname, const GLfloat *params), (target,pname,params)) \ - X(glTexEnvi, void, (GLenum target, GLenum pname, GLint param), (target,pname,param)) \ - X(glTexEnviv, void, (GLenum target, GLenum pname, const GLint *params), (target,pname,params)) \ - X(glTexGend, void, (GLenum coord, GLenum pname, GLdouble param), (coord,pname,param)) \ - X(glTexGendv, void, (GLenum coord, GLenum pname, const GLdouble *params), (coord,pname,params)) \ - X(glTexGenf, void, (GLenum coord, GLenum pname, GLfloat param), (coord,pname,param)) \ - X(glTexGenfv, void, (GLenum coord, GLenum pname, const GLfloat *params), (coord,pname,params)) \ - X(glTexGeni, void, (GLenum coord, GLenum pname, GLint param), (coord,pname,param)) \ - X(glTexGeniv, void, (GLenum coord, GLenum pname, const GLint *params), (coord,pname,params)) \ - X(glTexImage1D, void, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels), (target,level,internalformat,width,border,format,type,pixels)) \ - X(glTexImage2D, void, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels), (target,level,internalformat,width,height,border,format,type,pixels)) \ - X(glTexImage3D, void, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels), (target,level,internalformat,width,height,depth,border,format,type,pixels)) \ - X(glTexParameterf, void, (GLenum target, GLenum pname, GLfloat param), (target,pname,param)) \ - X(glTexParameterfv, void, (GLenum target, GLenum pname, const GLfloat *params), (target,pname,params)) \ - X(glTexParameteri, void, (GLenum target, GLenum pname, GLint param), (target,pname,param)) \ - X(glTexParameteriv, void, (GLenum target, GLenum pname, const GLint *params), (target,pname,params)) \ - X(glTexSubImage1D, void, (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels), (target,level,xoffset,width,format,type,pixels)) \ - X(glTexSubImage2D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels), (target,level,xoffset,yoffset,width,height,format,type,pixels)) \ - X(glTexSubImage3D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels), (target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)) \ - X(glTranslated, void, (GLdouble x, GLdouble y, GLdouble z), (x,y,z)) \ - X(glTranslatef, void, (GLfloat x, GLfloat y, GLfloat z), (x,y,z)) \ - X(glValidBackBufferHintAutodesk, GLboolean, (GLint x, GLint y, GLsizei width, GLsizei height), (x,y,width,height)) \ - X(glVertex2d, void, (GLdouble x, GLdouble y), (x,y)) \ - X(glVertex2dv, void, (const GLdouble *v), (v)) \ - X(glVertex2f, void, (GLfloat x, GLfloat y), (x,y)) \ - X(glVertex2fv, void, (const GLfloat *v), (v)) \ - X(glVertex2i, void, (GLint x, GLint y), (x,y)) \ - X(glVertex2iv, void, (const GLint *v), (v)) \ - X(glVertex2s, void, (GLshort x, GLshort y), (x,y)) \ - X(glVertex2sv, void, (const GLshort *v), (v)) \ - X(glVertex3d, void, (GLdouble x, GLdouble y, GLdouble z), (x,y,z)) \ - X(glVertex3dv, void, (const GLdouble *v), (v)) \ - X(glVertex3f, void, (GLfloat x, GLfloat y, GLfloat z), (x,y,z)) \ - X(glVertex3fv, void, (const GLfloat *v), (v)) \ - X(glVertex3i, void, (GLint x, GLint y, GLint z), (x,y,z)) \ - X(glVertex3iv, void, (const GLint *v), (v)) \ - X(glVertex3s, void, (GLshort x, GLshort y, GLshort z), (x,y,z)) \ - X(glVertex3sv, void, (const GLshort *v), (v)) \ - X(glVertex4d, void, (GLdouble x, GLdouble y, GLdouble z, GLdouble w), (x,y,z,w)) \ - X(glVertex4dv, void, (const GLdouble *v), (v)) \ - X(glVertex4f, void, (GLfloat x, GLfloat y, GLfloat z, GLfloat w), (x,y,z,w)) \ - X(glVertex4fv, void, (const GLfloat *v), (v)) \ - X(glVertex4i, void, (GLint x, GLint y, GLint z, GLint w), (x,y,z,w)) \ - X(glVertex4iv, void, (const GLint *v), (v)) \ - X(glVertex4s, void, (GLshort x, GLshort y, GLshort z, GLshort w), (x,y,z,w)) \ - X(glVertex4sv, void, (const GLshort *v), (v)) \ - X(glVertexPointer, void, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size,type,stride,pointer)) \ - X(glViewport, void, (GLint x, GLint y, GLsizei width, GLsizei height), (x,y,width,height)) \ - X(glWindowBackBufferHintAutodesk, void, (void), ()) \ - X(glWindowPos2d, void, (GLdouble x, GLdouble y), (x,y)) \ - X(glWindowPos2dv, void, (const GLdouble *p), (p)) \ - X(glWindowPos2f, void, (GLfloat x, GLfloat y), (x,y)) \ - X(glWindowPos2fv, void, (const GLfloat *p), (p)) \ - X(glWindowPos2i, void, (GLint x, GLint y), (x,y)) \ - X(glWindowPos2iv, void, (const GLint *p), (p)) \ - X(glWindowPos2s, void, (GLshort x, GLshort y), (x,y)) \ - X(glWindowPos2sv, void, (const GLshort *p), (p)) \ - X(glWindowPos3d, void, (GLdouble x, GLdouble y, GLdouble z), (x,y,z)) \ - X(glWindowPos3dv, void, (const GLdouble *p), (p)) \ - X(glWindowPos3f, void, (GLfloat x, GLfloat y, GLfloat z), (x,y,z)) \ - X(glWindowPos3fv, void, (const GLfloat *p), (p)) \ - X(glWindowPos3i, void, (GLint x, GLint y, GLint z), (x,y,z)) \ - X(glWindowPos3iv, void, (const GLint *p), (p)) \ - X(glWindowPos3s, void, (GLshort x, GLshort y, GLshort z), (x,y,z)) \ - X(glWindowPos3sv, void, (const GLshort *p), (p)) + X(glAccum, void, (GLenum op, GLfloat value), (op,value), 213, -1, 8) \ + X(glAlphaFunc, void, (GLenum func, GLclampf ref), (func,ref), 240, -1, 8) \ + X(glAreTexturesResident, GLboolean, (GLsizei n, const GLuint *textures, GLboolean *residences), (n,textures,residences), 322, -1, 12) \ + X(glArrayElement, void, (GLint i), (i), 306, 144, 4) \ + X(glBegin, void, (GLenum mode), (mode), 7, 2, 4) \ + X(glBindTexture, void, (GLenum target, GLuint texture), (target,texture), 307, 145, 8) \ + X(glBitmap, void, (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap), (width,height,xorig,yorig,xmove,ymove,bitmap), 8, -1, 28) \ + X(glBlendFunc, void, (GLenum sfactor, GLenum dfactor), (sfactor,dfactor), 241, -1, 8) \ + X(glCallList, void, (GLuint list), (list), 2, 0, 4) \ + X(glCallLists, void, (GLsizei n, GLenum type, const GLvoid *lists), (n,type,lists), 3, 1, 12) \ + X(glClear, void, (GLbitfield mask), (mask), 203, -1, 4) \ + X(glClearAccum, void, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red,green,blue,alpha), 204, -1, 16) \ + X(glClearColor, void, (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha), (red,green,blue,alpha), 206, -1, 16) \ + X(glClearDepth, void, (GLclampd depth), (depth), 208, -1, 8) \ + X(glClearIndex, void, (GLfloat c), (c), 205, -1, 4) \ + X(glClearStencil, void, (GLint s), (s), 207, -1, 4) \ + X(glClipPlane, void, (GLenum plane, const GLdouble *equation), (plane,equation), 150, -1, 8) \ + X(glColor3b, void, (GLbyte red, GLbyte green, GLbyte blue), (red,green,blue), 9, 3, 12) \ + X(glColor3bv, void, (const GLbyte *v), (v), 10, 4, 4) \ + X(glColor3d, void, (GLdouble red, GLdouble green, GLdouble blue), (red,green,blue), 11, 5, 24) \ + X(glColor3dv, void, (const GLdouble *v), (v), 12, 6, 4) \ + X(glColor3f, void, (GLfloat red, GLfloat green, GLfloat blue), (red,green,blue), 13, 7, 12) \ + X(glColor3fv, void, (const GLfloat *v), (v), 14, 8, 4) \ + X(glColor3i, void, (GLint red, GLint green, GLint blue), (red,green,blue), 15, 9, 12) \ + X(glColor3iv, void, (const GLint *v), (v), 16, 10, 4) \ + X(glColor3s, void, (GLshort red, GLshort green, GLshort blue), (red,green,blue), 17, 11, 12) \ + X(glColor3sv, void, (const GLshort *v), (v), 18, 12, 4) \ + X(glColor3ub, void, (GLubyte red, GLubyte green, GLubyte blue), (red,green,blue), 19, 13, 12) \ + X(glColor3ubv, void, (const GLubyte *v), (v), 20, 14, 4) \ + X(glColor3ui, void, (GLuint red, GLuint green, GLuint blue), (red,green,blue), 21, 15, 12) \ + X(glColor3uiv, void, (const GLuint *v), (v), 22, 16, 4) \ + X(glColor3us, void, (GLushort red, GLushort green, GLushort blue), (red,green,blue), 23, 17, 12) \ + X(glColor3usv, void, (const GLushort *v), (v), 24, 18, 4) \ + X(glColor4b, void, (GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha), (red,green,blue,alpha), 25, 19, 16) \ + X(glColor4bv, void, (const GLbyte *v), (v), 26, 20, 4) \ + X(glColor4d, void, (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha), (red,green,blue,alpha), 27, 21, 32) \ + X(glColor4dv, void, (const GLdouble *v), (v), 28, 22, 4) \ + X(glColor4f, void, (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha), (red,green,blue,alpha), 29, 23, 16) \ + X(glColor4fv, void, (const GLfloat *v), (v), 30, 24, 4) \ + X(glColor4i, void, (GLint red, GLint green, GLint blue, GLint alpha), (red,green,blue,alpha), 31, 25, 16) \ + X(glColor4iv, void, (const GLint *v), (v), 32, 26, 4) \ + X(glColor4s, void, (GLshort red, GLshort green, GLshort blue, GLshort alpha), (red,green,blue,alpha), 33, 27, 16) \ + X(glColor4sv, void, (const GLshort *v), (v), 34, 28, 4) \ + X(glColor4ub, void, (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha), (red,green,blue,alpha), 35, 29, 16) \ + X(glColor4ubv, void, (const GLubyte *v), (v), 36, 30, 4) \ + X(glColor4ui, void, (GLuint red, GLuint green, GLuint blue, GLuint alpha), (red,green,blue,alpha), 37, 31, 16) \ + X(glColor4uiv, void, (const GLuint *v), (v), 38, 32, 4) \ + X(glColor4us, void, (GLushort red, GLushort green, GLushort blue, GLushort alpha), (red,green,blue,alpha), 39, 33, 16) \ + X(glColor4usv, void, (const GLushort *v), (v), 40, 34, 4) \ + X(glColorMask, void, (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha), (red,green,blue,alpha), 210, -1, 16) \ + X(glColorMaterial, void, (GLenum face, GLenum mode), (face,mode), 151, -1, 8) \ + X(glColorPointer, void, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size,type,stride,pointer), 308, 146, 16) \ + X(glCopyPixels, void, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type), (x,y,width,height,type), 255, -1, 20) \ + X(glCopyTexImage1D, void, (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border), (target,level,internalformat,x,y,width,border), 323, -1, 28) \ + X(glCopyTexImage2D, void, (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border), (target,level,internalformat,x,y,width,height,border), 324, -1, 32) \ + X(glCopyTexSubImage1D, void, (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width), (target,level,xoffset,x,y,width), 325, -1, 24) \ + X(glCopyTexSubImage2D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height), (target,level,xoffset,yoffset,x,y,width,height), 326, -1, 32) \ + X(glCullFace, void, (GLenum mode), (mode), 152, -1, 4) \ + X(glDeleteLists, void, (GLuint list, GLsizei range), (list,range), 4, -1, 8) \ + X(glDeleteTextures, void, (GLsizei n, const GLuint *textures), (n,textures), 327, -1, 8) \ + X(glDepthFunc, void, (GLenum func), (func), 245, -1, 4) \ + X(glDepthMask, void, (GLboolean flag), (flag), 211, -1, 4) \ + X(glDepthRange, void, (GLclampd zNear, GLclampd zFar), (zNear,zFar), 288, -1, 16) \ + X(glDisable, void, (GLenum cap), (cap), 214, 116, 4) \ + X(glDisableClientState, void, (GLenum array), (array), 309, 147, 4) \ + X(glDrawArrays, void, (GLenum mode, GLint first, GLsizei count), (mode,first,count), 310, 148, 12) \ + X(glDrawBuffer, void, (GLenum mode), (mode), 202, -1, 4) \ + X(glDrawElements, void, (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices), (mode,count,type,indices), 311, 149, 16) \ + X(glDrawPixels, void, (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels), (width,height,format,type,pixels), 257, -1, 20) \ + X(glEdgeFlag, void, (GLboolean flag), (flag), 41, 35, 4) \ + X(glEdgeFlagPointer, void, (GLsizei stride, const GLboolean *pointer), (stride,pointer), 312, 150, 8) \ + X(glEdgeFlagv, void, (const GLboolean *flag), (flag), 42, 36, 4) \ + X(glEnable, void, (GLenum cap), (cap), 215, 117, 4) \ + X(glEnableClientState, void, (GLenum array), (array), 313, 151, 4) \ + X(glEnd, void, (void), (), 43, 37, 0) \ + X(glEndList, void, (void), (), 1, -1, 0) \ + X(glEvalCoord1d, void, (GLdouble u), (u), 228, 120, 8) \ + X(glEvalCoord1dv, void, (const GLdouble *u), (u), 229, 121, 4) \ + X(glEvalCoord1f, void, (GLfloat u), (u), 230, 122, 4) \ + X(glEvalCoord1fv, void, (const GLfloat *u), (u), 231, 123, 4) \ + X(glEvalCoord2d, void, (GLdouble u, GLdouble v), (u,v), 232, 124, 16) \ + X(glEvalCoord2dv, void, (const GLdouble *u), (u), 233, 125, 4) \ + X(glEvalCoord2f, void, (GLfloat u, GLfloat v), (u,v), 234, 126, 8) \ + X(glEvalCoord2fv, void, (const GLfloat *u), (u), 235, 127, 4) \ + X(glEvalMesh1, void, (GLenum mode, GLint i1, GLint i2), (mode,i1,i2), 236, -1, 12) \ + X(glEvalMesh2, void, (GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2), (mode,i1,i2,j1,j2), 238, -1, 20) \ + X(glEvalPoint1, void, (GLint i), (i), 237, 128, 4) \ + X(glEvalPoint2, void, (GLint i, GLint j), (i,j), 239, 129, 8) \ + X(glFeedbackBuffer, void, (GLsizei size, GLenum type, GLfloat *buffer), (size,type,buffer), 194, -1, 12) \ + X(glFinish, void, (void), (), 216, -1, 0) \ + X(glFlush, void, (void), (), 217, -1, 0) \ + X(glFogf, void, (GLenum pname, GLfloat param), (pname,param), 153, -1, 8) \ + X(glFogfv, void, (GLenum pname, const GLfloat *params), (pname,params), 154, -1, 8) \ + X(glFogi, void, (GLenum pname, GLint param), (pname,param), 155, -1, 8) \ + X(glFogiv, void, (GLenum pname, const GLint *params), (pname,params), 156, -1, 8) \ + X(glFrontFace, void, (GLenum mode), (mode), 157, -1, 4) \ + X(glFrustum, void, (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (left,right,bottom,top,zNear,zFar), 289, -1, 48) \ + X(glGenLists, GLuint, (GLsizei range), (range), 5, -1, 4) \ + X(glGenTextures, void, (GLsizei n, GLuint *textures), (n,textures), 328, -1, 8) \ + X(glGetBooleanv, void, (GLenum pname, GLboolean *params), (pname,params), 258, -1, 8) \ + X(glGetClipPlane, void, (GLenum plane, GLdouble *equation), (plane,equation), 259, -1, 8) \ + X(glGetDoublev, void, (GLenum pname, GLdouble *params), (pname,params), 260, -1, 8) \ + X(glGetError, GLenum, (void), (), 261, -1, 0) \ + X(glGetFloatv, void, (GLenum pname, GLfloat *params), (pname,params), 262, -1, 8) \ + X(glGetIntegerv, void, (GLenum pname, GLint *params), (pname,params), 263, -1, 8) \ + X(glGetLightfv, void, (GLenum light, GLenum pname, GLfloat *params), (light,pname,params), 264, -1, 12) \ + X(glGetLightiv, void, (GLenum light, GLenum pname, GLint *params), (light,pname,params), 265, -1, 12) \ + X(glGetMapdv, void, (GLenum target, GLenum query, GLdouble *v), (target,query,v), 266, -1, 12) \ + X(glGetMapfv, void, (GLenum target, GLenum query, GLfloat *v), (target,query,v), 267, -1, 12) \ + X(glGetMapiv, void, (GLenum target, GLenum query, GLint *v), (target,query,v), 268, -1, 12) \ + X(glGetMaterialfv, void, (GLenum face, GLenum pname, GLfloat *params), (face,pname,params), 269, -1, 12) \ + X(glGetMaterialiv, void, (GLenum face, GLenum pname, GLint *params), (face,pname,params), 270, -1, 12) \ + X(glGetPixelMapfv, void, (GLenum map, GLfloat *values), (map,values), 271, -1, 8) \ + X(glGetPixelMapuiv, void, (GLenum map, GLuint *values), (map,values), 272, -1, 8) \ + X(glGetPixelMapusv, void, (GLenum map, GLushort *values), (map,values), 273, -1, 8) \ + X(glGetPointerv, void, (GLenum pname, GLvoid* *params), (pname,params), 329, 160, 8) \ + X(glGetPolygonStipple, void, (GLubyte *mask), (mask), 274, -1, 4) \ + X(glGetString, const GLubyte *, (GLenum name), (name), 275, -1, 4) \ + X(glGetTexEnvfv, void, (GLenum target, GLenum pname, GLfloat *params), (target,pname,params), 276, -1, 12) \ + X(glGetTexEnviv, void, (GLenum target, GLenum pname, GLint *params), (target,pname,params), 277, -1, 12) \ + X(glGetTexGendv, void, (GLenum coord, GLenum pname, GLdouble *params), (coord,pname,params), 278, -1, 12) \ + X(glGetTexGenfv, void, (GLenum coord, GLenum pname, GLfloat *params), (coord,pname,params), 279, -1, 12) \ + X(glGetTexGeniv, void, (GLenum coord, GLenum pname, GLint *params), (coord,pname,params), 280, -1, 12) \ + X(glGetTexImage, void, (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels), (target,level,format,type,pixels), 281, -1, 20) \ + X(glGetTexLevelParameterfv, void, (GLenum target, GLint level, GLenum pname, GLfloat *params), (target,level,pname,params), 284, -1, 16) \ + X(glGetTexLevelParameteriv, void, (GLenum target, GLint level, GLenum pname, GLint *params), (target,level,pname,params), 285, -1, 16) \ + X(glGetTexParameterfv, void, (GLenum target, GLenum pname, GLfloat *params), (target,pname,params), 282, -1, 12) \ + X(glGetTexParameteriv, void, (GLenum target, GLenum pname, GLint *params), (target,pname,params), 283, -1, 12) \ + X(glHint, void, (GLenum target, GLenum mode), (target,mode), 158, -1, 8) \ + X(glIndexMask, void, (GLuint mask), (mask), 212, -1, 4) \ + X(glIndexPointer, void, (GLenum type, GLsizei stride, const GLvoid *pointer), (type,stride,pointer), 314, 152, 12) \ + X(glIndexd, void, (GLdouble c), (c), 44, 38, 8) \ + X(glIndexdv, void, (const GLdouble *c), (c), 45, 39, 4) \ + X(glIndexf, void, (GLfloat c), (c), 46, 40, 4) \ + X(glIndexfv, void, (const GLfloat *c), (c), 47, 41, 4) \ + X(glIndexi, void, (GLint c), (c), 48, 42, 4) \ + X(glIndexiv, void, (const GLint *c), (c), 49, 43, 4) \ + X(glIndexs, void, (GLshort c), (c), 50, 44, 4) \ + X(glIndexsv, void, (const GLshort *c), (c), 51, 45, 4) \ + X(glIndexub, void, (GLubyte c), (c), 315, 153, 4) \ + X(glIndexubv, void, (const GLubyte *c), (c), 316, 154, 4) \ + X(glInitNames, void, (void), (), 197, -1, 0) \ + X(glInterleavedArrays, void, (GLenum format, GLsizei stride, const GLvoid *pointer), (format,stride,pointer), 317, 155, 12) \ + X(glIsEnabled, GLboolean, (GLenum cap), (cap), 286, -1, 4) \ + X(glIsList, GLboolean, (GLuint list), (list), 287, -1, 4) \ + X(glIsTexture, GLboolean, (GLuint texture), (texture), 330, -1, 4) \ + X(glLightModelf, void, (GLenum pname, GLfloat param), (pname,param), 163, -1, 8) \ + X(glLightModelfv, void, (GLenum pname, const GLfloat *params), (pname,params), 164, -1, 8) \ + X(glLightModeli, void, (GLenum pname, GLint param), (pname,param), 165, -1, 8) \ + X(glLightModeliv, void, (GLenum pname, const GLint *params), (pname,params), 166, -1, 8) \ + X(glLightf, void, (GLenum light, GLenum pname, GLfloat param), (light,pname,param), 159, -1, 12) \ + X(glLightfv, void, (GLenum light, GLenum pname, const GLfloat *params), (light,pname,params), 160, -1, 12) \ + X(glLighti, void, (GLenum light, GLenum pname, GLint param), (light,pname,param), 161, -1, 12) \ + X(glLightiv, void, (GLenum light, GLenum pname, const GLint *params), (light,pname,params), 162, -1, 12) \ + X(glLineStipple, void, (GLint factor, GLushort pattern), (factor,pattern), 167, -1, 8) \ + X(glLineWidth, void, (GLfloat width), (width), 168, -1, 4) \ + X(glListBase, void, (GLuint base), (base), 6, -1, 4) \ + X(glLoadIdentity, void, (void), (), 290, 130, 0) \ + X(glLoadMatrixd, void, (const GLdouble *m), (m), 292, 132, 4) \ + X(glLoadMatrixf, void, (const GLfloat *m), (m), 291, 131, 4) \ + X(glLoadName, void, (GLuint name), (name), 198, -1, 4) \ + X(glLogicOp, void, (GLenum opcode), (opcode), 242, -1, 4) \ + X(glMap1d, void, (GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points), (target,u1,u2,stride,order,points), 220, -1, 32) \ + X(glMap1f, void, (GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points), (target,u1,u2,stride,order,points), 221, -1, 24) \ + X(glMap2d, void, (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points), (target,u1,u2,ustride,uorder,v1,v2,vstride,vorder,points), 222, -1, 56) \ + X(glMap2f, void, (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points), (target,u1,u2,ustride,uorder,v1,v2,vstride,vorder,points), 223, -1, 40) \ + X(glMapGrid1d, void, (GLint un, GLdouble u1, GLdouble u2), (un,u1,u2), 224, -1, 20) \ + X(glMapGrid1f, void, (GLint un, GLfloat u1, GLfloat u2), (un,u1,u2), 225, -1, 12) \ + X(glMapGrid2d, void, (GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2), (un,u1,u2,vn,v1,v2), 226, -1, 40) \ + X(glMapGrid2f, void, (GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2), (un,u1,u2,vn,v1,v2), 227, -1, 24) \ + X(glMaterialf, void, (GLenum face, GLenum pname, GLfloat param), (face,pname,param), 169, 112, 12) \ + X(glMaterialfv, void, (GLenum face, GLenum pname, const GLfloat *params), (face,pname,params), 170, 113, 12) \ + X(glMateriali, void, (GLenum face, GLenum pname, GLint param), (face,pname,param), 171, 114, 12) \ + X(glMaterialiv, void, (GLenum face, GLenum pname, const GLint *params), (face,pname,params), 172, 115, 12) \ + X(glMatrixMode, void, (GLenum mode), (mode), 293, 133, 4) \ + X(glMultMatrixd, void, (const GLdouble *m), (m), 295, 135, 4) \ + X(glMultMatrixf, void, (const GLfloat *m), (m), 294, 134, 4) \ + X(glNewList, void, (GLuint list, GLenum mode), (list,mode), 0, -1, 8) \ + X(glNormal3b, void, (GLbyte nx, GLbyte ny, GLbyte nz), (nx,ny,nz), 52, 46, 12) \ + X(glNormal3bv, void, (const GLbyte *v), (v), 53, 47, 4) \ + X(glNormal3d, void, (GLdouble nx, GLdouble ny, GLdouble nz), (nx,ny,nz), 54, 48, 24) \ + X(glNormal3dv, void, (const GLdouble *v), (v), 55, 49, 4) \ + X(glNormal3f, void, (GLfloat nx, GLfloat ny, GLfloat nz), (nx,ny,nz), 56, 50, 12) \ + X(glNormal3fv, void, (const GLfloat *v), (v), 57, 51, 4) \ + X(glNormal3i, void, (GLint nx, GLint ny, GLint nz), (nx,ny,nz), 58, 52, 12) \ + X(glNormal3iv, void, (const GLint *v), (v), 59, 53, 4) \ + X(glNormal3s, void, (GLshort nx, GLshort ny, GLshort nz), (nx,ny,nz), 60, 54, 12) \ + X(glNormal3sv, void, (const GLshort *v), (v), 61, 55, 4) \ + X(glNormalPointer, void, (GLenum type, GLsizei stride, const GLvoid *pointer), (type,stride,pointer), 318, 156, 12) \ + X(glOrtho, void, (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar), (left,right,bottom,top,zNear,zFar), 296, -1, 48) \ + X(glPassThrough, void, (GLfloat token), (token), 199, -1, 4) \ + X(glPixelMapfv, void, (GLenum map, GLint mapsize, const GLfloat *values), (map,mapsize,values), 251, -1, 12) \ + X(glPixelMapuiv, void, (GLenum map, GLint mapsize, const GLuint *values), (map,mapsize,values), 252, -1, 12) \ + X(glPixelMapusv, void, (GLenum map, GLint mapsize, const GLushort *values), (map,mapsize,values), 253, -1, 12) \ + X(glPixelStoref, void, (GLenum pname, GLfloat param), (pname,param), 249, -1, 8) \ + X(glPixelStorei, void, (GLenum pname, GLint param), (pname,param), 250, -1, 8) \ + X(glPixelTransferf, void, (GLenum pname, GLfloat param), (pname,param), 247, -1, 8) \ + X(glPixelTransferi, void, (GLenum pname, GLint param), (pname,param), 248, -1, 8) \ + X(glPixelZoom, void, (GLfloat xfactor, GLfloat yfactor), (xfactor,yfactor), 246, -1, 8) \ + X(glPointSize, void, (GLfloat size), (size), 173, -1, 4) \ + X(glPolygonMode, void, (GLenum face, GLenum mode), (face,mode), 174, -1, 8) \ + X(glPolygonOffset, void, (GLfloat factor, GLfloat units), (factor,units), 319, 157, 8) \ + X(glPolygonStipple, void, (const GLubyte *mask), (mask), 175, -1, 4) \ + X(glPopAttrib, void, (void), (), 218, 118, 0) \ + X(glPopClientAttrib, void, (void), (), 334, 161, 0) \ + X(glPopMatrix, void, (void), (), 297, 136, 0) \ + X(glPopName, void, (void), (), 200, -1, 0) \ + X(glPrioritizeTextures, void, (GLsizei n, const GLuint *textures, const GLclampf *priorities), (n,textures,priorities), 331, -1, 12) \ + X(glPushAttrib, void, (GLbitfield mask), (mask), 219, 119, 4) \ + X(glPushClientAttrib, void, (GLbitfield mask), (mask), 335, 162, 4) \ + X(glPushMatrix, void, (void), (), 298, 137, 0) \ + X(glPushName, void, (GLuint name), (name), 201, -1, 4) \ + X(glRasterPos2d, void, (GLdouble x, GLdouble y), (x,y), 62, -1, 16) \ + X(glRasterPos2dv, void, (const GLdouble *v), (v), 63, -1, 4) \ + X(glRasterPos2f, void, (GLfloat x, GLfloat y), (x,y), 64, -1, 8) \ + X(glRasterPos2fv, void, (const GLfloat *v), (v), 65, -1, 4) \ + X(glRasterPos2i, void, (GLint x, GLint y), (x,y), 66, -1, 8) \ + X(glRasterPos2iv, void, (const GLint *v), (v), 67, -1, 4) \ + X(glRasterPos2s, void, (GLshort x, GLshort y), (x,y), 68, -1, 8) \ + X(glRasterPos2sv, void, (const GLshort *v), (v), 69, -1, 4) \ + X(glRasterPos3d, void, (GLdouble x, GLdouble y, GLdouble z), (x,y,z), 70, -1, 24) \ + X(glRasterPos3dv, void, (const GLdouble *v), (v), 71, -1, 4) \ + X(glRasterPos3f, void, (GLfloat x, GLfloat y, GLfloat z), (x,y,z), 72, -1, 12) \ + X(glRasterPos3fv, void, (const GLfloat *v), (v), 73, -1, 4) \ + X(glRasterPos3i, void, (GLint x, GLint y, GLint z), (x,y,z), 74, -1, 12) \ + X(glRasterPos3iv, void, (const GLint *v), (v), 75, -1, 4) \ + X(glRasterPos3s, void, (GLshort x, GLshort y, GLshort z), (x,y,z), 76, -1, 12) \ + X(glRasterPos3sv, void, (const GLshort *v), (v), 77, -1, 4) \ + X(glRasterPos4d, void, (GLdouble x, GLdouble y, GLdouble z, GLdouble w), (x,y,z,w), 78, -1, 32) \ + X(glRasterPos4dv, void, (const GLdouble *v), (v), 79, -1, 4) \ + X(glRasterPos4f, void, (GLfloat x, GLfloat y, GLfloat z, GLfloat w), (x,y,z,w), 80, -1, 16) \ + X(glRasterPos4fv, void, (const GLfloat *v), (v), 81, -1, 4) \ + X(glRasterPos4i, void, (GLint x, GLint y, GLint z, GLint w), (x,y,z,w), 82, -1, 16) \ + X(glRasterPos4iv, void, (const GLint *v), (v), 83, -1, 4) \ + X(glRasterPos4s, void, (GLshort x, GLshort y, GLshort z, GLshort w), (x,y,z,w), 84, -1, 16) \ + X(glRasterPos4sv, void, (const GLshort *v), (v), 85, -1, 4) \ + X(glReadBuffer, void, (GLenum mode), (mode), 254, -1, 4) \ + X(glReadPixels, void, (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels), (x,y,width,height,format,type,pixels), 256, -1, 28) \ + X(glRectd, void, (GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2), (x1,y1,x2,y2), 86, -1, 32) \ + X(glRectdv, void, (const GLdouble *v1, const GLdouble *v2), (v1,v2), 87, -1, 8) \ + X(glRectf, void, (GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2), (x1,y1,x2,y2), 88, -1, 16) \ + X(glRectfv, void, (const GLfloat *v1, const GLfloat *v2), (v1,v2), 89, -1, 8) \ + X(glRecti, void, (GLint x1, GLint y1, GLint x2, GLint y2), (x1,y1,x2,y2), 90, -1, 16) \ + X(glRectiv, void, (const GLint *v1, const GLint *v2), (v1,v2), 91, -1, 8) \ + X(glRects, void, (GLshort x1, GLshort y1, GLshort x2, GLshort y2), (x1,y1,x2,y2), 92, -1, 16) \ + X(glRectsv, void, (const GLshort *v1, const GLshort *v2), (v1,v2), 93, -1, 8) \ + X(glRenderMode, GLint, (GLenum mode), (mode), 196, -1, 4) \ + X(glRotated, void, (GLdouble angle, GLdouble x, GLdouble y, GLdouble z), (angle,x,y,z), 299, 138, 32) \ + X(glRotatef, void, (GLfloat angle, GLfloat x, GLfloat y, GLfloat z), (angle,x,y,z), 300, 139, 16) \ + X(glScaled, void, (GLdouble x, GLdouble y, GLdouble z), (x,y,z), 301, 140, 24) \ + X(glScalef, void, (GLfloat x, GLfloat y, GLfloat z), (x,y,z), 302, 141, 12) \ + X(glScissor, void, (GLint x, GLint y, GLsizei width, GLsizei height), (x,y,width,height), 176, -1, 16) \ + X(glSelectBuffer, void, (GLsizei size, GLuint *buffer), (size,buffer), 195, -1, 8) \ + X(glShadeModel, void, (GLenum mode), (mode), 177, -1, 4) \ + X(glStencilFunc, void, (GLenum func, GLint ref, GLuint mask), (func,ref,mask), 243, -1, 12) \ + X(glStencilMask, void, (GLuint mask), (mask), 209, -1, 4) \ + X(glStencilOp, void, (GLenum fail, GLenum zfail, GLenum zpass), (fail,zfail,zpass), 244, -1, 12) \ + X(glTexCoord1d, void, (GLdouble s), (s), 94, 56, 8) \ + X(glTexCoord1dv, void, (const GLdouble *v), (v), 95, 57, 4) \ + X(glTexCoord1f, void, (GLfloat s), (s), 96, 58, 4) \ + X(glTexCoord1fv, void, (const GLfloat *v), (v), 97, 59, 4) \ + X(glTexCoord1i, void, (GLint s), (s), 98, 60, 4) \ + X(glTexCoord1iv, void, (const GLint *v), (v), 99, 61, 4) \ + X(glTexCoord1s, void, (GLshort s), (s), 100, 62, 4) \ + X(glTexCoord1sv, void, (const GLshort *v), (v), 101, 63, 4) \ + X(glTexCoord2d, void, (GLdouble s, GLdouble t), (s,t), 102, 64, 16) \ + X(glTexCoord2dv, void, (const GLdouble *v), (v), 103, 65, 4) \ + X(glTexCoord2f, void, (GLfloat s, GLfloat t), (s,t), 104, 66, 8) \ + X(glTexCoord2fv, void, (const GLfloat *v), (v), 105, 67, 4) \ + X(glTexCoord2i, void, (GLint s, GLint t), (s,t), 106, 68, 8) \ + X(glTexCoord2iv, void, (const GLint *v), (v), 107, 69, 4) \ + X(glTexCoord2s, void, (GLshort s, GLshort t), (s,t), 108, 70, 8) \ + X(glTexCoord2sv, void, (const GLshort *v), (v), 109, 71, 4) \ + X(glTexCoord3d, void, (GLdouble s, GLdouble t, GLdouble r), (s,t,r), 110, 72, 24) \ + X(glTexCoord3dv, void, (const GLdouble *v), (v), 111, 73, 4) \ + X(glTexCoord3f, void, (GLfloat s, GLfloat t, GLfloat r), (s,t,r), 112, 74, 12) \ + X(glTexCoord3fv, void, (const GLfloat *v), (v), 113, 75, 4) \ + X(glTexCoord3i, void, (GLint s, GLint t, GLint r), (s,t,r), 114, 76, 12) \ + X(glTexCoord3iv, void, (const GLint *v), (v), 115, 77, 4) \ + X(glTexCoord3s, void, (GLshort s, GLshort t, GLshort r), (s,t,r), 116, 78, 12) \ + X(glTexCoord3sv, void, (const GLshort *v), (v), 117, 79, 4) \ + X(glTexCoord4d, void, (GLdouble s, GLdouble t, GLdouble r, GLdouble q), (s,t,r,q), 118, 80, 32) \ + X(glTexCoord4dv, void, (const GLdouble *v), (v), 119, 81, 4) \ + X(glTexCoord4f, void, (GLfloat s, GLfloat t, GLfloat r, GLfloat q), (s,t,r,q), 120, 82, 16) \ + X(glTexCoord4fv, void, (const GLfloat *v), (v), 121, 83, 4) \ + X(glTexCoord4i, void, (GLint s, GLint t, GLint r, GLint q), (s,t,r,q), 122, 84, 16) \ + X(glTexCoord4iv, void, (const GLint *v), (v), 123, 85, 4) \ + X(glTexCoord4s, void, (GLshort s, GLshort t, GLshort r, GLshort q), (s,t,r,q), 124, 86, 16) \ + X(glTexCoord4sv, void, (const GLshort *v), (v), 125, 87, 4) \ + X(glTexCoordPointer, void, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size,type,stride,pointer), 320, 158, 16) \ + X(glTexEnvf, void, (GLenum target, GLenum pname, GLfloat param), (target,pname,param), 184, -1, 12) \ + X(glTexEnvfv, void, (GLenum target, GLenum pname, const GLfloat *params), (target,pname,params), 185, -1, 12) \ + X(glTexEnvi, void, (GLenum target, GLenum pname, GLint param), (target,pname,param), 186, -1, 12) \ + X(glTexEnviv, void, (GLenum target, GLenum pname, const GLint *params), (target,pname,params), 187, -1, 12) \ + X(glTexGend, void, (GLenum coord, GLenum pname, GLdouble param), (coord,pname,param), 188, -1, 16) \ + X(glTexGendv, void, (GLenum coord, GLenum pname, const GLdouble *params), (coord,pname,params), 189, -1, 12) \ + X(glTexGenf, void, (GLenum coord, GLenum pname, GLfloat param), (coord,pname,param), 190, -1, 12) \ + X(glTexGenfv, void, (GLenum coord, GLenum pname, const GLfloat *params), (coord,pname,params), 191, -1, 12) \ + X(glTexGeni, void, (GLenum coord, GLenum pname, GLint param), (coord,pname,param), 192, -1, 12) \ + X(glTexGeniv, void, (GLenum coord, GLenum pname, const GLint *params), (coord,pname,params), 193, -1, 12) \ + X(glTexImage1D, void, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels), (target,level,internalformat,width,border,format,type,pixels), 182, -1, 32) \ + X(glTexImage2D, void, (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels), (target,level,internalformat,width,height,border,format,type,pixels), 183, -1, 36) \ + X(glTexParameterf, void, (GLenum target, GLenum pname, GLfloat param), (target,pname,param), 178, -1, 12) \ + X(glTexParameterfv, void, (GLenum target, GLenum pname, const GLfloat *params), (target,pname,params), 179, -1, 12) \ + X(glTexParameteri, void, (GLenum target, GLenum pname, GLint param), (target,pname,param), 180, -1, 12) \ + X(glTexParameteriv, void, (GLenum target, GLenum pname, const GLint *params), (target,pname,params), 181, -1, 12) \ + X(glTexSubImage1D, void, (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels), (target,level,xoffset,width,format,type,pixels), 332, -1, 28) \ + X(glTexSubImage2D, void, (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels), (target,level,xoffset,yoffset,width,height,format,type,pixels), 333, -1, 36) \ + X(glTranslated, void, (GLdouble x, GLdouble y, GLdouble z), (x,y,z), 303, 142, 24) \ + X(glTranslatef, void, (GLfloat x, GLfloat y, GLfloat z), (x,y,z), 304, 143, 12) \ + X(glVertex2d, void, (GLdouble x, GLdouble y), (x,y), 126, 88, 16) \ + X(glVertex2dv, void, (const GLdouble *v), (v), 127, 89, 4) \ + X(glVertex2f, void, (GLfloat x, GLfloat y), (x,y), 128, 90, 8) \ + X(glVertex2fv, void, (const GLfloat *v), (v), 129, 91, 4) \ + X(glVertex2i, void, (GLint x, GLint y), (x,y), 130, 92, 8) \ + X(glVertex2iv, void, (const GLint *v), (v), 131, 93, 4) \ + X(glVertex2s, void, (GLshort x, GLshort y), (x,y), 132, 94, 8) \ + X(glVertex2sv, void, (const GLshort *v), (v), 133, 95, 4) \ + X(glVertex3d, void, (GLdouble x, GLdouble y, GLdouble z), (x,y,z), 134, 96, 24) \ + X(glVertex3dv, void, (const GLdouble *v), (v), 135, 97, 4) \ + X(glVertex3f, void, (GLfloat x, GLfloat y, GLfloat z), (x,y,z), 136, 98, 12) \ + X(glVertex3fv, void, (const GLfloat *v), (v), 137, 99, 4) \ + X(glVertex3i, void, (GLint x, GLint y, GLint z), (x,y,z), 138, 100, 12) \ + X(glVertex3iv, void, (const GLint *v), (v), 139, 101, 4) \ + X(glVertex3s, void, (GLshort x, GLshort y, GLshort z), (x,y,z), 140, 102, 12) \ + X(glVertex3sv, void, (const GLshort *v), (v), 141, 103, 4) \ + X(glVertex4d, void, (GLdouble x, GLdouble y, GLdouble z, GLdouble w), (x,y,z,w), 142, 104, 32) \ + X(glVertex4dv, void, (const GLdouble *v), (v), 143, 105, 4) \ + X(glVertex4f, void, (GLfloat x, GLfloat y, GLfloat z, GLfloat w), (x,y,z,w), 144, 106, 16) \ + X(glVertex4fv, void, (const GLfloat *v), (v), 145, 107, 4) \ + X(glVertex4i, void, (GLint x, GLint y, GLint z, GLint w), (x,y,z,w), 146, 108, 16) \ + X(glVertex4iv, void, (const GLint *v), (v), 147, 109, 4) \ + X(glVertex4s, void, (GLshort x, GLshort y, GLshort z, GLshort w), (x,y,z,w), 148, 110, 16) \ + X(glVertex4sv, void, (const GLshort *v), (v), 149, 111, 4) \ + X(glVertexPointer, void, (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (size,type,stride,pointer), 321, 159, 16) \ + X(glViewport, void, (GLint x, GLint y, GLsizei width, GLsizei height), (x,y,width,height), 305, -1, 16) \ + + +/* EOF */ diff --git a/reactos/lib/opengl32/icdtable.h b/reactos/lib/opengl32/icdtable.h index 8ca704f2c65..87ed71aa216 100644 --- a/reactos/lib/opengl32/icdtable.h +++ b/reactos/lib/opengl32/icdtable.h @@ -1,4 +1,4 @@ -// icdtable.h +/* icdtable.h */ #ifndef OPENGL32_PRIVATE_ICDTABLE_H #define OPENGL32_PRIVATE_ICDTABLE_H @@ -12,10 +12,12 @@ enum icdoffsets_e ICDIDX_COUNT }; -struct ICDTable +typedef struct tagICDTable { - DWORD num_funcs; // Normally 336 (0x150) + DWORD num_funcs; /* Normally 336 (0x150) */ PROC dispatch_table[812]; -}; +} ICDTable; -#endif//OPENGL32_PRIVATE_ICDTABLE_H +#endif /* OPENGL32_PRIVATE_ICDTABLE_H */ + +/* EOF */ diff --git a/reactos/lib/opengl32/opengl32.c b/reactos/lib/opengl32/opengl32.c index 12cc101d7f0..8c6d3228584 100644 --- a/reactos/lib/opengl32/opengl32.c +++ b/reactos/lib/opengl32/opengl32.c @@ -1,4 +1,4 @@ -/* $Id: opengl32.c,v 1.9 2004/02/05 04:28:11 royce Exp $ +/* $Id: opengl32.c,v 1.10 2004/02/06 13:59:13 royce Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -12,9 +12,10 @@ #define WIN32_LEAN_AND_MEAN #include #include +#include +#include #include -//#include #include "opengl32.h" /* function prototypes */ @@ -26,12 +27,12 @@ static DWORD OPENGL32_InitializeDriver( GLDRIVERDATA *icd ); static BOOL OPENGL32_UnloadDriver( GLDRIVERDATA *icd ); /* global vars */ -const char* OPENGL32_funcnames[GLIDX_COUNT] SHARED = +/*const char* OPENGL32_funcnames[GLIDX_COUNT] SHARED = { #define X(func, ret, typeargs, args) #func, GLFUNCS_MACRO #undef X -}; +};*/ DWORD OPENGL32_tls; GLPROCESSDATA OPENGL32_processdata; @@ -54,9 +55,11 @@ static void OPENGL32_ThreadDetach() BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD Reason, LPVOID Reserved) { GLTHREADDATA* lpData = NULL; - SECURITY_ATTRIBUTES attrib = { .nLength = sizeof (SECURITY_ATTRIBUTES), - .lpSecurityDescriptor = NULL, - .bInheritHandle = TRUE }; + ICDTable *dispatchTable = NULL; + TEB *teb = NULL; + SECURITY_ATTRIBUTES attrib = { sizeof (SECURITY_ATTRIBUTES), /* nLength */ + NULL, /* lpSecurityDescriptor */ + TRUE /* bInheritHandle */ }; DBGPRINT( "Info: Called!" ); switch ( Reason ) @@ -92,15 +95,36 @@ BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD Reason, LPVOID Reserved) /* The attached process creates a new thread. */ case DLL_THREAD_ATTACH: - //lpData = (GLTHREADDATA*)LocalAlloc(LPTR, sizeof(GLTHREADDATA)); + dispatchTable = (ICDTable*)HeapAlloc( GetProcessHeap(), + HEAP_GENERATE_EXCEPTIONS | HEAP_ZERO_MEMORY, + sizeof (ICDTable) ); + if (dispatchTable == NULL) + { + DBGPRINT( "Error: Couldn't allocate GL dispatch table" ); + return FALSE; + } + lpData = (GLTHREADDATA*)HeapAlloc( GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS | HEAP_ZERO_MEMORY, sizeof (GLTHREADDATA) ); if (lpData == NULL) { DBGPRINT( "Error: Couldn't allocate GLTHREADDATA" ); + HeapFree( GetProcessHeap(), 0, dispatchTable ); return FALSE; } + + teb = NtCurrentTeb(); + + /* initialize dispatch table with empty functions */ + #define X(func, ret, typeargs, args, icdidx, tebidx, stack) \ + dispatchTable->dispatch_table[icdidx] = (PROC)glEmptyFunc##stack; \ + if (tebidx >= 0) \ + teb->glDispatchTable[tebidx] = (PVOID)glEmptyFunc##stack; + GLFUNCS_MACRO + #undef X + + teb->glTable = dispatchTable->dispatch_table; TlsSetValue( OPENGL32_tls, lpData ); break; @@ -126,17 +150,10 @@ BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD Reason, LPVOID Reserved) /* FUNCTION: Append ICD to linked list. * ARGUMENTS: [IN] icd: GLDRIVERDATA to append to list + * NOTES: Only call this when you hold the driver_mutex */ static void OPENGL32_AppendICD( GLDRIVERDATA *icd ) { - /* synchronize */ - if (WaitForSingleObject( OPENGL32_processdata.driver_mutex, INFINITE ) == - WAIT_FAILED) - { - DBGPRINT( "Error: WaitForSingleObject() failed (%d)", GetLastError() ); - return; /* FIXME: do we have to expect such an error and handle it? */ - } - if (OPENGL32_processdata.driver_list == NULL) OPENGL32_processdata.driver_list = icd; else @@ -146,26 +163,15 @@ static void OPENGL32_AppendICD( GLDRIVERDATA *icd ) p = p->next; p->next = icd; } - - /* release mutex */ - if (!ReleaseMutex( OPENGL32_processdata.driver_mutex )) - DBGPRINT( "Error: ReleaseMutex() failed (%d)", GetLastError() ); } /* FUNCTION: Remove ICD from linked list. * ARGUMENTS: [IN] icd: GLDRIVERDATA to remove from list + * NOTES: Only call this when you hold the driver_mutex */ static void OPENGL32_RemoveICD( GLDRIVERDATA *icd ) { - /* synchronize */ - if (WaitForSingleObject( OPENGL32_processdata.driver_mutex, INFINITE ) == - WAIT_FAILED) - { - DBGPRINT( "Error: WaitForSingleObject() failed (%d)", GetLastError() ); - return; /* FIXME: do we have to expect such an error and handle it? */ - } - if (icd == OPENGL32_processdata.driver_list) OPENGL32_processdata.driver_list = icd->next; else @@ -182,10 +188,6 @@ static void OPENGL32_RemoveICD( GLDRIVERDATA *icd ) } DBGPRINT( "Error: ICD 0x%08x not found in list!", icd ); } - - /* release mutex */ - if (!ReleaseMutex( OPENGL32_processdata.driver_mutex )) - DBGPRINT( "Error: ReleaseMutex() failed (%d)", GetLastError() ); } @@ -224,7 +226,7 @@ static GLDRIVERDATA *OPENGL32_LoadDriver( LPCWSTR driver ) DBGPRINT( "Info: Dll = %ws", icd->dll ); DBGPRINT( "Info: Version = 0x%08x", icd->version ); - DBGPRINT( "Info: DriverVersion = 0x%08x", icd->driverVersion ); + DBGPRINT( "Info: DriverVersion = 0x%08x", icd->driver_version ); DBGPRINT( "Info: Flags = 0x%08x", icd->flags ); /* load/initialize ICD */ @@ -363,12 +365,25 @@ GLDRIVERDATA *OPENGL32_LoadICD ( LPCWSTR driver ) { GLDRIVERDATA *icd; + /* synchronize */ + if (WaitForSingleObject( OPENGL32_processdata.driver_mutex, INFINITE ) == + WAIT_FAILED) + { + DBGPRINT( "Error: WaitForSingleObject() failed (%d)", GetLastError() ); + return NULL; /* FIXME: do we have to expect such an error and handle it? */ + } + /* look if ICD is already loaded */ for (icd = OPENGL32_processdata.driver_list; icd; icd = icd->next) { if (!_wcsicmp( driver, icd->driver_name )) /* found */ { icd->refcount++; + + /* release mutex */ + if (!ReleaseMutex( OPENGL32_processdata.driver_mutex )) + DBGPRINT( "Error: ReleaseMutex() failed (%d)", GetLastError() ); + return icd; } } @@ -377,6 +392,11 @@ GLDRIVERDATA *OPENGL32_LoadICD ( LPCWSTR driver ) icd = OPENGL32_LoadDriver( driver ); if (icd != NULL) icd->refcount = 1; + + /* release mutex */ + if (!ReleaseMutex( OPENGL32_processdata.driver_mutex )) + DBGPRINT( "Error: ReleaseMutex() failed (%d)", GetLastError() ); + return icd; } @@ -386,11 +406,25 @@ GLDRIVERDATA *OPENGL32_LoadICD ( LPCWSTR driver ) */ BOOL OPENGL32_UnloadICD( GLDRIVERDATA *icd ) { + BOOL ret = TRUE; + + /* synchronize */ + if (WaitForSingleObject( OPENGL32_processdata.driver_mutex, INFINITE ) == + WAIT_FAILED) + { + DBGPRINT( "Error: WaitForSingleObject() failed (%d)", GetLastError() ); + return FALSE; /* FIXME: do we have to expect such an error and handle it? */ + } + icd->refcount--; if (icd->refcount == 0) - return OPENGL32_UnloadDriver( icd ); + ret = OPENGL32_UnloadDriver( icd ); - return TRUE; + /* release mutex */ + if (!ReleaseMutex( OPENGL32_processdata.driver_mutex )) + DBGPRINT( "Error: ReleaseMutex() failed (%d)", GetLastError() ); + + return ret; } diff --git a/reactos/lib/opengl32/opengl32.h b/reactos/lib/opengl32/opengl32.h index 2c9ad32014c..7f052445d23 100644 --- a/reactos/lib/opengl32/opengl32.h +++ b/reactos/lib/opengl32/opengl32.h @@ -1,4 +1,4 @@ -/* $Id: opengl32.h,v 1.8 2004/02/05 04:28:11 royce Exp $ +/* $Id: opengl32.h,v 1.9 2004/02/06 13:59:13 royce Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -12,6 +12,12 @@ #ifndef OPENGL32_PRIVATE_H #define OPENGL32_PRIVATE_H +/* gl function list */ +#include "glfuncs.h" + +/* ICD index list/types */ +#include "icdtable.h" + /* debug flags */ #if !defined(NDEBUG) # define DEBUG_OPENGL32 @@ -21,7 +27,8 @@ #endif /* !NDEBUG */ /* debug macros */ -#if 0//def DEBUG_OPENGL32 /* FIXME: DPRINT wants DbgPrint - where is it? */ +#ifdef DEBUG_OPENGL32 /* FIXME: DPRINT wants DbgPrint - where is it? */ +ULONG DbgPrint(PCH Format,...); # include # define DBGPRINT( fmt, args... ) \ DPRINT( "OpenGL32.DLL: %s: "fmt"\n", __FUNCTION__, ##args ) @@ -39,14 +46,7 @@ # endif #endif -/* function/data attributes */ -#define EXPORT __declspec(dllexport) -#define NAKED __attribute__((naked)) -#define SHARED __attribute__((section("shared"), shared)) - -/* gl function list */ -#include "glfuncs.h" - +#if 0 /* table indices for funcnames and function pointers */ enum glfunc_indices { @@ -59,9 +59,10 @@ enum glfunc_indices /* function name table */ extern const char* OPENGL32_funcnames[GLIDX_COUNT]; +#endif -/* FIXME: what type of argument does this take? */ -typedef DWORD (CALLBACK * SetContextCallBack) (void *); +/* Called by the driver to set the dispatch table */ +typedef DWORD (CALLBACK * SetContextCallBack)( const ICDTable * ); /* OpenGL ICD data */ typedef struct tagGLDRIVERDATA @@ -93,12 +94,10 @@ typedef struct tagGLDRIVERDATA BOOL (*DrvSwapLayerBuffers)( HDC, UINT ); BOOL (*DrvValidateVersion)( DWORD ); - PVOID func_list[GLIDX_COUNT]; /* glXXX functions supported by ICD */ - struct tagGLDRIVERDATA *next; /* next ICD -- linked list */ } GLDRIVERDATA; -/* OpenGL context */ +/* Out private OpenGL context (saved in TLS) */ typedef struct tagGLRC { GLDRIVERDATA *icd; /* driver used for this context */ @@ -108,7 +107,6 @@ typedef struct tagGLRC DWORD thread_id; /* thread holding this context */ HGLRC hglrc; /* GLRC from DrvCreateContext */ - PVOID func_list[GLIDX_COUNT]; /* glXXX function pointers */ struct tagGLRC *next; /* linked list */ } GLRC; @@ -138,6 +136,29 @@ BOOL OPENGL32_UnloadICD( GLDRIVERDATA *icd ); DWORD OPENGL32_RegEnumDrivers( DWORD idx, LPWSTR name, LPDWORD cName ); DWORD OPENGL32_RegGetDriverInfo( LPCWSTR driver, GLDRIVERDATA *icd ); +/* empty gl functions from gl.c */ +void STDCALL glEmptyFunc0(); +void STDCALL glEmptyFunc4( long ); +void STDCALL glEmptyFunc8( long, long ); +void STDCALL glEmptyFunc12( long, long, long ); +void STDCALL glEmptyFunc16( long, long, long, long ); +void STDCALL glEmptyFunc20( long, long, long, long, long ); +void STDCALL glEmptyFunc24( long, long, long, long, long, long ); +void STDCALL glEmptyFunc28( long, long, long, long, long, long, long ); +void STDCALL glEmptyFunc32( long, long, long, long, long, long, long, long ); +void STDCALL glEmptyFunc36( long, long, long, long, long, long, long, long, + long ); +void STDCALL glEmptyFunc40( long, long, long, long, long, long, long, long, + long, long ); +void STDCALL glEmptyFunc44( long, long, long, long, long, long, long, long, + long, long, long ); +void STDCALL glEmptyFunc48( long, long, long, long, long, long, long, long, + long, long, long, long ); +void STDCALL glEmptyFunc52( long, long, long, long, long, long, long, long, + long, long, long, long, long ); +void STDCALL glEmptyFunc56( long, long, long, long, long, long, long, long, + long, long, long, long, long, long ); + #endif//OPENGL32_PRIVATE_H /* EOF */ diff --git a/reactos/lib/opengl32/wgl.c b/reactos/lib/opengl32/wgl.c index 94556e07ab7..fa1c5c83a42 100644 --- a/reactos/lib/opengl32/wgl.c +++ b/reactos/lib/opengl32/wgl.c @@ -10,6 +10,8 @@ #define WIN32_LEAN_AND_MEAN #include +#include +#include #include "opengl32.h" @@ -83,8 +85,17 @@ static void WGL_RemoveContext( GLRC *glrc ) */ static BOOL WGL_ContainsContext( GLRC *glrc ) { - GLRC *p = OPENGL32_processdata.glrc_list; + GLRC *p; + /* synchronize */ + if (WaitForSingleObject( OPENGL32_processdata.glrc_mutex, INFINITE ) == + WAIT_FAILED) + { + DBGPRINT( "Error: WaitForSingleObject() failed (%d)", GetLastError() ); + return FALSE; /* FIXME: do we have to expect such an error and handle it? */ + } + + p = OPENGL32_processdata.glrc_list; while (p != NULL) { if (p == glrc) @@ -92,6 +103,10 @@ static BOOL WGL_ContainsContext( GLRC *glrc ) p = p->next; } + /* release mutex */ + if (!ReleaseMutex( OPENGL32_processdata.glrc_mutex )) + DBGPRINT( "Error: ReleaseMutex() failed (%d)", GetLastError() ); + return FALSE; } @@ -103,14 +118,65 @@ static BOOL WGL_ContainsContext( GLRC *glrc ) * functions) * RETURNS: unkown */ -DWORD CALLBACK WGL_SetContextCallBack( void *table ) +DWORD CALLBACK WGL_SetContextCallBack( const ICDTable *table ) { - DBGPRINT( "Function count: %d\n", *(DWORD *)table ); - DBGBREAK(); +/* UINT i;*/ + TEB *teb; + PROC *tebTable, *tebDispatchTable; + + teb = NtCurrentTeb(); + tebTable = (PROC *)teb->glTable; + tebDispatchTable = (PROC *)teb->glDispatchTable; + + DBGPRINT( "Function count: %d\n", table->num_funcs ); + + /* save table */ + memcpy( tebTable, table->dispatch_table, + sizeof (PROC) * table->num_funcs ); + memset( tebTable + sizeof (PROC) * table->num_funcs, 0, + (sizeof (table->dispatch_table) / sizeof (PROC)) - + (sizeof (PROC) * table->num_funcs) ); + + /* FIXME: pull in software fallbacks -- need mesa */ +#if 0 /* unused atm */ + for (i = 0; i < (sizeof (table->dispatch_table) / sizeof (PROC)); i++) + { + if (tebTable[i] == NULL) + { + /* FIXME: fallback */ + DBGPRINT( "Warning: GL proc #%d is NULL!", i ); + } + } +#endif + + /* put in empty functions as long as we dont have a fallback */ + #define X(func, ret, typeargs, args, icdidx, tebidx, stack) \ + if (tebTable[icdidx] == NULL) \ + { \ + DBGPRINT( "Warning: GL proc '%s' is NULL", #func ); \ + tebTable[icdidx] = (PROC)glEmptyFunc##stack; \ + } + GLFUNCS_MACRO + #undef X + + /* fill teb->glDispatchTable for fast calls */ + #define X(func, ret, typeargs, args, icdidx, tebidx, stack) \ + if (tebidx >= 0) \ + tebDispatchTable[tebidx] = tebTable[icdidx]; + GLFUNCS_MACRO + #undef X + return ERROR_SUCCESS; } +int WINAPI wglChoosePixelFormat( HDC hdc, CONST PIXELFORMATDESCRIPTOR *pfd ) +{ + UNIMPLEMENTED; + return 0; +} + + /* FUNCTION: Copy data specified by mask from one GLRC to another. * ARGUMENTS: [IN] src Source GLRC * [OUT] dst Destination GLRC @@ -168,7 +234,7 @@ HGLRC WINAPI wglCreateLayerContext( HDC hdc, int layer ) WCHAR driver[256]; DWORD dw, size; - GLDRIVERDATA *icd; + GLDRIVERDATA *icd = NULL; GLRC *glrc; HGLRC drvHglrc = NULL; @@ -198,7 +264,7 @@ HGLRC WINAPI wglCreateLayerContext( HDC hdc, int layer ) if (icd->DrvCreateLayerContext) drvHglrc = icd->DrvCreateLayerContext( hdc, layer ); - else + if (drvHglrc) { if (layer == 0) drvHglrc = icd->DrvCreateContext( hdc ); @@ -217,7 +283,7 @@ HGLRC WINAPI wglCreateLayerContext( HDC hdc, int layer ) break; } - if (drvHglrc == NULL) /* no ICD was found */ + if (drvHglrc == NULL || icd == NULL) /* no ICD was found */ { /* FIXME: fallback to mesa */ DBGPRINT( "Error: No working ICD found!" ); @@ -229,9 +295,6 @@ HGLRC WINAPI wglCreateLayerContext( HDC hdc, int layer ) glrc->hglrc = drvHglrc; glrc->iFormat = -1; /* what is this used for? */ glrc->icd = icd; - memcpy( glrc->func_list, icd->func_list, sizeof (PVOID) * GLIDX_COUNT ); - - /* FIXME: fill NULL-pointers in glrc->func_list with mesa functions */ /* append glrc to context list */ WGL_AppendContext( glrc ); @@ -283,12 +346,19 @@ BOOL WINAPI wglDeleteContext( HGLRC hglrc ) BOOL WINAPI wglDescribeLayerPlane( HDC hdc, int iPixelFormat, int iLayerPlane, UINT nBytes, LPLAYERPLANEDESCRIPTOR plpd ) { - - + UNIMPLEMENTED; return FALSE; } +int WINAPI wglDescribePixelFormat( HDC hdc, int iFormat, UINT nBytes, + LPPIXELFORMATDESCRIPTOR pfd ) +{ + UNIMPLEMENTED; + return 0; +} + + /* FUNCTION: Return the current GLRC * RETURNS: Current GLRC (NULL if none was set current) */ @@ -314,6 +384,14 @@ HDC WINAPI wglGetCurrentDC() int WINAPI wglGetLayerPaletteEntries( HDC hdc, int iLayerPlane, int iStart, int cEntries, COLORREF *pcr ) { + UNIMPLEMENTED; + return 0; +} + + +int WINAPI wglGetPixelFormat( HDC hdc ) +{ + UNIMPLEMENTED; return 0; } @@ -366,7 +444,11 @@ BOOL WINAPI wglMakeCurrent( HDC hdc, HGLRC hglrc ) { GLRC *glrc = (GLRC *)hglrc; - /* FIXME: glFlush() current context */ + /* flush current context */ + if (OPENGL32_threaddata->glrc != NULL) + { + glFlush(); + } /* check hdc */ if (GetObjectType( hdc ) != OBJ_DC) @@ -392,9 +474,8 @@ BOOL WINAPI wglMakeCurrent( HDC hdc, HGLRC hglrc ) /* call the ICD */ if (glrc->hglrc != NULL) { - /* FIXME: which function to call? DrvSetContext? - does it crash with NULL as SetContextCallBack? */ - if (!glrc->icd->DrvSetContext( hdc, glrc->hglrc, NULL )) + if (!glrc->icd->DrvSetContext( hdc, glrc->hglrc, + WGL_SetContextCallBack )) { DBGPRINT( "Error: DrvSetContext failed (%d)\n", GetLastError() ); return FALSE; @@ -414,6 +495,7 @@ BOOL WINAPI wglMakeCurrent( HDC hdc, HGLRC hglrc ) BOOL WINAPI wglRealizeLayerPalette( HDC hdc, int iLayerPlane, BOOL bRealize ) { + UNIMPLEMENTED; return FALSE; } @@ -421,9 +503,18 @@ BOOL WINAPI wglRealizeLayerPalette( HDC hdc, int iLayerPlane, BOOL bRealize ) int WINAPI wglSetLayerPaletteEntries( HDC hdc, int iLayerPlane, int iStart, int cEntries, CONST COLORREF *pcr ) { + UNIMPLEMENTED; return 0; } + +BOOL WINAPI wglSetPixelFormat( HDC hdc, int iFormat, CONST PIXELFORMATDESCRIPTOR *pfd ) +{ + UNIMPLEMENTED; + return FALSE; +} + + /* FUNCTION: Enable display-list sharing between multiple GLRCs * ARGUMENTS: [IN] hglrc1 GLRC number 1 * [IN] hglrc2 GLRC number 2 @@ -457,6 +548,7 @@ BOOL WINAPI wglShareLists( HGLRC hglrc1, HGLRC hglrc2 ) return glrc1->icd->DrvShareLists( glrc1->hglrc, glrc2->hglrc ); } + /* FUNCTION: Flushes GL and swaps front/back buffer if appropriate * ARGUMENTS: [IN] hdc Handle to device context to swap buffers for * RETURNS: TRUE on success, FALSE on failure @@ -490,18 +582,21 @@ BOOL WINAPI wglSwapBuffers( HDC hdc ) BOOL WINAPI wglSwapLayerBuffers( HDC hdc, UINT fuPlanes ) { + UNIMPLEMENTED; return FALSE; } BOOL WINAPI wglUseFontBitmapsA( HDC hdc, DWORD first, DWORD count, DWORD listBase ) { + UNIMPLEMENTED; return FALSE; } BOOL WINAPI wglUseFontBitmapsW( HDC hdc, DWORD first, DWORD count, DWORD listBase ) { + UNIMPLEMENTED; return FALSE; } @@ -510,6 +605,7 @@ BOOL WINAPI wglUseFontOutlinesA( HDC hdc, DWORD first, DWORD count, DWORD listBa FLOAT deviation, FLOAT extrusion, int format, LPGLYPHMETRICSFLOAT lpgmf ) { + UNIMPLEMENTED; return FALSE; } @@ -518,6 +614,7 @@ BOOL WINAPI wglUseFontOutlinesW( HDC hdc, DWORD first, DWORD count, DWORD listBa FLOAT deviation, FLOAT extrusion, int format, LPGLYPHMETRICSFLOAT lpgmf ) { + UNIMPLEMENTED; return FALSE; }