[FORMATTING] tabs -> spaces. No code changes.

svn path=/trunk/; revision=38576
This commit is contained in:
Kamil Hornicek 2009-01-05 11:03:28 +00:00
parent 35f9beeabd
commit 01cb1291d8
6 changed files with 1540 additions and 1540 deletions

View file

@ -30,60 +30,60 @@ int WINAPI glEmptyFunc8( long l1, long l2 ) { return 0; }
int WINAPI glEmptyFunc12( long l1, long l2, long l3 ) { return 0; } int WINAPI glEmptyFunc12( long l1, long l2, long l3 ) { return 0; }
int WINAPI glEmptyFunc16( long l1, long l2, long l3, long l4 ) { return 0; } int WINAPI glEmptyFunc16( long l1, long l2, long l3, long l4 ) { return 0; }
int WINAPI glEmptyFunc20( long l1, long l2, long l3, long l4, long l5 ) int WINAPI glEmptyFunc20( long l1, long l2, long l3, long l4, long l5 )
{ return 0; } { return 0; }
int WINAPI glEmptyFunc24( long l1, long l2, long l3, long l4, long l5, int WINAPI glEmptyFunc24( long l1, long l2, long l3, long l4, long l5,
long l6 ) { return 0; } long l6 ) { return 0; }
int WINAPI glEmptyFunc28( long l1, long l2, long l3, long l4, long l5, int WINAPI glEmptyFunc28( long l1, long l2, long l3, long l4, long l5,
long l6, long l7 ) { return 0; } long l6, long l7 ) { return 0; }
int WINAPI glEmptyFunc32( long l1, long l2, long l3, long l4, long l5, int WINAPI glEmptyFunc32( long l1, long l2, long l3, long l4, long l5,
long l6, long l7, long l8 ) { return 0; } long l6, long l7, long l8 ) { return 0; }
int WINAPI glEmptyFunc36( long l1, long l2, long l3, long l4, long l5, int WINAPI glEmptyFunc36( long l1, long l2, long l3, long l4, long l5,
long l6, long l7, long l8, long l9 ) { return 0; } long l6, long l7, long l8, long l9 ) { return 0; }
int WINAPI glEmptyFunc40( long l1, long l2, long l3, long l4, long l5, int WINAPI glEmptyFunc40( long l1, long l2, long l3, long l4, long l5,
long l6, long l7, long l8, long l9, long l10 ) long l6, long l7, long l8, long l9, long l10 )
{ return 0; } { return 0; }
int WINAPI glEmptyFunc44( long l1, long l2, long l3, long l4, long l5, int WINAPI glEmptyFunc44( long l1, long l2, long l3, long l4, long l5,
long l6, long l7, long l8, long l9, long l10, long l6, long l7, long l8, long l9, long l10,
long l11 ) { return 0; } long l11 ) { return 0; }
int WINAPI glEmptyFunc48( long l1, long l2, long l3, long l4, long l5, int WINAPI glEmptyFunc48( long l1, long l2, long l3, long l4, long l5,
long l6, long l7, long l8, long l9, long l10, long l6, long l7, long l8, long l9, long l10,
long l11, long l12 ) { return 0; } long l11, long l12 ) { return 0; }
int WINAPI glEmptyFunc52( long l1, long l2, long l3, long l4, long l5, int WINAPI glEmptyFunc52( long l1, long l2, long l3, long l4, long l5,
long l6, long l7, long l8, long l9, long l10, long l6, long l7, long l8, long l9, long l10,
long l11, long l12, long l13 ) { return 0; } long l11, long l12, long l13 ) { return 0; }
int WINAPI glEmptyFunc56( long l1, long l2, long l3, long l4, long l5, int WINAPI glEmptyFunc56( long l1, long l2, long l3, long l4, long l5,
long l6, long l7, long l8, long l9, long l10, long l6, long l7, long l8, long l9, long l10,
long l11, long l12, long l13, long l14 ) long l11, long l12, long l13, long l14 )
{ return 0; } { return 0; }
#if defined(_M_IX86) #if defined(_M_IX86)
# define FOO(x) #x # define FOO(x) #x
#if __MINGW32__ #if __MINGW32__
# define X(func, ret, typeargs, args, icdidx, tebidx, stack) \ # define X(func, ret, typeargs, args, icdidx, tebidx, stack) \
__asm__(".align 4" "\n\t" \ __asm__(".align 4" "\n\t" \
".globl _"#func"@"#stack "\n\t" \ ".globl _"#func"@"#stack "\n\t" \
"_"#func"@"#stack":" "\n\t" \ "_"#func"@"#stack":" "\n\t" \
" movl %fs:0x18, %eax" "\n\t" \ " movl %fs:0x18, %eax" "\n\t" \
" movl 0xbe8(%eax), %eax" "\n\t" \ " movl 0xbe8(%eax), %eax" "\n\t" \
" jmp *"FOO((icdidx*4))"(%eax)" "\n\t"); " jmp *"FOO((icdidx*4))"(%eax)" "\n\t");
#else #else
# define X(func, ret, typeargs, args, icdidx, tebidx, stack) \ # define X(func, ret, typeargs, args, icdidx, tebidx, stack) \
ret WINAPI func typeargs \ ret WINAPI func typeargs \
{ \ { \
PROC *table; \ PROC *table; \
PROC fn; \ PROC fn; \
if (tebidx >= 0 && 0) \ if (tebidx >= 0 && 0) \
{ \ { \
table = (PROC *)NtCurrentTeb()->glDispatchTable; \ table = (PROC *)NtCurrentTeb()->glDispatchTable; \
fn = table[tebidx]; \ fn = table[tebidx]; \
} \ } \
else \ else \
{ \ { \
table = (PROC *)NtCurrentTeb()->glTable; \ table = (PROC *)NtCurrentTeb()->glTable; \
fn = table[icdidx]; \ fn = table[icdidx]; \
} \ } \
return (ret)((ret(*)typeargs)fn)args; \ return (ret)((ret(*)typeargs)fn)args; \
} }
#endif #endif
@ -91,22 +91,22 @@ GLFUNCS_MACRO
# undef FOO # undef FOO
# undef X # undef X
#else /* defined(_M_IX86) */ #else /* defined(_M_IX86) */
# define X(func, ret, typeargs, args, icdidx, tebidx, stack) \ # define X(func, ret, typeargs, args, icdidx, tebidx, stack) \
ret WINAPI func typeargs \ ret WINAPI func typeargs \
{ \ { \
PROC *table; \ PROC *table; \
PROC fn; \ PROC fn; \
if (tebidx >= 0 && 0) \ if (tebidx >= 0 && 0) \
{ \ { \
table = (PROC *)NtCurrentTeb()->glDispatchTable; \ table = (PROC *)NtCurrentTeb()->glDispatchTable; \
fn = table[tebidx]; \ fn = table[tebidx]; \
} \ } \
else \ else \
{ \ { \
table = (PROC *)NtCurrentTeb()->glTable; \ table = (PROC *)NtCurrentTeb()->glTable; \
fn = table[icdidx]; \ fn = table[icdidx]; \
} \ } \
return (ret)((ret(*)typeargs)fn)args; \ return (ret)((ret(*)typeargs)fn)args; \
} }
GLFUNCS_MACRO GLFUNCS_MACRO

View file

@ -16,342 +16,342 @@
*/ */
#define GLFUNCS_MACRO \ #define GLFUNCS_MACRO \
X(glAccum, void, (GLenum op, GLfloat value), (op,value), 213, -1, 8) \ 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(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(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(glArrayElement, void, (GLint i), (i), 306, 144, 4) \
X(glBegin, void, (GLenum mode), (mode), 7, 2, 4) \ X(glBegin, void, (GLenum mode), (mode), 7, 2, 4) \
X(glBindTexture, void, (GLenum target, GLuint texture), (target,texture), 307, 145, 8) \ 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(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(glBlendFunc, void, (GLenum sfactor, GLenum dfactor), (sfactor,dfactor), 241, -1, 8) \
X(glCallList, void, (GLuint list), (list), 2, 0, 4) \ 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(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(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(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(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(glClearDepth, void, (GLclampd depth), (depth), 208, -1, 8) \
X(glClearIndex, void, (GLfloat c), (c), 205, -1, 4) \ X(glClearIndex, void, (GLfloat c), (c), 205, -1, 4) \
X(glClearStencil, void, (GLint s), (s), 207, -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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(glCullFace, void, (GLenum mode), (mode), 152, -1, 4) \
X(glDeleteLists, void, (GLuint list, GLsizei range), (list,range), 4, -1, 8) \ 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(glDeleteTextures, void, (GLsizei n, const GLuint *textures), (n,textures), 327, -1, 8) \
X(glDepthFunc, void, (GLenum func), (func), 245, -1, 4) \ X(glDepthFunc, void, (GLenum func), (func), 245, -1, 4) \
X(glDepthMask, void, (GLboolean flag), (flag), 211, -1, 4) \ X(glDepthMask, void, (GLboolean flag), (flag), 211, -1, 4) \
X(glDepthRange, void, (GLclampd zNear, GLclampd zFar), (zNear,zFar), 288, -1, 16) \ X(glDepthRange, void, (GLclampd zNear, GLclampd zFar), (zNear,zFar), 288, -1, 16) \
X(glDisable, void, (GLenum cap), (cap), 214, 116, 4) \ X(glDisable, void, (GLenum cap), (cap), 214, 116, 4) \
X(glDisableClientState, void, (GLenum array), (array), 309, 147, 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(glDrawArrays, void, (GLenum mode, GLint first, GLsizei count), (mode,first,count), 310, 148, 12) \
X(glDrawBuffer, void, (GLenum mode), (mode), 202, -1, 4) \ 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(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(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(glEdgeFlag, void, (GLboolean flag), (flag), 41, 35, 4) \
X(glEdgeFlagPointer, void, (GLsizei stride, const GLboolean *pointer), (stride,pointer), 312, 150, 8) \ X(glEdgeFlagPointer, void, (GLsizei stride, const GLboolean *pointer), (stride,pointer), 312, 150, 8) \
X(glEdgeFlagv, void, (const GLboolean *flag), (flag), 42, 36, 4) \ X(glEdgeFlagv, void, (const GLboolean *flag), (flag), 42, 36, 4) \
X(glEnable, void, (GLenum cap), (cap), 215, 117, 4) \ X(glEnable, void, (GLenum cap), (cap), 215, 117, 4) \
X(glEnableClientState, void, (GLenum array), (array), 313, 151, 4) \ X(glEnableClientState, void, (GLenum array), (array), 313, 151, 4) \
X(glEnd, void, (void), (), 43, 37, 0) \ X(glEnd, void, (void), (), 43, 37, 0) \
X(glEndList, void, (void), (), 1, -1, 0) \ X(glEndList, void, (void), (), 1, -1, 0) \
X(glEvalCoord1d, void, (GLdouble u), (u), 228, 120, 8) \ X(glEvalCoord1d, void, (GLdouble u), (u), 228, 120, 8) \
X(glEvalCoord1dv, void, (const GLdouble *u), (u), 229, 121, 4) \ X(glEvalCoord1dv, void, (const GLdouble *u), (u), 229, 121, 4) \
X(glEvalCoord1f, void, (GLfloat u), (u), 230, 122, 4) \ X(glEvalCoord1f, void, (GLfloat u), (u), 230, 122, 4) \
X(glEvalCoord1fv, void, (const GLfloat *u), (u), 231, 123, 4) \ X(glEvalCoord1fv, void, (const GLfloat *u), (u), 231, 123, 4) \
X(glEvalCoord2d, void, (GLdouble u, GLdouble v), (u,v), 232, 124, 16) \ X(glEvalCoord2d, void, (GLdouble u, GLdouble v), (u,v), 232, 124, 16) \
X(glEvalCoord2dv, void, (const GLdouble *u), (u), 233, 125, 4) \ X(glEvalCoord2dv, void, (const GLdouble *u), (u), 233, 125, 4) \
X(glEvalCoord2f, void, (GLfloat u, GLfloat v), (u,v), 234, 126, 8) \ X(glEvalCoord2f, void, (GLfloat u, GLfloat v), (u,v), 234, 126, 8) \
X(glEvalCoord2fv, void, (const GLfloat *u), (u), 235, 127, 4) \ 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(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(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(glEvalPoint1, void, (GLint i), (i), 237, 128, 4) \
X(glEvalPoint2, void, (GLint i, GLint j), (i,j), 239, 129, 8) \ 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(glFeedbackBuffer, void, (GLsizei size, GLenum type, GLfloat *buffer), (size,type,buffer), 194, -1, 12) \
X(glFinish, void, (void), (), 216, -1, 0) \ X(glFinish, void, (void), (), 216, -1, 0) \
X(glFlush, void, (void), (), 217, -1, 0) \ X(glFlush, void, (void), (), 217, -1, 0) \
X(glFogf, void, (GLenum pname, GLfloat param), (pname,param), 153, -1, 8) \ 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(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(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(glFogiv, void, (GLenum pname, const GLint *params), (pname,params), 156, -1, 8) \
X(glFrontFace, void, (GLenum mode), (mode), 157, -1, 4) \ 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(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(glGenLists, GLuint, (GLsizei range), (range), 5, -1, 4) \
X(glGenTextures, void, (GLsizei n, GLuint *textures), (n,textures), 328, -1, 8) \ 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(glGetBooleanv, void, (GLenum pname, GLboolean *params), (pname,params), 258, -1, 8) \
X(glGetClipPlane, void, (GLenum plane, GLdouble *equation), (plane,equation), 259, -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(glGetDoublev, void, (GLenum pname, GLdouble *params), (pname,params), 260, -1, 8) \
X(glGetError, GLenum, (void), (), 261, -1, 0) \ X(glGetError, GLenum, (void), (), 261, -1, 0) \
X(glGetFloatv, void, (GLenum pname, GLfloat *params), (pname,params), 262, -1, 8) \ 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(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(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(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(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(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(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(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(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(glGetPixelMapfv, void, (GLenum map, GLfloat *values), (map,values), 271, -1, 8) \
X(glGetPixelMapuiv, void, (GLenum map, GLuint *values), (map,values), 272, -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(glGetPixelMapusv, void, (GLenum map, GLushort *values), (map,values), 273, -1, 8) \
X(glGetPointerv, void, (GLenum pname, GLvoid* *params), (pname,params), 329, 160, 8) \ X(glGetPointerv, void, (GLenum pname, GLvoid* *params), (pname,params), 329, 160, 8) \
X(glGetPolygonStipple, void, (GLubyte *mask), (mask), 274, -1, 4) \ X(glGetPolygonStipple, void, (GLubyte *mask), (mask), 274, -1, 4) \
X(glGetString, const GLubyte *, (GLenum name), (name), 275, -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(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(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(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(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(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(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(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(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(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(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(glHint, void, (GLenum target, GLenum mode), (target,mode), 158, -1, 8) \
X(glIndexMask, void, (GLuint mask), (mask), 212, -1, 4) \ 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(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(glIndexd, void, (GLdouble c), (c), 44, 38, 8) \
X(glIndexdv, void, (const GLdouble *c), (c), 45, 39, 4) \ X(glIndexdv, void, (const GLdouble *c), (c), 45, 39, 4) \
X(glIndexf, void, (GLfloat c), (c), 46, 40, 4) \ X(glIndexf, void, (GLfloat c), (c), 46, 40, 4) \
X(glIndexfv, void, (const GLfloat *c), (c), 47, 41, 4) \ X(glIndexfv, void, (const GLfloat *c), (c), 47, 41, 4) \
X(glIndexi, void, (GLint c), (c), 48, 42, 4) \ X(glIndexi, void, (GLint c), (c), 48, 42, 4) \
X(glIndexiv, void, (const GLint *c), (c), 49, 43, 4) \ X(glIndexiv, void, (const GLint *c), (c), 49, 43, 4) \
X(glIndexs, void, (GLshort c), (c), 50, 44, 4) \ X(glIndexs, void, (GLshort c), (c), 50, 44, 4) \
X(glIndexsv, void, (const GLshort *c), (c), 51, 45, 4) \ X(glIndexsv, void, (const GLshort *c), (c), 51, 45, 4) \
X(glIndexub, void, (GLubyte c), (c), 315, 153, 4) \ X(glIndexub, void, (GLubyte c), (c), 315, 153, 4) \
X(glIndexubv, void, (const GLubyte *c), (c), 316, 154, 4) \ X(glIndexubv, void, (const GLubyte *c), (c), 316, 154, 4) \
X(glInitNames, void, (void), (), 197, -1, 0) \ X(glInitNames, void, (void), (), 197, -1, 0) \
X(glInterleavedArrays, void, (GLenum format, GLsizei stride, const GLvoid *pointer), (format,stride,pointer), 317, 155, 12) \ 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(glIsEnabled, GLboolean, (GLenum cap), (cap), 286, -1, 4) \
X(glIsList, GLboolean, (GLuint list), (list), 287, -1, 4) \ X(glIsList, GLboolean, (GLuint list), (list), 287, -1, 4) \
X(glIsTexture, GLboolean, (GLuint texture), (texture), 330, -1, 4) \ X(glIsTexture, GLboolean, (GLuint texture), (texture), 330, -1, 4) \
X(glLightModelf, void, (GLenum pname, GLfloat param), (pname,param), 163, -1, 8) \ 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(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(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(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(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(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(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(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(glLineStipple, void, (GLint factor, GLushort pattern), (factor,pattern), 167, -1, 8) \
X(glLineWidth, void, (GLfloat width), (width), 168, -1, 4) \ X(glLineWidth, void, (GLfloat width), (width), 168, -1, 4) \
X(glListBase, void, (GLuint base), (base), 6, -1, 4) \ X(glListBase, void, (GLuint base), (base), 6, -1, 4) \
X(glLoadIdentity, void, (void), (), 290, 130, 0) \ X(glLoadIdentity, void, (void), (), 290, 130, 0) \
X(glLoadMatrixd, void, (const GLdouble *m), (m), 292, 132, 4) \ X(glLoadMatrixd, void, (const GLdouble *m), (m), 292, 132, 4) \
X(glLoadMatrixf, void, (const GLfloat *m), (m), 291, 131, 4) \ X(glLoadMatrixf, void, (const GLfloat *m), (m), 291, 131, 4) \
X(glLoadName, void, (GLuint name), (name), 198, -1, 4) \ X(glLoadName, void, (GLuint name), (name), 198, -1, 4) \
X(glLogicOp, void, (GLenum opcode), (opcode), 242, -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(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(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(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(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(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(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(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(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(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(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(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(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(glMatrixMode, void, (GLenum mode), (mode), 293, 133, 4) \
X(glMultMatrixd, void, (const GLdouble *m), (m), 295, 135, 4) \ X(glMultMatrixd, void, (const GLdouble *m), (m), 295, 135, 4) \
X(glMultMatrixf, void, (const GLfloat *m), (m), 294, 134, 4) \ X(glMultMatrixf, void, (const GLfloat *m), (m), 294, 134, 4) \
X(glNewList, void, (GLuint list, GLenum mode), (list,mode), 0, -1, 8) \ 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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(glPixelStoref, void, (GLenum pname, GLfloat param), (pname,param), 249, -1, 8) \
X(glPixelStorei, void, (GLenum pname, GLint param), (pname,param), 250, -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(glPixelTransferf, void, (GLenum pname, GLfloat param), (pname,param), 247, -1, 8) \
X(glPixelTransferi, void, (GLenum pname, GLint param), (pname,param), 248, -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(glPixelZoom, void, (GLfloat xfactor, GLfloat yfactor), (xfactor,yfactor), 246, -1, 8) \
X(glPointSize, void, (GLfloat size), (size), 173, -1, 4) \ X(glPointSize, void, (GLfloat size), (size), 173, -1, 4) \
X(glPolygonMode, void, (GLenum face, GLenum mode), (face,mode), 174, -1, 8) \ 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(glPolygonOffset, void, (GLfloat factor, GLfloat units), (factor,units), 319, 157, 8) \
X(glPolygonStipple, void, (const GLubyte *mask), (mask), 175, -1, 4) \ X(glPolygonStipple, void, (const GLubyte *mask), (mask), 175, -1, 4) \
X(glPopAttrib, void, (void), (), 218, 118, 0) \ X(glPopAttrib, void, (void), (), 218, 118, 0) \
X(glPopClientAttrib, void, (void), (), 334, 161, 0) \ X(glPopClientAttrib, void, (void), (), 334, 161, 0) \
X(glPopMatrix, void, (void), (), 297, 136, 0) \ X(glPopMatrix, void, (void), (), 297, 136, 0) \
X(glPopName, void, (void), (), 200, -1, 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(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(glPushAttrib, void, (GLbitfield mask), (mask), 219, 119, 4) \
X(glPushClientAttrib, void, (GLbitfield mask), (mask), 335, 162, 4) \ X(glPushClientAttrib, void, (GLbitfield mask), (mask), 335, 162, 4) \
X(glPushMatrix, void, (void), (), 298, 137, 0) \ X(glPushMatrix, void, (void), (), 298, 137, 0) \
X(glPushName, void, (GLuint name), (name), 201, -1, 4) \ X(glPushName, void, (GLuint name), (name), 201, -1, 4) \
X(glRasterPos2d, void, (GLdouble x, GLdouble y), (x,y), 62, -1, 16) \ X(glRasterPos2d, void, (GLdouble x, GLdouble y), (x,y), 62, -1, 16) \
X(glRasterPos2dv, void, (const GLdouble *v), (v), 63, -1, 4) \ X(glRasterPos2dv, void, (const GLdouble *v), (v), 63, -1, 4) \
X(glRasterPos2f, void, (GLfloat x, GLfloat y), (x,y), 64, -1, 8) \ X(glRasterPos2f, void, (GLfloat x, GLfloat y), (x,y), 64, -1, 8) \
X(glRasterPos2fv, void, (const GLfloat *v), (v), 65, -1, 4) \ X(glRasterPos2fv, void, (const GLfloat *v), (v), 65, -1, 4) \
X(glRasterPos2i, void, (GLint x, GLint y), (x,y), 66, -1, 8) \ X(glRasterPos2i, void, (GLint x, GLint y), (x,y), 66, -1, 8) \
X(glRasterPos2iv, void, (const GLint *v), (v), 67, -1, 4) \ X(glRasterPos2iv, void, (const GLint *v), (v), 67, -1, 4) \
X(glRasterPos2s, void, (GLshort x, GLshort y), (x,y), 68, -1, 8) \ X(glRasterPos2s, void, (GLshort x, GLshort y), (x,y), 68, -1, 8) \
X(glRasterPos2sv, void, (const GLshort *v), (v), 69, -1, 4) \ 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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(glRasterPos4sv, void, (const GLshort *v), (v), 85, -1, 4) \
X(glReadBuffer, void, (GLenum mode), (mode), 254, -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(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(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(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(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(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(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(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(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(glRectsv, void, (const GLshort *v1, const GLshort *v2), (v1,v2), 93, -1, 8) \
X(glRenderMode, GLint, (GLenum mode), (mode), 196, -1, 4) \ 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(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(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(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(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(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(glSelectBuffer, void, (GLsizei size, GLuint *buffer), (size,buffer), 195, -1, 8) \
X(glShadeModel, void, (GLenum mode), (mode), 177, -1, 4) \ 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(glStencilFunc, void, (GLenum func, GLint ref, GLuint mask), (func,ref,mask), 243, -1, 12) \
X(glStencilMask, void, (GLuint mask), (mask), 209, -1, 4) \ 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(glStencilOp, void, (GLenum fail, GLenum zfail, GLenum zpass), (fail,zfail,zpass), 244, -1, 12) \
X(glTexCoord1d, void, (GLdouble s), (s), 94, 56, 8) \ X(glTexCoord1d, void, (GLdouble s), (s), 94, 56, 8) \
X(glTexCoord1dv, void, (const GLdouble *v), (v), 95, 57, 4) \ X(glTexCoord1dv, void, (const GLdouble *v), (v), 95, 57, 4) \
X(glTexCoord1f, void, (GLfloat s), (s), 96, 58, 4) \ X(glTexCoord1f, void, (GLfloat s), (s), 96, 58, 4) \
X(glTexCoord1fv, void, (const GLfloat *v), (v), 97, 59, 4) \ X(glTexCoord1fv, void, (const GLfloat *v), (v), 97, 59, 4) \
X(glTexCoord1i, void, (GLint s), (s), 98, 60, 4) \ X(glTexCoord1i, void, (GLint s), (s), 98, 60, 4) \
X(glTexCoord1iv, void, (const GLint *v), (v), 99, 61, 4) \ X(glTexCoord1iv, void, (const GLint *v), (v), 99, 61, 4) \
X(glTexCoord1s, void, (GLshort s), (s), 100, 62, 4) \ X(glTexCoord1s, void, (GLshort s), (s), 100, 62, 4) \
X(glTexCoord1sv, void, (const GLshort *v), (v), 101, 63, 4) \ X(glTexCoord1sv, void, (const GLshort *v), (v), 101, 63, 4) \
X(glTexCoord2d, void, (GLdouble s, GLdouble t), (s,t), 102, 64, 16) \ X(glTexCoord2d, void, (GLdouble s, GLdouble t), (s,t), 102, 64, 16) \
X(glTexCoord2dv, void, (const GLdouble *v), (v), 103, 65, 4) \ X(glTexCoord2dv, void, (const GLdouble *v), (v), 103, 65, 4) \
X(glTexCoord2f, void, (GLfloat s, GLfloat t), (s,t), 104, 66, 8) \ X(glTexCoord2f, void, (GLfloat s, GLfloat t), (s,t), 104, 66, 8) \
X(glTexCoord2fv, void, (const GLfloat *v), (v), 105, 67, 4) \ X(glTexCoord2fv, void, (const GLfloat *v), (v), 105, 67, 4) \
X(glTexCoord2i, void, (GLint s, GLint t), (s,t), 106, 68, 8) \ X(glTexCoord2i, void, (GLint s, GLint t), (s,t), 106, 68, 8) \
X(glTexCoord2iv, void, (const GLint *v), (v), 107, 69, 4) \ X(glTexCoord2iv, void, (const GLint *v), (v), 107, 69, 4) \
X(glTexCoord2s, void, (GLshort s, GLshort t), (s,t), 108, 70, 8) \ X(glTexCoord2s, void, (GLshort s, GLshort t), (s,t), 108, 70, 8) \
X(glTexCoord2sv, void, (const GLshort *v), (v), 109, 71, 4) \ 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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(glVertex2d, void, (GLdouble x, GLdouble y), (x,y), 126, 88, 16) \
X(glVertex2dv, void, (const GLdouble *v), (v), 127, 89, 4) \ X(glVertex2dv, void, (const GLdouble *v), (v), 127, 89, 4) \
X(glVertex2f, void, (GLfloat x, GLfloat y), (x,y), 128, 90, 8) \ X(glVertex2f, void, (GLfloat x, GLfloat y), (x,y), 128, 90, 8) \
X(glVertex2fv, void, (const GLfloat *v), (v), 129, 91, 4) \ X(glVertex2fv, void, (const GLfloat *v), (v), 129, 91, 4) \
X(glVertex2i, void, (GLint x, GLint y), (x,y), 130, 92, 8) \ X(glVertex2i, void, (GLint x, GLint y), (x,y), 130, 92, 8) \
X(glVertex2iv, void, (const GLint *v), (v), 131, 93, 4) \ X(glVertex2iv, void, (const GLint *v), (v), 131, 93, 4) \
X(glVertex2s, void, (GLshort x, GLshort y), (x,y), 132, 94, 8) \ X(glVertex2s, void, (GLshort x, GLshort y), (x,y), 132, 94, 8) \
X(glVertex2sv, void, (const GLshort *v), (v), 133, 95, 4) \ 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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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) \ X(glViewport, void, (GLint x, GLint y, GLsizei width, GLsizei height), (x,y,width,height), 305, -1, 16) \
/* EOF */ /* EOF */

View file

@ -5,17 +5,17 @@
enum icdoffsets_e enum icdoffsets_e
{ {
ICDIDX_INVALID = -1, ICDIDX_INVALID = -1,
#define ICD_ENTRY(x) ICDIDX_##x, #define ICD_ENTRY(x) ICDIDX_##x,
#include "icdlist.h" #include "icdlist.h"
#undef ICD_ENTRY #undef ICD_ENTRY
ICDIDX_COUNT ICDIDX_COUNT
}; };
typedef struct tagICDTable typedef struct tagICDTable
{ {
DWORD num_funcs; /*!< Normally 336 (0x150) -- the number of functions in OpenGL 1.1 */ DWORD num_funcs; /*!< Normally 336 (0x150) -- the number of functions in OpenGL 1.1 */
PROC dispatch_table[812]; /*!< Table containing \a num_funcs pointers to OpenGL functions */ PROC dispatch_table[812]; /*!< Table containing \a num_funcs pointers to OpenGL functions */
} ICDTable, *PICDTable; } ICDTable, *PICDTable;
#endif /* OPENGL32_PRIVATE_ICDTABLE_H */ #endif /* OPENGL32_PRIVATE_ICDTABLE_H */

View file

@ -28,200 +28,200 @@ GLPROCESSDATA OPENGL32_processdata;
static BOOL static BOOL
OPENGL32_ThreadAttach() OPENGL32_ThreadAttach()
{ {
GLTHREADDATA* lpData = NULL; GLTHREADDATA* lpData = NULL;
PROC *dispatchTable = NULL; PROC *dispatchTable = NULL;
TEB *teb = NULL; TEB *teb = NULL;
dispatchTable = (PROC*)HeapAlloc( GetProcessHeap(), dispatchTable = (PROC*)HeapAlloc( GetProcessHeap(),
HEAP_GENERATE_EXCEPTIONS | HEAP_ZERO_MEMORY, HEAP_GENERATE_EXCEPTIONS | HEAP_ZERO_MEMORY,
sizeof (((ICDTable *)(0))->dispatch_table) ); sizeof (((ICDTable *)(0))->dispatch_table) );
if (dispatchTable == NULL) if (dispatchTable == NULL)
{ {
DBGPRINT( "Error: Couldn't allocate GL dispatch table" ); DBGPRINT( "Error: Couldn't allocate GL dispatch table" );
return FALSE; return FALSE;
} }
lpData = (GLTHREADDATA*)HeapAlloc( GetProcessHeap(), lpData = (GLTHREADDATA*)HeapAlloc( GetProcessHeap(),
HEAP_GENERATE_EXCEPTIONS | HEAP_ZERO_MEMORY, HEAP_GENERATE_EXCEPTIONS | HEAP_ZERO_MEMORY,
sizeof (GLTHREADDATA) ); sizeof (GLTHREADDATA) );
if (lpData == NULL) if (lpData == NULL)
{ {
DBGPRINT( "Error: Couldn't allocate GLTHREADDATA" ); DBGPRINT( "Error: Couldn't allocate GLTHREADDATA" );
HeapFree( GetProcessHeap(), 0, dispatchTable ); HeapFree( GetProcessHeap(), 0, dispatchTable );
return FALSE; return FALSE;
} }
teb = NtCurrentTeb(); teb = NtCurrentTeb();
/* initialize dispatch table with empty functions */ /* initialize dispatch table with empty functions */
#define X(func, ret, typeargs, args, icdidx, tebidx, stack) \ #define X(func, ret, typeargs, args, icdidx, tebidx, stack) \
dispatchTable[icdidx] = (PROC)glEmptyFunc##stack; \ dispatchTable[icdidx] = (PROC)glEmptyFunc##stack; \
if (tebidx >= 0) \ if (tebidx >= 0) \
teb->glDispatchTable[tebidx] = (PVOID)glEmptyFunc##stack; teb->glDispatchTable[tebidx] = (PVOID)glEmptyFunc##stack;
GLFUNCS_MACRO GLFUNCS_MACRO
#undef X #undef X
teb->glTable = dispatchTable; teb->glTable = dispatchTable;
TlsSetValue( OPENGL32_tls, lpData ); TlsSetValue( OPENGL32_tls, lpData );
return TRUE; return TRUE;
} }
static void static void
OPENGL32_ThreadDetach() OPENGL32_ThreadDetach()
{ {
GLTHREADDATA* lpData = NULL; GLTHREADDATA* lpData = NULL;
PROC *dispatchTable = NULL; PROC *dispatchTable = NULL;
rosglMakeCurrent( NULL, NULL ); rosglMakeCurrent( NULL, NULL );
lpData = (GLTHREADDATA*)TlsGetValue( OPENGL32_tls ); lpData = (GLTHREADDATA*)TlsGetValue( OPENGL32_tls );
if (lpData != NULL) if (lpData != NULL)
{ {
if (!HeapFree( GetProcessHeap(), 0, lpData )) if (!HeapFree( GetProcessHeap(), 0, lpData ))
DBGPRINT( "Warning: HeapFree() on GLTHREADDATA failed (%d)", DBGPRINT( "Warning: HeapFree() on GLTHREADDATA failed (%d)",
GetLastError() ); GetLastError() );
lpData = NULL; lpData = NULL;
} }
dispatchTable = NtCurrentTeb()->glTable; dispatchTable = NtCurrentTeb()->glTable;
if (dispatchTable != NULL) if (dispatchTable != NULL)
{ {
if (!HeapFree( GetProcessHeap(), 0, dispatchTable )) if (!HeapFree( GetProcessHeap(), 0, dispatchTable ))
DBGPRINT( "Warning: HeapFree() on dispatch table failed (%d)", DBGPRINT( "Warning: HeapFree() on dispatch table failed (%d)",
GetLastError() ); GetLastError() );
} }
} }
static BOOL static BOOL
OPENGL32_ProcessAttach() OPENGL32_ProcessAttach()
{ {
SECURITY_ATTRIBUTES attrib = { sizeof (SECURITY_ATTRIBUTES), /* nLength */ SECURITY_ATTRIBUTES attrib = { sizeof (SECURITY_ATTRIBUTES), /* nLength */
NULL, /* lpSecurityDescriptor */ NULL, /* lpSecurityDescriptor */
TRUE /* bInheritHandle */ }; TRUE /* bInheritHandle */ };
OPENGL32_tls = TlsAlloc(); OPENGL32_tls = TlsAlloc();
if (-1U == OPENGL32_tls) if (-1U == OPENGL32_tls)
return FALSE; return FALSE;
memset( &OPENGL32_processdata, 0, sizeof (OPENGL32_processdata) ); memset( &OPENGL32_processdata, 0, sizeof (OPENGL32_processdata) );
/* create driver, glrc & dcdata list mutex */ /* create driver, glrc & dcdata list mutex */
OPENGL32_processdata.driver_mutex = CreateMutex( &attrib, FALSE, NULL ); OPENGL32_processdata.driver_mutex = CreateMutex( &attrib, FALSE, NULL );
if (OPENGL32_processdata.driver_mutex == NULL) if (OPENGL32_processdata.driver_mutex == NULL)
{ {
DBGPRINT( "Error: Couldn't create driver_list mutex (%d)", DBGPRINT( "Error: Couldn't create driver_list mutex (%d)",
GetLastError() ); GetLastError() );
return FALSE; return FALSE;
} }
OPENGL32_processdata.glrc_mutex = CreateMutex( &attrib, FALSE, NULL ); OPENGL32_processdata.glrc_mutex = CreateMutex( &attrib, FALSE, NULL );
if (OPENGL32_processdata.glrc_mutex == NULL) if (OPENGL32_processdata.glrc_mutex == NULL)
{ {
DBGPRINT( "Error: Couldn't create glrc_list mutex (%d)", DBGPRINT( "Error: Couldn't create glrc_list mutex (%d)",
GetLastError() ); GetLastError() );
return FALSE; return FALSE;
} }
OPENGL32_processdata.dcdata_mutex = CreateMutex( &attrib, FALSE, NULL ); OPENGL32_processdata.dcdata_mutex = CreateMutex( &attrib, FALSE, NULL );
if (OPENGL32_processdata.dcdata_mutex == NULL) if (OPENGL32_processdata.dcdata_mutex == NULL)
{ {
DBGPRINT( "Error: Couldn't create dcdata_list mutex (%d)", DBGPRINT( "Error: Couldn't create dcdata_list mutex (%d)",
GetLastError() ); GetLastError() );
return FALSE; return FALSE;
} }
return TRUE; return TRUE;
} }
static void static void
OPENGL32_ProcessDetach() OPENGL32_ProcessDetach()
{ {
GLDRIVERDATA *icd, *icd2; GLDRIVERDATA *icd, *icd2;
GLDCDATA *dcdata, *dcdata2; GLDCDATA *dcdata, *dcdata2;
GLRC *glrc, *glrc2; GLRC *glrc, *glrc2;
/* free lists */ /* free lists */
for (dcdata = OPENGL32_processdata.dcdata_list; dcdata != NULL;) for (dcdata = OPENGL32_processdata.dcdata_list; dcdata != NULL;)
{ {
dcdata2 = dcdata; dcdata2 = dcdata;
dcdata = dcdata->next; dcdata = dcdata->next;
if (!HeapFree( GetProcessHeap(), 0, dcdata2 )) if (!HeapFree( GetProcessHeap(), 0, dcdata2 ))
DBGPRINT( "Warning: HeapFree() on DCDATA 0x%08x failed (%d)", DBGPRINT( "Warning: HeapFree() on DCDATA 0x%08x failed (%d)",
dcdata2, GetLastError() ); dcdata2, GetLastError() );
} }
for (glrc = OPENGL32_processdata.glrc_list; glrc != NULL;) for (glrc = OPENGL32_processdata.glrc_list; glrc != NULL;)
{ {
glrc2 = glrc; glrc2 = glrc;
glrc = glrc->next; glrc = glrc->next;
if (!HeapFree( GetProcessHeap(), 0, glrc2 )) if (!HeapFree( GetProcessHeap(), 0, glrc2 ))
DBGPRINT( "Warning: HeapFree() on GLRC 0x%08x failed (%d)", DBGPRINT( "Warning: HeapFree() on GLRC 0x%08x failed (%d)",
glrc2, GetLastError() ); glrc2, GetLastError() );
} }
for (icd = OPENGL32_processdata.driver_list; icd != NULL;) for (icd = OPENGL32_processdata.driver_list; icd != NULL;)
{ {
icd2 = icd; icd2 = icd;
icd = icd->next; icd = icd->next;
if (!HeapFree( GetProcessHeap(), 0, icd2 )) if (!HeapFree( GetProcessHeap(), 0, icd2 ))
DBGPRINT( "Warning: HeapFree() on DRIVERDATA 0x%08x failed (%d)", DBGPRINT( "Warning: HeapFree() on DRIVERDATA 0x%08x failed (%d)",
icd2, GetLastError() ); icd2, GetLastError() );
} }
/* free mutexes */ /* free mutexes */
if (OPENGL32_processdata.driver_mutex != NULL) if (OPENGL32_processdata.driver_mutex != NULL)
CloseHandle( OPENGL32_processdata.driver_mutex ); CloseHandle( OPENGL32_processdata.driver_mutex );
if (OPENGL32_processdata.glrc_mutex != NULL) if (OPENGL32_processdata.glrc_mutex != NULL)
CloseHandle( OPENGL32_processdata.glrc_mutex ); CloseHandle( OPENGL32_processdata.glrc_mutex );
if (OPENGL32_processdata.dcdata_mutex != NULL) if (OPENGL32_processdata.dcdata_mutex != NULL)
CloseHandle( OPENGL32_processdata.dcdata_mutex ); CloseHandle( OPENGL32_processdata.dcdata_mutex );
/* free TLS */ /* free TLS */
if (OPENGL32_tls != -1U) if (OPENGL32_tls != -1U)
TlsFree(OPENGL32_tls); TlsFree(OPENGL32_tls);
} }
BOOL WINAPI BOOL WINAPI
DllMain(HINSTANCE hInstance, DWORD Reason, LPVOID Reserved) DllMain(HINSTANCE hInstance, DWORD Reason, LPVOID Reserved)
{ {
DBGPRINT( "Info: Called!" ); DBGPRINT( "Info: Called!" );
switch ( Reason ) switch ( Reason )
{ {
/* The DLL is loading due to process /* The DLL is loading due to process
* initialization or a call to LoadLibrary. * initialization or a call to LoadLibrary.
*/ */
case DLL_PROCESS_ATTACH: case DLL_PROCESS_ATTACH:
DBGTRACE( "Process attach" ); DBGTRACE( "Process attach" );
if (!OPENGL32_ProcessAttach()) if (!OPENGL32_ProcessAttach())
return FALSE; return FALSE;
/* No break: Initialize the index for first thread. */ /* No break: Initialize the index for first thread. */
/* The attached process creates a new thread. */ /* The attached process creates a new thread. */
case DLL_THREAD_ATTACH: case DLL_THREAD_ATTACH:
DBGTRACE( "Thread attach" ); DBGTRACE( "Thread attach" );
if (!OPENGL32_ThreadAttach()) if (!OPENGL32_ThreadAttach())
return FALSE; return FALSE;
break; break;
/* The thread of the attached process terminates. */ /* The thread of the attached process terminates. */
case DLL_THREAD_DETACH: case DLL_THREAD_DETACH:
DBGTRACE( "Thread detach" ); DBGTRACE( "Thread detach" );
/* Release the allocated memory for this thread.*/ /* Release the allocated memory for this thread.*/
OPENGL32_ThreadDetach(); OPENGL32_ThreadDetach();
break; break;
/* DLL unload due to process termination or FreeLibrary. */ /* DLL unload due to process termination or FreeLibrary. */
case DLL_PROCESS_DETACH: case DLL_PROCESS_DETACH:
DBGTRACE( "Process detach" ); DBGTRACE( "Process detach" );
OPENGL32_ThreadDetach(); OPENGL32_ThreadDetach();
OPENGL32_ProcessDetach(); OPENGL32_ProcessDetach();
break; break;
} }
return TRUE; return TRUE;
} }
@ -234,15 +234,15 @@ DllMain(HINSTANCE hInstance, DWORD Reason, LPVOID Reserved)
static void static void
OPENGL32_AppendICD( GLDRIVERDATA *icd ) OPENGL32_AppendICD( GLDRIVERDATA *icd )
{ {
if (OPENGL32_processdata.driver_list == NULL) if (OPENGL32_processdata.driver_list == NULL)
OPENGL32_processdata.driver_list = icd; OPENGL32_processdata.driver_list = icd;
else else
{ {
GLDRIVERDATA *p = OPENGL32_processdata.driver_list; GLDRIVERDATA *p = OPENGL32_processdata.driver_list;
while (p->next != NULL) while (p->next != NULL)
p = p->next; p = p->next;
p->next = icd; p->next = icd;
} }
} }
@ -255,22 +255,22 @@ OPENGL32_AppendICD( GLDRIVERDATA *icd )
static void static void
OPENGL32_RemoveICD( GLDRIVERDATA *icd ) OPENGL32_RemoveICD( GLDRIVERDATA *icd )
{ {
if (icd == OPENGL32_processdata.driver_list) if (icd == OPENGL32_processdata.driver_list)
OPENGL32_processdata.driver_list = icd->next; OPENGL32_processdata.driver_list = icd->next;
else else
{ {
GLDRIVERDATA *p = OPENGL32_processdata.driver_list; GLDRIVERDATA *p = OPENGL32_processdata.driver_list;
while (p != NULL) while (p != NULL)
{ {
if (p->next == icd) if (p->next == icd)
{ {
p->next = icd->next; p->next = icd->next;
return; return;
} }
p = p->next; p = p->next;
} }
DBGPRINT( "Error: ICD 0x%08x not found in list!", icd ); DBGPRINT( "Error: ICD 0x%08x not found in list!", icd );
} }
} }
@ -286,52 +286,52 @@ OPENGL32_RemoveICD( GLDRIVERDATA *icd )
static GLDRIVERDATA * static GLDRIVERDATA *
OPENGL32_LoadDriver( LPCWSTR driver ) OPENGL32_LoadDriver( LPCWSTR driver )
{ {
LONG ret; LONG ret;
GLDRIVERDATA *icd; GLDRIVERDATA *icd;
DBGPRINT( "Info: Loading driver %ws...", driver ); DBGPRINT( "Info: Loading driver %ws...", driver );
/* allocate driver data */ /* allocate driver data */
icd = (GLDRIVERDATA*)HeapAlloc( GetProcessHeap(), icd = (GLDRIVERDATA*)HeapAlloc( GetProcessHeap(),
HEAP_GENERATE_EXCEPTIONS | HEAP_ZERO_MEMORY, HEAP_GENERATE_EXCEPTIONS | HEAP_ZERO_MEMORY,
sizeof (GLDRIVERDATA) ); sizeof (GLDRIVERDATA) );
if (icd == NULL) if (icd == NULL)
{ {
DBGPRINT( "Error: Couldn't allocate GLDRIVERDATA! (%d)", GetLastError() ); DBGPRINT( "Error: Couldn't allocate GLDRIVERDATA! (%d)", GetLastError() );
return NULL; return NULL;
} }
ret = OPENGL32_RegGetDriverInfo( driver, icd ); ret = OPENGL32_RegGetDriverInfo( driver, icd );
if (ret != ERROR_SUCCESS) if (ret != ERROR_SUCCESS)
{ {
DBGPRINT( "Error: Couldn't query driver information (%d)", ret ); DBGPRINT( "Error: Couldn't query driver information (%d)", ret );
if (!HeapFree( GetProcessHeap(), 0, icd )) if (!HeapFree( GetProcessHeap(), 0, icd ))
DBGPRINT( "Error: HeapFree() returned false, error code = %d", DBGPRINT( "Error: HeapFree() returned false, error code = %d",
GetLastError() ); GetLastError() );
return NULL; return NULL;
} }
DBGPRINT( "Info: Dll = %ws", icd->dll ); DBGPRINT( "Info: Dll = %ws", icd->dll );
DBGPRINT( "Info: Version = 0x%08x", icd->version ); DBGPRINT( "Info: Version = 0x%08x", icd->version );
DBGPRINT( "Info: DriverVersion = 0x%08x", icd->driver_version ); DBGPRINT( "Info: DriverVersion = 0x%08x", icd->driver_version );
DBGPRINT( "Info: Flags = 0x%08x", icd->flags ); DBGPRINT( "Info: Flags = 0x%08x", icd->flags );
/* load/initialize ICD */ /* load/initialize ICD */
ret = OPENGL32_InitializeDriver( icd ); ret = OPENGL32_InitializeDriver( icd );
if (ret != ERROR_SUCCESS) if (ret != ERROR_SUCCESS)
{ {
DBGPRINT( "Error: Couldnt initialize ICD!" ); DBGPRINT( "Error: Couldnt initialize ICD!" );
if (!HeapFree( GetProcessHeap(), 0, icd )) if (!HeapFree( GetProcessHeap(), 0, icd ))
DBGPRINT( "Error: HeapFree() returned false, error code = %d", DBGPRINT( "Error: HeapFree() returned false, error code = %d",
GetLastError() ); GetLastError() );
return NULL; return NULL;
} }
/* append ICD to list */ /* append ICD to list */
OPENGL32_AppendICD( icd ); OPENGL32_AppendICD( icd );
DBGPRINT( "Info: ICD loaded." ); DBGPRINT( "Info: ICD loaded." );
return icd; return icd;
} }
@ -343,74 +343,74 @@ OPENGL32_LoadDriver( LPCWSTR driver )
* \retval ERROR_SUCCESS Success * \retval ERROR_SUCCESS Success
*/ */
#define LOAD_DRV_PROC( icd, proc, required ) \ #define LOAD_DRV_PROC( icd, proc, required ) \
*(char**)&icd->proc = (char*)GetProcAddress( icd->handle, #proc ); \ *(char**)&icd->proc = (char*)GetProcAddress( icd->handle, #proc ); \
if (required && icd->proc == NULL) { \ if (required && icd->proc == NULL) { \
DBGPRINT( "Error: GetProcAddress(\"%s\") failed!", #proc ); \ DBGPRINT( "Error: GetProcAddress(\"%s\") failed!", #proc ); \
FreeLibrary( icd->handle ); \ FreeLibrary( icd->handle ); \
return GetLastError(); \ return GetLastError(); \
} }
static DWORD static DWORD
OPENGL32_InitializeDriver( GLDRIVERDATA *icd ) OPENGL32_InitializeDriver( GLDRIVERDATA *icd )
{ {
/* check version */ /* check version */
if (icd->version > 2) if (icd->version > 2)
DBGPRINT( "Warning: ICD version > 2 (%d)", icd->version ); DBGPRINT( "Warning: ICD version > 2 (%d)", icd->version );
/* load dll */ /* load dll */
icd->handle = LoadLibraryW( icd->dll ); icd->handle = LoadLibraryW( icd->dll );
if (icd->handle == NULL) if (icd->handle == NULL)
{ {
DWORD err = GetLastError(); DWORD err = GetLastError();
DBGPRINT( "Error: Couldn't load DLL! (%d)", err ); DBGPRINT( "Error: Couldn't load DLL! (%d)", err );
return err; return err;
} }
/* validate version */ /* validate version */
if (icd->driver_version > 1) if (icd->driver_version > 1)
{ {
LOAD_DRV_PROC(icd, DrvValidateVersion, FALSE); LOAD_DRV_PROC(icd, DrvValidateVersion, FALSE);
if (icd->DrvValidateVersion != NULL) if (icd->DrvValidateVersion != NULL)
{ {
if (!icd->DrvValidateVersion( icd->driver_version )) if (!icd->DrvValidateVersion( icd->driver_version ))
{ {
DBGPRINT( "Error: DrvValidateVersion failed!" ); DBGPRINT( "Error: DrvValidateVersion failed!" );
DBGBREAK(); DBGBREAK();
FreeLibrary( icd->handle ); FreeLibrary( icd->handle );
return ERROR_INVALID_FUNCTION; /* FIXME: use better error code */ return ERROR_INVALID_FUNCTION; /* FIXME: use better error code */
} }
} }
else else
DBGPRINT( "Info: DrvValidateVersion not exported by ICD" ); DBGPRINT( "Info: DrvValidateVersion not exported by ICD" );
} }
/* load DrvXXX procs */ /* load DrvXXX procs */
LOAD_DRV_PROC(icd, DrvCopyContext, TRUE); LOAD_DRV_PROC(icd, DrvCopyContext, TRUE);
LOAD_DRV_PROC(icd, DrvCreateContext, FALSE); LOAD_DRV_PROC(icd, DrvCreateContext, FALSE);
LOAD_DRV_PROC(icd, DrvCreateLayerContext, FALSE); LOAD_DRV_PROC(icd, DrvCreateLayerContext, FALSE);
LOAD_DRV_PROC(icd, DrvDeleteContext, TRUE); LOAD_DRV_PROC(icd, DrvDeleteContext, TRUE);
LOAD_DRV_PROC(icd, DrvDescribeLayerPlane, TRUE); LOAD_DRV_PROC(icd, DrvDescribeLayerPlane, TRUE);
LOAD_DRV_PROC(icd, DrvDescribePixelFormat, TRUE); LOAD_DRV_PROC(icd, DrvDescribePixelFormat, TRUE);
LOAD_DRV_PROC(icd, DrvGetLayerPaletteEntries, TRUE); LOAD_DRV_PROC(icd, DrvGetLayerPaletteEntries, TRUE);
LOAD_DRV_PROC(icd, DrvGetProcAddress, TRUE); LOAD_DRV_PROC(icd, DrvGetProcAddress, TRUE);
LOAD_DRV_PROC(icd, DrvReleaseContext, TRUE); LOAD_DRV_PROC(icd, DrvReleaseContext, TRUE);
LOAD_DRV_PROC(icd, DrvRealizeLayerPalette, TRUE); LOAD_DRV_PROC(icd, DrvRealizeLayerPalette, TRUE);
LOAD_DRV_PROC(icd, DrvSetContext, TRUE); LOAD_DRV_PROC(icd, DrvSetContext, TRUE);
LOAD_DRV_PROC(icd, DrvSetLayerPaletteEntries, TRUE); LOAD_DRV_PROC(icd, DrvSetLayerPaletteEntries, TRUE);
LOAD_DRV_PROC(icd, DrvSetPixelFormat, TRUE); LOAD_DRV_PROC(icd, DrvSetPixelFormat, TRUE);
LOAD_DRV_PROC(icd, DrvShareLists, TRUE); LOAD_DRV_PROC(icd, DrvShareLists, TRUE);
LOAD_DRV_PROC(icd, DrvSwapBuffers, TRUE); LOAD_DRV_PROC(icd, DrvSwapBuffers, TRUE);
LOAD_DRV_PROC(icd, DrvSwapLayerBuffers, TRUE); LOAD_DRV_PROC(icd, DrvSwapLayerBuffers, TRUE);
/* we require at least one of DrvCreateContext and DrvCreateLayerContext */ /* we require at least one of DrvCreateContext and DrvCreateLayerContext */
if (icd->DrvCreateContext == NULL && icd->DrvCreateLayerContext == NULL) if (icd->DrvCreateContext == NULL && icd->DrvCreateLayerContext == NULL)
{ {
DBGPRINT( "Error: One of DrvCreateContext/DrvCreateLayerContext is required!" ); DBGPRINT( "Error: One of DrvCreateContext/DrvCreateLayerContext is required!" );
FreeLibrary( icd->handle ); FreeLibrary( icd->handle );
return ERROR_INVALID_FUNCTION; /* FIXME: use better error code... */ return ERROR_INVALID_FUNCTION; /* FIXME: use better error code... */
} }
return ERROR_SUCCESS; return ERROR_SUCCESS;
} }
@ -422,30 +422,30 @@ OPENGL32_InitializeDriver( GLDRIVERDATA *icd )
static BOOL static BOOL
OPENGL32_UnloadDriver( GLDRIVERDATA *icd ) OPENGL32_UnloadDriver( GLDRIVERDATA *icd )
{ {
BOOL allOk = TRUE; BOOL allOk = TRUE;
DBGPRINT( "Info: Unloading driver %ws...", icd->driver_name ); DBGPRINT( "Info: Unloading driver %ws...", icd->driver_name );
if (icd->refcount != 0) if (icd->refcount != 0)
DBGPRINT( "Warning: ICD refcount = %d (should be 0)", icd->refcount ); DBGPRINT( "Warning: ICD refcount = %d (should be 0)", icd->refcount );
/* unload dll */ /* unload dll */
if (!FreeLibrary( icd->handle )) if (!FreeLibrary( icd->handle ))
{ {
allOk = FALSE; allOk = FALSE;
DBGPRINT( "Warning: FreeLibrary on ICD %ws failed! (%d)", icd->dll, DBGPRINT( "Warning: FreeLibrary on ICD %ws failed! (%d)", icd->dll,
GetLastError() ); GetLastError() );
} }
/* free resources */ /* free resources */
OPENGL32_RemoveICD( icd ); OPENGL32_RemoveICD( icd );
if (!HeapFree( GetProcessHeap(), 0, icd )) if (!HeapFree( GetProcessHeap(), 0, icd ))
{ {
allOk = FALSE; allOk = FALSE;
DBGPRINT( "Warning: HeapFree() returned FALSE, error code = %d", DBGPRINT( "Warning: HeapFree() returned FALSE, error code = %d",
GetLastError() ); GetLastError() );
} }
return allOk; return allOk;
} }
@ -457,41 +457,41 @@ OPENGL32_UnloadDriver( GLDRIVERDATA *icd )
GLDRIVERDATA * GLDRIVERDATA *
OPENGL32_LoadICD( LPCWSTR driver ) OPENGL32_LoadICD( LPCWSTR driver )
{ {
GLDRIVERDATA *icd; GLDRIVERDATA *icd;
/* synchronize */ /* synchronize */
if (WaitForSingleObject( OPENGL32_processdata.driver_mutex, INFINITE ) == if (WaitForSingleObject( OPENGL32_processdata.driver_mutex, INFINITE ) ==
WAIT_FAILED) WAIT_FAILED)
{ {
DBGPRINT( "Error: WaitForSingleObject() failed (%d)", GetLastError() ); DBGPRINT( "Error: WaitForSingleObject() failed (%d)", GetLastError() );
return NULL; /* FIXME: do we have to expect such an error and handle it? */ return NULL; /* FIXME: do we have to expect such an error and handle it? */
} }
/* look if ICD is already loaded */ /* look if ICD is already loaded */
for (icd = OPENGL32_processdata.driver_list; icd; icd = icd->next) for (icd = OPENGL32_processdata.driver_list; icd; icd = icd->next)
{ {
if (!_wcsicmp( driver, icd->driver_name )) /* found */ if (!_wcsicmp( driver, icd->driver_name )) /* found */
{ {
icd->refcount++; icd->refcount++;
/* release mutex */ /* release mutex */
if (!ReleaseMutex( OPENGL32_processdata.driver_mutex )) if (!ReleaseMutex( OPENGL32_processdata.driver_mutex ))
DBGPRINT( "Error: ReleaseMutex() failed (%d)", GetLastError() ); DBGPRINT( "Error: ReleaseMutex() failed (%d)", GetLastError() );
return icd; return icd;
} }
} }
/* not found - try to load */ /* not found - try to load */
icd = OPENGL32_LoadDriver( driver ); icd = OPENGL32_LoadDriver( driver );
if (icd != NULL) if (icd != NULL)
icd->refcount = 1; icd->refcount = 1;
/* release mutex */ /* release mutex */
if (!ReleaseMutex( OPENGL32_processdata.driver_mutex )) if (!ReleaseMutex( OPENGL32_processdata.driver_mutex ))
DBGPRINT( "Error: ReleaseMutex() failed (%d)", GetLastError() ); DBGPRINT( "Error: ReleaseMutex() failed (%d)", GetLastError() );
return icd; return icd;
} }
@ -503,24 +503,24 @@ OPENGL32_LoadICD( LPCWSTR driver )
BOOL BOOL
OPENGL32_UnloadICD( GLDRIVERDATA *icd ) OPENGL32_UnloadICD( GLDRIVERDATA *icd )
{ {
BOOL ret = TRUE; BOOL ret = TRUE;
/* synchronize */ /* synchronize */
if (WaitForSingleObject( OPENGL32_processdata.driver_mutex, INFINITE ) == if (WaitForSingleObject( OPENGL32_processdata.driver_mutex, INFINITE ) ==
WAIT_FAILED) WAIT_FAILED)
{ {
DBGPRINT( "Error: WaitForSingleObject() failed (%d)", GetLastError() ); DBGPRINT( "Error: WaitForSingleObject() failed (%d)", GetLastError() );
return FALSE; /* FIXME: do we have to expect such an error and handle it? */ return FALSE; /* FIXME: do we have to expect such an error and handle it? */
} }
if (--icd->refcount == 0) if (--icd->refcount == 0)
ret = OPENGL32_UnloadDriver( icd ); ret = OPENGL32_UnloadDriver( icd );
/* release mutex */ /* release mutex */
if (!ReleaseMutex( OPENGL32_processdata.driver_mutex )) if (!ReleaseMutex( OPENGL32_processdata.driver_mutex ))
DBGPRINT( "Error: ReleaseMutex() failed (%d)", GetLastError() ); DBGPRINT( "Error: ReleaseMutex() failed (%d)", GetLastError() );
return ret; return ret;
} }
@ -540,40 +540,40 @@ OPENGL32_UnloadICD( GLDRIVERDATA *icd )
DWORD DWORD
OPENGL32_RegEnumDrivers( DWORD idx, LPWSTR name, LPDWORD cName ) OPENGL32_RegEnumDrivers( DWORD idx, LPWSTR name, LPDWORD cName )
{ {
HKEY hKey; HKEY hKey;
LPCWSTR subKey = OPENGL_DRIVERS_SUBKEY; LPCWSTR subKey = OPENGL_DRIVERS_SUBKEY;
LONG ret; LONG ret;
DWORD size; DWORD size;
WCHAR driver[256]; WCHAR driver[256];
if (name == NULL) if (name == NULL)
return ERROR_SUCCESS; /* nothing to do */ return ERROR_SUCCESS; /* nothing to do */
if (cName == NULL) if (cName == NULL)
return ERROR_INVALID_FUNCTION; /* we need cName when name is given */ return ERROR_INVALID_FUNCTION; /* we need cName when name is given */
/* open OpenGLDrivers registry key */ /* open OpenGLDrivers registry key */
ret = RegOpenKeyExW( HKEY_LOCAL_MACHINE, subKey, 0, KEY_READ, &hKey ); ret = RegOpenKeyExW( HKEY_LOCAL_MACHINE, subKey, 0, KEY_READ, &hKey );
if (ret != ERROR_SUCCESS) if (ret != ERROR_SUCCESS)
{ {
DBGPRINT( "Error: Couldn't open registry key '%ws'", subKey ); DBGPRINT( "Error: Couldn't open registry key '%ws'", subKey );
return ret; return ret;
} }
/* get subkey name */ /* get subkey name */
size = sizeof (driver) / sizeof (driver[0]); size = sizeof (driver) / sizeof (driver[0]);
ret = RegEnumKeyW( hKey, idx, name, *cName ); ret = RegEnumKeyW( hKey, idx, name, *cName );
if (ret != ERROR_SUCCESS) if (ret != ERROR_SUCCESS)
{ {
DBGPRINT( "Error: Couldn't get OpenGLDrivers subkey name (%d)", ret ); DBGPRINT( "Error: Couldn't get OpenGLDrivers subkey name (%d)", ret );
RegCloseKey( hKey ); RegCloseKey( hKey );
return ret; return ret;
} }
*cName = wcslen( name ); *cName = wcslen( name );
/* close key */ /* close key */
RegCloseKey( hKey ); RegCloseKey( hKey );
return ERROR_SUCCESS; return ERROR_SUCCESS;
} }
#endif /* 0 -- unused */ #endif /* 0 -- unused */
@ -592,64 +592,64 @@ OPENGL32_RegEnumDrivers( DWORD idx, LPWSTR name, LPDWORD cName )
static DWORD static DWORD
OPENGL32_RegGetDriverInfo( LPCWSTR driver, GLDRIVERDATA *icd ) OPENGL32_RegGetDriverInfo( LPCWSTR driver, GLDRIVERDATA *icd )
{ {
HKEY hKey; HKEY hKey;
WCHAR subKey[1024] = OPENGL_DRIVERS_SUBKEY2; WCHAR subKey[1024] = OPENGL_DRIVERS_SUBKEY2;
LONG ret; LONG ret;
DWORD type, size; DWORD type, size;
/* drivers registry values */ /* drivers registry values */
DWORD version = 1, driverVersion = 0, flags = 0; DWORD version = 1, driverVersion = 0, flags = 0;
WCHAR dll[256]; WCHAR dll[256];
/* open driver registry key */ /* open driver registry key */
wcsncat( subKey, driver, 1024 ); wcsncat( subKey, driver, 1024 );
ret = RegOpenKeyExW( HKEY_LOCAL_MACHINE, subKey, 0, KEY_READ, &hKey ); ret = RegOpenKeyExW( HKEY_LOCAL_MACHINE, subKey, 0, KEY_READ, &hKey );
if (ret != ERROR_SUCCESS) if (ret != ERROR_SUCCESS)
{ {
DBGPRINT( "Error: Couldn't open registry key '%ws'", subKey ); DBGPRINT( "Error: Couldn't open registry key '%ws'", subKey );
return ret; return ret;
} }
/* query values */ /* query values */
size = sizeof (dll); size = sizeof (dll);
ret = RegQueryValueExW( hKey, L"Dll", 0, &type, (LPBYTE)dll, &size ); ret = RegQueryValueExW( hKey, L"Dll", 0, &type, (LPBYTE)dll, &size );
if (ret != ERROR_SUCCESS || type != REG_SZ) if (ret != ERROR_SUCCESS || type != REG_SZ)
{ {
DBGPRINT( "Error: Couldn't query Dll value or not a string" ); DBGPRINT( "Error: Couldn't query Dll value or not a string" );
RegCloseKey( hKey ); RegCloseKey( hKey );
return ret; return ret;
} }
size = sizeof (DWORD); size = sizeof (DWORD);
ret = RegQueryValueExW( hKey, L"Version", 0, &type, (LPBYTE)&version, &size ); ret = RegQueryValueExW( hKey, L"Version", 0, &type, (LPBYTE)&version, &size );
if (ret != ERROR_SUCCESS || type != REG_DWORD) if (ret != ERROR_SUCCESS || type != REG_DWORD)
DBGPRINT( "Warning: Couldn't query Version value or not a DWORD" ); DBGPRINT( "Warning: Couldn't query Version value or not a DWORD" );
size = sizeof (DWORD); size = sizeof (DWORD);
ret = RegQueryValueExW( hKey, L"DriverVersion", 0, &type, ret = RegQueryValueExW( hKey, L"DriverVersion", 0, &type,
(LPBYTE)&driverVersion, &size ); (LPBYTE)&driverVersion, &size );
if (ret != ERROR_SUCCESS || type != REG_DWORD) if (ret != ERROR_SUCCESS || type != REG_DWORD)
DBGPRINT( "Warning: Couldn't query DriverVersion value or not a DWORD" ); DBGPRINT( "Warning: Couldn't query DriverVersion value or not a DWORD" );
size = sizeof (DWORD); size = sizeof (DWORD);
ret = RegQueryValueExW( hKey, L"Flags", 0, &type, (LPBYTE)&flags, &size ); ret = RegQueryValueExW( hKey, L"Flags", 0, &type, (LPBYTE)&flags, &size );
if (ret != ERROR_SUCCESS || type != REG_DWORD) if (ret != ERROR_SUCCESS || type != REG_DWORD)
DBGPRINT( "Warning: Couldn't query Flags value or not a DWORD" ); DBGPRINT( "Warning: Couldn't query Flags value or not a DWORD" );
/* close key */ /* close key */
RegCloseKey( hKey ); RegCloseKey( hKey );
/* output data */ /* output data */
/* FIXME: NUL-terminate strings? */ /* FIXME: NUL-terminate strings? */
wcsncpy( icd->driver_name, driver, wcsncpy( icd->driver_name, driver,
sizeof (icd->driver_name) / sizeof (icd->driver_name[0]) - 1 ); sizeof (icd->driver_name) / sizeof (icd->driver_name[0]) - 1 );
wcsncpy( icd->dll, dll, wcsncpy( icd->dll, dll,
sizeof (icd->dll) / sizeof (icd->dll[0]) ); sizeof (icd->dll) / sizeof (icd->dll[0]) );
icd->version = version; icd->version = version;
icd->driver_version = driverVersion; icd->driver_version = driverVersion;
icd->flags = flags; icd->flags = flags;
return ERROR_SUCCESS; return ERROR_SUCCESS;
} }
/* EOF */ /* EOF */

View file

@ -134,75 +134,75 @@ typedef DWORD (WINAPI *SetContextCallBack)( const ICDTable * );
/* OpenGL ICD data */ /* OpenGL ICD data */
typedef struct tagGLDRIVERDATA typedef struct tagGLDRIVERDATA
{ {
HMODULE handle; /*!< DLL handle */ HMODULE handle; /*!< DLL handle */
UINT refcount; /*!< Number of references to this ICD */ UINT refcount; /*!< Number of references to this ICD */
WCHAR driver_name[256]; /*!< Name of ICD driver */ WCHAR driver_name[256]; /*!< Name of ICD driver */
WCHAR dll[256]; /*!< Dll filename from registry */ WCHAR dll[256]; /*!< Dll filename from registry */
DWORD version; /*!< Version value from registry */ DWORD version; /*!< Version value from registry */
DWORD driver_version; /*!< DriverVersion value from registry */ DWORD driver_version; /*!< DriverVersion value from registry */
DWORD flags; /*!< Flags value from registry */ DWORD flags; /*!< Flags value from registry */
BOOL (WINAPI *DrvCopyContext)( HGLRC, HGLRC, UINT ); BOOL (WINAPI *DrvCopyContext)( HGLRC, HGLRC, UINT );
HGLRC (WINAPI *DrvCreateContext)( HDC ); HGLRC (WINAPI *DrvCreateContext)( HDC );
HGLRC (WINAPI *DrvCreateLayerContext)( HDC, int ); HGLRC (WINAPI *DrvCreateLayerContext)( HDC, int );
BOOL (WINAPI *DrvDeleteContext)( HGLRC ); BOOL (WINAPI *DrvDeleteContext)( HGLRC );
BOOL (WINAPI *DrvDescribeLayerPlane)( HDC, int, int, UINT, LPLAYERPLANEDESCRIPTOR ); BOOL (WINAPI *DrvDescribeLayerPlane)( HDC, int, int, UINT, LPLAYERPLANEDESCRIPTOR );
int (WINAPI *DrvDescribePixelFormat)( IN HDC, IN int, IN UINT, OUT LPPIXELFORMATDESCRIPTOR ); int (WINAPI *DrvDescribePixelFormat)( IN HDC, IN int, IN UINT, OUT LPPIXELFORMATDESCRIPTOR );
int (WINAPI *DrvGetLayerPaletteEntries)( HDC, int, int, int, COLORREF * ); int (WINAPI *DrvGetLayerPaletteEntries)( HDC, int, int, int, COLORREF * );
PROC (WINAPI *DrvGetProcAddress)( LPCSTR lpProcName ); PROC (WINAPI *DrvGetProcAddress)( LPCSTR lpProcName );
void (WINAPI *DrvReleaseContext)( HGLRC hglrc ); /* maybe returns BOOL? */ void (WINAPI *DrvReleaseContext)( HGLRC hglrc ); /* maybe returns BOOL? */
BOOL (WINAPI *DrvRealizeLayerPalette)( HDC, int, BOOL ); BOOL (WINAPI *DrvRealizeLayerPalette)( HDC, int, BOOL );
PICDTable (WINAPI *DrvSetContext)( HDC hdc, HGLRC hglrc, SetContextCallBack callback ); PICDTable (WINAPI *DrvSetContext)( HDC hdc, HGLRC hglrc, SetContextCallBack callback );
int (WINAPI *DrvSetLayerPaletteEntries)( HDC, int, int, int, CONST COLORREF * ); int (WINAPI *DrvSetLayerPaletteEntries)( HDC, int, int, int, CONST COLORREF * );
BOOL (WINAPI *DrvSetPixelFormat)( IN HDC, IN int, const PIXELFORMATDESCRIPTOR * ); BOOL (WINAPI *DrvSetPixelFormat)( IN HDC, IN int, const PIXELFORMATDESCRIPTOR * );
BOOL (WINAPI *DrvShareLists)( HGLRC, HGLRC ); BOOL (WINAPI *DrvShareLists)( HGLRC, HGLRC );
BOOL (WINAPI *DrvSwapBuffers)( HDC ); BOOL (WINAPI *DrvSwapBuffers)( HDC );
BOOL (WINAPI *DrvSwapLayerBuffers)( HDC, UINT ); BOOL (WINAPI *DrvSwapLayerBuffers)( HDC, UINT );
BOOL (WINAPI *DrvValidateVersion)( DWORD ); BOOL (WINAPI *DrvValidateVersion)( DWORD );
struct tagGLDRIVERDATA *next; /* next ICD -- linked list */ struct tagGLDRIVERDATA *next; /* next ICD -- linked list */
} GLDRIVERDATA; } GLDRIVERDATA;
/* Our private OpenGL context (stored in TLS) */ /* Our private OpenGL context (stored in TLS) */
typedef struct tagGLRC typedef struct tagGLRC
{ {
GLDRIVERDATA *icd; /*!< driver used for this context */ GLDRIVERDATA *icd; /*!< driver used for this context */
HDC hdc; /*!< DC handle */ HDC hdc; /*!< DC handle */
BOOL is_current; /*!< Wether this context is current for some DC */ BOOL is_current; /*!< Wether this context is current for some DC */
DWORD thread_id; /*!< Thread holding this context */ DWORD thread_id; /*!< Thread holding this context */
HGLRC hglrc; /*!< GLRC from DrvCreateContext (ICD internal) */ HGLRC hglrc; /*!< GLRC from DrvCreateContext (ICD internal) */
struct tagGLRC *next; /* linked list */ struct tagGLRC *next; /* linked list */
} GLRC; } GLRC;
/* OpenGL private device context data */ /* OpenGL private device context data */
typedef struct tagGLDCDATA typedef struct tagGLDCDATA
{ {
HDC hdc; /*!< Device context handle for which this data is */ HDC hdc; /*!< Device context handle for which this data is */
GLDRIVERDATA *icd; /*!< Driver used for this DC */ GLDRIVERDATA *icd; /*!< Driver used for this DC */
int pixel_format; /*!< Selected pixel format */ int pixel_format; /*!< Selected pixel format */
struct tagGLDCDATA *next; /* linked list */ struct tagGLDCDATA *next; /* linked list */
} GLDCDATA; } GLDCDATA;
/* Process data */ /* Process data */
typedef struct tagGLPROCESSDATA typedef struct tagGLPROCESSDATA
{ {
GLDRIVERDATA *driver_list; /*!< List of loaded drivers */ GLDRIVERDATA *driver_list; /*!< List of loaded drivers */
HANDLE driver_mutex; /*!< Mutex to protect driver list */ HANDLE driver_mutex; /*!< Mutex to protect driver list */
GLRC *glrc_list; /*!< List of GL rendering contexts */ GLRC *glrc_list; /*!< List of GL rendering contexts */
HANDLE glrc_mutex; /*!< Mutex to protect glrc list */ HANDLE glrc_mutex; /*!< Mutex to protect glrc list */
GLDCDATA *dcdata_list; /*!< List of GL private DC data */ GLDCDATA *dcdata_list; /*!< List of GL private DC data */
HANDLE dcdata_mutex; /*!< Mutex to protect glrc list */ HANDLE dcdata_mutex; /*!< Mutex to protect glrc list */
} GLPROCESSDATA; } GLPROCESSDATA;
/* TLS data */ /* TLS data */
typedef struct tagGLTHREADDATA typedef struct tagGLTHREADDATA
{ {
GLRC *glrc; /*!< current GL rendering context */ GLRC *glrc; /*!< current GL rendering context */
} GLTHREADDATA; } GLTHREADDATA;
extern DWORD OPENGL32_tls; extern DWORD OPENGL32_tls;

File diff suppressed because it is too large Load diff