qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] (Experimental) Initial patch providing accelerated OpenGL for Linux i386
@ 2006-11-14 21:47 Even Rouault
  0 siblings, 0 replies; only message in thread
From: Even Rouault @ 2006-11-14 21:47 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 3309 bytes --]

Here's an attempt of providing accelerated OpenGL for QEMU.

I must underline first that it should really really be considered as 
experimental or a proof-of-concept. There's still a lot of work to do to make 
it reliable and releasable.

So what is it exactly ?
- a patch for QEMU itself that intercepts any call to 'int $0x99' which is the 
  interface I have chosen to dedicate to communication between guest user
  programs and QEMU. The modification of QEMU existing code is very slight.
  The essential of code on the guest side is in new files.
- a replacement libGL.so library that must be used inside the Linux guest. The
  library redirects guest OpenGL and GLX calls to host side, where your host
  libGL.so will do the real job.

Now, the good news : which programs do currently work with this patch ?
- glxinfo
- glxgears
- some mesa demos programs
- ... and ppracer ! (some crash from time to time)

It works currently only with Linux x86 as guest and host OS.
Successfully tested on the following platforms :
- Ubuntu Edgy x86 as host with ATI FGLRX driver / FC5 x86 as guest
- Ubuntu Dapper x86 as host with NVIDIA Proprietary driver / Ubuntu Dapper x86 
as guest

How fast is it ? Enough fast to have 15 FPS in ppracer with KQEMU disabled.
When KQEMU is enabled, paradoxically, the performance is really poor :-(

Which programs do not work : probably most for the moment ;-)
I'd like to make it work with XGL (I've downloaded the latest Mandriva 2007 
Live CD and I'm quite impatient to enable the 3D in it) and GoogleEarth.

How to use it ?
* Apply the patch and recompile QEMU 
* Lauch QEMU with -enable-gl option
* Compile target-i386/opengl_client.c into libGL.so (do not use optimization 
flags. It compiles but doesn't work)
* In the guest OS : LD_LIBRARY_PATH=/path/to/replacement/libGL.so glxgears

TODO list :
- implement correctly full OpenGL API
- improve vertex arrays support
- maybe fix how the end of the guest process is detected
- make replacement libGL work when compiled with optimization flags
- integrate in a better way the window that popups on the guest side with the 
main qemu window
- integrate it properly into QEMU build system (helper_opengl.c can't compile 
with -O2 : 'unable to find a register to spill in class `DIREG'')
- understand why it's slower when KQEMU enabled and try to fix that if 
possible
- enable several guest OS processes to use OpenGL at the same time
- make it run on x86_64, and allowing any combination guest x86/x86_64 and 
host x86/x86_64, other archs
- port it to other UNIX-like OS with X
- improve security if possible (preventing malicious guest code from crashing 
host qemu)
- clean the code !
- much testing and debugging
- port it to Windows platform (first OpenGL / WGL, then D3D through Wine 
libs ?)
- make a patch to Valgrind to make it happy with 'int $0x99' when running on 
guest side
- ...

In the mean time, enjoy and feel free to contribute ! As you see, there's a 
huge amount of remaining work.

The new files :
- opengl_client.c  : the OpenGL guest library
- helper_opengl.c : main guest-side code
- gl_func.h, server_stub.c, client_stub.c : generated files by parse_gl_h.c 
from gl.h parsing
- glgetv_cst.h  : generated file from parsing of a man page
- gl_func_perso.h, opengl_func.h : hand-written "prototypes"

[-- Attachment #2: qemu_opengl.patch --]
[-- Type: text/x-diff, Size: 588948 bytes --]

diff -Nrup --exclude=CVS --exclude='*~' --exclude='config-host*' --exclude=Makefile --exclude=config.mak --exclude=config.h qemu.ori/dyngen-exec.h qemu/dyngen-exec.h
--- qemu.ori/dyngen-exec.h	2006-11-14 00:18:09.000000000 +0100
+++ qemu/dyngen-exec.h	2006-11-14 21:46:24.000000000 +0100
@@ -75,12 +75,16 @@ typedef signed long long int64_t;
 #define UINT32_MAX		(4294967295U)
 #define UINT64_MAX		((uint64_t)(18446744073709551615))
 
+#ifndef _STDIO_H
+
 typedef struct FILE FILE;
 extern int fprintf(FILE *, const char *, ...);
 extern int printf(const char *, ...);
 #undef NULL
 #define NULL 0
 
+#endif
+
 #ifdef __i386__
 #define AREG0 "ebp"
 #define AREG1 "ebx"
diff -Nrup --exclude=CVS --exclude='*~' --exclude='config-host*' --exclude=Makefile --exclude=config.mak --exclude=config.h qemu.ori/kqemu.c qemu/kqemu.c
--- qemu.ori/kqemu.c	2006-11-14 00:18:09.000000000 +0100
+++ qemu/kqemu.c	2006-11-14 21:46:24.000000000 +0100
@@ -87,6 +87,7 @@ unsigned long *modified_ram_pages;
 unsigned int nb_modified_ram_pages;
 uint8_t *modified_ram_pages_table;
 extern uint32_t **l1_phys_map;
+extern int enable_gl;
 
 #define cpuid(index, eax, ebx, ecx, edx) \
   asm volatile ("cpuid" \
@@ -721,6 +722,7 @@ int kqemu_cpu_exec(CPUState *env)
     ret = ioctl(kqemu_fd, KQEMU_EXEC, kenv);
 #endif
 #endif
+
     if (env->cpuid_features & CPUID_FXSR)
         save_native_fp_fxsave(env);
     else
@@ -749,7 +751,6 @@ int kqemu_cpu_exec(CPUState *env)
     env->kernelgsbase = kenv->kernelgsbase;
 #endif
 #endif
-
     /* flush pages as indicated by kqemu */
     if (kenv->nb_pages_to_flush >= KQEMU_FLUSH_ALL) {
         tlb_flush(env, 1);
@@ -825,13 +826,40 @@ int kqemu_cpu_exec(CPUState *env)
     else
         env->hflags &= ~HF_OSFXSR_MASK;
         
+    /* OPENGL Stuff */
+    if (enable_gl && ((env->hflags & HF_CPL_MASK) == 3))
+    {
+      int index = (env->eip >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
+      if (env->segs[R_CS].base != 0)
+      {
+        fprintf(stderr, "env->segs[R_CS].base != 0 !\n");
+      }
+      else if (__builtin_expect(env->tlb_table[1][index].addr_code != 
+                           (env->eip & TARGET_PAGE_MASK), 0))
+      {
+        ldub_code(env->eip);
+      }
+      if (env->tlb_table[1][index].addend)
+      {
+        unsigned char* ptr = env->eip + env->tlb_table[1][index].addend;
+        if (ptr[0] == 0xCD && ptr[1] == 0x99)
+        {
+          helper_opengl(env);
+        }
+        /*else if (ptr[0] == 0xCD && ptr[1] == 0x80)
+        {
+          fprintf(stderr, "system call %d\n", env->regs[R_EAX]);
+        }*/
+      }
+    }
+    
 #ifdef DEBUG
     if (loglevel & CPU_LOG_INT) {
         fprintf(logfile, "kqemu: kqemu_cpu_exec: ret=0x%x\n", ret);
     }
 #endif
     if (ret == KQEMU_RET_SYSCALL) {
-        /* syscall instruction */
+  /* syscall instruction */
         return do_syscall(env, kenv);
     } else 
     if ((ret & 0xff00) == KQEMU_RET_INT) {
diff -Nrup --exclude=CVS --exclude='*~' --exclude='config-host*' --exclude=Makefile --exclude=config.mak --exclude=config.h qemu.ori/Makefile.target qemu/Makefile.target
--- qemu.ori/Makefile.target	2006-11-14 00:18:09.000000000 +0100
+++ qemu/Makefile.target	2006-11-14 22:17:50.000000000 +0100
@@ -435,8 +435,16 @@ ifdef CONFIG_WIN32
 SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
 endif
 
+ifeq ($(TARGET_BASE_ARCH), i386)
+# -O2 doesn't work --> 'unable to find a register to spill in class `DIREG''
+GL_CFLAGS := -Wall -g -fno-strict-aliasing
+helper_opengl.o: helper_opengl.c
+	$(CC) $(GL_CFLAGS) $(DEFINES) -c -o $@ $<
+LIBOBJS+=helper_opengl.o
+endif
+
 $(QEMU_SYSTEM): $(VL_OBJS) libqemu.a
-	$(CC) $(VL_LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) $(VL_LIBS)
+	$(CC) $(VL_LDFLAGS) -o $@ $^ $(LIBS) $(SDL_LIBS) $(COCOA_LIBS) $(VL_LIBS) -lGL
 
 cocoa.o: cocoa.m
 	$(CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
diff -Nrup --exclude=CVS --exclude='*~' --exclude='config-host*' --exclude=Makefile --exclude=config.mak --exclude=config.h qemu.ori/target-i386/client_stub.c qemu/target-i386/client_stub.c
--- qemu.ori/target-i386/client_stub.c	1970-01-01 01:00:00.000000000 +0100
+++ qemu/target-i386/client_stub.c	2006-11-14 21:46:24.000000000 +0100
@@ -0,0 +1,4375 @@
+/* This is a generated file. DO NOT EDIT ! */
+
+void glClearIndex(GLfloat arg_0)
+{
+  do_opengl_call(glClearIndex_func, NULL, arg_0);
+}
+
+void glClearColor(GLclampf arg_0, GLclampf arg_1, GLclampf arg_2, GLclampf arg_3)
+{
+  do_opengl_call(glClearColor_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glClear(GLbitfield arg_0)
+{
+  do_opengl_call(glClear_func, NULL, arg_0);
+}
+
+void glIndexMask(GLuint arg_0)
+{
+  do_opengl_call(glIndexMask_func, NULL, arg_0);
+}
+
+void glColorMask(GLboolean arg_0, GLboolean arg_1, GLboolean arg_2, GLboolean arg_3)
+{
+  do_opengl_call(glColorMask_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glAlphaFunc(GLenum arg_0, GLclampf arg_1)
+{
+  do_opengl_call(glAlphaFunc_func, NULL, arg_0, arg_1);
+}
+
+void glBlendFunc(GLenum arg_0, GLenum arg_1)
+{
+  do_opengl_call(glBlendFunc_func, NULL, arg_0, arg_1);
+}
+
+void glLogicOp(GLenum arg_0)
+{
+  do_opengl_call(glLogicOp_func, NULL, arg_0);
+}
+
+void glCullFace(GLenum arg_0)
+{
+  do_opengl_call(glCullFace_func, NULL, arg_0);
+}
+
+void glFrontFace(GLenum arg_0)
+{
+  do_opengl_call(glFrontFace_func, NULL, arg_0);
+}
+
+void glPointSize(GLfloat arg_0)
+{
+  do_opengl_call(glPointSize_func, NULL, arg_0);
+}
+
+void glLineWidth(GLfloat arg_0)
+{
+  do_opengl_call(glLineWidth_func, NULL, arg_0);
+}
+
+void glLineStipple(GLint arg_0, GLushort arg_1)
+{
+  do_opengl_call(glLineStipple_func, NULL, arg_0, arg_1);
+}
+
+void glPolygonMode(GLenum arg_0, GLenum arg_1)
+{
+  do_opengl_call(glPolygonMode_func, NULL, arg_0, arg_1);
+}
+
+void glPolygonOffset(GLfloat arg_0, GLfloat arg_1)
+{
+  do_opengl_call(glPolygonOffset_func, NULL, arg_0, arg_1);
+}
+
+void glEdgeFlag(GLboolean arg_0)
+{
+  do_opengl_call(glEdgeFlag_func, NULL, arg_0);
+}
+
+void glScissor(GLint arg_0, GLint arg_1, GLsizei arg_2, GLsizei arg_3)
+{
+  do_opengl_call(glScissor_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glDrawBuffer(GLenum arg_0)
+{
+  do_opengl_call(glDrawBuffer_func, NULL, arg_0);
+}
+
+void glReadBuffer(GLenum arg_0)
+{
+  do_opengl_call(glReadBuffer_func, NULL, arg_0);
+}
+
+void glEnable(GLenum arg_0)
+{
+  do_opengl_call(glEnable_func, NULL, arg_0);
+}
+
+void glDisable(GLenum arg_0)
+{
+  do_opengl_call(glDisable_func, NULL, arg_0);
+}
+
+GLboolean glIsEnabled(GLenum arg_0)
+{
+  GLboolean ret;
+  do_opengl_call(glIsEnabled_func, &ret, arg_0);
+  return ret;
+}
+
+void glEnableClientState(GLenum arg_0)
+{
+  do_opengl_call(glEnableClientState_func, NULL, arg_0);
+}
+
+void glDisableClientState(GLenum arg_0)
+{
+  do_opengl_call(glDisableClientState_func, NULL, arg_0);
+}
+
+void glPushAttrib(GLbitfield arg_0)
+{
+  do_opengl_call(glPushAttrib_func, NULL, arg_0);
+}
+
+void glPopAttrib()
+{
+  do_opengl_call(glPopAttrib_func, NULL);
+}
+
+void glPushClientAttrib(GLbitfield arg_0)
+{
+  do_opengl_call(glPushClientAttrib_func, NULL, arg_0);
+}
+
+void glPopClientAttrib()
+{
+  do_opengl_call(glPopClientAttrib_func, NULL);
+}
+
+GLint glRenderMode(GLenum arg_0)
+{
+  GLint ret;
+  do_opengl_call(glRenderMode_func, &ret, arg_0);
+  return ret;
+}
+
+GLenum glGetError()
+{
+  GLenum ret;
+  do_opengl_call(glGetError_func, &ret);
+  return ret;
+}
+
+void glFinish()
+{
+  do_opengl_call(glFinish_func, NULL);
+}
+
+void glFlush()
+{
+  do_opengl_call(glFlush_func, NULL);
+}
+
+void glHint(GLenum arg_0, GLenum arg_1)
+{
+  do_opengl_call(glHint_func, NULL, arg_0, arg_1);
+}
+
+void glClearDepth(GLclampd arg_0)
+{
+  do_opengl_call(glClearDepth_func, NULL, arg_0);
+}
+
+void glDepthFunc(GLenum arg_0)
+{
+  do_opengl_call(glDepthFunc_func, NULL, arg_0);
+}
+
+void glDepthMask(GLboolean arg_0)
+{
+  do_opengl_call(glDepthMask_func, NULL, arg_0);
+}
+
+void glDepthRange(GLclampd arg_0, GLclampd arg_1)
+{
+  do_opengl_call(glDepthRange_func, NULL, arg_0, arg_1);
+}
+
+void glClearAccum(GLfloat arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3)
+{
+  do_opengl_call(glClearAccum_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glAccum(GLenum arg_0, GLfloat arg_1)
+{
+  do_opengl_call(glAccum_func, NULL, arg_0, arg_1);
+}
+
+void glMatrixMode(GLenum arg_0)
+{
+  do_opengl_call(glMatrixMode_func, NULL, arg_0);
+}
+
+void glOrtho(GLdouble arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4, GLdouble arg_5)
+{
+  do_opengl_call(glOrtho_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void glFrustum(GLdouble arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4, GLdouble arg_5)
+{
+  do_opengl_call(glFrustum_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void glViewport(GLint arg_0, GLint arg_1, GLsizei arg_2, GLsizei arg_3)
+{
+  do_opengl_call(glViewport_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glPushMatrix()
+{
+  do_opengl_call(glPushMatrix_func, NULL);
+}
+
+void glPopMatrix()
+{
+  do_opengl_call(glPopMatrix_func, NULL);
+}
+
+void glLoadIdentity()
+{
+  do_opengl_call(glLoadIdentity_func, NULL);
+}
+
+void glLoadMatrixd(const GLdouble arg_0[16])
+{
+  do_opengl_call(glLoadMatrixd_func, NULL, arg_0);
+}
+
+void glLoadMatrixf(const GLfloat arg_0[16])
+{
+  do_opengl_call(glLoadMatrixf_func, NULL, arg_0);
+}
+
+void glMultMatrixd(const GLdouble arg_0[16])
+{
+  do_opengl_call(glMultMatrixd_func, NULL, arg_0);
+}
+
+void glMultMatrixf(const GLfloat arg_0[16])
+{
+  do_opengl_call(glMultMatrixf_func, NULL, arg_0);
+}
+
+void glRotated(GLdouble arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3)
+{
+  do_opengl_call(glRotated_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glRotatef(GLfloat arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3)
+{
+  do_opengl_call(glRotatef_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glScaled(GLdouble arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  do_opengl_call(glScaled_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glScalef(GLfloat arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  do_opengl_call(glScalef_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glTranslated(GLdouble arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  do_opengl_call(glTranslated_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glTranslatef(GLfloat arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  do_opengl_call(glTranslatef_func, NULL, arg_0, arg_1, arg_2);
+}
+
+GLboolean glIsList(GLuint arg_0)
+{
+  GLboolean ret;
+  do_opengl_call(glIsList_func, &ret, arg_0);
+  return ret;
+}
+
+void glDeleteLists(GLuint arg_0, GLsizei arg_1)
+{
+  do_opengl_call(glDeleteLists_func, NULL, arg_0, arg_1);
+}
+
+GLuint glGenLists(GLsizei arg_0)
+{
+  GLuint ret;
+  do_opengl_call(glGenLists_func, &ret, arg_0);
+  return ret;
+}
+
+void glNewList(GLuint arg_0, GLenum arg_1)
+{
+  do_opengl_call(glNewList_func, NULL, arg_0, arg_1);
+}
+
+void glEndList()
+{
+  do_opengl_call(glEndList_func, NULL);
+}
+
+void glCallList(GLuint arg_0)
+{
+  do_opengl_call(glCallList_func, NULL, arg_0);
+}
+
+void glListBase(GLuint arg_0)
+{
+  do_opengl_call(glListBase_func, NULL, arg_0);
+}
+
+void glBegin(GLenum arg_0)
+{
+  do_opengl_call(glBegin_func, NULL, arg_0);
+}
+
+void glEnd()
+{
+  do_opengl_call(glEnd_func, NULL);
+}
+
+void glVertex2d(GLdouble arg_0, GLdouble arg_1)
+{
+  do_opengl_call(glVertex2d_func, NULL, arg_0, arg_1);
+}
+
+void glVertex2f(GLfloat arg_0, GLfloat arg_1)
+{
+  do_opengl_call(glVertex2f_func, NULL, arg_0, arg_1);
+}
+
+void glVertex2i(GLint arg_0, GLint arg_1)
+{
+  do_opengl_call(glVertex2i_func, NULL, arg_0, arg_1);
+}
+
+void glVertex2s(GLshort arg_0, GLshort arg_1)
+{
+  do_opengl_call(glVertex2s_func, NULL, arg_0, arg_1);
+}
+
+void glVertex3d(GLdouble arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  do_opengl_call(glVertex3d_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glVertex3f(GLfloat arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  do_opengl_call(glVertex3f_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glVertex3i(GLint arg_0, GLint arg_1, GLint arg_2)
+{
+  do_opengl_call(glVertex3i_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glVertex3s(GLshort arg_0, GLshort arg_1, GLshort arg_2)
+{
+  do_opengl_call(glVertex3s_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glVertex4d(GLdouble arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3)
+{
+  do_opengl_call(glVertex4d_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glVertex4f(GLfloat arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3)
+{
+  do_opengl_call(glVertex4f_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glVertex4i(GLint arg_0, GLint arg_1, GLint arg_2, GLint arg_3)
+{
+  do_opengl_call(glVertex4i_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glVertex4s(GLshort arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3)
+{
+  do_opengl_call(glVertex4s_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glVertex2dv(const GLdouble * arg_0)
+{
+  do_opengl_call(glVertex2dv_func, NULL, arg_0);
+}
+
+void glVertex2fv(const GLfloat * arg_0)
+{
+  do_opengl_call(glVertex2fv_func, NULL, arg_0);
+}
+
+void glVertex2iv(const GLint * arg_0)
+{
+  do_opengl_call(glVertex2iv_func, NULL, arg_0);
+}
+
+void glVertex2sv(const GLshort * arg_0)
+{
+  do_opengl_call(glVertex2sv_func, NULL, arg_0);
+}
+
+void glVertex3dv(const GLdouble * arg_0)
+{
+  do_opengl_call(glVertex3dv_func, NULL, arg_0);
+}
+
+void glVertex3fv(const GLfloat * arg_0)
+{
+  do_opengl_call(glVertex3fv_func, NULL, arg_0);
+}
+
+void glVertex3iv(const GLint * arg_0)
+{
+  do_opengl_call(glVertex3iv_func, NULL, arg_0);
+}
+
+void glVertex3sv(const GLshort * arg_0)
+{
+  do_opengl_call(glVertex3sv_func, NULL, arg_0);
+}
+
+void glVertex4dv(const GLdouble * arg_0)
+{
+  do_opengl_call(glVertex4dv_func, NULL, arg_0);
+}
+
+void glVertex4fv(const GLfloat * arg_0)
+{
+  do_opengl_call(glVertex4fv_func, NULL, arg_0);
+}
+
+void glVertex4iv(const GLint * arg_0)
+{
+  do_opengl_call(glVertex4iv_func, NULL, arg_0);
+}
+
+void glVertex4sv(const GLshort * arg_0)
+{
+  do_opengl_call(glVertex4sv_func, NULL, arg_0);
+}
+
+void glNormal3b(GLbyte arg_0, GLbyte arg_1, GLbyte arg_2)
+{
+  do_opengl_call(glNormal3b_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glNormal3d(GLdouble arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  do_opengl_call(glNormal3d_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glNormal3f(GLfloat arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  do_opengl_call(glNormal3f_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glNormal3i(GLint arg_0, GLint arg_1, GLint arg_2)
+{
+  do_opengl_call(glNormal3i_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glNormal3s(GLshort arg_0, GLshort arg_1, GLshort arg_2)
+{
+  do_opengl_call(glNormal3s_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glNormal3bv(const GLbyte * arg_0)
+{
+  do_opengl_call(glNormal3bv_func, NULL, arg_0);
+}
+
+void glNormal3dv(const GLdouble * arg_0)
+{
+  do_opengl_call(glNormal3dv_func, NULL, arg_0);
+}
+
+void glNormal3fv(const GLfloat * arg_0)
+{
+  do_opengl_call(glNormal3fv_func, NULL, arg_0);
+}
+
+void glNormal3iv(const GLint * arg_0)
+{
+  do_opengl_call(glNormal3iv_func, NULL, arg_0);
+}
+
+void glNormal3sv(const GLshort * arg_0)
+{
+  do_opengl_call(glNormal3sv_func, NULL, arg_0);
+}
+
+void glIndexd(GLdouble arg_0)
+{
+  do_opengl_call(glIndexd_func, NULL, arg_0);
+}
+
+void glIndexf(GLfloat arg_0)
+{
+  do_opengl_call(glIndexf_func, NULL, arg_0);
+}
+
+void glIndexi(GLint arg_0)
+{
+  do_opengl_call(glIndexi_func, NULL, arg_0);
+}
+
+void glIndexs(GLshort arg_0)
+{
+  do_opengl_call(glIndexs_func, NULL, arg_0);
+}
+
+void glIndexub(GLubyte arg_0)
+{
+  do_opengl_call(glIndexub_func, NULL, arg_0);
+}
+
+void glColor3b(GLbyte arg_0, GLbyte arg_1, GLbyte arg_2)
+{
+  do_opengl_call(glColor3b_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glColor3d(GLdouble arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  do_opengl_call(glColor3d_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glColor3f(GLfloat arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  do_opengl_call(glColor3f_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glColor3i(GLint arg_0, GLint arg_1, GLint arg_2)
+{
+  do_opengl_call(glColor3i_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glColor3s(GLshort arg_0, GLshort arg_1, GLshort arg_2)
+{
+  do_opengl_call(glColor3s_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glColor3ub(GLubyte arg_0, GLubyte arg_1, GLubyte arg_2)
+{
+  do_opengl_call(glColor3ub_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glColor3ui(GLuint arg_0, GLuint arg_1, GLuint arg_2)
+{
+  do_opengl_call(glColor3ui_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glColor3us(GLushort arg_0, GLushort arg_1, GLushort arg_2)
+{
+  do_opengl_call(glColor3us_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glColor4b(GLbyte arg_0, GLbyte arg_1, GLbyte arg_2, GLbyte arg_3)
+{
+  do_opengl_call(glColor4b_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glColor4d(GLdouble arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3)
+{
+  do_opengl_call(glColor4d_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glColor4f(GLfloat arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3)
+{
+  do_opengl_call(glColor4f_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glColor4i(GLint arg_0, GLint arg_1, GLint arg_2, GLint arg_3)
+{
+  do_opengl_call(glColor4i_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glColor4s(GLshort arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3)
+{
+  do_opengl_call(glColor4s_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glColor4ub(GLubyte arg_0, GLubyte arg_1, GLubyte arg_2, GLubyte arg_3)
+{
+  do_opengl_call(glColor4ub_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glColor4ui(GLuint arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3)
+{
+  do_opengl_call(glColor4ui_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glColor4us(GLushort arg_0, GLushort arg_1, GLushort arg_2, GLushort arg_3)
+{
+  do_opengl_call(glColor4us_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glColor3bv(const GLbyte * arg_0)
+{
+  do_opengl_call(glColor3bv_func, NULL, arg_0);
+}
+
+void glColor3dv(const GLdouble * arg_0)
+{
+  do_opengl_call(glColor3dv_func, NULL, arg_0);
+}
+
+void glColor3fv(const GLfloat * arg_0)
+{
+  do_opengl_call(glColor3fv_func, NULL, arg_0);
+}
+
+void glColor3iv(const GLint * arg_0)
+{
+  do_opengl_call(glColor3iv_func, NULL, arg_0);
+}
+
+void glColor3sv(const GLshort * arg_0)
+{
+  do_opengl_call(glColor3sv_func, NULL, arg_0);
+}
+
+void glColor3ubv(const GLubyte * arg_0)
+{
+  do_opengl_call(glColor3ubv_func, NULL, arg_0);
+}
+
+void glColor3uiv(const GLuint * arg_0)
+{
+  do_opengl_call(glColor3uiv_func, NULL, arg_0);
+}
+
+void glColor3usv(const GLushort * arg_0)
+{
+  do_opengl_call(glColor3usv_func, NULL, arg_0);
+}
+
+void glColor4bv(const GLbyte * arg_0)
+{
+  do_opengl_call(glColor4bv_func, NULL, arg_0);
+}
+
+void glColor4dv(const GLdouble * arg_0)
+{
+  do_opengl_call(glColor4dv_func, NULL, arg_0);
+}
+
+void glColor4fv(const GLfloat * arg_0)
+{
+  do_opengl_call(glColor4fv_func, NULL, arg_0);
+}
+
+void glColor4iv(const GLint * arg_0)
+{
+  do_opengl_call(glColor4iv_func, NULL, arg_0);
+}
+
+void glColor4sv(const GLshort * arg_0)
+{
+  do_opengl_call(glColor4sv_func, NULL, arg_0);
+}
+
+void glColor4ubv(const GLubyte * arg_0)
+{
+  do_opengl_call(glColor4ubv_func, NULL, arg_0);
+}
+
+void glColor4uiv(const GLuint * arg_0)
+{
+  do_opengl_call(glColor4uiv_func, NULL, arg_0);
+}
+
+void glColor4usv(const GLushort * arg_0)
+{
+  do_opengl_call(glColor4usv_func, NULL, arg_0);
+}
+
+void glTexCoord1d(GLdouble arg_0)
+{
+  do_opengl_call(glTexCoord1d_func, NULL, arg_0);
+}
+
+void glTexCoord1f(GLfloat arg_0)
+{
+  do_opengl_call(glTexCoord1f_func, NULL, arg_0);
+}
+
+void glTexCoord1i(GLint arg_0)
+{
+  do_opengl_call(glTexCoord1i_func, NULL, arg_0);
+}
+
+void glTexCoord1s(GLshort arg_0)
+{
+  do_opengl_call(glTexCoord1s_func, NULL, arg_0);
+}
+
+void glTexCoord2d(GLdouble arg_0, GLdouble arg_1)
+{
+  do_opengl_call(glTexCoord2d_func, NULL, arg_0, arg_1);
+}
+
+void glTexCoord2f(GLfloat arg_0, GLfloat arg_1)
+{
+  do_opengl_call(glTexCoord2f_func, NULL, arg_0, arg_1);
+}
+
+void glTexCoord2i(GLint arg_0, GLint arg_1)
+{
+  do_opengl_call(glTexCoord2i_func, NULL, arg_0, arg_1);
+}
+
+void glTexCoord2s(GLshort arg_0, GLshort arg_1)
+{
+  do_opengl_call(glTexCoord2s_func, NULL, arg_0, arg_1);
+}
+
+void glTexCoord3d(GLdouble arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  do_opengl_call(glTexCoord3d_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glTexCoord3f(GLfloat arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  do_opengl_call(glTexCoord3f_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glTexCoord3i(GLint arg_0, GLint arg_1, GLint arg_2)
+{
+  do_opengl_call(glTexCoord3i_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glTexCoord3s(GLshort arg_0, GLshort arg_1, GLshort arg_2)
+{
+  do_opengl_call(glTexCoord3s_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glTexCoord4d(GLdouble arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3)
+{
+  do_opengl_call(glTexCoord4d_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glTexCoord4f(GLfloat arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3)
+{
+  do_opengl_call(glTexCoord4f_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glTexCoord4i(GLint arg_0, GLint arg_1, GLint arg_2, GLint arg_3)
+{
+  do_opengl_call(glTexCoord4i_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glTexCoord4s(GLshort arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3)
+{
+  do_opengl_call(glTexCoord4s_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glTexCoord1dv(const GLdouble * arg_0)
+{
+  do_opengl_call(glTexCoord1dv_func, NULL, arg_0);
+}
+
+void glTexCoord1fv(const GLfloat * arg_0)
+{
+  do_opengl_call(glTexCoord1fv_func, NULL, arg_0);
+}
+
+void glTexCoord1iv(const GLint * arg_0)
+{
+  do_opengl_call(glTexCoord1iv_func, NULL, arg_0);
+}
+
+void glTexCoord1sv(const GLshort * arg_0)
+{
+  do_opengl_call(glTexCoord1sv_func, NULL, arg_0);
+}
+
+void glTexCoord2dv(const GLdouble * arg_0)
+{
+  do_opengl_call(glTexCoord2dv_func, NULL, arg_0);
+}
+
+void glTexCoord2fv(const GLfloat * arg_0)
+{
+  do_opengl_call(glTexCoord2fv_func, NULL, arg_0);
+}
+
+void glTexCoord2iv(const GLint * arg_0)
+{
+  do_opengl_call(glTexCoord2iv_func, NULL, arg_0);
+}
+
+void glTexCoord2sv(const GLshort * arg_0)
+{
+  do_opengl_call(glTexCoord2sv_func, NULL, arg_0);
+}
+
+void glTexCoord3dv(const GLdouble * arg_0)
+{
+  do_opengl_call(glTexCoord3dv_func, NULL, arg_0);
+}
+
+void glTexCoord3fv(const GLfloat * arg_0)
+{
+  do_opengl_call(glTexCoord3fv_func, NULL, arg_0);
+}
+
+void glTexCoord3iv(const GLint * arg_0)
+{
+  do_opengl_call(glTexCoord3iv_func, NULL, arg_0);
+}
+
+void glTexCoord3sv(const GLshort * arg_0)
+{
+  do_opengl_call(glTexCoord3sv_func, NULL, arg_0);
+}
+
+void glTexCoord4dv(const GLdouble * arg_0)
+{
+  do_opengl_call(glTexCoord4dv_func, NULL, arg_0);
+}
+
+void glTexCoord4fv(const GLfloat * arg_0)
+{
+  do_opengl_call(glTexCoord4fv_func, NULL, arg_0);
+}
+
+void glTexCoord4iv(const GLint * arg_0)
+{
+  do_opengl_call(glTexCoord4iv_func, NULL, arg_0);
+}
+
+void glTexCoord4sv(const GLshort * arg_0)
+{
+  do_opengl_call(glTexCoord4sv_func, NULL, arg_0);
+}
+
+void glRasterPos2d(GLdouble arg_0, GLdouble arg_1)
+{
+  do_opengl_call(glRasterPos2d_func, NULL, arg_0, arg_1);
+}
+
+void glRasterPos2f(GLfloat arg_0, GLfloat arg_1)
+{
+  do_opengl_call(glRasterPos2f_func, NULL, arg_0, arg_1);
+}
+
+void glRasterPos2i(GLint arg_0, GLint arg_1)
+{
+  do_opengl_call(glRasterPos2i_func, NULL, arg_0, arg_1);
+}
+
+void glRasterPos2s(GLshort arg_0, GLshort arg_1)
+{
+  do_opengl_call(glRasterPos2s_func, NULL, arg_0, arg_1);
+}
+
+void glRasterPos3d(GLdouble arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  do_opengl_call(glRasterPos3d_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glRasterPos3f(GLfloat arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  do_opengl_call(glRasterPos3f_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glRasterPos3i(GLint arg_0, GLint arg_1, GLint arg_2)
+{
+  do_opengl_call(glRasterPos3i_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glRasterPos3s(GLshort arg_0, GLshort arg_1, GLshort arg_2)
+{
+  do_opengl_call(glRasterPos3s_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glRasterPos4d(GLdouble arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3)
+{
+  do_opengl_call(glRasterPos4d_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glRasterPos4f(GLfloat arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3)
+{
+  do_opengl_call(glRasterPos4f_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glRasterPos4i(GLint arg_0, GLint arg_1, GLint arg_2, GLint arg_3)
+{
+  do_opengl_call(glRasterPos4i_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glRasterPos4s(GLshort arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3)
+{
+  do_opengl_call(glRasterPos4s_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glRasterPos2dv(const GLdouble * arg_0)
+{
+  do_opengl_call(glRasterPos2dv_func, NULL, arg_0);
+}
+
+void glRasterPos2fv(const GLfloat * arg_0)
+{
+  do_opengl_call(glRasterPos2fv_func, NULL, arg_0);
+}
+
+void glRasterPos2iv(const GLint * arg_0)
+{
+  do_opengl_call(glRasterPos2iv_func, NULL, arg_0);
+}
+
+void glRasterPos2sv(const GLshort * arg_0)
+{
+  do_opengl_call(glRasterPos2sv_func, NULL, arg_0);
+}
+
+void glRasterPos3dv(const GLdouble * arg_0)
+{
+  do_opengl_call(glRasterPos3dv_func, NULL, arg_0);
+}
+
+void glRasterPos3fv(const GLfloat * arg_0)
+{
+  do_opengl_call(glRasterPos3fv_func, NULL, arg_0);
+}
+
+void glRasterPos3iv(const GLint * arg_0)
+{
+  do_opengl_call(glRasterPos3iv_func, NULL, arg_0);
+}
+
+void glRasterPos3sv(const GLshort * arg_0)
+{
+  do_opengl_call(glRasterPos3sv_func, NULL, arg_0);
+}
+
+void glRasterPos4dv(const GLdouble * arg_0)
+{
+  do_opengl_call(glRasterPos4dv_func, NULL, arg_0);
+}
+
+void glRasterPos4fv(const GLfloat * arg_0)
+{
+  do_opengl_call(glRasterPos4fv_func, NULL, arg_0);
+}
+
+void glRasterPos4iv(const GLint * arg_0)
+{
+  do_opengl_call(glRasterPos4iv_func, NULL, arg_0);
+}
+
+void glRasterPos4sv(const GLshort * arg_0)
+{
+  do_opengl_call(glRasterPos4sv_func, NULL, arg_0);
+}
+
+void glRectd(GLdouble arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3)
+{
+  do_opengl_call(glRectd_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glRectf(GLfloat arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3)
+{
+  do_opengl_call(glRectf_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glRecti(GLint arg_0, GLint arg_1, GLint arg_2, GLint arg_3)
+{
+  do_opengl_call(glRecti_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glRects(GLshort arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3)
+{
+  do_opengl_call(glRects_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glArrayElement(GLint arg_0)
+{
+  do_opengl_call(glArrayElement_func, NULL, arg_0);
+}
+
+void glShadeModel(GLenum arg_0)
+{
+  do_opengl_call(glShadeModel_func, NULL, arg_0);
+}
+
+void glLightf(GLenum arg_0, GLenum arg_1, GLfloat arg_2)
+{
+  do_opengl_call(glLightf_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glLighti(GLenum arg_0, GLenum arg_1, GLint arg_2)
+{
+  do_opengl_call(glLighti_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glLightModelf(GLenum arg_0, GLfloat arg_1)
+{
+  do_opengl_call(glLightModelf_func, NULL, arg_0, arg_1);
+}
+
+void glLightModeli(GLenum arg_0, GLint arg_1)
+{
+  do_opengl_call(glLightModeli_func, NULL, arg_0, arg_1);
+}
+
+void glMaterialf(GLenum arg_0, GLenum arg_1, GLfloat arg_2)
+{
+  do_opengl_call(glMaterialf_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glMateriali(GLenum arg_0, GLenum arg_1, GLint arg_2)
+{
+  do_opengl_call(glMateriali_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glColorMaterial(GLenum arg_0, GLenum arg_1)
+{
+  do_opengl_call(glColorMaterial_func, NULL, arg_0, arg_1);
+}
+
+void glPixelZoom(GLfloat arg_0, GLfloat arg_1)
+{
+  do_opengl_call(glPixelZoom_func, NULL, arg_0, arg_1);
+}
+
+void glPixelStoref(GLenum arg_0, GLfloat arg_1)
+{
+  do_opengl_call(glPixelStoref_func, NULL, arg_0, arg_1);
+}
+
+void glPixelStorei(GLenum arg_0, GLint arg_1)
+{
+  do_opengl_call(glPixelStorei_func, NULL, arg_0, arg_1);
+}
+
+void glPixelTransferf(GLenum arg_0, GLfloat arg_1)
+{
+  do_opengl_call(glPixelTransferf_func, NULL, arg_0, arg_1);
+}
+
+void glPixelTransferi(GLenum arg_0, GLint arg_1)
+{
+  do_opengl_call(glPixelTransferi_func, NULL, arg_0, arg_1);
+}
+
+void glCopyPixels(GLint arg_0, GLint arg_1, GLsizei arg_2, GLsizei arg_3, GLenum arg_4)
+{
+  do_opengl_call(glCopyPixels_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void glStencilFunc(GLenum arg_0, GLint arg_1, GLuint arg_2)
+{
+  do_opengl_call(glStencilFunc_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glStencilMask(GLuint arg_0)
+{
+  do_opengl_call(glStencilMask_func, NULL, arg_0);
+}
+
+void glStencilOp(GLenum arg_0, GLenum arg_1, GLenum arg_2)
+{
+  do_opengl_call(glStencilOp_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glClearStencil(GLint arg_0)
+{
+  do_opengl_call(glClearStencil_func, NULL, arg_0);
+}
+
+void glTexGend(GLenum arg_0, GLenum arg_1, GLdouble arg_2)
+{
+  do_opengl_call(glTexGend_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glTexGenf(GLenum arg_0, GLenum arg_1, GLfloat arg_2)
+{
+  do_opengl_call(glTexGenf_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glTexGeni(GLenum arg_0, GLenum arg_1, GLint arg_2)
+{
+  do_opengl_call(glTexGeni_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glTexEnvf(GLenum arg_0, GLenum arg_1, GLfloat arg_2)
+{
+  do_opengl_call(glTexEnvf_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glTexEnvi(GLenum arg_0, GLenum arg_1, GLint arg_2)
+{
+  do_opengl_call(glTexEnvi_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glTexParameterf(GLenum arg_0, GLenum arg_1, GLfloat arg_2)
+{
+  do_opengl_call(glTexParameterf_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glTexParameteri(GLenum arg_0, GLenum arg_1, GLint arg_2)
+{
+  do_opengl_call(glTexParameteri_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glBindTexture(GLenum arg_0, GLuint arg_1)
+{
+  do_opengl_call(glBindTexture_func, NULL, arg_0, arg_1);
+}
+
+GLboolean glIsTexture(GLuint arg_0)
+{
+  GLboolean ret;
+  do_opengl_call(glIsTexture_func, &ret, arg_0);
+  return ret;
+}
+
+void glCopyTexImage1D(GLenum arg_0, GLint arg_1, GLenum arg_2, GLint arg_3, GLint arg_4, GLsizei arg_5, GLint arg_6)
+{
+  do_opengl_call(glCopyTexImage1D_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6);
+}
+
+void glCopyTexImage2D(GLenum arg_0, GLint arg_1, GLenum arg_2, GLint arg_3, GLint arg_4, GLsizei arg_5, GLsizei arg_6, GLint arg_7)
+{
+  do_opengl_call(glCopyTexImage2D_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7);
+}
+
+void glCopyTexSubImage1D(GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4, GLsizei arg_5)
+{
+  do_opengl_call(glCopyTexSubImage1D_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void glCopyTexSubImage2D(GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4, GLint arg_5, GLsizei arg_6, GLsizei arg_7)
+{
+  do_opengl_call(glCopyTexSubImage2D_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7);
+}
+
+void glEvalCoord1d(GLdouble arg_0)
+{
+  do_opengl_call(glEvalCoord1d_func, NULL, arg_0);
+}
+
+void glEvalCoord1f(GLfloat arg_0)
+{
+  do_opengl_call(glEvalCoord1f_func, NULL, arg_0);
+}
+
+void glEvalCoord1dv(const GLdouble * arg_0)
+{
+  do_opengl_call(glEvalCoord1dv_func, NULL, arg_0);
+}
+
+void glEvalCoord1fv(const GLfloat * arg_0)
+{
+  do_opengl_call(glEvalCoord1fv_func, NULL, arg_0);
+}
+
+void glEvalCoord2d(GLdouble arg_0, GLdouble arg_1)
+{
+  do_opengl_call(glEvalCoord2d_func, NULL, arg_0, arg_1);
+}
+
+void glEvalCoord2f(GLfloat arg_0, GLfloat arg_1)
+{
+  do_opengl_call(glEvalCoord2f_func, NULL, arg_0, arg_1);
+}
+
+void glEvalCoord2dv(const GLdouble * arg_0)
+{
+  do_opengl_call(glEvalCoord2dv_func, NULL, arg_0);
+}
+
+void glEvalCoord2fv(const GLfloat * arg_0)
+{
+  do_opengl_call(glEvalCoord2fv_func, NULL, arg_0);
+}
+
+void glMapGrid1d(GLint arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  do_opengl_call(glMapGrid1d_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glMapGrid1f(GLint arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  do_opengl_call(glMapGrid1f_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glMapGrid2d(GLint arg_0, GLdouble arg_1, GLdouble arg_2, GLint arg_3, GLdouble arg_4, GLdouble arg_5)
+{
+  do_opengl_call(glMapGrid2d_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void glMapGrid2f(GLint arg_0, GLfloat arg_1, GLfloat arg_2, GLint arg_3, GLfloat arg_4, GLfloat arg_5)
+{
+  do_opengl_call(glMapGrid2f_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void glEvalPoint1(GLint arg_0)
+{
+  do_opengl_call(glEvalPoint1_func, NULL, arg_0);
+}
+
+void glEvalPoint2(GLint arg_0, GLint arg_1)
+{
+  do_opengl_call(glEvalPoint2_func, NULL, arg_0, arg_1);
+}
+
+void glEvalMesh1(GLenum arg_0, GLint arg_1, GLint arg_2)
+{
+  do_opengl_call(glEvalMesh1_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glEvalMesh2(GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4)
+{
+  do_opengl_call(glEvalMesh2_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void glFogf(GLenum arg_0, GLfloat arg_1)
+{
+  do_opengl_call(glFogf_func, NULL, arg_0, arg_1);
+}
+
+void glFogi(GLenum arg_0, GLint arg_1)
+{
+  do_opengl_call(glFogi_func, NULL, arg_0, arg_1);
+}
+
+void glPassThrough(GLfloat arg_0)
+{
+  do_opengl_call(glPassThrough_func, NULL, arg_0);
+}
+
+void glInitNames()
+{
+  do_opengl_call(glInitNames_func, NULL);
+}
+
+void glLoadName(GLuint arg_0)
+{
+  do_opengl_call(glLoadName_func, NULL, arg_0);
+}
+
+void glPushName(GLuint arg_0)
+{
+  do_opengl_call(glPushName_func, NULL, arg_0);
+}
+
+void glPopName()
+{
+  do_opengl_call(glPopName_func, NULL);
+}
+
+void glCopyTexSubImage3D(GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4, GLint arg_5, GLint arg_6, GLsizei arg_7, GLsizei arg_8)
+{
+  do_opengl_call(glCopyTexSubImage3D_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8);
+}
+
+void glCopyColorSubTable(GLenum arg_0, GLsizei arg_1, GLint arg_2, GLint arg_3, GLsizei arg_4)
+{
+  do_opengl_call(glCopyColorSubTable_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void glCopyColorTable(GLenum arg_0, GLenum arg_1, GLint arg_2, GLint arg_3, GLsizei arg_4)
+{
+  do_opengl_call(glCopyColorTable_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void glBlendEquation(GLenum arg_0)
+{
+  do_opengl_call(glBlendEquation_func, NULL, arg_0);
+}
+
+void glBlendColor(GLclampf arg_0, GLclampf arg_1, GLclampf arg_2, GLclampf arg_3)
+{
+  do_opengl_call(glBlendColor_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glHistogram(GLenum arg_0, GLsizei arg_1, GLenum arg_2, GLboolean arg_3)
+{
+  do_opengl_call(glHistogram_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glResetHistogram(GLenum arg_0)
+{
+  do_opengl_call(glResetHistogram_func, NULL, arg_0);
+}
+
+void glMinmax(GLenum arg_0, GLenum arg_1, GLboolean arg_2)
+{
+  do_opengl_call(glMinmax_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glResetMinmax(GLenum arg_0)
+{
+  do_opengl_call(glResetMinmax_func, NULL, arg_0);
+}
+
+void glConvolutionParameterf(GLenum arg_0, GLenum arg_1, GLfloat arg_2)
+{
+  do_opengl_call(glConvolutionParameterf_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glConvolutionParameteri(GLenum arg_0, GLenum arg_1, GLint arg_2)
+{
+  do_opengl_call(glConvolutionParameteri_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glCopyConvolutionFilter1D(GLenum arg_0, GLenum arg_1, GLint arg_2, GLint arg_3, GLsizei arg_4)
+{
+  do_opengl_call(glCopyConvolutionFilter1D_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void glCopyConvolutionFilter2D(GLenum arg_0, GLenum arg_1, GLint arg_2, GLint arg_3, GLsizei arg_4, GLsizei arg_5)
+{
+  do_opengl_call(glCopyConvolutionFilter2D_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void glActiveTexture(GLenum arg_0)
+{
+  do_opengl_call(glActiveTexture_func, NULL, arg_0);
+}
+
+void glClientActiveTexture(GLenum arg_0)
+{
+  do_opengl_call(glClientActiveTexture_func, NULL, arg_0);
+}
+
+void glMultiTexCoord1d(GLenum arg_0, GLdouble arg_1)
+{
+  do_opengl_call(glMultiTexCoord1d_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord1dv(GLenum arg_0, const GLdouble * arg_1)
+{
+  do_opengl_call(glMultiTexCoord1dv_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord1f(GLenum arg_0, GLfloat arg_1)
+{
+  do_opengl_call(glMultiTexCoord1f_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord1fv(GLenum arg_0, const GLfloat * arg_1)
+{
+  do_opengl_call(glMultiTexCoord1fv_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord1i(GLenum arg_0, GLint arg_1)
+{
+  do_opengl_call(glMultiTexCoord1i_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord1iv(GLenum arg_0, const GLint * arg_1)
+{
+  do_opengl_call(glMultiTexCoord1iv_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord1s(GLenum arg_0, GLshort arg_1)
+{
+  do_opengl_call(glMultiTexCoord1s_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord1sv(GLenum arg_0, const GLshort * arg_1)
+{
+  do_opengl_call(glMultiTexCoord1sv_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord2d(GLenum arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  do_opengl_call(glMultiTexCoord2d_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glMultiTexCoord2dv(GLenum arg_0, const GLdouble * arg_1)
+{
+  do_opengl_call(glMultiTexCoord2dv_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord2f(GLenum arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  do_opengl_call(glMultiTexCoord2f_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glMultiTexCoord2fv(GLenum arg_0, const GLfloat * arg_1)
+{
+  do_opengl_call(glMultiTexCoord2fv_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord2i(GLenum arg_0, GLint arg_1, GLint arg_2)
+{
+  do_opengl_call(glMultiTexCoord2i_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glMultiTexCoord2iv(GLenum arg_0, const GLint * arg_1)
+{
+  do_opengl_call(glMultiTexCoord2iv_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord2s(GLenum arg_0, GLshort arg_1, GLshort arg_2)
+{
+  do_opengl_call(glMultiTexCoord2s_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void glMultiTexCoord2sv(GLenum arg_0, const GLshort * arg_1)
+{
+  do_opengl_call(glMultiTexCoord2sv_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord3d(GLenum arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3)
+{
+  do_opengl_call(glMultiTexCoord3d_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glMultiTexCoord3dv(GLenum arg_0, const GLdouble * arg_1)
+{
+  do_opengl_call(glMultiTexCoord3dv_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord3f(GLenum arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3)
+{
+  do_opengl_call(glMultiTexCoord3f_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glMultiTexCoord3fv(GLenum arg_0, const GLfloat * arg_1)
+{
+  do_opengl_call(glMultiTexCoord3fv_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord3i(GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3)
+{
+  do_opengl_call(glMultiTexCoord3i_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glMultiTexCoord3iv(GLenum arg_0, const GLint * arg_1)
+{
+  do_opengl_call(glMultiTexCoord3iv_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord3s(GLenum arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3)
+{
+  do_opengl_call(glMultiTexCoord3s_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void glMultiTexCoord3sv(GLenum arg_0, const GLshort * arg_1)
+{
+  do_opengl_call(glMultiTexCoord3sv_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord4d(GLenum arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4)
+{
+  do_opengl_call(glMultiTexCoord4d_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void glMultiTexCoord4dv(GLenum arg_0, const GLdouble * arg_1)
+{
+  do_opengl_call(glMultiTexCoord4dv_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord4f(GLenum arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4)
+{
+  do_opengl_call(glMultiTexCoord4f_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void glMultiTexCoord4fv(GLenum arg_0, const GLfloat * arg_1)
+{
+  do_opengl_call(glMultiTexCoord4fv_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord4i(GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4)
+{
+  do_opengl_call(glMultiTexCoord4i_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void glMultiTexCoord4iv(GLenum arg_0, const GLint * arg_1)
+{
+  do_opengl_call(glMultiTexCoord4iv_func, NULL, arg_0, arg_1);
+}
+
+void glMultiTexCoord4s(GLenum arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3, GLshort arg_4)
+{
+  do_opengl_call(glMultiTexCoord4s_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void glMultiTexCoord4sv(GLenum arg_0, const GLshort * arg_1)
+{
+  do_opengl_call(glMultiTexCoord4sv_func, NULL, arg_0, arg_1);
+}
+
+void glLoadTransposeMatrixd(const GLdouble arg_0[16])
+{
+  do_opengl_call(glLoadTransposeMatrixd_func, NULL, arg_0);
+}
+
+void glLoadTransposeMatrixf(const GLfloat arg_0[16])
+{
+  do_opengl_call(glLoadTransposeMatrixf_func, NULL, arg_0);
+}
+
+void glMultTransposeMatrixd(const GLdouble arg_0[16])
+{
+  do_opengl_call(glMultTransposeMatrixd_func, NULL, arg_0);
+}
+
+void glMultTransposeMatrixf(const GLfloat arg_0[16])
+{
+  do_opengl_call(glMultTransposeMatrixf_func, NULL, arg_0);
+}
+
+void glSampleCoverage(GLclampf arg_0, GLboolean arg_1)
+{
+  do_opengl_call(glSampleCoverage_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glActiveTextureARB) (GLenum arg_0)
+{
+  CHECK_PROC(glActiveTextureARB);
+  do_opengl_call(glActiveTextureARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glClientActiveTextureARB) (GLenum arg_0)
+{
+  CHECK_PROC(glClientActiveTextureARB);
+  do_opengl_call(glClientActiveTextureARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glMultiTexCoord1dARB) (GLenum arg_0, GLdouble arg_1)
+{
+  CHECK_PROC(glMultiTexCoord1dARB);
+  do_opengl_call(glMultiTexCoord1dARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord1dvARB) (GLenum arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glMultiTexCoord1dvARB);
+  do_opengl_call(glMultiTexCoord1dvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord1fARB) (GLenum arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glMultiTexCoord1fARB);
+  do_opengl_call(glMultiTexCoord1fARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord1fvARB) (GLenum arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glMultiTexCoord1fvARB);
+  do_opengl_call(glMultiTexCoord1fvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord1iARB) (GLenum arg_0, GLint arg_1)
+{
+  CHECK_PROC(glMultiTexCoord1iARB);
+  do_opengl_call(glMultiTexCoord1iARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord1ivARB) (GLenum arg_0, const GLint * arg_1)
+{
+  CHECK_PROC(glMultiTexCoord1ivARB);
+  do_opengl_call(glMultiTexCoord1ivARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord1sARB) (GLenum arg_0, GLshort arg_1)
+{
+  CHECK_PROC(glMultiTexCoord1sARB);
+  do_opengl_call(glMultiTexCoord1sARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord1svARB) (GLenum arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glMultiTexCoord1svARB);
+  do_opengl_call(glMultiTexCoord1svARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord2dARB) (GLenum arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  CHECK_PROC(glMultiTexCoord2dARB);
+  do_opengl_call(glMultiTexCoord2dARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glMultiTexCoord2dvARB) (GLenum arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glMultiTexCoord2dvARB);
+  do_opengl_call(glMultiTexCoord2dvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord2fARB) (GLenum arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  CHECK_PROC(glMultiTexCoord2fARB);
+  do_opengl_call(glMultiTexCoord2fARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glMultiTexCoord2fvARB) (GLenum arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glMultiTexCoord2fvARB);
+  do_opengl_call(glMultiTexCoord2fvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord2iARB) (GLenum arg_0, GLint arg_1, GLint arg_2)
+{
+  CHECK_PROC(glMultiTexCoord2iARB);
+  do_opengl_call(glMultiTexCoord2iARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glMultiTexCoord2ivARB) (GLenum arg_0, const GLint * arg_1)
+{
+  CHECK_PROC(glMultiTexCoord2ivARB);
+  do_opengl_call(glMultiTexCoord2ivARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord2sARB) (GLenum arg_0, GLshort arg_1, GLshort arg_2)
+{
+  CHECK_PROC(glMultiTexCoord2sARB);
+  do_opengl_call(glMultiTexCoord2sARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glMultiTexCoord2svARB) (GLenum arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glMultiTexCoord2svARB);
+  do_opengl_call(glMultiTexCoord2svARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord3dARB) (GLenum arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3)
+{
+  CHECK_PROC(glMultiTexCoord3dARB);
+  do_opengl_call(glMultiTexCoord3dARB_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glMultiTexCoord3dvARB) (GLenum arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glMultiTexCoord3dvARB);
+  do_opengl_call(glMultiTexCoord3dvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord3fARB) (GLenum arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3)
+{
+  CHECK_PROC(glMultiTexCoord3fARB);
+  do_opengl_call(glMultiTexCoord3fARB_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glMultiTexCoord3fvARB) (GLenum arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glMultiTexCoord3fvARB);
+  do_opengl_call(glMultiTexCoord3fvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord3iARB) (GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3)
+{
+  CHECK_PROC(glMultiTexCoord3iARB);
+  do_opengl_call(glMultiTexCoord3iARB_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glMultiTexCoord3ivARB) (GLenum arg_0, const GLint * arg_1)
+{
+  CHECK_PROC(glMultiTexCoord3ivARB);
+  do_opengl_call(glMultiTexCoord3ivARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord3sARB) (GLenum arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3)
+{
+  CHECK_PROC(glMultiTexCoord3sARB);
+  do_opengl_call(glMultiTexCoord3sARB_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glMultiTexCoord3svARB) (GLenum arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glMultiTexCoord3svARB);
+  do_opengl_call(glMultiTexCoord3svARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord4dARB) (GLenum arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4)
+{
+  CHECK_PROC(glMultiTexCoord4dARB);
+  do_opengl_call(glMultiTexCoord4dARB_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glMultiTexCoord4dvARB) (GLenum arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glMultiTexCoord4dvARB);
+  do_opengl_call(glMultiTexCoord4dvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord4fARB) (GLenum arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4)
+{
+  CHECK_PROC(glMultiTexCoord4fARB);
+  do_opengl_call(glMultiTexCoord4fARB_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glMultiTexCoord4fvARB) (GLenum arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glMultiTexCoord4fvARB);
+  do_opengl_call(glMultiTexCoord4fvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord4iARB) (GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4)
+{
+  CHECK_PROC(glMultiTexCoord4iARB);
+  do_opengl_call(glMultiTexCoord4iARB_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glMultiTexCoord4ivARB) (GLenum arg_0, const GLint * arg_1)
+{
+  CHECK_PROC(glMultiTexCoord4ivARB);
+  do_opengl_call(glMultiTexCoord4ivARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord4sARB) (GLenum arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3, GLshort arg_4)
+{
+  CHECK_PROC(glMultiTexCoord4sARB);
+  do_opengl_call(glMultiTexCoord4sARB_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glMultiTexCoord4svARB) (GLenum arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glMultiTexCoord4svARB);
+  do_opengl_call(glMultiTexCoord4svARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glLoadTransposeMatrixfARB) (const GLfloat arg_0[16])
+{
+  CHECK_PROC(glLoadTransposeMatrixfARB);
+  do_opengl_call(glLoadTransposeMatrixfARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glLoadTransposeMatrixdARB) (const GLdouble arg_0[16])
+{
+  CHECK_PROC(glLoadTransposeMatrixdARB);
+  do_opengl_call(glLoadTransposeMatrixdARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glMultTransposeMatrixfARB) (const GLfloat arg_0[16])
+{
+  CHECK_PROC(glMultTransposeMatrixfARB);
+  do_opengl_call(glMultTransposeMatrixfARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glMultTransposeMatrixdARB) (const GLdouble arg_0[16])
+{
+  CHECK_PROC(glMultTransposeMatrixdARB);
+  do_opengl_call(glMultTransposeMatrixdARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glSampleCoverageARB) (GLclampf arg_0, GLboolean arg_1)
+{
+  CHECK_PROC(glSampleCoverageARB);
+  do_opengl_call(glSampleCoverageARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glPointParameterfARB) (GLenum arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glPointParameterfARB);
+  do_opengl_call(glPointParameterfARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexBlendARB) (GLint arg_0)
+{
+  CHECK_PROC(glVertexBlendARB);
+  do_opengl_call(glVertexBlendARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glCurrentPaletteMatrixARB) (GLint arg_0)
+{
+  CHECK_PROC(glCurrentPaletteMatrixARB);
+  do_opengl_call(glCurrentPaletteMatrixARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos2dARB) (GLdouble arg_0, GLdouble arg_1)
+{
+  CHECK_PROC(glWindowPos2dARB);
+  do_opengl_call(glWindowPos2dARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glWindowPos2dvARB) (const GLdouble * arg_0)
+{
+  CHECK_PROC(glWindowPos2dvARB);
+  do_opengl_call(glWindowPos2dvARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos2fARB) (GLfloat arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glWindowPos2fARB);
+  do_opengl_call(glWindowPos2fARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glWindowPos2fvARB) (const GLfloat * arg_0)
+{
+  CHECK_PROC(glWindowPos2fvARB);
+  do_opengl_call(glWindowPos2fvARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos2iARB) (GLint arg_0, GLint arg_1)
+{
+  CHECK_PROC(glWindowPos2iARB);
+  do_opengl_call(glWindowPos2iARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glWindowPos2ivARB) (const GLint * arg_0)
+{
+  CHECK_PROC(glWindowPos2ivARB);
+  do_opengl_call(glWindowPos2ivARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos2sARB) (GLshort arg_0, GLshort arg_1)
+{
+  CHECK_PROC(glWindowPos2sARB);
+  do_opengl_call(glWindowPos2sARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glWindowPos2svARB) (const GLshort * arg_0)
+{
+  CHECK_PROC(glWindowPos2svARB);
+  do_opengl_call(glWindowPos2svARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos3dARB) (GLdouble arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  CHECK_PROC(glWindowPos3dARB);
+  do_opengl_call(glWindowPos3dARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glWindowPos3dvARB) (const GLdouble * arg_0)
+{
+  CHECK_PROC(glWindowPos3dvARB);
+  do_opengl_call(glWindowPos3dvARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos3fARB) (GLfloat arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  CHECK_PROC(glWindowPos3fARB);
+  do_opengl_call(glWindowPos3fARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glWindowPos3fvARB) (const GLfloat * arg_0)
+{
+  CHECK_PROC(glWindowPos3fvARB);
+  do_opengl_call(glWindowPos3fvARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos3iARB) (GLint arg_0, GLint arg_1, GLint arg_2)
+{
+  CHECK_PROC(glWindowPos3iARB);
+  do_opengl_call(glWindowPos3iARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glWindowPos3ivARB) (const GLint * arg_0)
+{
+  CHECK_PROC(glWindowPos3ivARB);
+  do_opengl_call(glWindowPos3ivARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos3sARB) (GLshort arg_0, GLshort arg_1, GLshort arg_2)
+{
+  CHECK_PROC(glWindowPos3sARB);
+  do_opengl_call(glWindowPos3sARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glWindowPos3svARB) (const GLshort * arg_0)
+{
+  CHECK_PROC(glWindowPos3svARB);
+  do_opengl_call(glWindowPos3svARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glVertexAttrib1dARB) (GLuint arg_0, GLdouble arg_1)
+{
+  CHECK_PROC(glVertexAttrib1dARB);
+  do_opengl_call(glVertexAttrib1dARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib1dvARB) (GLuint arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glVertexAttrib1dvARB);
+  do_opengl_call(glVertexAttrib1dvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib1fARB) (GLuint arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glVertexAttrib1fARB);
+  do_opengl_call(glVertexAttrib1fARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib1fvARB) (GLuint arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glVertexAttrib1fvARB);
+  do_opengl_call(glVertexAttrib1fvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib1sARB) (GLuint arg_0, GLshort arg_1)
+{
+  CHECK_PROC(glVertexAttrib1sARB);
+  do_opengl_call(glVertexAttrib1sARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib1svARB) (GLuint arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glVertexAttrib1svARB);
+  do_opengl_call(glVertexAttrib1svARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib2dARB) (GLuint arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  CHECK_PROC(glVertexAttrib2dARB);
+  do_opengl_call(glVertexAttrib2dARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttrib2dvARB) (GLuint arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glVertexAttrib2dvARB);
+  do_opengl_call(glVertexAttrib2dvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib2fARB) (GLuint arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  CHECK_PROC(glVertexAttrib2fARB);
+  do_opengl_call(glVertexAttrib2fARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttrib2fvARB) (GLuint arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glVertexAttrib2fvARB);
+  do_opengl_call(glVertexAttrib2fvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib2sARB) (GLuint arg_0, GLshort arg_1, GLshort arg_2)
+{
+  CHECK_PROC(glVertexAttrib2sARB);
+  do_opengl_call(glVertexAttrib2sARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttrib2svARB) (GLuint arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glVertexAttrib2svARB);
+  do_opengl_call(glVertexAttrib2svARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib3dARB) (GLuint arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3)
+{
+  CHECK_PROC(glVertexAttrib3dARB);
+  do_opengl_call(glVertexAttrib3dARB_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glVertexAttrib3dvARB) (GLuint arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glVertexAttrib3dvARB);
+  do_opengl_call(glVertexAttrib3dvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib3fARB) (GLuint arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3)
+{
+  CHECK_PROC(glVertexAttrib3fARB);
+  do_opengl_call(glVertexAttrib3fARB_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glVertexAttrib3fvARB) (GLuint arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glVertexAttrib3fvARB);
+  do_opengl_call(glVertexAttrib3fvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib3sARB) (GLuint arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3)
+{
+  CHECK_PROC(glVertexAttrib3sARB);
+  do_opengl_call(glVertexAttrib3sARB_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glVertexAttrib3svARB) (GLuint arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glVertexAttrib3svARB);
+  do_opengl_call(glVertexAttrib3svARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4NbvARB) (GLuint arg_0, const GLbyte * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4NbvARB);
+  do_opengl_call(glVertexAttrib4NbvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4NivARB) (GLuint arg_0, const GLint * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4NivARB);
+  do_opengl_call(glVertexAttrib4NivARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4NsvARB) (GLuint arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4NsvARB);
+  do_opengl_call(glVertexAttrib4NsvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4NubARB) (GLuint arg_0, GLubyte arg_1, GLubyte arg_2, GLubyte arg_3, GLubyte arg_4)
+{
+  CHECK_PROC(glVertexAttrib4NubARB);
+  do_opengl_call(glVertexAttrib4NubARB_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glVertexAttrib4NubvARB) (GLuint arg_0, const GLubyte * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4NubvARB);
+  do_opengl_call(glVertexAttrib4NubvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4NuivARB) (GLuint arg_0, const GLuint * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4NuivARB);
+  do_opengl_call(glVertexAttrib4NuivARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4NusvARB) (GLuint arg_0, const GLushort * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4NusvARB);
+  do_opengl_call(glVertexAttrib4NusvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4bvARB) (GLuint arg_0, const GLbyte * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4bvARB);
+  do_opengl_call(glVertexAttrib4bvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4dARB) (GLuint arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4)
+{
+  CHECK_PROC(glVertexAttrib4dARB);
+  do_opengl_call(glVertexAttrib4dARB_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glVertexAttrib4dvARB) (GLuint arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4dvARB);
+  do_opengl_call(glVertexAttrib4dvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4fARB) (GLuint arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4)
+{
+  CHECK_PROC(glVertexAttrib4fARB);
+  do_opengl_call(glVertexAttrib4fARB_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glVertexAttrib4fvARB) (GLuint arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4fvARB);
+  do_opengl_call(glVertexAttrib4fvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4ivARB) (GLuint arg_0, const GLint * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4ivARB);
+  do_opengl_call(glVertexAttrib4ivARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4sARB) (GLuint arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3, GLshort arg_4)
+{
+  CHECK_PROC(glVertexAttrib4sARB);
+  do_opengl_call(glVertexAttrib4sARB_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glVertexAttrib4svARB) (GLuint arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4svARB);
+  do_opengl_call(glVertexAttrib4svARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4ubvARB) (GLuint arg_0, const GLubyte * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4ubvARB);
+  do_opengl_call(glVertexAttrib4ubvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4uivARB) (GLuint arg_0, const GLuint * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4uivARB);
+  do_opengl_call(glVertexAttrib4uivARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4usvARB) (GLuint arg_0, const GLushort * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4usvARB);
+  do_opengl_call(glVertexAttrib4usvARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glEnableVertexAttribArrayARB) (GLuint arg_0)
+{
+  CHECK_PROC(glEnableVertexAttribArrayARB);
+  do_opengl_call(glEnableVertexAttribArrayARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glDisableVertexAttribArrayARB) (GLuint arg_0)
+{
+  CHECK_PROC(glDisableVertexAttribArrayARB);
+  do_opengl_call(glDisableVertexAttribArrayARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glBindProgramARB) (GLenum arg_0, GLuint arg_1)
+{
+  CHECK_PROC(glBindProgramARB);
+  do_opengl_call(glBindProgramARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glProgramEnvParameter4dARB) (GLenum arg_0, GLuint arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4, GLdouble arg_5)
+{
+  CHECK_PROC(glProgramEnvParameter4dARB);
+  do_opengl_call(glProgramEnvParameter4dARB_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void EXT_FUNC(glProgramEnvParameter4dvARB) (GLenum arg_0, GLuint arg_1, const GLdouble * arg_2)
+{
+  CHECK_PROC(glProgramEnvParameter4dvARB);
+  do_opengl_call(glProgramEnvParameter4dvARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glProgramEnvParameter4fARB) (GLenum arg_0, GLuint arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4, GLfloat arg_5)
+{
+  CHECK_PROC(glProgramEnvParameter4fARB);
+  do_opengl_call(glProgramEnvParameter4fARB_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void EXT_FUNC(glProgramEnvParameter4fvARB) (GLenum arg_0, GLuint arg_1, const GLfloat * arg_2)
+{
+  CHECK_PROC(glProgramEnvParameter4fvARB);
+  do_opengl_call(glProgramEnvParameter4fvARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glProgramLocalParameter4dARB) (GLenum arg_0, GLuint arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4, GLdouble arg_5)
+{
+  CHECK_PROC(glProgramLocalParameter4dARB);
+  do_opengl_call(glProgramLocalParameter4dARB_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void EXT_FUNC(glProgramLocalParameter4dvARB) (GLenum arg_0, GLuint arg_1, const GLdouble * arg_2)
+{
+  CHECK_PROC(glProgramLocalParameter4dvARB);
+  do_opengl_call(glProgramLocalParameter4dvARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glProgramLocalParameter4fARB) (GLenum arg_0, GLuint arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4, GLfloat arg_5)
+{
+  CHECK_PROC(glProgramLocalParameter4fARB);
+  do_opengl_call(glProgramLocalParameter4fARB_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void EXT_FUNC(glProgramLocalParameter4fvARB) (GLenum arg_0, GLuint arg_1, const GLfloat * arg_2)
+{
+  CHECK_PROC(glProgramLocalParameter4fvARB);
+  do_opengl_call(glProgramLocalParameter4fvARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+GLboolean EXT_FUNC(glIsProgramARB) (GLuint arg_0)
+{
+  GLboolean ret;
+  CHECK_PROC_WITH_RET(glIsProgramARB);
+  do_opengl_call(glIsProgramARB_func, &ret, arg_0);
+  return ret;
+}
+
+void EXT_FUNC(glBindBufferARB) (GLenum arg_0, GLuint arg_1)
+{
+  CHECK_PROC(glBindBufferARB);
+  do_opengl_call(glBindBufferARB_func, NULL, arg_0, arg_1);
+}
+
+GLboolean EXT_FUNC(glIsBufferARB) (GLuint arg_0)
+{
+  GLboolean ret;
+  CHECK_PROC_WITH_RET(glIsBufferARB);
+  do_opengl_call(glIsBufferARB_func, &ret, arg_0);
+  return ret;
+}
+
+GLboolean EXT_FUNC(glUnmapBufferARB) (GLenum arg_0)
+{
+  GLboolean ret;
+  CHECK_PROC_WITH_RET(glUnmapBufferARB);
+  do_opengl_call(glUnmapBufferARB_func, &ret, arg_0);
+  return ret;
+}
+
+GLboolean EXT_FUNC(glIsQueryARB) (GLuint arg_0)
+{
+  GLboolean ret;
+  CHECK_PROC_WITH_RET(glIsQueryARB);
+  do_opengl_call(glIsQueryARB_func, &ret, arg_0);
+  return ret;
+}
+
+void EXT_FUNC(glBeginQueryARB) (GLenum arg_0, GLuint arg_1)
+{
+  CHECK_PROC(glBeginQueryARB);
+  do_opengl_call(glBeginQueryARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glEndQueryARB) (GLenum arg_0)
+{
+  CHECK_PROC(glEndQueryARB);
+  do_opengl_call(glEndQueryARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glDeleteObjectARB) (GLhandleARB arg_0)
+{
+  CHECK_PROC(glDeleteObjectARB);
+  do_opengl_call(glDeleteObjectARB_func, NULL, arg_0);
+}
+
+GLhandleARB EXT_FUNC(glGetHandleARB) (GLenum arg_0)
+{
+  GLhandleARB ret;
+  CHECK_PROC_WITH_RET(glGetHandleARB);
+  do_opengl_call(glGetHandleARB_func, &ret, arg_0);
+  return ret;
+}
+
+void EXT_FUNC(glDetachObjectARB) (GLhandleARB arg_0, GLhandleARB arg_1)
+{
+  CHECK_PROC(glDetachObjectARB);
+  do_opengl_call(glDetachObjectARB_func, NULL, arg_0, arg_1);
+}
+
+GLhandleARB EXT_FUNC(glCreateShaderObjectARB) (GLenum arg_0)
+{
+  GLhandleARB ret;
+  CHECK_PROC_WITH_RET(glCreateShaderObjectARB);
+  do_opengl_call(glCreateShaderObjectARB_func, &ret, arg_0);
+  return ret;
+}
+
+void EXT_FUNC(glCompileShaderARB) (GLhandleARB arg_0)
+{
+  CHECK_PROC(glCompileShaderARB);
+  do_opengl_call(glCompileShaderARB_func, NULL, arg_0);
+}
+
+GLhandleARB EXT_FUNC(glCreateProgramObjectARB) ()
+{
+  GLhandleARB ret;
+  CHECK_PROC_WITH_RET(glCreateProgramObjectARB);
+  do_opengl_call(glCreateProgramObjectARB_func, &ret);
+  return ret;
+}
+
+void EXT_FUNC(glAttachObjectARB) (GLhandleARB arg_0, GLhandleARB arg_1)
+{
+  CHECK_PROC(glAttachObjectARB);
+  do_opengl_call(glAttachObjectARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glLinkProgramARB) (GLhandleARB arg_0)
+{
+  CHECK_PROC(glLinkProgramARB);
+  do_opengl_call(glLinkProgramARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glUseProgramObjectARB) (GLhandleARB arg_0)
+{
+  CHECK_PROC(glUseProgramObjectARB);
+  do_opengl_call(glUseProgramObjectARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glValidateProgramARB) (GLhandleARB arg_0)
+{
+  CHECK_PROC(glValidateProgramARB);
+  do_opengl_call(glValidateProgramARB_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glUniform1fARB) (GLint arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glUniform1fARB);
+  do_opengl_call(glUniform1fARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glUniform2fARB) (GLint arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  CHECK_PROC(glUniform2fARB);
+  do_opengl_call(glUniform2fARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glUniform3fARB) (GLint arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3)
+{
+  CHECK_PROC(glUniform3fARB);
+  do_opengl_call(glUniform3fARB_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glUniform4fARB) (GLint arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4)
+{
+  CHECK_PROC(glUniform4fARB);
+  do_opengl_call(glUniform4fARB_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glUniform1iARB) (GLint arg_0, GLint arg_1)
+{
+  CHECK_PROC(glUniform1iARB);
+  do_opengl_call(glUniform1iARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glUniform2iARB) (GLint arg_0, GLint arg_1, GLint arg_2)
+{
+  CHECK_PROC(glUniform2iARB);
+  do_opengl_call(glUniform2iARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glUniform3iARB) (GLint arg_0, GLint arg_1, GLint arg_2, GLint arg_3)
+{
+  CHECK_PROC(glUniform3iARB);
+  do_opengl_call(glUniform3iARB_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glUniform4iARB) (GLint arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4)
+{
+  CHECK_PROC(glUniform4iARB);
+  do_opengl_call(glUniform4iARB_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glUniform1fvARB) (GLint arg_0, GLsizei arg_1, const GLfloat * arg_2)
+{
+  CHECK_PROC(glUniform1fvARB);
+  do_opengl_call(glUniform1fvARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glUniform2fvARB) (GLint arg_0, GLsizei arg_1, const GLfloat * arg_2)
+{
+  CHECK_PROC(glUniform2fvARB);
+  do_opengl_call(glUniform2fvARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glUniform3fvARB) (GLint arg_0, GLsizei arg_1, const GLfloat * arg_2)
+{
+  CHECK_PROC(glUniform3fvARB);
+  do_opengl_call(glUniform3fvARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glUniform4fvARB) (GLint arg_0, GLsizei arg_1, const GLfloat * arg_2)
+{
+  CHECK_PROC(glUniform4fvARB);
+  do_opengl_call(glUniform4fvARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glUniform1ivARB) (GLint arg_0, GLsizei arg_1, const GLint * arg_2)
+{
+  CHECK_PROC(glUniform1ivARB);
+  do_opengl_call(glUniform1ivARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glUniform2ivARB) (GLint arg_0, GLsizei arg_1, const GLint * arg_2)
+{
+  CHECK_PROC(glUniform2ivARB);
+  do_opengl_call(glUniform2ivARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glUniform3ivARB) (GLint arg_0, GLsizei arg_1, const GLint * arg_2)
+{
+  CHECK_PROC(glUniform3ivARB);
+  do_opengl_call(glUniform3ivARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glUniform4ivARB) (GLint arg_0, GLsizei arg_1, const GLint * arg_2)
+{
+  CHECK_PROC(glUniform4ivARB);
+  do_opengl_call(glUniform4ivARB_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glUniformMatrix2fvARB) (GLint arg_0, GLsizei arg_1, GLboolean arg_2, const GLfloat * arg_3)
+{
+  CHECK_PROC(glUniformMatrix2fvARB);
+  do_opengl_call(glUniformMatrix2fvARB_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glUniformMatrix3fvARB) (GLint arg_0, GLsizei arg_1, GLboolean arg_2, const GLfloat * arg_3)
+{
+  CHECK_PROC(glUniformMatrix3fvARB);
+  do_opengl_call(glUniformMatrix3fvARB_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glUniformMatrix4fvARB) (GLint arg_0, GLsizei arg_1, GLboolean arg_2, const GLfloat * arg_3)
+{
+  CHECK_PROC(glUniformMatrix4fvARB);
+  do_opengl_call(glUniformMatrix4fvARB_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glClampColorARB) (GLenum arg_0, GLenum arg_1)
+{
+  CHECK_PROC(glClampColorARB);
+  do_opengl_call(glClampColorARB_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glBlendColorEXT) (GLclampf arg_0, GLclampf arg_1, GLclampf arg_2, GLclampf arg_3)
+{
+  CHECK_PROC(glBlendColorEXT);
+  do_opengl_call(glBlendColorEXT_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glPolygonOffsetEXT) (GLfloat arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glPolygonOffsetEXT);
+  do_opengl_call(glPolygonOffsetEXT_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glCopyTexImage1DEXT) (GLenum arg_0, GLint arg_1, GLenum arg_2, GLint arg_3, GLint arg_4, GLsizei arg_5, GLint arg_6)
+{
+  CHECK_PROC(glCopyTexImage1DEXT);
+  do_opengl_call(glCopyTexImage1DEXT_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6);
+}
+
+void EXT_FUNC(glCopyTexImage2DEXT) (GLenum arg_0, GLint arg_1, GLenum arg_2, GLint arg_3, GLint arg_4, GLsizei arg_5, GLsizei arg_6, GLint arg_7)
+{
+  CHECK_PROC(glCopyTexImage2DEXT);
+  do_opengl_call(glCopyTexImage2DEXT_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7);
+}
+
+void EXT_FUNC(glCopyTexSubImage1DEXT) (GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4, GLsizei arg_5)
+{
+  CHECK_PROC(glCopyTexSubImage1DEXT);
+  do_opengl_call(glCopyTexSubImage1DEXT_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void EXT_FUNC(glCopyTexSubImage2DEXT) (GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4, GLint arg_5, GLsizei arg_6, GLsizei arg_7)
+{
+  CHECK_PROC(glCopyTexSubImage2DEXT);
+  do_opengl_call(glCopyTexSubImage2DEXT_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7);
+}
+
+void EXT_FUNC(glCopyTexSubImage3DEXT) (GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4, GLint arg_5, GLint arg_6, GLsizei arg_7, GLsizei arg_8)
+{
+  CHECK_PROC(glCopyTexSubImage3DEXT);
+  do_opengl_call(glCopyTexSubImage3DEXT_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8);
+}
+
+void EXT_FUNC(glHistogramEXT) (GLenum arg_0, GLsizei arg_1, GLenum arg_2, GLboolean arg_3)
+{
+  CHECK_PROC(glHistogramEXT);
+  do_opengl_call(glHistogramEXT_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glMinmaxEXT) (GLenum arg_0, GLenum arg_1, GLboolean arg_2)
+{
+  CHECK_PROC(glMinmaxEXT);
+  do_opengl_call(glMinmaxEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glResetHistogramEXT) (GLenum arg_0)
+{
+  CHECK_PROC(glResetHistogramEXT);
+  do_opengl_call(glResetHistogramEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glResetMinmaxEXT) (GLenum arg_0)
+{
+  CHECK_PROC(glResetMinmaxEXT);
+  do_opengl_call(glResetMinmaxEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glConvolutionParameterfEXT) (GLenum arg_0, GLenum arg_1, GLfloat arg_2)
+{
+  CHECK_PROC(glConvolutionParameterfEXT);
+  do_opengl_call(glConvolutionParameterfEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glConvolutionParameteriEXT) (GLenum arg_0, GLenum arg_1, GLint arg_2)
+{
+  CHECK_PROC(glConvolutionParameteriEXT);
+  do_opengl_call(glConvolutionParameteriEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glCopyConvolutionFilter1DEXT) (GLenum arg_0, GLenum arg_1, GLint arg_2, GLint arg_3, GLsizei arg_4)
+{
+  CHECK_PROC(glCopyConvolutionFilter1DEXT);
+  do_opengl_call(glCopyConvolutionFilter1DEXT_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glCopyConvolutionFilter2DEXT) (GLenum arg_0, GLenum arg_1, GLint arg_2, GLint arg_3, GLsizei arg_4, GLsizei arg_5)
+{
+  CHECK_PROC(glCopyConvolutionFilter2DEXT);
+  do_opengl_call(glCopyConvolutionFilter2DEXT_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void EXT_FUNC(glCopyColorTableSGI) (GLenum arg_0, GLenum arg_1, GLint arg_2, GLint arg_3, GLsizei arg_4)
+{
+  CHECK_PROC(glCopyColorTableSGI);
+  do_opengl_call(glCopyColorTableSGI_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glPixelTexGenSGIX) (GLenum arg_0)
+{
+  CHECK_PROC(glPixelTexGenSGIX);
+  do_opengl_call(glPixelTexGenSGIX_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glPixelTexGenParameteriSGIS) (GLenum arg_0, GLint arg_1)
+{
+  CHECK_PROC(glPixelTexGenParameteriSGIS);
+  do_opengl_call(glPixelTexGenParameteriSGIS_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glPixelTexGenParameterfSGIS) (GLenum arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glPixelTexGenParameterfSGIS);
+  do_opengl_call(glPixelTexGenParameterfSGIS_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glBindTextureEXT) (GLenum arg_0, GLuint arg_1)
+{
+  CHECK_PROC(glBindTextureEXT);
+  do_opengl_call(glBindTextureEXT_func, NULL, arg_0, arg_1);
+}
+
+GLboolean EXT_FUNC(glIsTextureEXT) (GLuint arg_0)
+{
+  GLboolean ret;
+  CHECK_PROC_WITH_RET(glIsTextureEXT);
+  do_opengl_call(glIsTextureEXT_func, &ret, arg_0);
+  return ret;
+}
+
+void EXT_FUNC(glSampleMaskSGIS) (GLclampf arg_0, GLboolean arg_1)
+{
+  CHECK_PROC(glSampleMaskSGIS);
+  do_opengl_call(glSampleMaskSGIS_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glSamplePatternSGIS) (GLenum arg_0)
+{
+  CHECK_PROC(glSamplePatternSGIS);
+  do_opengl_call(glSamplePatternSGIS_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glArrayElementEXT) (GLint arg_0)
+{
+  CHECK_PROC(glArrayElementEXT);
+  do_opengl_call(glArrayElementEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glBlendEquationEXT) (GLenum arg_0)
+{
+  CHECK_PROC(glBlendEquationEXT);
+  do_opengl_call(glBlendEquationEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glSpriteParameterfSGIX) (GLenum arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glSpriteParameterfSGIX);
+  do_opengl_call(glSpriteParameterfSGIX_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glSpriteParameteriSGIX) (GLenum arg_0, GLint arg_1)
+{
+  CHECK_PROC(glSpriteParameteriSGIX);
+  do_opengl_call(glSpriteParameteriSGIX_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glPointParameterfEXT) (GLenum arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glPointParameterfEXT);
+  do_opengl_call(glPointParameterfEXT_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glPointParameterfSGIS) (GLenum arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glPointParameterfSGIS);
+  do_opengl_call(glPointParameterfSGIS_func, NULL, arg_0, arg_1);
+}
+
+GLint EXT_FUNC(glGetInstrumentsSGIX) ()
+{
+  GLint ret;
+  CHECK_PROC_WITH_RET(glGetInstrumentsSGIX);
+  do_opengl_call(glGetInstrumentsSGIX_func, &ret);
+  return ret;
+}
+
+void EXT_FUNC(glReadInstrumentsSGIX) (GLint arg_0)
+{
+  CHECK_PROC(glReadInstrumentsSGIX);
+  do_opengl_call(glReadInstrumentsSGIX_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glStartInstrumentsSGIX) ()
+{
+  CHECK_PROC(glStartInstrumentsSGIX);
+  do_opengl_call(glStartInstrumentsSGIX_func, NULL);
+}
+
+void EXT_FUNC(glStopInstrumentsSGIX) (GLint arg_0)
+{
+  CHECK_PROC(glStopInstrumentsSGIX);
+  do_opengl_call(glStopInstrumentsSGIX_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glFrameZoomSGIX) (GLint arg_0)
+{
+  CHECK_PROC(glFrameZoomSGIX);
+  do_opengl_call(glFrameZoomSGIX_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glTagSampleBufferSGIX) ()
+{
+  CHECK_PROC(glTagSampleBufferSGIX);
+  do_opengl_call(glTagSampleBufferSGIX_func, NULL);
+}
+
+void EXT_FUNC(glDeformSGIX) (GLbitfield arg_0)
+{
+  CHECK_PROC(glDeformSGIX);
+  do_opengl_call(glDeformSGIX_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glLoadIdentityDeformationMapSGIX) (GLbitfield arg_0)
+{
+  CHECK_PROC(glLoadIdentityDeformationMapSGIX);
+  do_opengl_call(glLoadIdentityDeformationMapSGIX_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glFlushRasterSGIX) ()
+{
+  CHECK_PROC(glFlushRasterSGIX);
+  do_opengl_call(glFlushRasterSGIX_func, NULL);
+}
+
+void EXT_FUNC(glCopyColorSubTableEXT) (GLenum arg_0, GLsizei arg_1, GLint arg_2, GLint arg_3, GLsizei arg_4)
+{
+  CHECK_PROC(glCopyColorSubTableEXT);
+  do_opengl_call(glCopyColorSubTableEXT_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glListParameterfSGIX) (GLuint arg_0, GLenum arg_1, GLfloat arg_2)
+{
+  CHECK_PROC(glListParameterfSGIX);
+  do_opengl_call(glListParameterfSGIX_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glListParameteriSGIX) (GLuint arg_0, GLenum arg_1, GLint arg_2)
+{
+  CHECK_PROC(glListParameteriSGIX);
+  do_opengl_call(glListParameteriSGIX_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glIndexMaterialEXT) (GLenum arg_0, GLenum arg_1)
+{
+  CHECK_PROC(glIndexMaterialEXT);
+  do_opengl_call(glIndexMaterialEXT_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glIndexFuncEXT) (GLenum arg_0, GLclampf arg_1)
+{
+  CHECK_PROC(glIndexFuncEXT);
+  do_opengl_call(glIndexFuncEXT_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glLockArraysEXT) (GLint arg_0, GLsizei arg_1)
+{
+  CHECK_PROC(glLockArraysEXT);
+  do_opengl_call(glLockArraysEXT_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glUnlockArraysEXT) ()
+{
+  CHECK_PROC(glUnlockArraysEXT);
+  do_opengl_call(glUnlockArraysEXT_func, NULL);
+}
+
+void EXT_FUNC(glFragmentColorMaterialSGIX) (GLenum arg_0, GLenum arg_1)
+{
+  CHECK_PROC(glFragmentColorMaterialSGIX);
+  do_opengl_call(glFragmentColorMaterialSGIX_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glFragmentLightfSGIX) (GLenum arg_0, GLenum arg_1, GLfloat arg_2)
+{
+  CHECK_PROC(glFragmentLightfSGIX);
+  do_opengl_call(glFragmentLightfSGIX_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glFragmentLightiSGIX) (GLenum arg_0, GLenum arg_1, GLint arg_2)
+{
+  CHECK_PROC(glFragmentLightiSGIX);
+  do_opengl_call(glFragmentLightiSGIX_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glFragmentLightModelfSGIX) (GLenum arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glFragmentLightModelfSGIX);
+  do_opengl_call(glFragmentLightModelfSGIX_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glFragmentLightModeliSGIX) (GLenum arg_0, GLint arg_1)
+{
+  CHECK_PROC(glFragmentLightModeliSGIX);
+  do_opengl_call(glFragmentLightModeliSGIX_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glFragmentMaterialfSGIX) (GLenum arg_0, GLenum arg_1, GLfloat arg_2)
+{
+  CHECK_PROC(glFragmentMaterialfSGIX);
+  do_opengl_call(glFragmentMaterialfSGIX_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glFragmentMaterialiSGIX) (GLenum arg_0, GLenum arg_1, GLint arg_2)
+{
+  CHECK_PROC(glFragmentMaterialiSGIX);
+  do_opengl_call(glFragmentMaterialiSGIX_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glLightEnviSGIX) (GLenum arg_0, GLint arg_1)
+{
+  CHECK_PROC(glLightEnviSGIX);
+  do_opengl_call(glLightEnviSGIX_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glApplyTextureEXT) (GLenum arg_0)
+{
+  CHECK_PROC(glApplyTextureEXT);
+  do_opengl_call(glApplyTextureEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glTextureLightEXT) (GLenum arg_0)
+{
+  CHECK_PROC(glTextureLightEXT);
+  do_opengl_call(glTextureLightEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glTextureMaterialEXT) (GLenum arg_0, GLenum arg_1)
+{
+  CHECK_PROC(glTextureMaterialEXT);
+  do_opengl_call(glTextureMaterialEXT_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glAsyncMarkerSGIX) (GLuint arg_0)
+{
+  CHECK_PROC(glAsyncMarkerSGIX);
+  do_opengl_call(glAsyncMarkerSGIX_func, NULL, arg_0);
+}
+
+GLuint EXT_FUNC(glGenAsyncMarkersSGIX) (GLsizei arg_0)
+{
+  GLuint ret;
+  CHECK_PROC_WITH_RET(glGenAsyncMarkersSGIX);
+  do_opengl_call(glGenAsyncMarkersSGIX_func, &ret, arg_0);
+  return ret;
+}
+
+void EXT_FUNC(glDeleteAsyncMarkersSGIX) (GLuint arg_0, GLsizei arg_1)
+{
+  CHECK_PROC(glDeleteAsyncMarkersSGIX);
+  do_opengl_call(glDeleteAsyncMarkersSGIX_func, NULL, arg_0, arg_1);
+}
+
+GLboolean EXT_FUNC(glIsAsyncMarkerSGIX) (GLuint arg_0)
+{
+  GLboolean ret;
+  CHECK_PROC_WITH_RET(glIsAsyncMarkerSGIX);
+  do_opengl_call(glIsAsyncMarkerSGIX_func, &ret, arg_0);
+  return ret;
+}
+
+void EXT_FUNC(glPixelTransformParameteriEXT) (GLenum arg_0, GLenum arg_1, GLint arg_2)
+{
+  CHECK_PROC(glPixelTransformParameteriEXT);
+  do_opengl_call(glPixelTransformParameteriEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glPixelTransformParameterfEXT) (GLenum arg_0, GLenum arg_1, GLfloat arg_2)
+{
+  CHECK_PROC(glPixelTransformParameterfEXT);
+  do_opengl_call(glPixelTransformParameterfEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glSecondaryColor3bEXT) (GLbyte arg_0, GLbyte arg_1, GLbyte arg_2)
+{
+  CHECK_PROC(glSecondaryColor3bEXT);
+  do_opengl_call(glSecondaryColor3bEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glSecondaryColor3bvEXT) (const GLbyte * arg_0)
+{
+  CHECK_PROC(glSecondaryColor3bvEXT);
+  do_opengl_call(glSecondaryColor3bvEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glSecondaryColor3dEXT) (GLdouble arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  CHECK_PROC(glSecondaryColor3dEXT);
+  do_opengl_call(glSecondaryColor3dEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glSecondaryColor3dvEXT) (const GLdouble * arg_0)
+{
+  CHECK_PROC(glSecondaryColor3dvEXT);
+  do_opengl_call(glSecondaryColor3dvEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glSecondaryColor3fEXT) (GLfloat arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  CHECK_PROC(glSecondaryColor3fEXT);
+  do_opengl_call(glSecondaryColor3fEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glSecondaryColor3fvEXT) (const GLfloat * arg_0)
+{
+  CHECK_PROC(glSecondaryColor3fvEXT);
+  do_opengl_call(glSecondaryColor3fvEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glSecondaryColor3iEXT) (GLint arg_0, GLint arg_1, GLint arg_2)
+{
+  CHECK_PROC(glSecondaryColor3iEXT);
+  do_opengl_call(glSecondaryColor3iEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glSecondaryColor3ivEXT) (const GLint * arg_0)
+{
+  CHECK_PROC(glSecondaryColor3ivEXT);
+  do_opengl_call(glSecondaryColor3ivEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glSecondaryColor3sEXT) (GLshort arg_0, GLshort arg_1, GLshort arg_2)
+{
+  CHECK_PROC(glSecondaryColor3sEXT);
+  do_opengl_call(glSecondaryColor3sEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glSecondaryColor3svEXT) (const GLshort * arg_0)
+{
+  CHECK_PROC(glSecondaryColor3svEXT);
+  do_opengl_call(glSecondaryColor3svEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glSecondaryColor3ubEXT) (GLubyte arg_0, GLubyte arg_1, GLubyte arg_2)
+{
+  CHECK_PROC(glSecondaryColor3ubEXT);
+  do_opengl_call(glSecondaryColor3ubEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glSecondaryColor3ubvEXT) (const GLubyte * arg_0)
+{
+  CHECK_PROC(glSecondaryColor3ubvEXT);
+  do_opengl_call(glSecondaryColor3ubvEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glSecondaryColor3uiEXT) (GLuint arg_0, GLuint arg_1, GLuint arg_2)
+{
+  CHECK_PROC(glSecondaryColor3uiEXT);
+  do_opengl_call(glSecondaryColor3uiEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glSecondaryColor3uivEXT) (const GLuint * arg_0)
+{
+  CHECK_PROC(glSecondaryColor3uivEXT);
+  do_opengl_call(glSecondaryColor3uivEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glSecondaryColor3usEXT) (GLushort arg_0, GLushort arg_1, GLushort arg_2)
+{
+  CHECK_PROC(glSecondaryColor3usEXT);
+  do_opengl_call(glSecondaryColor3usEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glSecondaryColor3usvEXT) (const GLushort * arg_0)
+{
+  CHECK_PROC(glSecondaryColor3usvEXT);
+  do_opengl_call(glSecondaryColor3usvEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glTextureNormalEXT) (GLenum arg_0)
+{
+  CHECK_PROC(glTextureNormalEXT);
+  do_opengl_call(glTextureNormalEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glFogCoordfEXT) (GLfloat arg_0)
+{
+  CHECK_PROC(glFogCoordfEXT);
+  do_opengl_call(glFogCoordfEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glFogCoorddEXT) (GLdouble arg_0)
+{
+  CHECK_PROC(glFogCoorddEXT);
+  do_opengl_call(glFogCoorddEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glTangent3bEXT) (GLbyte arg_0, GLbyte arg_1, GLbyte arg_2)
+{
+  CHECK_PROC(glTangent3bEXT);
+  do_opengl_call(glTangent3bEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glTangent3bvEXT) (const GLbyte * arg_0)
+{
+  CHECK_PROC(glTangent3bvEXT);
+  do_opengl_call(glTangent3bvEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glTangent3dEXT) (GLdouble arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  CHECK_PROC(glTangent3dEXT);
+  do_opengl_call(glTangent3dEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glTangent3dvEXT) (const GLdouble * arg_0)
+{
+  CHECK_PROC(glTangent3dvEXT);
+  do_opengl_call(glTangent3dvEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glTangent3fEXT) (GLfloat arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  CHECK_PROC(glTangent3fEXT);
+  do_opengl_call(glTangent3fEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glTangent3fvEXT) (const GLfloat * arg_0)
+{
+  CHECK_PROC(glTangent3fvEXT);
+  do_opengl_call(glTangent3fvEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glTangent3iEXT) (GLint arg_0, GLint arg_1, GLint arg_2)
+{
+  CHECK_PROC(glTangent3iEXT);
+  do_opengl_call(glTangent3iEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glTangent3ivEXT) (const GLint * arg_0)
+{
+  CHECK_PROC(glTangent3ivEXT);
+  do_opengl_call(glTangent3ivEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glTangent3sEXT) (GLshort arg_0, GLshort arg_1, GLshort arg_2)
+{
+  CHECK_PROC(glTangent3sEXT);
+  do_opengl_call(glTangent3sEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glTangent3svEXT) (const GLshort * arg_0)
+{
+  CHECK_PROC(glTangent3svEXT);
+  do_opengl_call(glTangent3svEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glBinormal3bEXT) (GLbyte arg_0, GLbyte arg_1, GLbyte arg_2)
+{
+  CHECK_PROC(glBinormal3bEXT);
+  do_opengl_call(glBinormal3bEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glBinormal3bvEXT) (const GLbyte * arg_0)
+{
+  CHECK_PROC(glBinormal3bvEXT);
+  do_opengl_call(glBinormal3bvEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glBinormal3dEXT) (GLdouble arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  CHECK_PROC(glBinormal3dEXT);
+  do_opengl_call(glBinormal3dEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glBinormal3dvEXT) (const GLdouble * arg_0)
+{
+  CHECK_PROC(glBinormal3dvEXT);
+  do_opengl_call(glBinormal3dvEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glBinormal3fEXT) (GLfloat arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  CHECK_PROC(glBinormal3fEXT);
+  do_opengl_call(glBinormal3fEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glBinormal3fvEXT) (const GLfloat * arg_0)
+{
+  CHECK_PROC(glBinormal3fvEXT);
+  do_opengl_call(glBinormal3fvEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glBinormal3iEXT) (GLint arg_0, GLint arg_1, GLint arg_2)
+{
+  CHECK_PROC(glBinormal3iEXT);
+  do_opengl_call(glBinormal3iEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glBinormal3ivEXT) (const GLint * arg_0)
+{
+  CHECK_PROC(glBinormal3ivEXT);
+  do_opengl_call(glBinormal3ivEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glBinormal3sEXT) (GLshort arg_0, GLshort arg_1, GLshort arg_2)
+{
+  CHECK_PROC(glBinormal3sEXT);
+  do_opengl_call(glBinormal3sEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glBinormal3svEXT) (const GLshort * arg_0)
+{
+  CHECK_PROC(glBinormal3svEXT);
+  do_opengl_call(glBinormal3svEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glBlendFuncSeparateEXT) (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLenum arg_3)
+{
+  CHECK_PROC(glBlendFuncSeparateEXT);
+  do_opengl_call(glBlendFuncSeparateEXT_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glVertexWeightfEXT) (GLfloat arg_0)
+{
+  CHECK_PROC(glVertexWeightfEXT);
+  do_opengl_call(glVertexWeightfEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glFlushVertexArrayRangeNV) ()
+{
+  CHECK_PROC(glFlushVertexArrayRangeNV);
+  do_opengl_call(glFlushVertexArrayRangeNV_func, NULL);
+}
+
+void EXT_FUNC(glCombinerParameterfNV) (GLenum arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glCombinerParameterfNV);
+  do_opengl_call(glCombinerParameterfNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glCombinerParameteriNV) (GLenum arg_0, GLint arg_1)
+{
+  CHECK_PROC(glCombinerParameteriNV);
+  do_opengl_call(glCombinerParameteriNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glCombinerInputNV) (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLenum arg_3, GLenum arg_4, GLenum arg_5)
+{
+  CHECK_PROC(glCombinerInputNV);
+  do_opengl_call(glCombinerInputNV_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void EXT_FUNC(glCombinerOutputNV) (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLenum arg_3, GLenum arg_4, GLenum arg_5, GLenum arg_6, GLboolean arg_7, GLboolean arg_8, GLboolean arg_9)
+{
+  CHECK_PROC(glCombinerOutputNV);
+  do_opengl_call(glCombinerOutputNV_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9);
+}
+
+void EXT_FUNC(glFinalCombinerInputNV) (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLenum arg_3)
+{
+  CHECK_PROC(glFinalCombinerInputNV);
+  do_opengl_call(glFinalCombinerInputNV_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glResizeBuffersMESA) ()
+{
+  CHECK_PROC(glResizeBuffersMESA);
+  do_opengl_call(glResizeBuffersMESA_func, NULL);
+}
+
+void EXT_FUNC(glWindowPos2dMESA) (GLdouble arg_0, GLdouble arg_1)
+{
+  CHECK_PROC(glWindowPos2dMESA);
+  do_opengl_call(glWindowPos2dMESA_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glWindowPos2dvMESA) (const GLdouble * arg_0)
+{
+  CHECK_PROC(glWindowPos2dvMESA);
+  do_opengl_call(glWindowPos2dvMESA_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos2fMESA) (GLfloat arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glWindowPos2fMESA);
+  do_opengl_call(glWindowPos2fMESA_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glWindowPos2fvMESA) (const GLfloat * arg_0)
+{
+  CHECK_PROC(glWindowPos2fvMESA);
+  do_opengl_call(glWindowPos2fvMESA_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos2iMESA) (GLint arg_0, GLint arg_1)
+{
+  CHECK_PROC(glWindowPos2iMESA);
+  do_opengl_call(glWindowPos2iMESA_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glWindowPos2ivMESA) (const GLint * arg_0)
+{
+  CHECK_PROC(glWindowPos2ivMESA);
+  do_opengl_call(glWindowPos2ivMESA_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos2sMESA) (GLshort arg_0, GLshort arg_1)
+{
+  CHECK_PROC(glWindowPos2sMESA);
+  do_opengl_call(glWindowPos2sMESA_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glWindowPos2svMESA) (const GLshort * arg_0)
+{
+  CHECK_PROC(glWindowPos2svMESA);
+  do_opengl_call(glWindowPos2svMESA_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos3dMESA) (GLdouble arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  CHECK_PROC(glWindowPos3dMESA);
+  do_opengl_call(glWindowPos3dMESA_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glWindowPos3dvMESA) (const GLdouble * arg_0)
+{
+  CHECK_PROC(glWindowPos3dvMESA);
+  do_opengl_call(glWindowPos3dvMESA_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos3fMESA) (GLfloat arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  CHECK_PROC(glWindowPos3fMESA);
+  do_opengl_call(glWindowPos3fMESA_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glWindowPos3fvMESA) (const GLfloat * arg_0)
+{
+  CHECK_PROC(glWindowPos3fvMESA);
+  do_opengl_call(glWindowPos3fvMESA_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos3iMESA) (GLint arg_0, GLint arg_1, GLint arg_2)
+{
+  CHECK_PROC(glWindowPos3iMESA);
+  do_opengl_call(glWindowPos3iMESA_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glWindowPos3ivMESA) (const GLint * arg_0)
+{
+  CHECK_PROC(glWindowPos3ivMESA);
+  do_opengl_call(glWindowPos3ivMESA_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos3sMESA) (GLshort arg_0, GLshort arg_1, GLshort arg_2)
+{
+  CHECK_PROC(glWindowPos3sMESA);
+  do_opengl_call(glWindowPos3sMESA_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glWindowPos3svMESA) (const GLshort * arg_0)
+{
+  CHECK_PROC(glWindowPos3svMESA);
+  do_opengl_call(glWindowPos3svMESA_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos4dMESA) (GLdouble arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3)
+{
+  CHECK_PROC(glWindowPos4dMESA);
+  do_opengl_call(glWindowPos4dMESA_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glWindowPos4dvMESA) (const GLdouble * arg_0)
+{
+  CHECK_PROC(glWindowPos4dvMESA);
+  do_opengl_call(glWindowPos4dvMESA_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos4fMESA) (GLfloat arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3)
+{
+  CHECK_PROC(glWindowPos4fMESA);
+  do_opengl_call(glWindowPos4fMESA_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glWindowPos4fvMESA) (const GLfloat * arg_0)
+{
+  CHECK_PROC(glWindowPos4fvMESA);
+  do_opengl_call(glWindowPos4fvMESA_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos4iMESA) (GLint arg_0, GLint arg_1, GLint arg_2, GLint arg_3)
+{
+  CHECK_PROC(glWindowPos4iMESA);
+  do_opengl_call(glWindowPos4iMESA_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glWindowPos4ivMESA) (const GLint * arg_0)
+{
+  CHECK_PROC(glWindowPos4ivMESA);
+  do_opengl_call(glWindowPos4ivMESA_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glWindowPos4sMESA) (GLshort arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3)
+{
+  CHECK_PROC(glWindowPos4sMESA);
+  do_opengl_call(glWindowPos4sMESA_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glWindowPos4svMESA) (const GLshort * arg_0)
+{
+  CHECK_PROC(glWindowPos4svMESA);
+  do_opengl_call(glWindowPos4svMESA_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glSampleMaskEXT) (GLclampf arg_0, GLboolean arg_1)
+{
+  CHECK_PROC(glSampleMaskEXT);
+  do_opengl_call(glSampleMaskEXT_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glSamplePatternEXT) (GLenum arg_0)
+{
+  CHECK_PROC(glSamplePatternEXT);
+  do_opengl_call(glSamplePatternEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glTextureColorMaskSGIS) (GLboolean arg_0, GLboolean arg_1, GLboolean arg_2, GLboolean arg_3)
+{
+  CHECK_PROC(glTextureColorMaskSGIS);
+  do_opengl_call(glTextureColorMaskSGIS_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+GLboolean EXT_FUNC(glIsFenceNV) (GLuint arg_0)
+{
+  GLboolean ret;
+  CHECK_PROC_WITH_RET(glIsFenceNV);
+  do_opengl_call(glIsFenceNV_func, &ret, arg_0);
+  return ret;
+}
+
+GLboolean EXT_FUNC(glTestFenceNV) (GLuint arg_0)
+{
+  GLboolean ret;
+  CHECK_PROC_WITH_RET(glTestFenceNV);
+  do_opengl_call(glTestFenceNV_func, &ret, arg_0);
+  return ret;
+}
+
+void EXT_FUNC(glFinishFenceNV) (GLuint arg_0)
+{
+  CHECK_PROC(glFinishFenceNV);
+  do_opengl_call(glFinishFenceNV_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glSetFenceNV) (GLuint arg_0, GLenum arg_1)
+{
+  CHECK_PROC(glSetFenceNV);
+  do_opengl_call(glSetFenceNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glEvalMapsNV) (GLenum arg_0, GLenum arg_1)
+{
+  CHECK_PROC(glEvalMapsNV);
+  do_opengl_call(glEvalMapsNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glBindProgramNV) (GLenum arg_0, GLuint arg_1)
+{
+  CHECK_PROC(glBindProgramNV);
+  do_opengl_call(glBindProgramNV_func, NULL, arg_0, arg_1);
+}
+
+GLboolean EXT_FUNC(glIsProgramNV) (GLuint arg_0)
+{
+  GLboolean ret;
+  CHECK_PROC_WITH_RET(glIsProgramNV);
+  do_opengl_call(glIsProgramNV_func, &ret, arg_0);
+  return ret;
+}
+
+void EXT_FUNC(glProgramParameter4dNV) (GLenum arg_0, GLuint arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4, GLdouble arg_5)
+{
+  CHECK_PROC(glProgramParameter4dNV);
+  do_opengl_call(glProgramParameter4dNV_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void EXT_FUNC(glProgramParameter4dvNV) (GLenum arg_0, GLuint arg_1, const GLdouble * arg_2)
+{
+  CHECK_PROC(glProgramParameter4dvNV);
+  do_opengl_call(glProgramParameter4dvNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glProgramParameter4fNV) (GLenum arg_0, GLuint arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4, GLfloat arg_5)
+{
+  CHECK_PROC(glProgramParameter4fNV);
+  do_opengl_call(glProgramParameter4fNV_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void EXT_FUNC(glProgramParameter4fvNV) (GLenum arg_0, GLuint arg_1, const GLfloat * arg_2)
+{
+  CHECK_PROC(glProgramParameter4fvNV);
+  do_opengl_call(glProgramParameter4fvNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glProgramParameters4dvNV) (GLenum arg_0, GLuint arg_1, GLuint arg_2, const GLdouble * arg_3)
+{
+  CHECK_PROC(glProgramParameters4dvNV);
+  do_opengl_call(glProgramParameters4dvNV_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glProgramParameters4fvNV) (GLenum arg_0, GLuint arg_1, GLuint arg_2, const GLfloat * arg_3)
+{
+  CHECK_PROC(glProgramParameters4fvNV);
+  do_opengl_call(glProgramParameters4fvNV_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glTrackMatrixNV) (GLenum arg_0, GLuint arg_1, GLenum arg_2, GLenum arg_3)
+{
+  CHECK_PROC(glTrackMatrixNV);
+  do_opengl_call(glTrackMatrixNV_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glVertexAttrib1dNV) (GLuint arg_0, GLdouble arg_1)
+{
+  CHECK_PROC(glVertexAttrib1dNV);
+  do_opengl_call(glVertexAttrib1dNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib1dvNV) (GLuint arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glVertexAttrib1dvNV);
+  do_opengl_call(glVertexAttrib1dvNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib1fNV) (GLuint arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glVertexAttrib1fNV);
+  do_opengl_call(glVertexAttrib1fNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib1fvNV) (GLuint arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glVertexAttrib1fvNV);
+  do_opengl_call(glVertexAttrib1fvNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib1sNV) (GLuint arg_0, GLshort arg_1)
+{
+  CHECK_PROC(glVertexAttrib1sNV);
+  do_opengl_call(glVertexAttrib1sNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib1svNV) (GLuint arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glVertexAttrib1svNV);
+  do_opengl_call(glVertexAttrib1svNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib2dNV) (GLuint arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  CHECK_PROC(glVertexAttrib2dNV);
+  do_opengl_call(glVertexAttrib2dNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttrib2dvNV) (GLuint arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glVertexAttrib2dvNV);
+  do_opengl_call(glVertexAttrib2dvNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib2fNV) (GLuint arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  CHECK_PROC(glVertexAttrib2fNV);
+  do_opengl_call(glVertexAttrib2fNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttrib2fvNV) (GLuint arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glVertexAttrib2fvNV);
+  do_opengl_call(glVertexAttrib2fvNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib2sNV) (GLuint arg_0, GLshort arg_1, GLshort arg_2)
+{
+  CHECK_PROC(glVertexAttrib2sNV);
+  do_opengl_call(glVertexAttrib2sNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttrib2svNV) (GLuint arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glVertexAttrib2svNV);
+  do_opengl_call(glVertexAttrib2svNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib3dNV) (GLuint arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3)
+{
+  CHECK_PROC(glVertexAttrib3dNV);
+  do_opengl_call(glVertexAttrib3dNV_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glVertexAttrib3dvNV) (GLuint arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glVertexAttrib3dvNV);
+  do_opengl_call(glVertexAttrib3dvNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib3fNV) (GLuint arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3)
+{
+  CHECK_PROC(glVertexAttrib3fNV);
+  do_opengl_call(glVertexAttrib3fNV_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glVertexAttrib3fvNV) (GLuint arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glVertexAttrib3fvNV);
+  do_opengl_call(glVertexAttrib3fvNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib3sNV) (GLuint arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3)
+{
+  CHECK_PROC(glVertexAttrib3sNV);
+  do_opengl_call(glVertexAttrib3sNV_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glVertexAttrib3svNV) (GLuint arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glVertexAttrib3svNV);
+  do_opengl_call(glVertexAttrib3svNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4dNV) (GLuint arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4)
+{
+  CHECK_PROC(glVertexAttrib4dNV);
+  do_opengl_call(glVertexAttrib4dNV_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glVertexAttrib4dvNV) (GLuint arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4dvNV);
+  do_opengl_call(glVertexAttrib4dvNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4fNV) (GLuint arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4)
+{
+  CHECK_PROC(glVertexAttrib4fNV);
+  do_opengl_call(glVertexAttrib4fNV_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glVertexAttrib4fvNV) (GLuint arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4fvNV);
+  do_opengl_call(glVertexAttrib4fvNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4sNV) (GLuint arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3, GLshort arg_4)
+{
+  CHECK_PROC(glVertexAttrib4sNV);
+  do_opengl_call(glVertexAttrib4sNV_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glVertexAttrib4svNV) (GLuint arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4svNV);
+  do_opengl_call(glVertexAttrib4svNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib4ubNV) (GLuint arg_0, GLubyte arg_1, GLubyte arg_2, GLubyte arg_3, GLubyte arg_4)
+{
+  CHECK_PROC(glVertexAttrib4ubNV);
+  do_opengl_call(glVertexAttrib4ubNV_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glVertexAttrib4ubvNV) (GLuint arg_0, const GLubyte * arg_1)
+{
+  CHECK_PROC(glVertexAttrib4ubvNV);
+  do_opengl_call(glVertexAttrib4ubvNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttribs1dvNV) (GLuint arg_0, GLsizei arg_1, const GLdouble * arg_2)
+{
+  CHECK_PROC(glVertexAttribs1dvNV);
+  do_opengl_call(glVertexAttribs1dvNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttribs1fvNV) (GLuint arg_0, GLsizei arg_1, const GLfloat * arg_2)
+{
+  CHECK_PROC(glVertexAttribs1fvNV);
+  do_opengl_call(glVertexAttribs1fvNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttribs1svNV) (GLuint arg_0, GLsizei arg_1, const GLshort * arg_2)
+{
+  CHECK_PROC(glVertexAttribs1svNV);
+  do_opengl_call(glVertexAttribs1svNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttribs2dvNV) (GLuint arg_0, GLsizei arg_1, const GLdouble * arg_2)
+{
+  CHECK_PROC(glVertexAttribs2dvNV);
+  do_opengl_call(glVertexAttribs2dvNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttribs2fvNV) (GLuint arg_0, GLsizei arg_1, const GLfloat * arg_2)
+{
+  CHECK_PROC(glVertexAttribs2fvNV);
+  do_opengl_call(glVertexAttribs2fvNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttribs2svNV) (GLuint arg_0, GLsizei arg_1, const GLshort * arg_2)
+{
+  CHECK_PROC(glVertexAttribs2svNV);
+  do_opengl_call(glVertexAttribs2svNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttribs3dvNV) (GLuint arg_0, GLsizei arg_1, const GLdouble * arg_2)
+{
+  CHECK_PROC(glVertexAttribs3dvNV);
+  do_opengl_call(glVertexAttribs3dvNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttribs3fvNV) (GLuint arg_0, GLsizei arg_1, const GLfloat * arg_2)
+{
+  CHECK_PROC(glVertexAttribs3fvNV);
+  do_opengl_call(glVertexAttribs3fvNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttribs3svNV) (GLuint arg_0, GLsizei arg_1, const GLshort * arg_2)
+{
+  CHECK_PROC(glVertexAttribs3svNV);
+  do_opengl_call(glVertexAttribs3svNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttribs4dvNV) (GLuint arg_0, GLsizei arg_1, const GLdouble * arg_2)
+{
+  CHECK_PROC(glVertexAttribs4dvNV);
+  do_opengl_call(glVertexAttribs4dvNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttribs4fvNV) (GLuint arg_0, GLsizei arg_1, const GLfloat * arg_2)
+{
+  CHECK_PROC(glVertexAttribs4fvNV);
+  do_opengl_call(glVertexAttribs4fvNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttribs4svNV) (GLuint arg_0, GLsizei arg_1, const GLshort * arg_2)
+{
+  CHECK_PROC(glVertexAttribs4svNV);
+  do_opengl_call(glVertexAttribs4svNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttribs4ubvNV) (GLuint arg_0, GLsizei arg_1, const GLubyte * arg_2)
+{
+  CHECK_PROC(glVertexAttribs4ubvNV);
+  do_opengl_call(glVertexAttribs4ubvNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+GLuint EXT_FUNC(glGenFragmentShadersATI) (GLuint arg_0)
+{
+  GLuint ret;
+  CHECK_PROC_WITH_RET(glGenFragmentShadersATI);
+  do_opengl_call(glGenFragmentShadersATI_func, &ret, arg_0);
+  return ret;
+}
+
+void EXT_FUNC(glBindFragmentShaderATI) (GLuint arg_0)
+{
+  CHECK_PROC(glBindFragmentShaderATI);
+  do_opengl_call(glBindFragmentShaderATI_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glDeleteFragmentShaderATI) (GLuint arg_0)
+{
+  CHECK_PROC(glDeleteFragmentShaderATI);
+  do_opengl_call(glDeleteFragmentShaderATI_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glBeginFragmentShaderATI) ()
+{
+  CHECK_PROC(glBeginFragmentShaderATI);
+  do_opengl_call(glBeginFragmentShaderATI_func, NULL);
+}
+
+void EXT_FUNC(glEndFragmentShaderATI) ()
+{
+  CHECK_PROC(glEndFragmentShaderATI);
+  do_opengl_call(glEndFragmentShaderATI_func, NULL);
+}
+
+void EXT_FUNC(glPassTexCoordATI) (GLuint arg_0, GLuint arg_1, GLenum arg_2)
+{
+  CHECK_PROC(glPassTexCoordATI);
+  do_opengl_call(glPassTexCoordATI_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glSampleMapATI) (GLuint arg_0, GLuint arg_1, GLenum arg_2)
+{
+  CHECK_PROC(glSampleMapATI);
+  do_opengl_call(glSampleMapATI_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glColorFragmentOp1ATI) (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3, GLuint arg_4, GLuint arg_5, GLuint arg_6)
+{
+  CHECK_PROC(glColorFragmentOp1ATI);
+  do_opengl_call(glColorFragmentOp1ATI_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6);
+}
+
+void EXT_FUNC(glColorFragmentOp2ATI) (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3, GLuint arg_4, GLuint arg_5, GLuint arg_6, GLuint arg_7, GLuint arg_8, GLuint arg_9)
+{
+  CHECK_PROC(glColorFragmentOp2ATI);
+  do_opengl_call(glColorFragmentOp2ATI_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9);
+}
+
+void EXT_FUNC(glColorFragmentOp3ATI) (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3, GLuint arg_4, GLuint arg_5, GLuint arg_6, GLuint arg_7, GLuint arg_8, GLuint arg_9, GLuint arg_10, GLuint arg_11, GLuint arg_12)
+{
+  CHECK_PROC(glColorFragmentOp3ATI);
+  do_opengl_call(glColorFragmentOp3ATI_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9, arg_10, arg_11, arg_12);
+}
+
+void EXT_FUNC(glAlphaFragmentOp1ATI) (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3, GLuint arg_4, GLuint arg_5)
+{
+  CHECK_PROC(glAlphaFragmentOp1ATI);
+  do_opengl_call(glAlphaFragmentOp1ATI_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void EXT_FUNC(glAlphaFragmentOp2ATI) (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3, GLuint arg_4, GLuint arg_5, GLuint arg_6, GLuint arg_7, GLuint arg_8)
+{
+  CHECK_PROC(glAlphaFragmentOp2ATI);
+  do_opengl_call(glAlphaFragmentOp2ATI_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8);
+}
+
+void EXT_FUNC(glAlphaFragmentOp3ATI) (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3, GLuint arg_4, GLuint arg_5, GLuint arg_6, GLuint arg_7, GLuint arg_8, GLuint arg_9, GLuint arg_10, GLuint arg_11)
+{
+  CHECK_PROC(glAlphaFragmentOp3ATI);
+  do_opengl_call(glAlphaFragmentOp3ATI_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9, arg_10, arg_11);
+}
+
+void EXT_FUNC(glPNTrianglesiATI) (GLenum arg_0, GLint arg_1)
+{
+  CHECK_PROC(glPNTrianglesiATI);
+  do_opengl_call(glPNTrianglesiATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glPNTrianglesfATI) (GLenum arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glPNTrianglesfATI);
+  do_opengl_call(glPNTrianglesfATI_func, NULL, arg_0, arg_1);
+}
+
+GLboolean EXT_FUNC(glIsObjectBufferATI) (GLuint arg_0)
+{
+  GLboolean ret;
+  CHECK_PROC_WITH_RET(glIsObjectBufferATI);
+  do_opengl_call(glIsObjectBufferATI_func, &ret, arg_0);
+  return ret;
+}
+
+void EXT_FUNC(glFreeObjectBufferATI) (GLuint arg_0)
+{
+  CHECK_PROC(glFreeObjectBufferATI);
+  do_opengl_call(glFreeObjectBufferATI_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glArrayObjectATI) (GLenum arg_0, GLint arg_1, GLenum arg_2, GLsizei arg_3, GLuint arg_4, GLuint arg_5)
+{
+  CHECK_PROC(glArrayObjectATI);
+  do_opengl_call(glArrayObjectATI_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void EXT_FUNC(glVariantArrayObjectATI) (GLuint arg_0, GLenum arg_1, GLsizei arg_2, GLuint arg_3, GLuint arg_4)
+{
+  CHECK_PROC(glVariantArrayObjectATI);
+  do_opengl_call(glVariantArrayObjectATI_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glBeginVertexShaderEXT) ()
+{
+  CHECK_PROC(glBeginVertexShaderEXT);
+  do_opengl_call(glBeginVertexShaderEXT_func, NULL);
+}
+
+void EXT_FUNC(glEndVertexShaderEXT) ()
+{
+  CHECK_PROC(glEndVertexShaderEXT);
+  do_opengl_call(glEndVertexShaderEXT_func, NULL);
+}
+
+void EXT_FUNC(glBindVertexShaderEXT) (GLuint arg_0)
+{
+  CHECK_PROC(glBindVertexShaderEXT);
+  do_opengl_call(glBindVertexShaderEXT_func, NULL, arg_0);
+}
+
+GLuint EXT_FUNC(glGenVertexShadersEXT) (GLuint arg_0)
+{
+  GLuint ret;
+  CHECK_PROC_WITH_RET(glGenVertexShadersEXT);
+  do_opengl_call(glGenVertexShadersEXT_func, &ret, arg_0);
+  return ret;
+}
+
+void EXT_FUNC(glDeleteVertexShaderEXT) (GLuint arg_0)
+{
+  CHECK_PROC(glDeleteVertexShaderEXT);
+  do_opengl_call(glDeleteVertexShaderEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glShaderOp1EXT) (GLenum arg_0, GLuint arg_1, GLuint arg_2)
+{
+  CHECK_PROC(glShaderOp1EXT);
+  do_opengl_call(glShaderOp1EXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glShaderOp2EXT) (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3)
+{
+  CHECK_PROC(glShaderOp2EXT);
+  do_opengl_call(glShaderOp2EXT_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glShaderOp3EXT) (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3, GLuint arg_4)
+{
+  CHECK_PROC(glShaderOp3EXT);
+  do_opengl_call(glShaderOp3EXT_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glSwizzleEXT) (GLuint arg_0, GLuint arg_1, GLenum arg_2, GLenum arg_3, GLenum arg_4, GLenum arg_5)
+{
+  CHECK_PROC(glSwizzleEXT);
+  do_opengl_call(glSwizzleEXT_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void EXT_FUNC(glWriteMaskEXT) (GLuint arg_0, GLuint arg_1, GLenum arg_2, GLenum arg_3, GLenum arg_4, GLenum arg_5)
+{
+  CHECK_PROC(glWriteMaskEXT);
+  do_opengl_call(glWriteMaskEXT_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void EXT_FUNC(glInsertComponentEXT) (GLuint arg_0, GLuint arg_1, GLuint arg_2)
+{
+  CHECK_PROC(glInsertComponentEXT);
+  do_opengl_call(glInsertComponentEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glExtractComponentEXT) (GLuint arg_0, GLuint arg_1, GLuint arg_2)
+{
+  CHECK_PROC(glExtractComponentEXT);
+  do_opengl_call(glExtractComponentEXT_func, NULL, arg_0, arg_1, arg_2);
+}
+
+GLuint EXT_FUNC(glGenSymbolsEXT) (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLuint arg_3)
+{
+  GLuint ret;
+  CHECK_PROC_WITH_RET(glGenSymbolsEXT);
+  do_opengl_call(glGenSymbolsEXT_func, &ret, arg_0, arg_1, arg_2, arg_3);
+  return ret;
+}
+
+void EXT_FUNC(glEnableVariantClientStateEXT) (GLuint arg_0)
+{
+  CHECK_PROC(glEnableVariantClientStateEXT);
+  do_opengl_call(glEnableVariantClientStateEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glDisableVariantClientStateEXT) (GLuint arg_0)
+{
+  CHECK_PROC(glDisableVariantClientStateEXT);
+  do_opengl_call(glDisableVariantClientStateEXT_func, NULL, arg_0);
+}
+
+GLuint EXT_FUNC(glBindLightParameterEXT) (GLenum arg_0, GLenum arg_1)
+{
+  GLuint ret;
+  CHECK_PROC_WITH_RET(glBindLightParameterEXT);
+  do_opengl_call(glBindLightParameterEXT_func, &ret, arg_0, arg_1);
+  return ret;
+}
+
+GLuint EXT_FUNC(glBindMaterialParameterEXT) (GLenum arg_0, GLenum arg_1)
+{
+  GLuint ret;
+  CHECK_PROC_WITH_RET(glBindMaterialParameterEXT);
+  do_opengl_call(glBindMaterialParameterEXT_func, &ret, arg_0, arg_1);
+  return ret;
+}
+
+GLuint EXT_FUNC(glBindTexGenParameterEXT) (GLenum arg_0, GLenum arg_1, GLenum arg_2)
+{
+  GLuint ret;
+  CHECK_PROC_WITH_RET(glBindTexGenParameterEXT);
+  do_opengl_call(glBindTexGenParameterEXT_func, &ret, arg_0, arg_1, arg_2);
+  return ret;
+}
+
+GLuint EXT_FUNC(glBindTextureUnitParameterEXT) (GLenum arg_0, GLenum arg_1)
+{
+  GLuint ret;
+  CHECK_PROC_WITH_RET(glBindTextureUnitParameterEXT);
+  do_opengl_call(glBindTextureUnitParameterEXT_func, &ret, arg_0, arg_1);
+  return ret;
+}
+
+GLuint EXT_FUNC(glBindParameterEXT) (GLenum arg_0)
+{
+  GLuint ret;
+  CHECK_PROC_WITH_RET(glBindParameterEXT);
+  do_opengl_call(glBindParameterEXT_func, &ret, arg_0);
+  return ret;
+}
+
+GLboolean EXT_FUNC(glIsVariantEnabledEXT) (GLuint arg_0, GLenum arg_1)
+{
+  GLboolean ret;
+  CHECK_PROC_WITH_RET(glIsVariantEnabledEXT);
+  do_opengl_call(glIsVariantEnabledEXT_func, &ret, arg_0, arg_1);
+  return ret;
+}
+
+void EXT_FUNC(glVertexStream1sATI) (GLenum arg_0, GLshort arg_1)
+{
+  CHECK_PROC(glVertexStream1sATI);
+  do_opengl_call(glVertexStream1sATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream1svATI) (GLenum arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glVertexStream1svATI);
+  do_opengl_call(glVertexStream1svATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream1iATI) (GLenum arg_0, GLint arg_1)
+{
+  CHECK_PROC(glVertexStream1iATI);
+  do_opengl_call(glVertexStream1iATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream1ivATI) (GLenum arg_0, const GLint * arg_1)
+{
+  CHECK_PROC(glVertexStream1ivATI);
+  do_opengl_call(glVertexStream1ivATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream1fATI) (GLenum arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glVertexStream1fATI);
+  do_opengl_call(glVertexStream1fATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream1fvATI) (GLenum arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glVertexStream1fvATI);
+  do_opengl_call(glVertexStream1fvATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream1dATI) (GLenum arg_0, GLdouble arg_1)
+{
+  CHECK_PROC(glVertexStream1dATI);
+  do_opengl_call(glVertexStream1dATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream1dvATI) (GLenum arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glVertexStream1dvATI);
+  do_opengl_call(glVertexStream1dvATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream2sATI) (GLenum arg_0, GLshort arg_1, GLshort arg_2)
+{
+  CHECK_PROC(glVertexStream2sATI);
+  do_opengl_call(glVertexStream2sATI_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexStream2svATI) (GLenum arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glVertexStream2svATI);
+  do_opengl_call(glVertexStream2svATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream2iATI) (GLenum arg_0, GLint arg_1, GLint arg_2)
+{
+  CHECK_PROC(glVertexStream2iATI);
+  do_opengl_call(glVertexStream2iATI_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexStream2ivATI) (GLenum arg_0, const GLint * arg_1)
+{
+  CHECK_PROC(glVertexStream2ivATI);
+  do_opengl_call(glVertexStream2ivATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream2fATI) (GLenum arg_0, GLfloat arg_1, GLfloat arg_2)
+{
+  CHECK_PROC(glVertexStream2fATI);
+  do_opengl_call(glVertexStream2fATI_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexStream2fvATI) (GLenum arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glVertexStream2fvATI);
+  do_opengl_call(glVertexStream2fvATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream2dATI) (GLenum arg_0, GLdouble arg_1, GLdouble arg_2)
+{
+  CHECK_PROC(glVertexStream2dATI);
+  do_opengl_call(glVertexStream2dATI_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexStream2dvATI) (GLenum arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glVertexStream2dvATI);
+  do_opengl_call(glVertexStream2dvATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream3sATI) (GLenum arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3)
+{
+  CHECK_PROC(glVertexStream3sATI);
+  do_opengl_call(glVertexStream3sATI_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glVertexStream3svATI) (GLenum arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glVertexStream3svATI);
+  do_opengl_call(glVertexStream3svATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream3iATI) (GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3)
+{
+  CHECK_PROC(glVertexStream3iATI);
+  do_opengl_call(glVertexStream3iATI_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glVertexStream3ivATI) (GLenum arg_0, const GLint * arg_1)
+{
+  CHECK_PROC(glVertexStream3ivATI);
+  do_opengl_call(glVertexStream3ivATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream3fATI) (GLenum arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3)
+{
+  CHECK_PROC(glVertexStream3fATI);
+  do_opengl_call(glVertexStream3fATI_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glVertexStream3fvATI) (GLenum arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glVertexStream3fvATI);
+  do_opengl_call(glVertexStream3fvATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream3dATI) (GLenum arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3)
+{
+  CHECK_PROC(glVertexStream3dATI);
+  do_opengl_call(glVertexStream3dATI_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glVertexStream3dvATI) (GLenum arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glVertexStream3dvATI);
+  do_opengl_call(glVertexStream3dvATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream4sATI) (GLenum arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3, GLshort arg_4)
+{
+  CHECK_PROC(glVertexStream4sATI);
+  do_opengl_call(glVertexStream4sATI_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glVertexStream4svATI) (GLenum arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glVertexStream4svATI);
+  do_opengl_call(glVertexStream4svATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream4iATI) (GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4)
+{
+  CHECK_PROC(glVertexStream4iATI);
+  do_opengl_call(glVertexStream4iATI_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glVertexStream4ivATI) (GLenum arg_0, const GLint * arg_1)
+{
+  CHECK_PROC(glVertexStream4ivATI);
+  do_opengl_call(glVertexStream4ivATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream4fATI) (GLenum arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4)
+{
+  CHECK_PROC(glVertexStream4fATI);
+  do_opengl_call(glVertexStream4fATI_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glVertexStream4fvATI) (GLenum arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glVertexStream4fvATI);
+  do_opengl_call(glVertexStream4fvATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexStream4dATI) (GLenum arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4)
+{
+  CHECK_PROC(glVertexStream4dATI);
+  do_opengl_call(glVertexStream4dATI_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glVertexStream4dvATI) (GLenum arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glVertexStream4dvATI);
+  do_opengl_call(glVertexStream4dvATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glNormalStream3bATI) (GLenum arg_0, GLbyte arg_1, GLbyte arg_2, GLbyte arg_3)
+{
+  CHECK_PROC(glNormalStream3bATI);
+  do_opengl_call(glNormalStream3bATI_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glNormalStream3bvATI) (GLenum arg_0, const GLbyte * arg_1)
+{
+  CHECK_PROC(glNormalStream3bvATI);
+  do_opengl_call(glNormalStream3bvATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glNormalStream3sATI) (GLenum arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3)
+{
+  CHECK_PROC(glNormalStream3sATI);
+  do_opengl_call(glNormalStream3sATI_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glNormalStream3svATI) (GLenum arg_0, const GLshort * arg_1)
+{
+  CHECK_PROC(glNormalStream3svATI);
+  do_opengl_call(glNormalStream3svATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glNormalStream3iATI) (GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3)
+{
+  CHECK_PROC(glNormalStream3iATI);
+  do_opengl_call(glNormalStream3iATI_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glNormalStream3ivATI) (GLenum arg_0, const GLint * arg_1)
+{
+  CHECK_PROC(glNormalStream3ivATI);
+  do_opengl_call(glNormalStream3ivATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glNormalStream3fATI) (GLenum arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3)
+{
+  CHECK_PROC(glNormalStream3fATI);
+  do_opengl_call(glNormalStream3fATI_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glNormalStream3fvATI) (GLenum arg_0, const GLfloat * arg_1)
+{
+  CHECK_PROC(glNormalStream3fvATI);
+  do_opengl_call(glNormalStream3fvATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glNormalStream3dATI) (GLenum arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3)
+{
+  CHECK_PROC(glNormalStream3dATI);
+  do_opengl_call(glNormalStream3dATI_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glNormalStream3dvATI) (GLenum arg_0, const GLdouble * arg_1)
+{
+  CHECK_PROC(glNormalStream3dvATI);
+  do_opengl_call(glNormalStream3dvATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glClientActiveVertexStreamATI) (GLenum arg_0)
+{
+  CHECK_PROC(glClientActiveVertexStreamATI);
+  do_opengl_call(glClientActiveVertexStreamATI_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glVertexBlendEnviATI) (GLenum arg_0, GLint arg_1)
+{
+  CHECK_PROC(glVertexBlendEnviATI);
+  do_opengl_call(glVertexBlendEnviATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexBlendEnvfATI) (GLenum arg_0, GLfloat arg_1)
+{
+  CHECK_PROC(glVertexBlendEnvfATI);
+  do_opengl_call(glVertexBlendEnvfATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glDrawElementArrayATI) (GLenum arg_0, GLsizei arg_1)
+{
+  CHECK_PROC(glDrawElementArrayATI);
+  do_opengl_call(glDrawElementArrayATI_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glDrawRangeElementArrayATI) (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLsizei arg_3)
+{
+  CHECK_PROC(glDrawRangeElementArrayATI);
+  do_opengl_call(glDrawRangeElementArrayATI_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+GLboolean EXT_FUNC(glIsOcclusionQueryNV) (GLuint arg_0)
+{
+  GLboolean ret;
+  CHECK_PROC_WITH_RET(glIsOcclusionQueryNV);
+  do_opengl_call(glIsOcclusionQueryNV_func, &ret, arg_0);
+  return ret;
+}
+
+void EXT_FUNC(glBeginOcclusionQueryNV) (GLuint arg_0)
+{
+  CHECK_PROC(glBeginOcclusionQueryNV);
+  do_opengl_call(glBeginOcclusionQueryNV_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glEndOcclusionQueryNV) ()
+{
+  CHECK_PROC(glEndOcclusionQueryNV);
+  do_opengl_call(glEndOcclusionQueryNV_func, NULL);
+}
+
+void EXT_FUNC(glPointParameteriNV) (GLenum arg_0, GLint arg_1)
+{
+  CHECK_PROC(glPointParameteriNV);
+  do_opengl_call(glPointParameteriNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glActiveStencilFaceEXT) (GLenum arg_0)
+{
+  CHECK_PROC(glActiveStencilFaceEXT);
+  do_opengl_call(glActiveStencilFaceEXT_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glVertex2hNV) (GLhalfNV arg_0, GLhalfNV arg_1)
+{
+  CHECK_PROC(glVertex2hNV);
+  do_opengl_call(glVertex2hNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertex3hNV) (GLhalfNV arg_0, GLhalfNV arg_1, GLhalfNV arg_2)
+{
+  CHECK_PROC(glVertex3hNV);
+  do_opengl_call(glVertex3hNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertex4hNV) (GLhalfNV arg_0, GLhalfNV arg_1, GLhalfNV arg_2, GLhalfNV arg_3)
+{
+  CHECK_PROC(glVertex4hNV);
+  do_opengl_call(glVertex4hNV_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glNormal3hNV) (GLhalfNV arg_0, GLhalfNV arg_1, GLhalfNV arg_2)
+{
+  CHECK_PROC(glNormal3hNV);
+  do_opengl_call(glNormal3hNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glColor3hNV) (GLhalfNV arg_0, GLhalfNV arg_1, GLhalfNV arg_2)
+{
+  CHECK_PROC(glColor3hNV);
+  do_opengl_call(glColor3hNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glColor4hNV) (GLhalfNV arg_0, GLhalfNV arg_1, GLhalfNV arg_2, GLhalfNV arg_3)
+{
+  CHECK_PROC(glColor4hNV);
+  do_opengl_call(glColor4hNV_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glTexCoord1hNV) (GLhalfNV arg_0)
+{
+  CHECK_PROC(glTexCoord1hNV);
+  do_opengl_call(glTexCoord1hNV_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glTexCoord2hNV) (GLhalfNV arg_0, GLhalfNV arg_1)
+{
+  CHECK_PROC(glTexCoord2hNV);
+  do_opengl_call(glTexCoord2hNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glTexCoord3hNV) (GLhalfNV arg_0, GLhalfNV arg_1, GLhalfNV arg_2)
+{
+  CHECK_PROC(glTexCoord3hNV);
+  do_opengl_call(glTexCoord3hNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glTexCoord4hNV) (GLhalfNV arg_0, GLhalfNV arg_1, GLhalfNV arg_2, GLhalfNV arg_3)
+{
+  CHECK_PROC(glTexCoord4hNV);
+  do_opengl_call(glTexCoord4hNV_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glMultiTexCoord1hNV) (GLenum arg_0, GLhalfNV arg_1)
+{
+  CHECK_PROC(glMultiTexCoord1hNV);
+  do_opengl_call(glMultiTexCoord1hNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glMultiTexCoord2hNV) (GLenum arg_0, GLhalfNV arg_1, GLhalfNV arg_2)
+{
+  CHECK_PROC(glMultiTexCoord2hNV);
+  do_opengl_call(glMultiTexCoord2hNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glMultiTexCoord3hNV) (GLenum arg_0, GLhalfNV arg_1, GLhalfNV arg_2, GLhalfNV arg_3)
+{
+  CHECK_PROC(glMultiTexCoord3hNV);
+  do_opengl_call(glMultiTexCoord3hNV_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glMultiTexCoord4hNV) (GLenum arg_0, GLhalfNV arg_1, GLhalfNV arg_2, GLhalfNV arg_3, GLhalfNV arg_4)
+{
+  CHECK_PROC(glMultiTexCoord4hNV);
+  do_opengl_call(glMultiTexCoord4hNV_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glFogCoordhNV) (GLhalfNV arg_0)
+{
+  CHECK_PROC(glFogCoordhNV);
+  do_opengl_call(glFogCoordhNV_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glSecondaryColor3hNV) (GLhalfNV arg_0, GLhalfNV arg_1, GLhalfNV arg_2)
+{
+  CHECK_PROC(glSecondaryColor3hNV);
+  do_opengl_call(glSecondaryColor3hNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexWeighthNV) (GLhalfNV arg_0)
+{
+  CHECK_PROC(glVertexWeighthNV);
+  do_opengl_call(glVertexWeighthNV_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glVertexAttrib1hNV) (GLuint arg_0, GLhalfNV arg_1)
+{
+  CHECK_PROC(glVertexAttrib1hNV);
+  do_opengl_call(glVertexAttrib1hNV_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glVertexAttrib2hNV) (GLuint arg_0, GLhalfNV arg_1, GLhalfNV arg_2)
+{
+  CHECK_PROC(glVertexAttrib2hNV);
+  do_opengl_call(glVertexAttrib2hNV_func, NULL, arg_0, arg_1, arg_2);
+}
+
+void EXT_FUNC(glVertexAttrib3hNV) (GLuint arg_0, GLhalfNV arg_1, GLhalfNV arg_2, GLhalfNV arg_3)
+{
+  CHECK_PROC(glVertexAttrib3hNV);
+  do_opengl_call(glVertexAttrib3hNV_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glVertexAttrib4hNV) (GLuint arg_0, GLhalfNV arg_1, GLhalfNV arg_2, GLhalfNV arg_3, GLhalfNV arg_4)
+{
+  CHECK_PROC(glVertexAttrib4hNV);
+  do_opengl_call(glVertexAttrib4hNV_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glFlushPixelDataRangeNV) (GLenum arg_0)
+{
+  CHECK_PROC(glFlushPixelDataRangeNV);
+  do_opengl_call(glFlushPixelDataRangeNV_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glPrimitiveRestartNV) ()
+{
+  CHECK_PROC(glPrimitiveRestartNV);
+  do_opengl_call(glPrimitiveRestartNV_func, NULL);
+}
+
+void EXT_FUNC(glPrimitiveRestartIndexNV) (GLuint arg_0)
+{
+  CHECK_PROC(glPrimitiveRestartIndexNV);
+  do_opengl_call(glPrimitiveRestartIndexNV_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glUnmapObjectBufferATI) (GLuint arg_0)
+{
+  CHECK_PROC(glUnmapObjectBufferATI);
+  do_opengl_call(glUnmapObjectBufferATI_func, NULL, arg_0);
+}
+
+void EXT_FUNC(glStencilOpSeparateATI) (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLenum arg_3)
+{
+  CHECK_PROC(glStencilOpSeparateATI);
+  do_opengl_call(glStencilOpSeparateATI_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glStencilFuncSeparateATI) (GLenum arg_0, GLenum arg_1, GLint arg_2, GLuint arg_3)
+{
+  CHECK_PROC(glStencilFuncSeparateATI);
+  do_opengl_call(glStencilFuncSeparateATI_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glVertexAttribArrayObjectATI) (GLuint arg_0, GLint arg_1, GLenum arg_2, GLboolean arg_3, GLsizei arg_4, GLuint arg_5, GLuint arg_6)
+{
+  CHECK_PROC(glVertexAttribArrayObjectATI);
+  do_opengl_call(glVertexAttribArrayObjectATI_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6);
+}
+
+void EXT_FUNC(glDepthBoundsEXT) (GLclampd arg_0, GLclampd arg_1)
+{
+  CHECK_PROC(glDepthBoundsEXT);
+  do_opengl_call(glDepthBoundsEXT_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glBlendEquationSeparateEXT) (GLenum arg_0, GLenum arg_1)
+{
+  CHECK_PROC(glBlendEquationSeparateEXT);
+  do_opengl_call(glBlendEquationSeparateEXT_func, NULL, arg_0, arg_1);
+}
+
+GLboolean EXT_FUNC(glIsRenderbufferEXT) (GLuint arg_0)
+{
+  GLboolean ret;
+  CHECK_PROC_WITH_RET(glIsRenderbufferEXT);
+  do_opengl_call(glIsRenderbufferEXT_func, &ret, arg_0);
+  return ret;
+}
+
+void EXT_FUNC(glBindRenderbufferEXT) (GLenum arg_0, GLuint arg_1)
+{
+  CHECK_PROC(glBindRenderbufferEXT);
+  do_opengl_call(glBindRenderbufferEXT_func, NULL, arg_0, arg_1);
+}
+
+void EXT_FUNC(glRenderbufferStorageEXT) (GLenum arg_0, GLenum arg_1, GLsizei arg_2, GLsizei arg_3)
+{
+  CHECK_PROC(glRenderbufferStorageEXT);
+  do_opengl_call(glRenderbufferStorageEXT_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+GLboolean EXT_FUNC(glIsFramebufferEXT) (GLuint arg_0)
+{
+  GLboolean ret;
+  CHECK_PROC_WITH_RET(glIsFramebufferEXT);
+  do_opengl_call(glIsFramebufferEXT_func, &ret, arg_0);
+  return ret;
+}
+
+void EXT_FUNC(glBindFramebufferEXT) (GLenum arg_0, GLuint arg_1)
+{
+  CHECK_PROC(glBindFramebufferEXT);
+  do_opengl_call(glBindFramebufferEXT_func, NULL, arg_0, arg_1);
+}
+
+GLenum EXT_FUNC(glCheckFramebufferStatusEXT) (GLenum arg_0)
+{
+  GLenum ret;
+  CHECK_PROC_WITH_RET(glCheckFramebufferStatusEXT);
+  do_opengl_call(glCheckFramebufferStatusEXT_func, &ret, arg_0);
+  return ret;
+}
+
+void EXT_FUNC(glFramebufferTexture1DEXT) (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLuint arg_3, GLint arg_4)
+{
+  CHECK_PROC(glFramebufferTexture1DEXT);
+  do_opengl_call(glFramebufferTexture1DEXT_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glFramebufferTexture2DEXT) (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLuint arg_3, GLint arg_4)
+{
+  CHECK_PROC(glFramebufferTexture2DEXT);
+  do_opengl_call(glFramebufferTexture2DEXT_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4);
+}
+
+void EXT_FUNC(glFramebufferTexture3DEXT) (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLuint arg_3, GLint arg_4, GLint arg_5)
+{
+  CHECK_PROC(glFramebufferTexture3DEXT);
+  do_opengl_call(glFramebufferTexture3DEXT_func, NULL, arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+}
+
+void EXT_FUNC(glFramebufferRenderbufferEXT) (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLuint arg_3)
+{
+  CHECK_PROC(glFramebufferRenderbufferEXT);
+  do_opengl_call(glFramebufferRenderbufferEXT_func, NULL, arg_0, arg_1, arg_2, arg_3);
+}
+
+void EXT_FUNC(glGenerateMipmapEXT) (GLenum arg_0)
+{
+  CHECK_PROC(glGenerateMipmapEXT);
+  do_opengl_call(glGenerateMipmapEXT_func, NULL, arg_0);
+}
+
diff -Nrup --exclude=CVS --exclude='*~' --exclude='config-host*' --exclude=Makefile --exclude=config.mak --exclude=config.h qemu.ori/target-i386/gl_func.h qemu/target-i386/gl_func.h
--- qemu.ori/target-i386/gl_func.h	1970-01-01 01:00:00.000000000 +0100
+++ qemu/target-i386/gl_func.h	2006-11-14 21:46:24.000000000 +0100
@@ -0,0 +1,3094 @@
+/* This is a generated file. DO NOT EDIT ! */
+
+#define COMPOSE(x,y) x##y
+#define MAGIC_MACRO(x)  COMPOSE(x,_func)
+enum {
+#include "gl_func_perso.h"
+  glClearIndex_func,
+  glClearColor_func,
+  glClear_func,
+  glIndexMask_func,
+  glColorMask_func,
+  glAlphaFunc_func,
+  glBlendFunc_func,
+  glLogicOp_func,
+  glCullFace_func,
+  glFrontFace_func,
+  glPointSize_func,
+  glLineWidth_func,
+  glLineStipple_func,
+  glPolygonMode_func,
+  glPolygonOffset_func,
+  glEdgeFlag_func,
+  glScissor_func,
+  glDrawBuffer_func,
+  glReadBuffer_func,
+  glEnable_func,
+  glDisable_func,
+  glIsEnabled_func,
+  glEnableClientState_func,
+  glDisableClientState_func,
+  glPushAttrib_func,
+  glPopAttrib_func,
+  glPushClientAttrib_func,
+  glPopClientAttrib_func,
+  glRenderMode_func,
+  glGetError_func,
+  glFinish_func,
+  glFlush_func,
+  glHint_func,
+  glClearDepth_func,
+  glDepthFunc_func,
+  glDepthMask_func,
+  glDepthRange_func,
+  glClearAccum_func,
+  glAccum_func,
+  glMatrixMode_func,
+  glOrtho_func,
+  glFrustum_func,
+  glViewport_func,
+  glPushMatrix_func,
+  glPopMatrix_func,
+  glLoadIdentity_func,
+  glLoadMatrixd_func,
+  glLoadMatrixf_func,
+  glMultMatrixd_func,
+  glMultMatrixf_func,
+  glRotated_func,
+  glRotatef_func,
+  glScaled_func,
+  glScalef_func,
+  glTranslated_func,
+  glTranslatef_func,
+  glIsList_func,
+  glDeleteLists_func,
+  glGenLists_func,
+  glNewList_func,
+  glEndList_func,
+  glCallList_func,
+  glListBase_func,
+  glBegin_func,
+  glEnd_func,
+  glVertex2d_func,
+  glVertex2f_func,
+  glVertex2i_func,
+  glVertex2s_func,
+  glVertex3d_func,
+  glVertex3f_func,
+  glVertex3i_func,
+  glVertex3s_func,
+  glVertex4d_func,
+  glVertex4f_func,
+  glVertex4i_func,
+  glVertex4s_func,
+  glVertex2dv_func,
+  glVertex2fv_func,
+  glVertex2iv_func,
+  glVertex2sv_func,
+  glVertex3dv_func,
+  glVertex3fv_func,
+  glVertex3iv_func,
+  glVertex3sv_func,
+  glVertex4dv_func,
+  glVertex4fv_func,
+  glVertex4iv_func,
+  glVertex4sv_func,
+  glNormal3b_func,
+  glNormal3d_func,
+  glNormal3f_func,
+  glNormal3i_func,
+  glNormal3s_func,
+  glNormal3bv_func,
+  glNormal3dv_func,
+  glNormal3fv_func,
+  glNormal3iv_func,
+  glNormal3sv_func,
+  glIndexd_func,
+  glIndexf_func,
+  glIndexi_func,
+  glIndexs_func,
+  glIndexub_func,
+  glColor3b_func,
+  glColor3d_func,
+  glColor3f_func,
+  glColor3i_func,
+  glColor3s_func,
+  glColor3ub_func,
+  glColor3ui_func,
+  glColor3us_func,
+  glColor4b_func,
+  glColor4d_func,
+  glColor4f_func,
+  glColor4i_func,
+  glColor4s_func,
+  glColor4ub_func,
+  glColor4ui_func,
+  glColor4us_func,
+  glColor3bv_func,
+  glColor3dv_func,
+  glColor3fv_func,
+  glColor3iv_func,
+  glColor3sv_func,
+  glColor3ubv_func,
+  glColor3uiv_func,
+  glColor3usv_func,
+  glColor4bv_func,
+  glColor4dv_func,
+  glColor4fv_func,
+  glColor4iv_func,
+  glColor4sv_func,
+  glColor4ubv_func,
+  glColor4uiv_func,
+  glColor4usv_func,
+  glTexCoord1d_func,
+  glTexCoord1f_func,
+  glTexCoord1i_func,
+  glTexCoord1s_func,
+  glTexCoord2d_func,
+  glTexCoord2f_func,
+  glTexCoord2i_func,
+  glTexCoord2s_func,
+  glTexCoord3d_func,
+  glTexCoord3f_func,
+  glTexCoord3i_func,
+  glTexCoord3s_func,
+  glTexCoord4d_func,
+  glTexCoord4f_func,
+  glTexCoord4i_func,
+  glTexCoord4s_func,
+  glTexCoord1dv_func,
+  glTexCoord1fv_func,
+  glTexCoord1iv_func,
+  glTexCoord1sv_func,
+  glTexCoord2dv_func,
+  glTexCoord2fv_func,
+  glTexCoord2iv_func,
+  glTexCoord2sv_func,
+  glTexCoord3dv_func,
+  glTexCoord3fv_func,
+  glTexCoord3iv_func,
+  glTexCoord3sv_func,
+  glTexCoord4dv_func,
+  glTexCoord4fv_func,
+  glTexCoord4iv_func,
+  glTexCoord4sv_func,
+  glRasterPos2d_func,
+  glRasterPos2f_func,
+  glRasterPos2i_func,
+  glRasterPos2s_func,
+  glRasterPos3d_func,
+  glRasterPos3f_func,
+  glRasterPos3i_func,
+  glRasterPos3s_func,
+  glRasterPos4d_func,
+  glRasterPos4f_func,
+  glRasterPos4i_func,
+  glRasterPos4s_func,
+  glRasterPos2dv_func,
+  glRasterPos2fv_func,
+  glRasterPos2iv_func,
+  glRasterPos2sv_func,
+  glRasterPos3dv_func,
+  glRasterPos3fv_func,
+  glRasterPos3iv_func,
+  glRasterPos3sv_func,
+  glRasterPos4dv_func,
+  glRasterPos4fv_func,
+  glRasterPos4iv_func,
+  glRasterPos4sv_func,
+  glRectd_func,
+  glRectf_func,
+  glRecti_func,
+  glRects_func,
+  glArrayElement_func,
+  glShadeModel_func,
+  glLightf_func,
+  glLighti_func,
+  glLightModelf_func,
+  glLightModeli_func,
+  glMaterialf_func,
+  glMateriali_func,
+  glColorMaterial_func,
+  glPixelZoom_func,
+  glPixelStoref_func,
+  glPixelStorei_func,
+  glPixelTransferf_func,
+  glPixelTransferi_func,
+  glCopyPixels_func,
+  glStencilFunc_func,
+  glStencilMask_func,
+  glStencilOp_func,
+  glClearStencil_func,
+  glTexGend_func,
+  glTexGenf_func,
+  glTexGeni_func,
+  glTexEnvf_func,
+  glTexEnvi_func,
+  glTexParameterf_func,
+  glTexParameteri_func,
+  glBindTexture_func,
+  glIsTexture_func,
+  glCopyTexImage1D_func,
+  glCopyTexImage2D_func,
+  glCopyTexSubImage1D_func,
+  glCopyTexSubImage2D_func,
+  glEvalCoord1d_func,
+  glEvalCoord1f_func,
+  glEvalCoord1dv_func,
+  glEvalCoord1fv_func,
+  glEvalCoord2d_func,
+  glEvalCoord2f_func,
+  glEvalCoord2dv_func,
+  glEvalCoord2fv_func,
+  glMapGrid1d_func,
+  glMapGrid1f_func,
+  glMapGrid2d_func,
+  glMapGrid2f_func,
+  glEvalPoint1_func,
+  glEvalPoint2_func,
+  glEvalMesh1_func,
+  glEvalMesh2_func,
+  glFogf_func,
+  glFogi_func,
+  glPassThrough_func,
+  glInitNames_func,
+  glLoadName_func,
+  glPushName_func,
+  glPopName_func,
+  glCopyTexSubImage3D_func,
+  glCopyColorSubTable_func,
+  glCopyColorTable_func,
+  glBlendEquation_func,
+  glBlendColor_func,
+  glHistogram_func,
+  glResetHistogram_func,
+  glMinmax_func,
+  glResetMinmax_func,
+  glConvolutionParameterf_func,
+  glConvolutionParameteri_func,
+  glCopyConvolutionFilter1D_func,
+  glCopyConvolutionFilter2D_func,
+  glActiveTexture_func,
+  glClientActiveTexture_func,
+  glMultiTexCoord1d_func,
+  glMultiTexCoord1dv_func,
+  glMultiTexCoord1f_func,
+  glMultiTexCoord1fv_func,
+  glMultiTexCoord1i_func,
+  glMultiTexCoord1iv_func,
+  glMultiTexCoord1s_func,
+  glMultiTexCoord1sv_func,
+  glMultiTexCoord2d_func,
+  glMultiTexCoord2dv_func,
+  glMultiTexCoord2f_func,
+  glMultiTexCoord2fv_func,
+  glMultiTexCoord2i_func,
+  glMultiTexCoord2iv_func,
+  glMultiTexCoord2s_func,
+  glMultiTexCoord2sv_func,
+  glMultiTexCoord3d_func,
+  glMultiTexCoord3dv_func,
+  glMultiTexCoord3f_func,
+  glMultiTexCoord3fv_func,
+  glMultiTexCoord3i_func,
+  glMultiTexCoord3iv_func,
+  glMultiTexCoord3s_func,
+  glMultiTexCoord3sv_func,
+  glMultiTexCoord4d_func,
+  glMultiTexCoord4dv_func,
+  glMultiTexCoord4f_func,
+  glMultiTexCoord4fv_func,
+  glMultiTexCoord4i_func,
+  glMultiTexCoord4iv_func,
+  glMultiTexCoord4s_func,
+  glMultiTexCoord4sv_func,
+  glLoadTransposeMatrixd_func,
+  glLoadTransposeMatrixf_func,
+  glMultTransposeMatrixd_func,
+  glMultTransposeMatrixf_func,
+  glSampleCoverage_func,
+  glActiveTextureARB_func,
+  glClientActiveTextureARB_func,
+  glMultiTexCoord1dARB_func,
+  glMultiTexCoord1dvARB_func,
+  glMultiTexCoord1fARB_func,
+  glMultiTexCoord1fvARB_func,
+  glMultiTexCoord1iARB_func,
+  glMultiTexCoord1ivARB_func,
+  glMultiTexCoord1sARB_func,
+  glMultiTexCoord1svARB_func,
+  glMultiTexCoord2dARB_func,
+  glMultiTexCoord2dvARB_func,
+  glMultiTexCoord2fARB_func,
+  glMultiTexCoord2fvARB_func,
+  glMultiTexCoord2iARB_func,
+  glMultiTexCoord2ivARB_func,
+  glMultiTexCoord2sARB_func,
+  glMultiTexCoord2svARB_func,
+  glMultiTexCoord3dARB_func,
+  glMultiTexCoord3dvARB_func,
+  glMultiTexCoord3fARB_func,
+  glMultiTexCoord3fvARB_func,
+  glMultiTexCoord3iARB_func,
+  glMultiTexCoord3ivARB_func,
+  glMultiTexCoord3sARB_func,
+  glMultiTexCoord3svARB_func,
+  glMultiTexCoord4dARB_func,
+  glMultiTexCoord4dvARB_func,
+  glMultiTexCoord4fARB_func,
+  glMultiTexCoord4fvARB_func,
+  glMultiTexCoord4iARB_func,
+  glMultiTexCoord4ivARB_func,
+  glMultiTexCoord4sARB_func,
+  glMultiTexCoord4svARB_func,
+  glLoadTransposeMatrixfARB_func,
+  glLoadTransposeMatrixdARB_func,
+  glMultTransposeMatrixfARB_func,
+  glMultTransposeMatrixdARB_func,
+  glSampleCoverageARB_func,
+  glPointParameterfARB_func,
+  glVertexBlendARB_func,
+  glCurrentPaletteMatrixARB_func,
+  glWindowPos2dARB_func,
+  glWindowPos2dvARB_func,
+  glWindowPos2fARB_func,
+  glWindowPos2fvARB_func,
+  glWindowPos2iARB_func,
+  glWindowPos2ivARB_func,
+  glWindowPos2sARB_func,
+  glWindowPos2svARB_func,
+  glWindowPos3dARB_func,
+  glWindowPos3dvARB_func,
+  glWindowPos3fARB_func,
+  glWindowPos3fvARB_func,
+  glWindowPos3iARB_func,
+  glWindowPos3ivARB_func,
+  glWindowPos3sARB_func,
+  glWindowPos3svARB_func,
+  glVertexAttrib1dARB_func,
+  glVertexAttrib1dvARB_func,
+  glVertexAttrib1fARB_func,
+  glVertexAttrib1fvARB_func,
+  glVertexAttrib1sARB_func,
+  glVertexAttrib1svARB_func,
+  glVertexAttrib2dARB_func,
+  glVertexAttrib2dvARB_func,
+  glVertexAttrib2fARB_func,
+  glVertexAttrib2fvARB_func,
+  glVertexAttrib2sARB_func,
+  glVertexAttrib2svARB_func,
+  glVertexAttrib3dARB_func,
+  glVertexAttrib3dvARB_func,
+  glVertexAttrib3fARB_func,
+  glVertexAttrib3fvARB_func,
+  glVertexAttrib3sARB_func,
+  glVertexAttrib3svARB_func,
+  glVertexAttrib4NbvARB_func,
+  glVertexAttrib4NivARB_func,
+  glVertexAttrib4NsvARB_func,
+  glVertexAttrib4NubARB_func,
+  glVertexAttrib4NubvARB_func,
+  glVertexAttrib4NuivARB_func,
+  glVertexAttrib4NusvARB_func,
+  glVertexAttrib4bvARB_func,
+  glVertexAttrib4dARB_func,
+  glVertexAttrib4dvARB_func,
+  glVertexAttrib4fARB_func,
+  glVertexAttrib4fvARB_func,
+  glVertexAttrib4ivARB_func,
+  glVertexAttrib4sARB_func,
+  glVertexAttrib4svARB_func,
+  glVertexAttrib4ubvARB_func,
+  glVertexAttrib4uivARB_func,
+  glVertexAttrib4usvARB_func,
+  glEnableVertexAttribArrayARB_func,
+  glDisableVertexAttribArrayARB_func,
+  glBindProgramARB_func,
+  glProgramEnvParameter4dARB_func,
+  glProgramEnvParameter4dvARB_func,
+  glProgramEnvParameter4fARB_func,
+  glProgramEnvParameter4fvARB_func,
+  glProgramLocalParameter4dARB_func,
+  glProgramLocalParameter4dvARB_func,
+  glProgramLocalParameter4fARB_func,
+  glProgramLocalParameter4fvARB_func,
+  glIsProgramARB_func,
+  glBindBufferARB_func,
+  glIsBufferARB_func,
+  glUnmapBufferARB_func,
+  glIsQueryARB_func,
+  glBeginQueryARB_func,
+  glEndQueryARB_func,
+  glDeleteObjectARB_func,
+  glGetHandleARB_func,
+  glDetachObjectARB_func,
+  glCreateShaderObjectARB_func,
+  glCompileShaderARB_func,
+  glCreateProgramObjectARB_func,
+  glAttachObjectARB_func,
+  glLinkProgramARB_func,
+  glUseProgramObjectARB_func,
+  glValidateProgramARB_func,
+  glUniform1fARB_func,
+  glUniform2fARB_func,
+  glUniform3fARB_func,
+  glUniform4fARB_func,
+  glUniform1iARB_func,
+  glUniform2iARB_func,
+  glUniform3iARB_func,
+  glUniform4iARB_func,
+  glUniform1fvARB_func,
+  glUniform2fvARB_func,
+  glUniform3fvARB_func,
+  glUniform4fvARB_func,
+  glUniform1ivARB_func,
+  glUniform2ivARB_func,
+  glUniform3ivARB_func,
+  glUniform4ivARB_func,
+  glUniformMatrix2fvARB_func,
+  glUniformMatrix3fvARB_func,
+  glUniformMatrix4fvARB_func,
+  glClampColorARB_func,
+  glBlendColorEXT_func,
+  glPolygonOffsetEXT_func,
+  glCopyTexImage1DEXT_func,
+  glCopyTexImage2DEXT_func,
+  glCopyTexSubImage1DEXT_func,
+  glCopyTexSubImage2DEXT_func,
+  glCopyTexSubImage3DEXT_func,
+  glHistogramEXT_func,
+  glMinmaxEXT_func,
+  glResetHistogramEXT_func,
+  glResetMinmaxEXT_func,
+  glConvolutionParameterfEXT_func,
+  glConvolutionParameteriEXT_func,
+  glCopyConvolutionFilter1DEXT_func,
+  glCopyConvolutionFilter2DEXT_func,
+  glCopyColorTableSGI_func,
+  glPixelTexGenSGIX_func,
+  glPixelTexGenParameteriSGIS_func,
+  glPixelTexGenParameterfSGIS_func,
+  glBindTextureEXT_func,
+  glIsTextureEXT_func,
+  glSampleMaskSGIS_func,
+  glSamplePatternSGIS_func,
+  glArrayElementEXT_func,
+  glBlendEquationEXT_func,
+  glSpriteParameterfSGIX_func,
+  glSpriteParameteriSGIX_func,
+  glPointParameterfEXT_func,
+  glPointParameterfSGIS_func,
+  glGetInstrumentsSGIX_func,
+  glReadInstrumentsSGIX_func,
+  glStartInstrumentsSGIX_func,
+  glStopInstrumentsSGIX_func,
+  glFrameZoomSGIX_func,
+  glTagSampleBufferSGIX_func,
+  glDeformSGIX_func,
+  glLoadIdentityDeformationMapSGIX_func,
+  glFlushRasterSGIX_func,
+  glCopyColorSubTableEXT_func,
+  glListParameterfSGIX_func,
+  glListParameteriSGIX_func,
+  glIndexMaterialEXT_func,
+  glIndexFuncEXT_func,
+  glLockArraysEXT_func,
+  glUnlockArraysEXT_func,
+  glFragmentColorMaterialSGIX_func,
+  glFragmentLightfSGIX_func,
+  glFragmentLightiSGIX_func,
+  glFragmentLightModelfSGIX_func,
+  glFragmentLightModeliSGIX_func,
+  glFragmentMaterialfSGIX_func,
+  glFragmentMaterialiSGIX_func,
+  glLightEnviSGIX_func,
+  glApplyTextureEXT_func,
+  glTextureLightEXT_func,
+  glTextureMaterialEXT_func,
+  glAsyncMarkerSGIX_func,
+  glGenAsyncMarkersSGIX_func,
+  glDeleteAsyncMarkersSGIX_func,
+  glIsAsyncMarkerSGIX_func,
+  glPixelTransformParameteriEXT_func,
+  glPixelTransformParameterfEXT_func,
+  glSecondaryColor3bEXT_func,
+  glSecondaryColor3bvEXT_func,
+  glSecondaryColor3dEXT_func,
+  glSecondaryColor3dvEXT_func,
+  glSecondaryColor3fEXT_func,
+  glSecondaryColor3fvEXT_func,
+  glSecondaryColor3iEXT_func,
+  glSecondaryColor3ivEXT_func,
+  glSecondaryColor3sEXT_func,
+  glSecondaryColor3svEXT_func,
+  glSecondaryColor3ubEXT_func,
+  glSecondaryColor3ubvEXT_func,
+  glSecondaryColor3uiEXT_func,
+  glSecondaryColor3uivEXT_func,
+  glSecondaryColor3usEXT_func,
+  glSecondaryColor3usvEXT_func,
+  glTextureNormalEXT_func,
+  glFogCoordfEXT_func,
+  glFogCoorddEXT_func,
+  glTangent3bEXT_func,
+  glTangent3bvEXT_func,
+  glTangent3dEXT_func,
+  glTangent3dvEXT_func,
+  glTangent3fEXT_func,
+  glTangent3fvEXT_func,
+  glTangent3iEXT_func,
+  glTangent3ivEXT_func,
+  glTangent3sEXT_func,
+  glTangent3svEXT_func,
+  glBinormal3bEXT_func,
+  glBinormal3bvEXT_func,
+  glBinormal3dEXT_func,
+  glBinormal3dvEXT_func,
+  glBinormal3fEXT_func,
+  glBinormal3fvEXT_func,
+  glBinormal3iEXT_func,
+  glBinormal3ivEXT_func,
+  glBinormal3sEXT_func,
+  glBinormal3svEXT_func,
+  glBlendFuncSeparateEXT_func,
+  glVertexWeightfEXT_func,
+  glFlushVertexArrayRangeNV_func,
+  glCombinerParameterfNV_func,
+  glCombinerParameteriNV_func,
+  glCombinerInputNV_func,
+  glCombinerOutputNV_func,
+  glFinalCombinerInputNV_func,
+  glResizeBuffersMESA_func,
+  glWindowPos2dMESA_func,
+  glWindowPos2dvMESA_func,
+  glWindowPos2fMESA_func,
+  glWindowPos2fvMESA_func,
+  glWindowPos2iMESA_func,
+  glWindowPos2ivMESA_func,
+  glWindowPos2sMESA_func,
+  glWindowPos2svMESA_func,
+  glWindowPos3dMESA_func,
+  glWindowPos3dvMESA_func,
+  glWindowPos3fMESA_func,
+  glWindowPos3fvMESA_func,
+  glWindowPos3iMESA_func,
+  glWindowPos3ivMESA_func,
+  glWindowPos3sMESA_func,
+  glWindowPos3svMESA_func,
+  glWindowPos4dMESA_func,
+  glWindowPos4dvMESA_func,
+  glWindowPos4fMESA_func,
+  glWindowPos4fvMESA_func,
+  glWindowPos4iMESA_func,
+  glWindowPos4ivMESA_func,
+  glWindowPos4sMESA_func,
+  glWindowPos4svMESA_func,
+  glSampleMaskEXT_func,
+  glSamplePatternEXT_func,
+  glTextureColorMaskSGIS_func,
+  glIsFenceNV_func,
+  glTestFenceNV_func,
+  glFinishFenceNV_func,
+  glSetFenceNV_func,
+  glEvalMapsNV_func,
+  glBindProgramNV_func,
+  glIsProgramNV_func,
+  glProgramParameter4dNV_func,
+  glProgramParameter4dvNV_func,
+  glProgramParameter4fNV_func,
+  glProgramParameter4fvNV_func,
+  glProgramParameters4dvNV_func,
+  glProgramParameters4fvNV_func,
+  glTrackMatrixNV_func,
+  glVertexAttrib1dNV_func,
+  glVertexAttrib1dvNV_func,
+  glVertexAttrib1fNV_func,
+  glVertexAttrib1fvNV_func,
+  glVertexAttrib1sNV_func,
+  glVertexAttrib1svNV_func,
+  glVertexAttrib2dNV_func,
+  glVertexAttrib2dvNV_func,
+  glVertexAttrib2fNV_func,
+  glVertexAttrib2fvNV_func,
+  glVertexAttrib2sNV_func,
+  glVertexAttrib2svNV_func,
+  glVertexAttrib3dNV_func,
+  glVertexAttrib3dvNV_func,
+  glVertexAttrib3fNV_func,
+  glVertexAttrib3fvNV_func,
+  glVertexAttrib3sNV_func,
+  glVertexAttrib3svNV_func,
+  glVertexAttrib4dNV_func,
+  glVertexAttrib4dvNV_func,
+  glVertexAttrib4fNV_func,
+  glVertexAttrib4fvNV_func,
+  glVertexAttrib4sNV_func,
+  glVertexAttrib4svNV_func,
+  glVertexAttrib4ubNV_func,
+  glVertexAttrib4ubvNV_func,
+  glVertexAttribs1dvNV_func,
+  glVertexAttribs1fvNV_func,
+  glVertexAttribs1svNV_func,
+  glVertexAttribs2dvNV_func,
+  glVertexAttribs2fvNV_func,
+  glVertexAttribs2svNV_func,
+  glVertexAttribs3dvNV_func,
+  glVertexAttribs3fvNV_func,
+  glVertexAttribs3svNV_func,
+  glVertexAttribs4dvNV_func,
+  glVertexAttribs4fvNV_func,
+  glVertexAttribs4svNV_func,
+  glVertexAttribs4ubvNV_func,
+  glGenFragmentShadersATI_func,
+  glBindFragmentShaderATI_func,
+  glDeleteFragmentShaderATI_func,
+  glBeginFragmentShaderATI_func,
+  glEndFragmentShaderATI_func,
+  glPassTexCoordATI_func,
+  glSampleMapATI_func,
+  glColorFragmentOp1ATI_func,
+  glColorFragmentOp2ATI_func,
+  glColorFragmentOp3ATI_func,
+  glAlphaFragmentOp1ATI_func,
+  glAlphaFragmentOp2ATI_func,
+  glAlphaFragmentOp3ATI_func,
+  glPNTrianglesiATI_func,
+  glPNTrianglesfATI_func,
+  glIsObjectBufferATI_func,
+  glFreeObjectBufferATI_func,
+  glArrayObjectATI_func,
+  glVariantArrayObjectATI_func,
+  glBeginVertexShaderEXT_func,
+  glEndVertexShaderEXT_func,
+  glBindVertexShaderEXT_func,
+  glGenVertexShadersEXT_func,
+  glDeleteVertexShaderEXT_func,
+  glShaderOp1EXT_func,
+  glShaderOp2EXT_func,
+  glShaderOp3EXT_func,
+  glSwizzleEXT_func,
+  glWriteMaskEXT_func,
+  glInsertComponentEXT_func,
+  glExtractComponentEXT_func,
+  glGenSymbolsEXT_func,
+  glEnableVariantClientStateEXT_func,
+  glDisableVariantClientStateEXT_func,
+  glBindLightParameterEXT_func,
+  glBindMaterialParameterEXT_func,
+  glBindTexGenParameterEXT_func,
+  glBindTextureUnitParameterEXT_func,
+  glBindParameterEXT_func,
+  glIsVariantEnabledEXT_func,
+  glVertexStream1sATI_func,
+  glVertexStream1svATI_func,
+  glVertexStream1iATI_func,
+  glVertexStream1ivATI_func,
+  glVertexStream1fATI_func,
+  glVertexStream1fvATI_func,
+  glVertexStream1dATI_func,
+  glVertexStream1dvATI_func,
+  glVertexStream2sATI_func,
+  glVertexStream2svATI_func,
+  glVertexStream2iATI_func,
+  glVertexStream2ivATI_func,
+  glVertexStream2fATI_func,
+  glVertexStream2fvATI_func,
+  glVertexStream2dATI_func,
+  glVertexStream2dvATI_func,
+  glVertexStream3sATI_func,
+  glVertexStream3svATI_func,
+  glVertexStream3iATI_func,
+  glVertexStream3ivATI_func,
+  glVertexStream3fATI_func,
+  glVertexStream3fvATI_func,
+  glVertexStream3dATI_func,
+  glVertexStream3dvATI_func,
+  glVertexStream4sATI_func,
+  glVertexStream4svATI_func,
+  glVertexStream4iATI_func,
+  glVertexStream4ivATI_func,
+  glVertexStream4fATI_func,
+  glVertexStream4fvATI_func,
+  glVertexStream4dATI_func,
+  glVertexStream4dvATI_func,
+  glNormalStream3bATI_func,
+  glNormalStream3bvATI_func,
+  glNormalStream3sATI_func,
+  glNormalStream3svATI_func,
+  glNormalStream3iATI_func,
+  glNormalStream3ivATI_func,
+  glNormalStream3fATI_func,
+  glNormalStream3fvATI_func,
+  glNormalStream3dATI_func,
+  glNormalStream3dvATI_func,
+  glClientActiveVertexStreamATI_func,
+  glVertexBlendEnviATI_func,
+  glVertexBlendEnvfATI_func,
+  glDrawElementArrayATI_func,
+  glDrawRangeElementArrayATI_func,
+  glIsOcclusionQueryNV_func,
+  glBeginOcclusionQueryNV_func,
+  glEndOcclusionQueryNV_func,
+  glPointParameteriNV_func,
+  glActiveStencilFaceEXT_func,
+  glVertex2hNV_func,
+  glVertex3hNV_func,
+  glVertex4hNV_func,
+  glNormal3hNV_func,
+  glColor3hNV_func,
+  glColor4hNV_func,
+  glTexCoord1hNV_func,
+  glTexCoord2hNV_func,
+  glTexCoord3hNV_func,
+  glTexCoord4hNV_func,
+  glMultiTexCoord1hNV_func,
+  glMultiTexCoord2hNV_func,
+  glMultiTexCoord3hNV_func,
+  glMultiTexCoord4hNV_func,
+  glFogCoordhNV_func,
+  glSecondaryColor3hNV_func,
+  glVertexWeighthNV_func,
+  glVertexAttrib1hNV_func,
+  glVertexAttrib2hNV_func,
+  glVertexAttrib3hNV_func,
+  glVertexAttrib4hNV_func,
+  glFlushPixelDataRangeNV_func,
+  glPrimitiveRestartNV_func,
+  glPrimitiveRestartIndexNV_func,
+  glUnmapObjectBufferATI_func,
+  glStencilOpSeparateATI_func,
+  glStencilFuncSeparateATI_func,
+  glVertexAttribArrayObjectATI_func,
+  glDepthBoundsEXT_func,
+  glBlendEquationSeparateEXT_func,
+  glIsRenderbufferEXT_func,
+  glBindRenderbufferEXT_func,
+  glRenderbufferStorageEXT_func,
+  glIsFramebufferEXT_func,
+  glBindFramebufferEXT_func,
+  glCheckFramebufferStatusEXT_func,
+  glFramebufferTexture1DEXT_func,
+  glFramebufferTexture2DEXT_func,
+  glFramebufferTexture3DEXT_func,
+  glFramebufferRenderbufferEXT_func,
+  glGenerateMipmapEXT_func,
+  GL_N_CALLS
+};
+static const int glClearIndex_signature[] = { TYPE_NONE, 0, 1, TYPE_FLOAT};
+static const int glClearColor_signature[] = { TYPE_NONE, 0, 4, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glClear_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glIndexMask_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glColorMask_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR};
+static const int glAlphaFunc_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glBlendFunc_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glLogicOp_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glCullFace_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glFrontFace_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glPointSize_signature[] = { TYPE_NONE, 0, 1, TYPE_FLOAT};
+static const int glLineWidth_signature[] = { TYPE_NONE, 0, 1, TYPE_FLOAT};
+static const int glLineStipple_signature[] = { TYPE_NONE, 0, 2, TYPE_INT, TYPE_UNSIGNED_SHORT};
+static const int glPolygonMode_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glPolygonOffset_signature[] = { TYPE_NONE, 0, 2, TYPE_FLOAT, TYPE_FLOAT};
+static const int glEdgeFlag_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_CHAR};
+static const int glScissor_signature[] = { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glDrawBuffer_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glReadBuffer_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glEnable_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glDisable_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glIsEnabled_signature[] = { TYPE_UNSIGNED_CHAR, 0, 1, TYPE_UNSIGNED_INT};
+static const int glEnableClientState_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glDisableClientState_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glPushAttrib_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glPopAttrib_signature[] = { TYPE_NONE, 0, 0};
+static const int glPushClientAttrib_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glPopClientAttrib_signature[] = { TYPE_NONE, 0, 0};
+static const int glRenderMode_signature[] = { TYPE_INT, 0, 1, TYPE_UNSIGNED_INT};
+static const int glGetError_signature[] = { TYPE_UNSIGNED_INT, 0, 0};
+static const int glFinish_signature[] = { TYPE_NONE, 0, 0};
+static const int glFlush_signature[] = { TYPE_NONE, 0, 0};
+static const int glHint_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glClearDepth_signature[] = { TYPE_NONE, 0, 1, TYPE_DOUBLE};
+static const int glDepthFunc_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glDepthMask_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_CHAR};
+static const int glDepthRange_signature[] = { TYPE_NONE, 0, 2, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glClearAccum_signature[] = { TYPE_NONE, 0, 4, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glAccum_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glMatrixMode_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glOrtho_signature[] = { TYPE_NONE, 0, 6, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glFrustum_signature[] = { TYPE_NONE, 0, 6, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glViewport_signature[] = { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glPushMatrix_signature[] = { TYPE_NONE, 0, 0};
+static const int glPopMatrix_signature[] = { TYPE_NONE, 0, 0};
+static const int glLoadIdentity_signature[] = { TYPE_NONE, 0, 0};
+static const int glLoadMatrixd_signature[] = { TYPE_NONE, 0, 1, TYPE_16DOUBLE};
+static const int glLoadMatrixf_signature[] = { TYPE_NONE, 0, 1, TYPE_16FLOAT};
+static const int glMultMatrixd_signature[] = { TYPE_NONE, 0, 1, TYPE_16DOUBLE};
+static const int glMultMatrixf_signature[] = { TYPE_NONE, 0, 1, TYPE_16FLOAT};
+static const int glRotated_signature[] = { TYPE_NONE, 0, 4, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glRotatef_signature[] = { TYPE_NONE, 0, 4, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glScaled_signature[] = { TYPE_NONE, 0, 3, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glScalef_signature[] = { TYPE_NONE, 0, 3, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glTranslated_signature[] = { TYPE_NONE, 0, 3, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glTranslatef_signature[] = { TYPE_NONE, 0, 3, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glIsList_signature[] = { TYPE_UNSIGNED_CHAR, 0, 1, TYPE_UNSIGNED_INT};
+static const int glDeleteLists_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glGenLists_signature[] = { TYPE_UNSIGNED_INT, 0, 1, TYPE_INT};
+static const int glNewList_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glEndList_signature[] = { TYPE_NONE, 0, 0};
+static const int glCallList_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glListBase_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glBegin_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glEnd_signature[] = { TYPE_NONE, 0, 0};
+static const int glVertex2d_signature[] = { TYPE_NONE, 0, 2, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glVertex2f_signature[] = { TYPE_NONE, 0, 2, TYPE_FLOAT, TYPE_FLOAT};
+static const int glVertex2i_signature[] = { TYPE_NONE, 0, 2, TYPE_INT, TYPE_INT};
+static const int glVertex2s_signature[] = { TYPE_NONE, 0, 2, TYPE_SHORT, TYPE_SHORT};
+static const int glVertex3d_signature[] = { TYPE_NONE, 0, 3, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glVertex3f_signature[] = { TYPE_NONE, 0, 3, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glVertex3i_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glVertex3s_signature[] = { TYPE_NONE, 0, 3, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glVertex4d_signature[] = { TYPE_NONE, 0, 4, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glVertex4f_signature[] = { TYPE_NONE, 0, 4, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glVertex4i_signature[] = { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glVertex4s_signature[] = { TYPE_NONE, 0, 4, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glVertex2dv_signature[] = { TYPE_NONE, 0, 1, TYPE_2DOUBLE};
+static const int glVertex2fv_signature[] = { TYPE_NONE, 0, 1, TYPE_2FLOAT};
+static const int glVertex2iv_signature[] = { TYPE_NONE, 0, 1, TYPE_2INT};
+static const int glVertex2sv_signature[] = { TYPE_NONE, 0, 1, TYPE_2SHORT};
+static const int glVertex3dv_signature[] = { TYPE_NONE, 0, 1, TYPE_3DOUBLE};
+static const int glVertex3fv_signature[] = { TYPE_NONE, 0, 1, TYPE_3FLOAT};
+static const int glVertex3iv_signature[] = { TYPE_NONE, 0, 1, TYPE_3INT};
+static const int glVertex3sv_signature[] = { TYPE_NONE, 0, 1, TYPE_3SHORT};
+static const int glVertex4dv_signature[] = { TYPE_NONE, 0, 1, TYPE_4DOUBLE};
+static const int glVertex4fv_signature[] = { TYPE_NONE, 0, 1, TYPE_4FLOAT};
+static const int glVertex4iv_signature[] = { TYPE_NONE, 0, 1, TYPE_4INT};
+static const int glVertex4sv_signature[] = { TYPE_NONE, 0, 1, TYPE_4SHORT};
+static const int glNormal3b_signature[] = { TYPE_NONE, 0, 3, TYPE_CHAR, TYPE_CHAR, TYPE_CHAR};
+static const int glNormal3d_signature[] = { TYPE_NONE, 0, 3, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glNormal3f_signature[] = { TYPE_NONE, 0, 3, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glNormal3i_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glNormal3s_signature[] = { TYPE_NONE, 0, 3, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glNormal3bv_signature[] = { TYPE_NONE, 0, 1, TYPE_3CHAR};
+static const int glNormal3dv_signature[] = { TYPE_NONE, 0, 1, TYPE_3DOUBLE};
+static const int glNormal3fv_signature[] = { TYPE_NONE, 0, 1, TYPE_3FLOAT};
+static const int glNormal3iv_signature[] = { TYPE_NONE, 0, 1, TYPE_3INT};
+static const int glNormal3sv_signature[] = { TYPE_NONE, 0, 1, TYPE_3SHORT};
+static const int glIndexd_signature[] = { TYPE_NONE, 0, 1, TYPE_DOUBLE};
+static const int glIndexf_signature[] = { TYPE_NONE, 0, 1, TYPE_FLOAT};
+static const int glIndexi_signature[] = { TYPE_NONE, 0, 1, TYPE_INT};
+static const int glIndexs_signature[] = { TYPE_NONE, 0, 1, TYPE_SHORT};
+static const int glIndexub_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_CHAR};
+static const int glColor3b_signature[] = { TYPE_NONE, 0, 3, TYPE_CHAR, TYPE_CHAR, TYPE_CHAR};
+static const int glColor3d_signature[] = { TYPE_NONE, 0, 3, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glColor3f_signature[] = { TYPE_NONE, 0, 3, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glColor3i_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glColor3s_signature[] = { TYPE_NONE, 0, 3, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glColor3ub_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR};
+static const int glColor3ui_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glColor3us_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glColor4b_signature[] = { TYPE_NONE, 0, 4, TYPE_CHAR, TYPE_CHAR, TYPE_CHAR, TYPE_CHAR};
+static const int glColor4d_signature[] = { TYPE_NONE, 0, 4, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glColor4f_signature[] = { TYPE_NONE, 0, 4, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glColor4i_signature[] = { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glColor4s_signature[] = { TYPE_NONE, 0, 4, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glColor4ub_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR};
+static const int glColor4ui_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glColor4us_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glColor3bv_signature[] = { TYPE_NONE, 0, 1, TYPE_3CHAR};
+static const int glColor3dv_signature[] = { TYPE_NONE, 0, 1, TYPE_3DOUBLE};
+static const int glColor3fv_signature[] = { TYPE_NONE, 0, 1, TYPE_3FLOAT};
+static const int glColor3iv_signature[] = { TYPE_NONE, 0, 1, TYPE_3INT};
+static const int glColor3sv_signature[] = { TYPE_NONE, 0, 1, TYPE_3SHORT};
+static const int glColor3ubv_signature[] = { TYPE_NONE, 0, 1, TYPE_3CHAR};
+static const int glColor3uiv_signature[] = { TYPE_NONE, 0, 1, TYPE_3INT};
+static const int glColor3usv_signature[] = { TYPE_NONE, 0, 1, TYPE_3SHORT};
+static const int glColor4bv_signature[] = { TYPE_NONE, 0, 1, TYPE_4CHAR};
+static const int glColor4dv_signature[] = { TYPE_NONE, 0, 1, TYPE_4DOUBLE};
+static const int glColor4fv_signature[] = { TYPE_NONE, 0, 1, TYPE_4FLOAT};
+static const int glColor4iv_signature[] = { TYPE_NONE, 0, 1, TYPE_4INT};
+static const int glColor4sv_signature[] = { TYPE_NONE, 0, 1, TYPE_4SHORT};
+static const int glColor4ubv_signature[] = { TYPE_NONE, 0, 1, TYPE_4CHAR};
+static const int glColor4uiv_signature[] = { TYPE_NONE, 0, 1, TYPE_4INT};
+static const int glColor4usv_signature[] = { TYPE_NONE, 0, 1, TYPE_4SHORT};
+static const int glTexCoord1d_signature[] = { TYPE_NONE, 0, 1, TYPE_DOUBLE};
+static const int glTexCoord1f_signature[] = { TYPE_NONE, 0, 1, TYPE_FLOAT};
+static const int glTexCoord1i_signature[] = { TYPE_NONE, 0, 1, TYPE_INT};
+static const int glTexCoord1s_signature[] = { TYPE_NONE, 0, 1, TYPE_SHORT};
+static const int glTexCoord2d_signature[] = { TYPE_NONE, 0, 2, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glTexCoord2f_signature[] = { TYPE_NONE, 0, 2, TYPE_FLOAT, TYPE_FLOAT};
+static const int glTexCoord2i_signature[] = { TYPE_NONE, 0, 2, TYPE_INT, TYPE_INT};
+static const int glTexCoord2s_signature[] = { TYPE_NONE, 0, 2, TYPE_SHORT, TYPE_SHORT};
+static const int glTexCoord3d_signature[] = { TYPE_NONE, 0, 3, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glTexCoord3f_signature[] = { TYPE_NONE, 0, 3, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glTexCoord3i_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glTexCoord3s_signature[] = { TYPE_NONE, 0, 3, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glTexCoord4d_signature[] = { TYPE_NONE, 0, 4, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glTexCoord4f_signature[] = { TYPE_NONE, 0, 4, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glTexCoord4i_signature[] = { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glTexCoord4s_signature[] = { TYPE_NONE, 0, 4, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glTexCoord1dv_signature[] = { TYPE_NONE, 0, 1, TYPE_1DOUBLE};
+static const int glTexCoord1fv_signature[] = { TYPE_NONE, 0, 1, TYPE_1FLOAT};
+static const int glTexCoord1iv_signature[] = { TYPE_NONE, 0, 1, TYPE_1INT};
+static const int glTexCoord1sv_signature[] = { TYPE_NONE, 0, 1, TYPE_1SHORT};
+static const int glTexCoord2dv_signature[] = { TYPE_NONE, 0, 1, TYPE_2DOUBLE};
+static const int glTexCoord2fv_signature[] = { TYPE_NONE, 0, 1, TYPE_2FLOAT};
+static const int glTexCoord2iv_signature[] = { TYPE_NONE, 0, 1, TYPE_2INT};
+static const int glTexCoord2sv_signature[] = { TYPE_NONE, 0, 1, TYPE_2SHORT};
+static const int glTexCoord3dv_signature[] = { TYPE_NONE, 0, 1, TYPE_3DOUBLE};
+static const int glTexCoord3fv_signature[] = { TYPE_NONE, 0, 1, TYPE_3FLOAT};
+static const int glTexCoord3iv_signature[] = { TYPE_NONE, 0, 1, TYPE_3INT};
+static const int glTexCoord3sv_signature[] = { TYPE_NONE, 0, 1, TYPE_3SHORT};
+static const int glTexCoord4dv_signature[] = { TYPE_NONE, 0, 1, TYPE_4DOUBLE};
+static const int glTexCoord4fv_signature[] = { TYPE_NONE, 0, 1, TYPE_4FLOAT};
+static const int glTexCoord4iv_signature[] = { TYPE_NONE, 0, 1, TYPE_4INT};
+static const int glTexCoord4sv_signature[] = { TYPE_NONE, 0, 1, TYPE_4SHORT};
+static const int glRasterPos2d_signature[] = { TYPE_NONE, 0, 2, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glRasterPos2f_signature[] = { TYPE_NONE, 0, 2, TYPE_FLOAT, TYPE_FLOAT};
+static const int glRasterPos2i_signature[] = { TYPE_NONE, 0, 2, TYPE_INT, TYPE_INT};
+static const int glRasterPos2s_signature[] = { TYPE_NONE, 0, 2, TYPE_SHORT, TYPE_SHORT};
+static const int glRasterPos3d_signature[] = { TYPE_NONE, 0, 3, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glRasterPos3f_signature[] = { TYPE_NONE, 0, 3, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glRasterPos3i_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glRasterPos3s_signature[] = { TYPE_NONE, 0, 3, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glRasterPos4d_signature[] = { TYPE_NONE, 0, 4, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glRasterPos4f_signature[] = { TYPE_NONE, 0, 4, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glRasterPos4i_signature[] = { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glRasterPos4s_signature[] = { TYPE_NONE, 0, 4, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glRasterPos2dv_signature[] = { TYPE_NONE, 0, 1, TYPE_2DOUBLE};
+static const int glRasterPos2fv_signature[] = { TYPE_NONE, 0, 1, TYPE_2FLOAT};
+static const int glRasterPos2iv_signature[] = { TYPE_NONE, 0, 1, TYPE_2INT};
+static const int glRasterPos2sv_signature[] = { TYPE_NONE, 0, 1, TYPE_2SHORT};
+static const int glRasterPos3dv_signature[] = { TYPE_NONE, 0, 1, TYPE_3DOUBLE};
+static const int glRasterPos3fv_signature[] = { TYPE_NONE, 0, 1, TYPE_3FLOAT};
+static const int glRasterPos3iv_signature[] = { TYPE_NONE, 0, 1, TYPE_3INT};
+static const int glRasterPos3sv_signature[] = { TYPE_NONE, 0, 1, TYPE_3SHORT};
+static const int glRasterPos4dv_signature[] = { TYPE_NONE, 0, 1, TYPE_4DOUBLE};
+static const int glRasterPos4fv_signature[] = { TYPE_NONE, 0, 1, TYPE_4FLOAT};
+static const int glRasterPos4iv_signature[] = { TYPE_NONE, 0, 1, TYPE_4INT};
+static const int glRasterPos4sv_signature[] = { TYPE_NONE, 0, 1, TYPE_4SHORT};
+static const int glRectd_signature[] = { TYPE_NONE, 0, 4, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glRectf_signature[] = { TYPE_NONE, 0, 4, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glRecti_signature[] = { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glRects_signature[] = { TYPE_NONE, 0, 4, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glArrayElement_signature[] = { TYPE_NONE, 0, 1, TYPE_INT};
+static const int glShadeModel_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glLightf_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glLighti_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glLightModelf_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glLightModeli_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glMaterialf_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glMateriali_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glColorMaterial_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glPixelZoom_signature[] = { TYPE_NONE, 0, 2, TYPE_FLOAT, TYPE_FLOAT};
+static const int glPixelStoref_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glPixelStorei_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glPixelTransferf_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glPixelTransferi_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glCopyPixels_signature[] = { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_UNSIGNED_INT};
+static const int glStencilFunc_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_UNSIGNED_INT};
+static const int glStencilMask_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glStencilOp_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glClearStencil_signature[] = { TYPE_NONE, 0, 1, TYPE_INT};
+static const int glTexGend_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_DOUBLE};
+static const int glTexGenf_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glTexGeni_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glTexEnvf_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glTexEnvi_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glTexParameterf_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glTexParameteri_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glBindTexture_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glIsTexture_signature[] = { TYPE_UNSIGNED_CHAR, 0, 1, TYPE_UNSIGNED_INT};
+static const int glCopyTexImage1D_signature[] = { TYPE_NONE, 0, 7, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glCopyTexImage2D_signature[] = { TYPE_NONE, 0, 8, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glCopyTexSubImage1D_signature[] = { TYPE_NONE, 0, 6, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glCopyTexSubImage2D_signature[] = { TYPE_NONE, 0, 8, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glEvalCoord1d_signature[] = { TYPE_NONE, 0, 1, TYPE_DOUBLE};
+static const int glEvalCoord1f_signature[] = { TYPE_NONE, 0, 1, TYPE_FLOAT};
+static const int glEvalCoord1dv_signature[] = { TYPE_NONE, 0, 1, TYPE_1DOUBLE};
+static const int glEvalCoord1fv_signature[] = { TYPE_NONE, 0, 1, TYPE_1FLOAT};
+static const int glEvalCoord2d_signature[] = { TYPE_NONE, 0, 2, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glEvalCoord2f_signature[] = { TYPE_NONE, 0, 2, TYPE_FLOAT, TYPE_FLOAT};
+static const int glEvalCoord2dv_signature[] = { TYPE_NONE, 0, 1, TYPE_2DOUBLE};
+static const int glEvalCoord2fv_signature[] = { TYPE_NONE, 0, 1, TYPE_2FLOAT};
+static const int glMapGrid1d_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glMapGrid1f_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glMapGrid2d_signature[] = { TYPE_NONE, 0, 6, TYPE_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_INT, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glMapGrid2f_signature[] = { TYPE_NONE, 0, 6, TYPE_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_INT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glEvalPoint1_signature[] = { TYPE_NONE, 0, 1, TYPE_INT};
+static const int glEvalPoint2_signature[] = { TYPE_NONE, 0, 2, TYPE_INT, TYPE_INT};
+static const int glEvalMesh1_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT};
+static const int glEvalMesh2_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glFogf_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glFogi_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glPassThrough_signature[] = { TYPE_NONE, 0, 1, TYPE_FLOAT};
+static const int glInitNames_signature[] = { TYPE_NONE, 0, 0};
+static const int glLoadName_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glPushName_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glPopName_signature[] = { TYPE_NONE, 0, 0};
+static const int glCopyTexSubImage3D_signature[] = { TYPE_NONE, 0, 9, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glCopyColorSubTable_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glCopyColorTable_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glBlendEquation_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glBlendColor_signature[] = { TYPE_NONE, 0, 4, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glHistogram_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_CHAR};
+static const int glResetHistogram_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glMinmax_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_CHAR};
+static const int glResetMinmax_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glConvolutionParameterf_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glConvolutionParameteri_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glCopyConvolutionFilter1D_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glCopyConvolutionFilter2D_signature[] = { TYPE_NONE, 0, 6, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glActiveTexture_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glClientActiveTexture_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glMultiTexCoord1d_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_DOUBLE};
+static const int glMultiTexCoord1dv_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1DOUBLE};
+static const int glMultiTexCoord1f_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glMultiTexCoord1fv_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1FLOAT};
+static const int glMultiTexCoord1i_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glMultiTexCoord1iv_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1INT};
+static const int glMultiTexCoord1s_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_SHORT};
+static const int glMultiTexCoord1sv_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1SHORT};
+static const int glMultiTexCoord2d_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glMultiTexCoord2dv_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2DOUBLE};
+static const int glMultiTexCoord2f_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glMultiTexCoord2fv_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2FLOAT};
+static const int glMultiTexCoord2i_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT};
+static const int glMultiTexCoord2iv_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2INT};
+static const int glMultiTexCoord2s_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_SHORT, TYPE_SHORT};
+static const int glMultiTexCoord2sv_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2SHORT};
+static const int glMultiTexCoord3d_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glMultiTexCoord3dv_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3DOUBLE};
+static const int glMultiTexCoord3f_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glMultiTexCoord3fv_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3FLOAT};
+static const int glMultiTexCoord3i_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glMultiTexCoord3iv_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3INT};
+static const int glMultiTexCoord3s_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glMultiTexCoord3sv_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3SHORT};
+static const int glMultiTexCoord4d_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glMultiTexCoord4dv_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4DOUBLE};
+static const int glMultiTexCoord4f_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glMultiTexCoord4fv_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4FLOAT};
+static const int glMultiTexCoord4i_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glMultiTexCoord4iv_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4INT};
+static const int glMultiTexCoord4s_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glMultiTexCoord4sv_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4SHORT};
+static const int glLoadTransposeMatrixd_signature[] = { TYPE_NONE, 0, 1, TYPE_16DOUBLE};
+static const int glLoadTransposeMatrixf_signature[] = { TYPE_NONE, 0, 1, TYPE_16FLOAT};
+static const int glMultTransposeMatrixd_signature[] = { TYPE_NONE, 0, 1, TYPE_16DOUBLE};
+static const int glMultTransposeMatrixf_signature[] = { TYPE_NONE, 0, 1, TYPE_16FLOAT};
+static const int glSampleCoverage_signature[] = { TYPE_NONE, 0, 2, TYPE_FLOAT, TYPE_UNSIGNED_CHAR};
+static const int glActiveTextureARB_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glClientActiveTextureARB_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glMultiTexCoord1dARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_DOUBLE};
+static const int glMultiTexCoord1dvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1DOUBLE};
+static const int glMultiTexCoord1fARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glMultiTexCoord1fvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1FLOAT};
+static const int glMultiTexCoord1iARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glMultiTexCoord1ivARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1INT};
+static const int glMultiTexCoord1sARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_SHORT};
+static const int glMultiTexCoord1svARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1SHORT};
+static const int glMultiTexCoord2dARB_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glMultiTexCoord2dvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2DOUBLE};
+static const int glMultiTexCoord2fARB_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glMultiTexCoord2fvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2FLOAT};
+static const int glMultiTexCoord2iARB_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT};
+static const int glMultiTexCoord2ivARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2INT};
+static const int glMultiTexCoord2sARB_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_SHORT, TYPE_SHORT};
+static const int glMultiTexCoord2svARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2SHORT};
+static const int glMultiTexCoord3dARB_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glMultiTexCoord3dvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3DOUBLE};
+static const int glMultiTexCoord3fARB_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glMultiTexCoord3fvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3FLOAT};
+static const int glMultiTexCoord3iARB_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glMultiTexCoord3ivARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3INT};
+static const int glMultiTexCoord3sARB_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glMultiTexCoord3svARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3SHORT};
+static const int glMultiTexCoord4dARB_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glMultiTexCoord4dvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4DOUBLE};
+static const int glMultiTexCoord4fARB_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glMultiTexCoord4fvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4FLOAT};
+static const int glMultiTexCoord4iARB_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glMultiTexCoord4ivARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4INT};
+static const int glMultiTexCoord4sARB_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glMultiTexCoord4svARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4SHORT};
+static const int glLoadTransposeMatrixfARB_signature[] = { TYPE_NONE, 0, 1, TYPE_16FLOAT};
+static const int glLoadTransposeMatrixdARB_signature[] = { TYPE_NONE, 0, 1, TYPE_16DOUBLE};
+static const int glMultTransposeMatrixfARB_signature[] = { TYPE_NONE, 0, 1, TYPE_16FLOAT};
+static const int glMultTransposeMatrixdARB_signature[] = { TYPE_NONE, 0, 1, TYPE_16DOUBLE};
+static const int glSampleCoverageARB_signature[] = { TYPE_NONE, 0, 2, TYPE_FLOAT, TYPE_UNSIGNED_CHAR};
+static const int glPointParameterfARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glVertexBlendARB_signature[] = { TYPE_NONE, 0, 1, TYPE_INT};
+static const int glCurrentPaletteMatrixARB_signature[] = { TYPE_NONE, 0, 1, TYPE_INT};
+static const int glWindowPos2dARB_signature[] = { TYPE_NONE, 0, 2, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glWindowPos2dvARB_signature[] = { TYPE_NONE, 0, 1, TYPE_2DOUBLE};
+static const int glWindowPos2fARB_signature[] = { TYPE_NONE, 0, 2, TYPE_FLOAT, TYPE_FLOAT};
+static const int glWindowPos2fvARB_signature[] = { TYPE_NONE, 0, 1, TYPE_2FLOAT};
+static const int glWindowPos2iARB_signature[] = { TYPE_NONE, 0, 2, TYPE_INT, TYPE_INT};
+static const int glWindowPos2ivARB_signature[] = { TYPE_NONE, 0, 1, TYPE_2INT};
+static const int glWindowPos2sARB_signature[] = { TYPE_NONE, 0, 2, TYPE_SHORT, TYPE_SHORT};
+static const int glWindowPos2svARB_signature[] = { TYPE_NONE, 0, 1, TYPE_2SHORT};
+static const int glWindowPos3dARB_signature[] = { TYPE_NONE, 0, 3, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glWindowPos3dvARB_signature[] = { TYPE_NONE, 0, 1, TYPE_3DOUBLE};
+static const int glWindowPos3fARB_signature[] = { TYPE_NONE, 0, 3, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glWindowPos3fvARB_signature[] = { TYPE_NONE, 0, 1, TYPE_3FLOAT};
+static const int glWindowPos3iARB_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glWindowPos3ivARB_signature[] = { TYPE_NONE, 0, 1, TYPE_3INT};
+static const int glWindowPos3sARB_signature[] = { TYPE_NONE, 0, 3, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glWindowPos3svARB_signature[] = { TYPE_NONE, 0, 1, TYPE_3SHORT};
+static const int glVertexAttrib1dARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_DOUBLE};
+static const int glVertexAttrib1dvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1DOUBLE};
+static const int glVertexAttrib1fARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glVertexAttrib1fvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1FLOAT};
+static const int glVertexAttrib1sARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_SHORT};
+static const int glVertexAttrib1svARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1SHORT};
+static const int glVertexAttrib2dARB_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glVertexAttrib2dvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2DOUBLE};
+static const int glVertexAttrib2fARB_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glVertexAttrib2fvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2FLOAT};
+static const int glVertexAttrib2sARB_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_SHORT, TYPE_SHORT};
+static const int glVertexAttrib2svARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2SHORT};
+static const int glVertexAttrib3dARB_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glVertexAttrib3dvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3DOUBLE};
+static const int glVertexAttrib3fARB_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glVertexAttrib3fvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3FLOAT};
+static const int glVertexAttrib3sARB_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glVertexAttrib3svARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3SHORT};
+static const int glVertexAttrib4NbvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4CHAR};
+static const int glVertexAttrib4NivARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4INT};
+static const int glVertexAttrib4NsvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4SHORT};
+static const int glVertexAttrib4NubARB_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR};
+static const int glVertexAttrib4NubvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4CHAR};
+static const int glVertexAttrib4NuivARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4INT};
+static const int glVertexAttrib4NusvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4SHORT};
+static const int glVertexAttrib4bvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4CHAR};
+static const int glVertexAttrib4dARB_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glVertexAttrib4dvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4DOUBLE};
+static const int glVertexAttrib4fARB_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glVertexAttrib4fvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4FLOAT};
+static const int glVertexAttrib4ivARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4INT};
+static const int glVertexAttrib4sARB_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glVertexAttrib4svARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4SHORT};
+static const int glVertexAttrib4ubvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4CHAR};
+static const int glVertexAttrib4uivARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4INT};
+static const int glVertexAttrib4usvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4SHORT};
+static const int glEnableVertexAttribArrayARB_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glDisableVertexAttribArrayARB_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glBindProgramARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glProgramEnvParameter4dARB_signature[] = { TYPE_NONE, 0, 6, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glProgramEnvParameter4dvARB_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_4DOUBLE};
+static const int glProgramEnvParameter4fARB_signature[] = { TYPE_NONE, 0, 6, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glProgramEnvParameter4fvARB_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_4FLOAT};
+static const int glProgramLocalParameter4dARB_signature[] = { TYPE_NONE, 0, 6, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glProgramLocalParameter4dvARB_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_4DOUBLE};
+static const int glProgramLocalParameter4fARB_signature[] = { TYPE_NONE, 0, 6, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glProgramLocalParameter4fvARB_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_4FLOAT};
+static const int glIsProgramARB_signature[] = { TYPE_UNSIGNED_CHAR, 0, 1, TYPE_UNSIGNED_INT};
+static const int glBindBufferARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glIsBufferARB_signature[] = { TYPE_UNSIGNED_CHAR, 0, 1, TYPE_UNSIGNED_INT};
+static const int glUnmapBufferARB_signature[] = { TYPE_UNSIGNED_CHAR, 0, 1, TYPE_UNSIGNED_INT};
+static const int glIsQueryARB_signature[] = { TYPE_UNSIGNED_CHAR, 0, 1, TYPE_UNSIGNED_INT};
+static const int glBeginQueryARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glEndQueryARB_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glDeleteObjectARB_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glGetHandleARB_signature[] = { TYPE_UNSIGNED_INT, 0, 1, TYPE_UNSIGNED_INT};
+static const int glDetachObjectARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glCreateShaderObjectARB_signature[] = { TYPE_UNSIGNED_INT, 0, 1, TYPE_UNSIGNED_INT};
+static const int glCompileShaderARB_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glCreateProgramObjectARB_signature[] = { TYPE_UNSIGNED_INT, 0, 0};
+static const int glAttachObjectARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glLinkProgramARB_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glUseProgramObjectARB_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glValidateProgramARB_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glUniform1fARB_signature[] = { TYPE_NONE, 0, 2, TYPE_INT, TYPE_FLOAT};
+static const int glUniform2fARB_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glUniform3fARB_signature[] = { TYPE_NONE, 0, 4, TYPE_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glUniform4fARB_signature[] = { TYPE_NONE, 0, 5, TYPE_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glUniform1iARB_signature[] = { TYPE_NONE, 0, 2, TYPE_INT, TYPE_INT};
+static const int glUniform2iARB_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glUniform3iARB_signature[] = { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glUniform4iARB_signature[] = { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glUniform1fvARB_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_1FLOAT};
+static const int glUniform2fvARB_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_2FLOAT};
+static const int glUniform3fvARB_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_3FLOAT};
+static const int glUniform4fvARB_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_4FLOAT};
+static const int glUniform1ivARB_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_1INT};
+static const int glUniform2ivARB_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_2INT};
+static const int glUniform3ivARB_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_3INT};
+static const int glUniform4ivARB_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_4INT};
+static const int glUniformMatrix2fvARB_signature[] = { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_UNSIGNED_CHAR, TYPE_2FLOAT};
+static const int glUniformMatrix3fvARB_signature[] = { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_UNSIGNED_CHAR, TYPE_3FLOAT};
+static const int glUniformMatrix4fvARB_signature[] = { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_UNSIGNED_CHAR, TYPE_4FLOAT};
+static const int glClampColorARB_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glBlendColorEXT_signature[] = { TYPE_NONE, 0, 4, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glPolygonOffsetEXT_signature[] = { TYPE_NONE, 0, 2, TYPE_FLOAT, TYPE_FLOAT};
+static const int glCopyTexImage1DEXT_signature[] = { TYPE_NONE, 0, 7, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glCopyTexImage2DEXT_signature[] = { TYPE_NONE, 0, 8, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glCopyTexSubImage1DEXT_signature[] = { TYPE_NONE, 0, 6, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glCopyTexSubImage2DEXT_signature[] = { TYPE_NONE, 0, 8, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glCopyTexSubImage3DEXT_signature[] = { TYPE_NONE, 0, 9, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glHistogramEXT_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_CHAR};
+static const int glMinmaxEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_CHAR};
+static const int glResetHistogramEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glResetMinmaxEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glConvolutionParameterfEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glConvolutionParameteriEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glCopyConvolutionFilter1DEXT_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glCopyConvolutionFilter2DEXT_signature[] = { TYPE_NONE, 0, 6, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glCopyColorTableSGI_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glPixelTexGenSGIX_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glPixelTexGenParameteriSGIS_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glPixelTexGenParameterfSGIS_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glBindTextureEXT_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glIsTextureEXT_signature[] = { TYPE_UNSIGNED_CHAR, 0, 1, TYPE_UNSIGNED_INT};
+static const int glSampleMaskSGIS_signature[] = { TYPE_NONE, 0, 2, TYPE_FLOAT, TYPE_UNSIGNED_CHAR};
+static const int glSamplePatternSGIS_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glArrayElementEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_INT};
+static const int glBlendEquationEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glSpriteParameterfSGIX_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glSpriteParameteriSGIX_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glPointParameterfEXT_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glPointParameterfSGIS_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glGetInstrumentsSGIX_signature[] = { TYPE_INT, 0, 0};
+static const int glReadInstrumentsSGIX_signature[] = { TYPE_NONE, 0, 1, TYPE_INT};
+static const int glStartInstrumentsSGIX_signature[] = { TYPE_NONE, 0, 0};
+static const int glStopInstrumentsSGIX_signature[] = { TYPE_NONE, 0, 1, TYPE_INT};
+static const int glFrameZoomSGIX_signature[] = { TYPE_NONE, 0, 1, TYPE_INT};
+static const int glTagSampleBufferSGIX_signature[] = { TYPE_NONE, 0, 0};
+static const int glDeformSGIX_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glLoadIdentityDeformationMapSGIX_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glFlushRasterSGIX_signature[] = { TYPE_NONE, 0, 0};
+static const int glCopyColorSubTableEXT_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glListParameterfSGIX_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glListParameteriSGIX_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glIndexMaterialEXT_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glIndexFuncEXT_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glLockArraysEXT_signature[] = { TYPE_NONE, 0, 2, TYPE_INT, TYPE_INT};
+static const int glUnlockArraysEXT_signature[] = { TYPE_NONE, 0, 0};
+static const int glFragmentColorMaterialSGIX_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glFragmentLightfSGIX_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glFragmentLightiSGIX_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glFragmentLightModelfSGIX_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glFragmentLightModeliSGIX_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glFragmentMaterialfSGIX_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glFragmentMaterialiSGIX_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glLightEnviSGIX_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glApplyTextureEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glTextureLightEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glTextureMaterialEXT_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glAsyncMarkerSGIX_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glGenAsyncMarkersSGIX_signature[] = { TYPE_UNSIGNED_INT, 0, 1, TYPE_INT};
+static const int glDeleteAsyncMarkersSGIX_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glIsAsyncMarkerSGIX_signature[] = { TYPE_UNSIGNED_CHAR, 0, 1, TYPE_UNSIGNED_INT};
+static const int glPixelTransformParameteriEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glPixelTransformParameterfEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glSecondaryColor3bEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_CHAR, TYPE_CHAR, TYPE_CHAR};
+static const int glSecondaryColor3bvEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3CHAR};
+static const int glSecondaryColor3dEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glSecondaryColor3dvEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3DOUBLE};
+static const int glSecondaryColor3fEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glSecondaryColor3fvEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3FLOAT};
+static const int glSecondaryColor3iEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glSecondaryColor3ivEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3INT};
+static const int glSecondaryColor3sEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glSecondaryColor3svEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3SHORT};
+static const int glSecondaryColor3ubEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR};
+static const int glSecondaryColor3ubvEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3CHAR};
+static const int glSecondaryColor3uiEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glSecondaryColor3uivEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3INT};
+static const int glSecondaryColor3usEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glSecondaryColor3usvEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3SHORT};
+static const int glTextureNormalEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glFogCoordfEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_FLOAT};
+static const int glFogCoorddEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_DOUBLE};
+static const int glTangent3bEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_CHAR, TYPE_CHAR, TYPE_CHAR};
+static const int glTangent3bvEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3CHAR};
+static const int glTangent3dEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glTangent3dvEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3DOUBLE};
+static const int glTangent3fEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glTangent3fvEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3FLOAT};
+static const int glTangent3iEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glTangent3ivEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3INT};
+static const int glTangent3sEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glTangent3svEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3SHORT};
+static const int glBinormal3bEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_CHAR, TYPE_CHAR, TYPE_CHAR};
+static const int glBinormal3bvEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3CHAR};
+static const int glBinormal3dEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glBinormal3dvEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3DOUBLE};
+static const int glBinormal3fEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glBinormal3fvEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3FLOAT};
+static const int glBinormal3iEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glBinormal3ivEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3INT};
+static const int glBinormal3sEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glBinormal3svEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_3SHORT};
+static const int glBlendFuncSeparateEXT_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glVertexWeightfEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_FLOAT};
+static const int glFlushVertexArrayRangeNV_signature[] = { TYPE_NONE, 0, 0};
+static const int glCombinerParameterfNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glCombinerParameteriNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glCombinerInputNV_signature[] = { TYPE_NONE, 0, 6, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glCombinerOutputNV_signature[] = { TYPE_NONE, 0, 10, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR};
+static const int glFinalCombinerInputNV_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glResizeBuffersMESA_signature[] = { TYPE_NONE, 0, 0};
+static const int glWindowPos2dMESA_signature[] = { TYPE_NONE, 0, 2, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glWindowPos2dvMESA_signature[] = { TYPE_NONE, 0, 1, TYPE_2DOUBLE};
+static const int glWindowPos2fMESA_signature[] = { TYPE_NONE, 0, 2, TYPE_FLOAT, TYPE_FLOAT};
+static const int glWindowPos2fvMESA_signature[] = { TYPE_NONE, 0, 1, TYPE_2FLOAT};
+static const int glWindowPos2iMESA_signature[] = { TYPE_NONE, 0, 2, TYPE_INT, TYPE_INT};
+static const int glWindowPos2ivMESA_signature[] = { TYPE_NONE, 0, 1, TYPE_2INT};
+static const int glWindowPos2sMESA_signature[] = { TYPE_NONE, 0, 2, TYPE_SHORT, TYPE_SHORT};
+static const int glWindowPos2svMESA_signature[] = { TYPE_NONE, 0, 1, TYPE_2SHORT};
+static const int glWindowPos3dMESA_signature[] = { TYPE_NONE, 0, 3, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glWindowPos3dvMESA_signature[] = { TYPE_NONE, 0, 1, TYPE_3DOUBLE};
+static const int glWindowPos3fMESA_signature[] = { TYPE_NONE, 0, 3, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glWindowPos3fvMESA_signature[] = { TYPE_NONE, 0, 1, TYPE_3FLOAT};
+static const int glWindowPos3iMESA_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glWindowPos3ivMESA_signature[] = { TYPE_NONE, 0, 1, TYPE_3INT};
+static const int glWindowPos3sMESA_signature[] = { TYPE_NONE, 0, 3, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glWindowPos3svMESA_signature[] = { TYPE_NONE, 0, 1, TYPE_3SHORT};
+static const int glWindowPos4dMESA_signature[] = { TYPE_NONE, 0, 4, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glWindowPos4dvMESA_signature[] = { TYPE_NONE, 0, 1, TYPE_4DOUBLE};
+static const int glWindowPos4fMESA_signature[] = { TYPE_NONE, 0, 4, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glWindowPos4fvMESA_signature[] = { TYPE_NONE, 0, 1, TYPE_4FLOAT};
+static const int glWindowPos4iMESA_signature[] = { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glWindowPos4ivMESA_signature[] = { TYPE_NONE, 0, 1, TYPE_4INT};
+static const int glWindowPos4sMESA_signature[] = { TYPE_NONE, 0, 4, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glWindowPos4svMESA_signature[] = { TYPE_NONE, 0, 1, TYPE_4SHORT};
+static const int glSampleMaskEXT_signature[] = { TYPE_NONE, 0, 2, TYPE_FLOAT, TYPE_UNSIGNED_CHAR};
+static const int glSamplePatternEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glTextureColorMaskSGIS_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR};
+static const int glIsFenceNV_signature[] = { TYPE_UNSIGNED_CHAR, 0, 1, TYPE_UNSIGNED_INT};
+static const int glTestFenceNV_signature[] = { TYPE_UNSIGNED_CHAR, 0, 1, TYPE_UNSIGNED_INT};
+static const int glFinishFenceNV_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glSetFenceNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glEvalMapsNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glBindProgramNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glIsProgramNV_signature[] = { TYPE_UNSIGNED_CHAR, 0, 1, TYPE_UNSIGNED_INT};
+static const int glProgramParameter4dNV_signature[] = { TYPE_NONE, 0, 6, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glProgramParameter4dvNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_4DOUBLE};
+static const int glProgramParameter4fNV_signature[] = { TYPE_NONE, 0, 6, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glProgramParameter4fvNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_4FLOAT};
+static const int glProgramParameters4dvNV_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_4DOUBLE};
+static const int glProgramParameters4fvNV_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_4FLOAT};
+static const int glTrackMatrixNV_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glVertexAttrib1dNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_DOUBLE};
+static const int glVertexAttrib1dvNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1DOUBLE};
+static const int glVertexAttrib1fNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glVertexAttrib1fvNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1FLOAT};
+static const int glVertexAttrib1sNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_SHORT};
+static const int glVertexAttrib1svNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1SHORT};
+static const int glVertexAttrib2dNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glVertexAttrib2dvNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2DOUBLE};
+static const int glVertexAttrib2fNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glVertexAttrib2fvNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2FLOAT};
+static const int glVertexAttrib2sNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_SHORT, TYPE_SHORT};
+static const int glVertexAttrib2svNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2SHORT};
+static const int glVertexAttrib3dNV_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glVertexAttrib3dvNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3DOUBLE};
+static const int glVertexAttrib3fNV_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glVertexAttrib3fvNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3FLOAT};
+static const int glVertexAttrib3sNV_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glVertexAttrib3svNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3SHORT};
+static const int glVertexAttrib4dNV_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glVertexAttrib4dvNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4DOUBLE};
+static const int glVertexAttrib4fNV_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glVertexAttrib4fvNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4FLOAT};
+static const int glVertexAttrib4sNV_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glVertexAttrib4svNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4SHORT};
+static const int glVertexAttrib4ubNV_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR, TYPE_UNSIGNED_CHAR};
+static const int glVertexAttrib4ubvNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4CHAR};
+static const int glVertexAttribs1dvNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_1DOUBLE};
+static const int glVertexAttribs1fvNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_1FLOAT};
+static const int glVertexAttribs1svNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_1SHORT};
+static const int glVertexAttribs2dvNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_2DOUBLE};
+static const int glVertexAttribs2fvNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_2FLOAT};
+static const int glVertexAttribs2svNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_2SHORT};
+static const int glVertexAttribs3dvNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_3DOUBLE};
+static const int glVertexAttribs3fvNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_3FLOAT};
+static const int glVertexAttribs3svNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_3SHORT};
+static const int glVertexAttribs4dvNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_4DOUBLE};
+static const int glVertexAttribs4fvNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_4FLOAT};
+static const int glVertexAttribs4svNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_4SHORT};
+static const int glVertexAttribs4ubvNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_4CHAR};
+static const int glGenFragmentShadersATI_signature[] = { TYPE_UNSIGNED_INT, 0, 1, TYPE_UNSIGNED_INT};
+static const int glBindFragmentShaderATI_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glDeleteFragmentShaderATI_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glBeginFragmentShaderATI_signature[] = { TYPE_NONE, 0, 0};
+static const int glEndFragmentShaderATI_signature[] = { TYPE_NONE, 0, 0};
+static const int glPassTexCoordATI_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glSampleMapATI_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glColorFragmentOp1ATI_signature[] = { TYPE_NONE, 0, 7, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glColorFragmentOp2ATI_signature[] = { TYPE_NONE, 0, 10, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glColorFragmentOp3ATI_signature[] = { TYPE_NONE, 0, 13, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glAlphaFragmentOp1ATI_signature[] = { TYPE_NONE, 0, 6, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glAlphaFragmentOp2ATI_signature[] = { TYPE_NONE, 0, 9, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glAlphaFragmentOp3ATI_signature[] = { TYPE_NONE, 0, 12, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glPNTrianglesiATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glPNTrianglesfATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glIsObjectBufferATI_signature[] = { TYPE_UNSIGNED_CHAR, 0, 1, TYPE_UNSIGNED_INT};
+static const int glFreeObjectBufferATI_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glArrayObjectATI_signature[] = { TYPE_NONE, 0, 6, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glVariantArrayObjectATI_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glBeginVertexShaderEXT_signature[] = { TYPE_NONE, 0, 0};
+static const int glEndVertexShaderEXT_signature[] = { TYPE_NONE, 0, 0};
+static const int glBindVertexShaderEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glGenVertexShadersEXT_signature[] = { TYPE_UNSIGNED_INT, 0, 1, TYPE_UNSIGNED_INT};
+static const int glDeleteVertexShaderEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glShaderOp1EXT_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glShaderOp2EXT_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glShaderOp3EXT_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glSwizzleEXT_signature[] = { TYPE_NONE, 0, 6, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glWriteMaskEXT_signature[] = { TYPE_NONE, 0, 6, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glInsertComponentEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glExtractComponentEXT_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glGenSymbolsEXT_signature[] = { TYPE_UNSIGNED_INT, 0, 4, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glEnableVariantClientStateEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glDisableVariantClientStateEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glBindLightParameterEXT_signature[] = { TYPE_UNSIGNED_INT, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glBindMaterialParameterEXT_signature[] = { TYPE_UNSIGNED_INT, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glBindTexGenParameterEXT_signature[] = { TYPE_UNSIGNED_INT, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glBindTextureUnitParameterEXT_signature[] = { TYPE_UNSIGNED_INT, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glBindParameterEXT_signature[] = { TYPE_UNSIGNED_INT, 0, 1, TYPE_UNSIGNED_INT};
+static const int glIsVariantEnabledEXT_signature[] = { TYPE_UNSIGNED_CHAR, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glVertexStream1sATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_SHORT};
+static const int glVertexStream1svATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1SHORT};
+static const int glVertexStream1iATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glVertexStream1ivATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1INT};
+static const int glVertexStream1fATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glVertexStream1fvATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1FLOAT};
+static const int glVertexStream1dATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_DOUBLE};
+static const int glVertexStream1dvATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_1DOUBLE};
+static const int glVertexStream2sATI_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_SHORT, TYPE_SHORT};
+static const int glVertexStream2svATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2SHORT};
+static const int glVertexStream2iATI_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT};
+static const int glVertexStream2ivATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2INT};
+static const int glVertexStream2fATI_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glVertexStream2fvATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2FLOAT};
+static const int glVertexStream2dATI_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glVertexStream2dvATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_2DOUBLE};
+static const int glVertexStream3sATI_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glVertexStream3svATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3SHORT};
+static const int glVertexStream3iATI_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glVertexStream3ivATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3INT};
+static const int glVertexStream3fATI_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glVertexStream3fvATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3FLOAT};
+static const int glVertexStream3dATI_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glVertexStream3dvATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3DOUBLE};
+static const int glVertexStream4sATI_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glVertexStream4svATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4SHORT};
+static const int glVertexStream4iATI_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glVertexStream4ivATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4INT};
+static const int glVertexStream4fATI_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glVertexStream4fvATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4FLOAT};
+static const int glVertexStream4dATI_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glVertexStream4dvATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_4DOUBLE};
+static const int glNormalStream3bATI_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_CHAR, TYPE_CHAR, TYPE_CHAR};
+static const int glNormalStream3bvATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3CHAR};
+static const int glNormalStream3sATI_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_SHORT, TYPE_SHORT, TYPE_SHORT};
+static const int glNormalStream3svATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3SHORT};
+static const int glNormalStream3iATI_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+static const int glNormalStream3ivATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3INT};
+static const int glNormalStream3fATI_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT};
+static const int glNormalStream3fvATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3FLOAT};
+static const int glNormalStream3dATI_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glNormalStream3dvATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_3DOUBLE};
+static const int glClientActiveVertexStreamATI_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glVertexBlendEnviATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glVertexBlendEnvfATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_FLOAT};
+static const int glDrawElementArrayATI_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glDrawRangeElementArrayATI_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glIsOcclusionQueryNV_signature[] = { TYPE_UNSIGNED_CHAR, 0, 1, TYPE_UNSIGNED_INT};
+static const int glBeginOcclusionQueryNV_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glEndOcclusionQueryNV_signature[] = { TYPE_NONE, 0, 0};
+static const int glPointParameteriNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glActiveStencilFaceEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glVertex2hNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glVertex3hNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glVertex4hNV_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glNormal3hNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glColor3hNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glColor4hNV_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glTexCoord1hNV_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_SHORT};
+static const int glTexCoord2hNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glTexCoord3hNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glTexCoord4hNV_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glMultiTexCoord1hNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_SHORT};
+static const int glMultiTexCoord2hNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glMultiTexCoord3hNV_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glMultiTexCoord4hNV_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glFogCoordhNV_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_SHORT};
+static const int glSecondaryColor3hNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glVertexWeighthNV_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_SHORT};
+static const int glVertexAttrib1hNV_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_SHORT};
+static const int glVertexAttrib2hNV_signature[] = { TYPE_NONE, 0, 3, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glVertexAttrib3hNV_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glVertexAttrib4hNV_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT, TYPE_UNSIGNED_SHORT};
+static const int glFlushPixelDataRangeNV_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glPrimitiveRestartNV_signature[] = { TYPE_NONE, 0, 0};
+static const int glPrimitiveRestartIndexNV_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glUnmapObjectBufferATI_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+static const int glStencilOpSeparateATI_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glStencilFuncSeparateATI_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_UNSIGNED_INT};
+static const int glVertexAttribArrayObjectATI_signature[] = { TYPE_NONE, 0, 7, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_CHAR, TYPE_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glDepthBoundsEXT_signature[] = { TYPE_NONE, 0, 2, TYPE_DOUBLE, TYPE_DOUBLE};
+static const int glBlendEquationSeparateEXT_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glIsRenderbufferEXT_signature[] = { TYPE_UNSIGNED_CHAR, 0, 1, TYPE_UNSIGNED_INT};
+static const int glBindRenderbufferEXT_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glRenderbufferStorageEXT_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT};
+static const int glIsFramebufferEXT_signature[] = { TYPE_UNSIGNED_CHAR, 0, 1, TYPE_UNSIGNED_INT};
+static const int glBindFramebufferEXT_signature[] = { TYPE_NONE, 0, 2, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glCheckFramebufferStatusEXT_signature[] = { TYPE_UNSIGNED_INT, 0, 1, TYPE_UNSIGNED_INT};
+static const int glFramebufferTexture1DEXT_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glFramebufferTexture2DEXT_signature[] = { TYPE_NONE, 0, 5, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT};
+static const int glFramebufferTexture3DEXT_signature[] = { TYPE_NONE, 0, 6, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_INT, TYPE_INT};
+static const int glFramebufferRenderbufferEXT_signature[] = { TYPE_NONE, 0, 4, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT, TYPE_UNSIGNED_INT};
+static const int glGenerateMipmapEXT_signature[] = { TYPE_NONE, 0, 1, TYPE_UNSIGNED_INT};
+#undef MAGIC_MACRO
+#define MAGIC_MACRO(x)  COMPOSE(x,_signature)
+static const int* tab_opengl_calls[GL_N_CALLS] =
+{
+#include "gl_func_perso.h"
+  glClearIndex_signature,
+  glClearColor_signature,
+  glClear_signature,
+  glIndexMask_signature,
+  glColorMask_signature,
+  glAlphaFunc_signature,
+  glBlendFunc_signature,
+  glLogicOp_signature,
+  glCullFace_signature,
+  glFrontFace_signature,
+  glPointSize_signature,
+  glLineWidth_signature,
+  glLineStipple_signature,
+  glPolygonMode_signature,
+  glPolygonOffset_signature,
+  glEdgeFlag_signature,
+  glScissor_signature,
+  glDrawBuffer_signature,
+  glReadBuffer_signature,
+  glEnable_signature,
+  glDisable_signature,
+  glIsEnabled_signature,
+  glEnableClientState_signature,
+  glDisableClientState_signature,
+  glPushAttrib_signature,
+  glPopAttrib_signature,
+  glPushClientAttrib_signature,
+  glPopClientAttrib_signature,
+  glRenderMode_signature,
+  glGetError_signature,
+  glFinish_signature,
+  glFlush_signature,
+  glHint_signature,
+  glClearDepth_signature,
+  glDepthFunc_signature,
+  glDepthMask_signature,
+  glDepthRange_signature,
+  glClearAccum_signature,
+  glAccum_signature,
+  glMatrixMode_signature,
+  glOrtho_signature,
+  glFrustum_signature,
+  glViewport_signature,
+  glPushMatrix_signature,
+  glPopMatrix_signature,
+  glLoadIdentity_signature,
+  glLoadMatrixd_signature,
+  glLoadMatrixf_signature,
+  glMultMatrixd_signature,
+  glMultMatrixf_signature,
+  glRotated_signature,
+  glRotatef_signature,
+  glScaled_signature,
+  glScalef_signature,
+  glTranslated_signature,
+  glTranslatef_signature,
+  glIsList_signature,
+  glDeleteLists_signature,
+  glGenLists_signature,
+  glNewList_signature,
+  glEndList_signature,
+  glCallList_signature,
+  glListBase_signature,
+  glBegin_signature,
+  glEnd_signature,
+  glVertex2d_signature,
+  glVertex2f_signature,
+  glVertex2i_signature,
+  glVertex2s_signature,
+  glVertex3d_signature,
+  glVertex3f_signature,
+  glVertex3i_signature,
+  glVertex3s_signature,
+  glVertex4d_signature,
+  glVertex4f_signature,
+  glVertex4i_signature,
+  glVertex4s_signature,
+  glVertex2dv_signature,
+  glVertex2fv_signature,
+  glVertex2iv_signature,
+  glVertex2sv_signature,
+  glVertex3dv_signature,
+  glVertex3fv_signature,
+  glVertex3iv_signature,
+  glVertex3sv_signature,
+  glVertex4dv_signature,
+  glVertex4fv_signature,
+  glVertex4iv_signature,
+  glVertex4sv_signature,
+  glNormal3b_signature,
+  glNormal3d_signature,
+  glNormal3f_signature,
+  glNormal3i_signature,
+  glNormal3s_signature,
+  glNormal3bv_signature,
+  glNormal3dv_signature,
+  glNormal3fv_signature,
+  glNormal3iv_signature,
+  glNormal3sv_signature,
+  glIndexd_signature,
+  glIndexf_signature,
+  glIndexi_signature,
+  glIndexs_signature,
+  glIndexub_signature,
+  glColor3b_signature,
+  glColor3d_signature,
+  glColor3f_signature,
+  glColor3i_signature,
+  glColor3s_signature,
+  glColor3ub_signature,
+  glColor3ui_signature,
+  glColor3us_signature,
+  glColor4b_signature,
+  glColor4d_signature,
+  glColor4f_signature,
+  glColor4i_signature,
+  glColor4s_signature,
+  glColor4ub_signature,
+  glColor4ui_signature,
+  glColor4us_signature,
+  glColor3bv_signature,
+  glColor3dv_signature,
+  glColor3fv_signature,
+  glColor3iv_signature,
+  glColor3sv_signature,
+  glColor3ubv_signature,
+  glColor3uiv_signature,
+  glColor3usv_signature,
+  glColor4bv_signature,
+  glColor4dv_signature,
+  glColor4fv_signature,
+  glColor4iv_signature,
+  glColor4sv_signature,
+  glColor4ubv_signature,
+  glColor4uiv_signature,
+  glColor4usv_signature,
+  glTexCoord1d_signature,
+  glTexCoord1f_signature,
+  glTexCoord1i_signature,
+  glTexCoord1s_signature,
+  glTexCoord2d_signature,
+  glTexCoord2f_signature,
+  glTexCoord2i_signature,
+  glTexCoord2s_signature,
+  glTexCoord3d_signature,
+  glTexCoord3f_signature,
+  glTexCoord3i_signature,
+  glTexCoord3s_signature,
+  glTexCoord4d_signature,
+  glTexCoord4f_signature,
+  glTexCoord4i_signature,
+  glTexCoord4s_signature,
+  glTexCoord1dv_signature,
+  glTexCoord1fv_signature,
+  glTexCoord1iv_signature,
+  glTexCoord1sv_signature,
+  glTexCoord2dv_signature,
+  glTexCoord2fv_signature,
+  glTexCoord2iv_signature,
+  glTexCoord2sv_signature,
+  glTexCoord3dv_signature,
+  glTexCoord3fv_signature,
+  glTexCoord3iv_signature,
+  glTexCoord3sv_signature,
+  glTexCoord4dv_signature,
+  glTexCoord4fv_signature,
+  glTexCoord4iv_signature,
+  glTexCoord4sv_signature,
+  glRasterPos2d_signature,
+  glRasterPos2f_signature,
+  glRasterPos2i_signature,
+  glRasterPos2s_signature,
+  glRasterPos3d_signature,
+  glRasterPos3f_signature,
+  glRasterPos3i_signature,
+  glRasterPos3s_signature,
+  glRasterPos4d_signature,
+  glRasterPos4f_signature,
+  glRasterPos4i_signature,
+  glRasterPos4s_signature,
+  glRasterPos2dv_signature,
+  glRasterPos2fv_signature,
+  glRasterPos2iv_signature,
+  glRasterPos2sv_signature,
+  glRasterPos3dv_signature,
+  glRasterPos3fv_signature,
+  glRasterPos3iv_signature,
+  glRasterPos3sv_signature,
+  glRasterPos4dv_signature,
+  glRasterPos4fv_signature,
+  glRasterPos4iv_signature,
+  glRasterPos4sv_signature,
+  glRectd_signature,
+  glRectf_signature,
+  glRecti_signature,
+  glRects_signature,
+  glArrayElement_signature,
+  glShadeModel_signature,
+  glLightf_signature,
+  glLighti_signature,
+  glLightModelf_signature,
+  glLightModeli_signature,
+  glMaterialf_signature,
+  glMateriali_signature,
+  glColorMaterial_signature,
+  glPixelZoom_signature,
+  glPixelStoref_signature,
+  glPixelStorei_signature,
+  glPixelTransferf_signature,
+  glPixelTransferi_signature,
+  glCopyPixels_signature,
+  glStencilFunc_signature,
+  glStencilMask_signature,
+  glStencilOp_signature,
+  glClearStencil_signature,
+  glTexGend_signature,
+  glTexGenf_signature,
+  glTexGeni_signature,
+  glTexEnvf_signature,
+  glTexEnvi_signature,
+  glTexParameterf_signature,
+  glTexParameteri_signature,
+  glBindTexture_signature,
+  glIsTexture_signature,
+  glCopyTexImage1D_signature,
+  glCopyTexImage2D_signature,
+  glCopyTexSubImage1D_signature,
+  glCopyTexSubImage2D_signature,
+  glEvalCoord1d_signature,
+  glEvalCoord1f_signature,
+  glEvalCoord1dv_signature,
+  glEvalCoord1fv_signature,
+  glEvalCoord2d_signature,
+  glEvalCoord2f_signature,
+  glEvalCoord2dv_signature,
+  glEvalCoord2fv_signature,
+  glMapGrid1d_signature,
+  glMapGrid1f_signature,
+  glMapGrid2d_signature,
+  glMapGrid2f_signature,
+  glEvalPoint1_signature,
+  glEvalPoint2_signature,
+  glEvalMesh1_signature,
+  glEvalMesh2_signature,
+  glFogf_signature,
+  glFogi_signature,
+  glPassThrough_signature,
+  glInitNames_signature,
+  glLoadName_signature,
+  glPushName_signature,
+  glPopName_signature,
+  glCopyTexSubImage3D_signature,
+  glCopyColorSubTable_signature,
+  glCopyColorTable_signature,
+  glBlendEquation_signature,
+  glBlendColor_signature,
+  glHistogram_signature,
+  glResetHistogram_signature,
+  glMinmax_signature,
+  glResetMinmax_signature,
+  glConvolutionParameterf_signature,
+  glConvolutionParameteri_signature,
+  glCopyConvolutionFilter1D_signature,
+  glCopyConvolutionFilter2D_signature,
+  glActiveTexture_signature,
+  glClientActiveTexture_signature,
+  glMultiTexCoord1d_signature,
+  glMultiTexCoord1dv_signature,
+  glMultiTexCoord1f_signature,
+  glMultiTexCoord1fv_signature,
+  glMultiTexCoord1i_signature,
+  glMultiTexCoord1iv_signature,
+  glMultiTexCoord1s_signature,
+  glMultiTexCoord1sv_signature,
+  glMultiTexCoord2d_signature,
+  glMultiTexCoord2dv_signature,
+  glMultiTexCoord2f_signature,
+  glMultiTexCoord2fv_signature,
+  glMultiTexCoord2i_signature,
+  glMultiTexCoord2iv_signature,
+  glMultiTexCoord2s_signature,
+  glMultiTexCoord2sv_signature,
+  glMultiTexCoord3d_signature,
+  glMultiTexCoord3dv_signature,
+  glMultiTexCoord3f_signature,
+  glMultiTexCoord3fv_signature,
+  glMultiTexCoord3i_signature,
+  glMultiTexCoord3iv_signature,
+  glMultiTexCoord3s_signature,
+  glMultiTexCoord3sv_signature,
+  glMultiTexCoord4d_signature,
+  glMultiTexCoord4dv_signature,
+  glMultiTexCoord4f_signature,
+  glMultiTexCoord4fv_signature,
+  glMultiTexCoord4i_signature,
+  glMultiTexCoord4iv_signature,
+  glMultiTexCoord4s_signature,
+  glMultiTexCoord4sv_signature,
+  glLoadTransposeMatrixd_signature,
+  glLoadTransposeMatrixf_signature,
+  glMultTransposeMatrixd_signature,
+  glMultTransposeMatrixf_signature,
+  glSampleCoverage_signature,
+  glActiveTextureARB_signature,
+  glClientActiveTextureARB_signature,
+  glMultiTexCoord1dARB_signature,
+  glMultiTexCoord1dvARB_signature,
+  glMultiTexCoord1fARB_signature,
+  glMultiTexCoord1fvARB_signature,
+  glMultiTexCoord1iARB_signature,
+  glMultiTexCoord1ivARB_signature,
+  glMultiTexCoord1sARB_signature,
+  glMultiTexCoord1svARB_signature,
+  glMultiTexCoord2dARB_signature,
+  glMultiTexCoord2dvARB_signature,
+  glMultiTexCoord2fARB_signature,
+  glMultiTexCoord2fvARB_signature,
+  glMultiTexCoord2iARB_signature,
+  glMultiTexCoord2ivARB_signature,
+  glMultiTexCoord2sARB_signature,
+  glMultiTexCoord2svARB_signature,
+  glMultiTexCoord3dARB_signature,
+  glMultiTexCoord3dvARB_signature,
+  glMultiTexCoord3fARB_signature,
+  glMultiTexCoord3fvARB_signature,
+  glMultiTexCoord3iARB_signature,
+  glMultiTexCoord3ivARB_signature,
+  glMultiTexCoord3sARB_signature,
+  glMultiTexCoord3svARB_signature,
+  glMultiTexCoord4dARB_signature,
+  glMultiTexCoord4dvARB_signature,
+  glMultiTexCoord4fARB_signature,
+  glMultiTexCoord4fvARB_signature,
+  glMultiTexCoord4iARB_signature,
+  glMultiTexCoord4ivARB_signature,
+  glMultiTexCoord4sARB_signature,
+  glMultiTexCoord4svARB_signature,
+  glLoadTransposeMatrixfARB_signature,
+  glLoadTransposeMatrixdARB_signature,
+  glMultTransposeMatrixfARB_signature,
+  glMultTransposeMatrixdARB_signature,
+  glSampleCoverageARB_signature,
+  glPointParameterfARB_signature,
+  glVertexBlendARB_signature,
+  glCurrentPaletteMatrixARB_signature,
+  glWindowPos2dARB_signature,
+  glWindowPos2dvARB_signature,
+  glWindowPos2fARB_signature,
+  glWindowPos2fvARB_signature,
+  glWindowPos2iARB_signature,
+  glWindowPos2ivARB_signature,
+  glWindowPos2sARB_signature,
+  glWindowPos2svARB_signature,
+  glWindowPos3dARB_signature,
+  glWindowPos3dvARB_signature,
+  glWindowPos3fARB_signature,
+  glWindowPos3fvARB_signature,
+  glWindowPos3iARB_signature,
+  glWindowPos3ivARB_signature,
+  glWindowPos3sARB_signature,
+  glWindowPos3svARB_signature,
+  glVertexAttrib1dARB_signature,
+  glVertexAttrib1dvARB_signature,
+  glVertexAttrib1fARB_signature,
+  glVertexAttrib1fvARB_signature,
+  glVertexAttrib1sARB_signature,
+  glVertexAttrib1svARB_signature,
+  glVertexAttrib2dARB_signature,
+  glVertexAttrib2dvARB_signature,
+  glVertexAttrib2fARB_signature,
+  glVertexAttrib2fvARB_signature,
+  glVertexAttrib2sARB_signature,
+  glVertexAttrib2svARB_signature,
+  glVertexAttrib3dARB_signature,
+  glVertexAttrib3dvARB_signature,
+  glVertexAttrib3fARB_signature,
+  glVertexAttrib3fvARB_signature,
+  glVertexAttrib3sARB_signature,
+  glVertexAttrib3svARB_signature,
+  glVertexAttrib4NbvARB_signature,
+  glVertexAttrib4NivARB_signature,
+  glVertexAttrib4NsvARB_signature,
+  glVertexAttrib4NubARB_signature,
+  glVertexAttrib4NubvARB_signature,
+  glVertexAttrib4NuivARB_signature,
+  glVertexAttrib4NusvARB_signature,
+  glVertexAttrib4bvARB_signature,
+  glVertexAttrib4dARB_signature,
+  glVertexAttrib4dvARB_signature,
+  glVertexAttrib4fARB_signature,
+  glVertexAttrib4fvARB_signature,
+  glVertexAttrib4ivARB_signature,
+  glVertexAttrib4sARB_signature,
+  glVertexAttrib4svARB_signature,
+  glVertexAttrib4ubvARB_signature,
+  glVertexAttrib4uivARB_signature,
+  glVertexAttrib4usvARB_signature,
+  glEnableVertexAttribArrayARB_signature,
+  glDisableVertexAttribArrayARB_signature,
+  glBindProgramARB_signature,
+  glProgramEnvParameter4dARB_signature,
+  glProgramEnvParameter4dvARB_signature,
+  glProgramEnvParameter4fARB_signature,
+  glProgramEnvParameter4fvARB_signature,
+  glProgramLocalParameter4dARB_signature,
+  glProgramLocalParameter4dvARB_signature,
+  glProgramLocalParameter4fARB_signature,
+  glProgramLocalParameter4fvARB_signature,
+  glIsProgramARB_signature,
+  glBindBufferARB_signature,
+  glIsBufferARB_signature,
+  glUnmapBufferARB_signature,
+  glIsQueryARB_signature,
+  glBeginQueryARB_signature,
+  glEndQueryARB_signature,
+  glDeleteObjectARB_signature,
+  glGetHandleARB_signature,
+  glDetachObjectARB_signature,
+  glCreateShaderObjectARB_signature,
+  glCompileShaderARB_signature,
+  glCreateProgramObjectARB_signature,
+  glAttachObjectARB_signature,
+  glLinkProgramARB_signature,
+  glUseProgramObjectARB_signature,
+  glValidateProgramARB_signature,
+  glUniform1fARB_signature,
+  glUniform2fARB_signature,
+  glUniform3fARB_signature,
+  glUniform4fARB_signature,
+  glUniform1iARB_signature,
+  glUniform2iARB_signature,
+  glUniform3iARB_signature,
+  glUniform4iARB_signature,
+  glUniform1fvARB_signature,
+  glUniform2fvARB_signature,
+  glUniform3fvARB_signature,
+  glUniform4fvARB_signature,
+  glUniform1ivARB_signature,
+  glUniform2ivARB_signature,
+  glUniform3ivARB_signature,
+  glUniform4ivARB_signature,
+  glUniformMatrix2fvARB_signature,
+  glUniformMatrix3fvARB_signature,
+  glUniformMatrix4fvARB_signature,
+  glClampColorARB_signature,
+  glBlendColorEXT_signature,
+  glPolygonOffsetEXT_signature,
+  glCopyTexImage1DEXT_signature,
+  glCopyTexImage2DEXT_signature,
+  glCopyTexSubImage1DEXT_signature,
+  glCopyTexSubImage2DEXT_signature,
+  glCopyTexSubImage3DEXT_signature,
+  glHistogramEXT_signature,
+  glMinmaxEXT_signature,
+  glResetHistogramEXT_signature,
+  glResetMinmaxEXT_signature,
+  glConvolutionParameterfEXT_signature,
+  glConvolutionParameteriEXT_signature,
+  glCopyConvolutionFilter1DEXT_signature,
+  glCopyConvolutionFilter2DEXT_signature,
+  glCopyColorTableSGI_signature,
+  glPixelTexGenSGIX_signature,
+  glPixelTexGenParameteriSGIS_signature,
+  glPixelTexGenParameterfSGIS_signature,
+  glBindTextureEXT_signature,
+  glIsTextureEXT_signature,
+  glSampleMaskSGIS_signature,
+  glSamplePatternSGIS_signature,
+  glArrayElementEXT_signature,
+  glBlendEquationEXT_signature,
+  glSpriteParameterfSGIX_signature,
+  glSpriteParameteriSGIX_signature,
+  glPointParameterfEXT_signature,
+  glPointParameterfSGIS_signature,
+  glGetInstrumentsSGIX_signature,
+  glReadInstrumentsSGIX_signature,
+  glStartInstrumentsSGIX_signature,
+  glStopInstrumentsSGIX_signature,
+  glFrameZoomSGIX_signature,
+  glTagSampleBufferSGIX_signature,
+  glDeformSGIX_signature,
+  glLoadIdentityDeformationMapSGIX_signature,
+  glFlushRasterSGIX_signature,
+  glCopyColorSubTableEXT_signature,
+  glListParameterfSGIX_signature,
+  glListParameteriSGIX_signature,
+  glIndexMaterialEXT_signature,
+  glIndexFuncEXT_signature,
+  glLockArraysEXT_signature,
+  glUnlockArraysEXT_signature,
+  glFragmentColorMaterialSGIX_signature,
+  glFragmentLightfSGIX_signature,
+  glFragmentLightiSGIX_signature,
+  glFragmentLightModelfSGIX_signature,
+  glFragmentLightModeliSGIX_signature,
+  glFragmentMaterialfSGIX_signature,
+  glFragmentMaterialiSGIX_signature,
+  glLightEnviSGIX_signature,
+  glApplyTextureEXT_signature,
+  glTextureLightEXT_signature,
+  glTextureMaterialEXT_signature,
+  glAsyncMarkerSGIX_signature,
+  glGenAsyncMarkersSGIX_signature,
+  glDeleteAsyncMarkersSGIX_signature,
+  glIsAsyncMarkerSGIX_signature,
+  glPixelTransformParameteriEXT_signature,
+  glPixelTransformParameterfEXT_signature,
+  glSecondaryColor3bEXT_signature,
+  glSecondaryColor3bvEXT_signature,
+  glSecondaryColor3dEXT_signature,
+  glSecondaryColor3dvEXT_signature,
+  glSecondaryColor3fEXT_signature,
+  glSecondaryColor3fvEXT_signature,
+  glSecondaryColor3iEXT_signature,
+  glSecondaryColor3ivEXT_signature,
+  glSecondaryColor3sEXT_signature,
+  glSecondaryColor3svEXT_signature,
+  glSecondaryColor3ubEXT_signature,
+  glSecondaryColor3ubvEXT_signature,
+  glSecondaryColor3uiEXT_signature,
+  glSecondaryColor3uivEXT_signature,
+  glSecondaryColor3usEXT_signature,
+  glSecondaryColor3usvEXT_signature,
+  glTextureNormalEXT_signature,
+  glFogCoordfEXT_signature,
+  glFogCoorddEXT_signature,
+  glTangent3bEXT_signature,
+  glTangent3bvEXT_signature,
+  glTangent3dEXT_signature,
+  glTangent3dvEXT_signature,
+  glTangent3fEXT_signature,
+  glTangent3fvEXT_signature,
+  glTangent3iEXT_signature,
+  glTangent3ivEXT_signature,
+  glTangent3sEXT_signature,
+  glTangent3svEXT_signature,
+  glBinormal3bEXT_signature,
+  glBinormal3bvEXT_signature,
+  glBinormal3dEXT_signature,
+  glBinormal3dvEXT_signature,
+  glBinormal3fEXT_signature,
+  glBinormal3fvEXT_signature,
+  glBinormal3iEXT_signature,
+  glBinormal3ivEXT_signature,
+  glBinormal3sEXT_signature,
+  glBinormal3svEXT_signature,
+  glBlendFuncSeparateEXT_signature,
+  glVertexWeightfEXT_signature,
+  glFlushVertexArrayRangeNV_signature,
+  glCombinerParameterfNV_signature,
+  glCombinerParameteriNV_signature,
+  glCombinerInputNV_signature,
+  glCombinerOutputNV_signature,
+  glFinalCombinerInputNV_signature,
+  glResizeBuffersMESA_signature,
+  glWindowPos2dMESA_signature,
+  glWindowPos2dvMESA_signature,
+  glWindowPos2fMESA_signature,
+  glWindowPos2fvMESA_signature,
+  glWindowPos2iMESA_signature,
+  glWindowPos2ivMESA_signature,
+  glWindowPos2sMESA_signature,
+  glWindowPos2svMESA_signature,
+  glWindowPos3dMESA_signature,
+  glWindowPos3dvMESA_signature,
+  glWindowPos3fMESA_signature,
+  glWindowPos3fvMESA_signature,
+  glWindowPos3iMESA_signature,
+  glWindowPos3ivMESA_signature,
+  glWindowPos3sMESA_signature,
+  glWindowPos3svMESA_signature,
+  glWindowPos4dMESA_signature,
+  glWindowPos4dvMESA_signature,
+  glWindowPos4fMESA_signature,
+  glWindowPos4fvMESA_signature,
+  glWindowPos4iMESA_signature,
+  glWindowPos4ivMESA_signature,
+  glWindowPos4sMESA_signature,
+  glWindowPos4svMESA_signature,
+  glSampleMaskEXT_signature,
+  glSamplePatternEXT_signature,
+  glTextureColorMaskSGIS_signature,
+  glIsFenceNV_signature,
+  glTestFenceNV_signature,
+  glFinishFenceNV_signature,
+  glSetFenceNV_signature,
+  glEvalMapsNV_signature,
+  glBindProgramNV_signature,
+  glIsProgramNV_signature,
+  glProgramParameter4dNV_signature,
+  glProgramParameter4dvNV_signature,
+  glProgramParameter4fNV_signature,
+  glProgramParameter4fvNV_signature,
+  glProgramParameters4dvNV_signature,
+  glProgramParameters4fvNV_signature,
+  glTrackMatrixNV_signature,
+  glVertexAttrib1dNV_signature,
+  glVertexAttrib1dvNV_signature,
+  glVertexAttrib1fNV_signature,
+  glVertexAttrib1fvNV_signature,
+  glVertexAttrib1sNV_signature,
+  glVertexAttrib1svNV_signature,
+  glVertexAttrib2dNV_signature,
+  glVertexAttrib2dvNV_signature,
+  glVertexAttrib2fNV_signature,
+  glVertexAttrib2fvNV_signature,
+  glVertexAttrib2sNV_signature,
+  glVertexAttrib2svNV_signature,
+  glVertexAttrib3dNV_signature,
+  glVertexAttrib3dvNV_signature,
+  glVertexAttrib3fNV_signature,
+  glVertexAttrib3fvNV_signature,
+  glVertexAttrib3sNV_signature,
+  glVertexAttrib3svNV_signature,
+  glVertexAttrib4dNV_signature,
+  glVertexAttrib4dvNV_signature,
+  glVertexAttrib4fNV_signature,
+  glVertexAttrib4fvNV_signature,
+  glVertexAttrib4sNV_signature,
+  glVertexAttrib4svNV_signature,
+  glVertexAttrib4ubNV_signature,
+  glVertexAttrib4ubvNV_signature,
+  glVertexAttribs1dvNV_signature,
+  glVertexAttribs1fvNV_signature,
+  glVertexAttribs1svNV_signature,
+  glVertexAttribs2dvNV_signature,
+  glVertexAttribs2fvNV_signature,
+  glVertexAttribs2svNV_signature,
+  glVertexAttribs3dvNV_signature,
+  glVertexAttribs3fvNV_signature,
+  glVertexAttribs3svNV_signature,
+  glVertexAttribs4dvNV_signature,
+  glVertexAttribs4fvNV_signature,
+  glVertexAttribs4svNV_signature,
+  glVertexAttribs4ubvNV_signature,
+  glGenFragmentShadersATI_signature,
+  glBindFragmentShaderATI_signature,
+  glDeleteFragmentShaderATI_signature,
+  glBeginFragmentShaderATI_signature,
+  glEndFragmentShaderATI_signature,
+  glPassTexCoordATI_signature,
+  glSampleMapATI_signature,
+  glColorFragmentOp1ATI_signature,
+  glColorFragmentOp2ATI_signature,
+  glColorFragmentOp3ATI_signature,
+  glAlphaFragmentOp1ATI_signature,
+  glAlphaFragmentOp2ATI_signature,
+  glAlphaFragmentOp3ATI_signature,
+  glPNTrianglesiATI_signature,
+  glPNTrianglesfATI_signature,
+  glIsObjectBufferATI_signature,
+  glFreeObjectBufferATI_signature,
+  glArrayObjectATI_signature,
+  glVariantArrayObjectATI_signature,
+  glBeginVertexShaderEXT_signature,
+  glEndVertexShaderEXT_signature,
+  glBindVertexShaderEXT_signature,
+  glGenVertexShadersEXT_signature,
+  glDeleteVertexShaderEXT_signature,
+  glShaderOp1EXT_signature,
+  glShaderOp2EXT_signature,
+  glShaderOp3EXT_signature,
+  glSwizzleEXT_signature,
+  glWriteMaskEXT_signature,
+  glInsertComponentEXT_signature,
+  glExtractComponentEXT_signature,
+  glGenSymbolsEXT_signature,
+  glEnableVariantClientStateEXT_signature,
+  glDisableVariantClientStateEXT_signature,
+  glBindLightParameterEXT_signature,
+  glBindMaterialParameterEXT_signature,
+  glBindTexGenParameterEXT_signature,
+  glBindTextureUnitParameterEXT_signature,
+  glBindParameterEXT_signature,
+  glIsVariantEnabledEXT_signature,
+  glVertexStream1sATI_signature,
+  glVertexStream1svATI_signature,
+  glVertexStream1iATI_signature,
+  glVertexStream1ivATI_signature,
+  glVertexStream1fATI_signature,
+  glVertexStream1fvATI_signature,
+  glVertexStream1dATI_signature,
+  glVertexStream1dvATI_signature,
+  glVertexStream2sATI_signature,
+  glVertexStream2svATI_signature,
+  glVertexStream2iATI_signature,
+  glVertexStream2ivATI_signature,
+  glVertexStream2fATI_signature,
+  glVertexStream2fvATI_signature,
+  glVertexStream2dATI_signature,
+  glVertexStream2dvATI_signature,
+  glVertexStream3sATI_signature,
+  glVertexStream3svATI_signature,
+  glVertexStream3iATI_signature,
+  glVertexStream3ivATI_signature,
+  glVertexStream3fATI_signature,
+  glVertexStream3fvATI_signature,
+  glVertexStream3dATI_signature,
+  glVertexStream3dvATI_signature,
+  glVertexStream4sATI_signature,
+  glVertexStream4svATI_signature,
+  glVertexStream4iATI_signature,
+  glVertexStream4ivATI_signature,
+  glVertexStream4fATI_signature,
+  glVertexStream4fvATI_signature,
+  glVertexStream4dATI_signature,
+  glVertexStream4dvATI_signature,
+  glNormalStream3bATI_signature,
+  glNormalStream3bvATI_signature,
+  glNormalStream3sATI_signature,
+  glNormalStream3svATI_signature,
+  glNormalStream3iATI_signature,
+  glNormalStream3ivATI_signature,
+  glNormalStream3fATI_signature,
+  glNormalStream3fvATI_signature,
+  glNormalStream3dATI_signature,
+  glNormalStream3dvATI_signature,
+  glClientActiveVertexStreamATI_signature,
+  glVertexBlendEnviATI_signature,
+  glVertexBlendEnvfATI_signature,
+  glDrawElementArrayATI_signature,
+  glDrawRangeElementArrayATI_signature,
+  glIsOcclusionQueryNV_signature,
+  glBeginOcclusionQueryNV_signature,
+  glEndOcclusionQueryNV_signature,
+  glPointParameteriNV_signature,
+  glActiveStencilFaceEXT_signature,
+  glVertex2hNV_signature,
+  glVertex3hNV_signature,
+  glVertex4hNV_signature,
+  glNormal3hNV_signature,
+  glColor3hNV_signature,
+  glColor4hNV_signature,
+  glTexCoord1hNV_signature,
+  glTexCoord2hNV_signature,
+  glTexCoord3hNV_signature,
+  glTexCoord4hNV_signature,
+  glMultiTexCoord1hNV_signature,
+  glMultiTexCoord2hNV_signature,
+  glMultiTexCoord3hNV_signature,
+  glMultiTexCoord4hNV_signature,
+  glFogCoordhNV_signature,
+  glSecondaryColor3hNV_signature,
+  glVertexWeighthNV_signature,
+  glVertexAttrib1hNV_signature,
+  glVertexAttrib2hNV_signature,
+  glVertexAttrib3hNV_signature,
+  glVertexAttrib4hNV_signature,
+  glFlushPixelDataRangeNV_signature,
+  glPrimitiveRestartNV_signature,
+  glPrimitiveRestartIndexNV_signature,
+  glUnmapObjectBufferATI_signature,
+  glStencilOpSeparateATI_signature,
+  glStencilFuncSeparateATI_signature,
+  glVertexAttribArrayObjectATI_signature,
+  glDepthBoundsEXT_signature,
+  glBlendEquationSeparateEXT_signature,
+  glIsRenderbufferEXT_signature,
+  glBindRenderbufferEXT_signature,
+  glRenderbufferStorageEXT_signature,
+  glIsFramebufferEXT_signature,
+  glBindFramebufferEXT_signature,
+  glCheckFramebufferStatusEXT_signature,
+  glFramebufferTexture1DEXT_signature,
+  glFramebufferTexture2DEXT_signature,
+  glFramebufferTexture3DEXT_signature,
+  glFramebufferRenderbufferEXT_signature,
+  glGenerateMipmapEXT_signature,
+};
+
+#undef MAGIC_MACRO
+#define MAGIC_MACRO(x)  #x
+static const char* tab_opengl_calls_name[GL_N_CALLS] =
+{
+#include "gl_func_perso.h"
+  "glClearIndex",
+  "glClearColor",
+  "glClear",
+  "glIndexMask",
+  "glColorMask",
+  "glAlphaFunc",
+  "glBlendFunc",
+  "glLogicOp",
+  "glCullFace",
+  "glFrontFace",
+  "glPointSize",
+  "glLineWidth",
+  "glLineStipple",
+  "glPolygonMode",
+  "glPolygonOffset",
+  "glEdgeFlag",
+  "glScissor",
+  "glDrawBuffer",
+  "glReadBuffer",
+  "glEnable",
+  "glDisable",
+  "glIsEnabled",
+  "glEnableClientState",
+  "glDisableClientState",
+  "glPushAttrib",
+  "glPopAttrib",
+  "glPushClientAttrib",
+  "glPopClientAttrib",
+  "glRenderMode",
+  "glGetError",
+  "glFinish",
+  "glFlush",
+  "glHint",
+  "glClearDepth",
+  "glDepthFunc",
+  "glDepthMask",
+  "glDepthRange",
+  "glClearAccum",
+  "glAccum",
+  "glMatrixMode",
+  "glOrtho",
+  "glFrustum",
+  "glViewport",
+  "glPushMatrix",
+  "glPopMatrix",
+  "glLoadIdentity",
+  "glLoadMatrixd",
+  "glLoadMatrixf",
+  "glMultMatrixd",
+  "glMultMatrixf",
+  "glRotated",
+  "glRotatef",
+  "glScaled",
+  "glScalef",
+  "glTranslated",
+  "glTranslatef",
+  "glIsList",
+  "glDeleteLists",
+  "glGenLists",
+  "glNewList",
+  "glEndList",
+  "glCallList",
+  "glListBase",
+  "glBegin",
+  "glEnd",
+  "glVertex2d",
+  "glVertex2f",
+  "glVertex2i",
+  "glVertex2s",
+  "glVertex3d",
+  "glVertex3f",
+  "glVertex3i",
+  "glVertex3s",
+  "glVertex4d",
+  "glVertex4f",
+  "glVertex4i",
+  "glVertex4s",
+  "glVertex2dv",
+  "glVertex2fv",
+  "glVertex2iv",
+  "glVertex2sv",
+  "glVertex3dv",
+  "glVertex3fv",
+  "glVertex3iv",
+  "glVertex3sv",
+  "glVertex4dv",
+  "glVertex4fv",
+  "glVertex4iv",
+  "glVertex4sv",
+  "glNormal3b",
+  "glNormal3d",
+  "glNormal3f",
+  "glNormal3i",
+  "glNormal3s",
+  "glNormal3bv",
+  "glNormal3dv",
+  "glNormal3fv",
+  "glNormal3iv",
+  "glNormal3sv",
+  "glIndexd",
+  "glIndexf",
+  "glIndexi",
+  "glIndexs",
+  "glIndexub",
+  "glColor3b",
+  "glColor3d",
+  "glColor3f",
+  "glColor3i",
+  "glColor3s",
+  "glColor3ub",
+  "glColor3ui",
+  "glColor3us",
+  "glColor4b",
+  "glColor4d",
+  "glColor4f",
+  "glColor4i",
+  "glColor4s",
+  "glColor4ub",
+  "glColor4ui",
+  "glColor4us",
+  "glColor3bv",
+  "glColor3dv",
+  "glColor3fv",
+  "glColor3iv",
+  "glColor3sv",
+  "glColor3ubv",
+  "glColor3uiv",
+  "glColor3usv",
+  "glColor4bv",
+  "glColor4dv",
+  "glColor4fv",
+  "glColor4iv",
+  "glColor4sv",
+  "glColor4ubv",
+  "glColor4uiv",
+  "glColor4usv",
+  "glTexCoord1d",
+  "glTexCoord1f",
+  "glTexCoord1i",
+  "glTexCoord1s",
+  "glTexCoord2d",
+  "glTexCoord2f",
+  "glTexCoord2i",
+  "glTexCoord2s",
+  "glTexCoord3d",
+  "glTexCoord3f",
+  "glTexCoord3i",
+  "glTexCoord3s",
+  "glTexCoord4d",
+  "glTexCoord4f",
+  "glTexCoord4i",
+  "glTexCoord4s",
+  "glTexCoord1dv",
+  "glTexCoord1fv",
+  "glTexCoord1iv",
+  "glTexCoord1sv",
+  "glTexCoord2dv",
+  "glTexCoord2fv",
+  "glTexCoord2iv",
+  "glTexCoord2sv",
+  "glTexCoord3dv",
+  "glTexCoord3fv",
+  "glTexCoord3iv",
+  "glTexCoord3sv",
+  "glTexCoord4dv",
+  "glTexCoord4fv",
+  "glTexCoord4iv",
+  "glTexCoord4sv",
+  "glRasterPos2d",
+  "glRasterPos2f",
+  "glRasterPos2i",
+  "glRasterPos2s",
+  "glRasterPos3d",
+  "glRasterPos3f",
+  "glRasterPos3i",
+  "glRasterPos3s",
+  "glRasterPos4d",
+  "glRasterPos4f",
+  "glRasterPos4i",
+  "glRasterPos4s",
+  "glRasterPos2dv",
+  "glRasterPos2fv",
+  "glRasterPos2iv",
+  "glRasterPos2sv",
+  "glRasterPos3dv",
+  "glRasterPos3fv",
+  "glRasterPos3iv",
+  "glRasterPos3sv",
+  "glRasterPos4dv",
+  "glRasterPos4fv",
+  "glRasterPos4iv",
+  "glRasterPos4sv",
+  "glRectd",
+  "glRectf",
+  "glRecti",
+  "glRects",
+  "glArrayElement",
+  "glShadeModel",
+  "glLightf",
+  "glLighti",
+  "glLightModelf",
+  "glLightModeli",
+  "glMaterialf",
+  "glMateriali",
+  "glColorMaterial",
+  "glPixelZoom",
+  "glPixelStoref",
+  "glPixelStorei",
+  "glPixelTransferf",
+  "glPixelTransferi",
+  "glCopyPixels",
+  "glStencilFunc",
+  "glStencilMask",
+  "glStencilOp",
+  "glClearStencil",
+  "glTexGend",
+  "glTexGenf",
+  "glTexGeni",
+  "glTexEnvf",
+  "glTexEnvi",
+  "glTexParameterf",
+  "glTexParameteri",
+  "glBindTexture",
+  "glIsTexture",
+  "glCopyTexImage1D",
+  "glCopyTexImage2D",
+  "glCopyTexSubImage1D",
+  "glCopyTexSubImage2D",
+  "glEvalCoord1d",
+  "glEvalCoord1f",
+  "glEvalCoord1dv",
+  "glEvalCoord1fv",
+  "glEvalCoord2d",
+  "glEvalCoord2f",
+  "glEvalCoord2dv",
+  "glEvalCoord2fv",
+  "glMapGrid1d",
+  "glMapGrid1f",
+  "glMapGrid2d",
+  "glMapGrid2f",
+  "glEvalPoint1",
+  "glEvalPoint2",
+  "glEvalMesh1",
+  "glEvalMesh2",
+  "glFogf",
+  "glFogi",
+  "glPassThrough",
+  "glInitNames",
+  "glLoadName",
+  "glPushName",
+  "glPopName",
+  "glCopyTexSubImage3D",
+  "glCopyColorSubTable",
+  "glCopyColorTable",
+  "glBlendEquation",
+  "glBlendColor",
+  "glHistogram",
+  "glResetHistogram",
+  "glMinmax",
+  "glResetMinmax",
+  "glConvolutionParameterf",
+  "glConvolutionParameteri",
+  "glCopyConvolutionFilter1D",
+  "glCopyConvolutionFilter2D",
+  "glActiveTexture",
+  "glClientActiveTexture",
+  "glMultiTexCoord1d",
+  "glMultiTexCoord1dv",
+  "glMultiTexCoord1f",
+  "glMultiTexCoord1fv",
+  "glMultiTexCoord1i",
+  "glMultiTexCoord1iv",
+  "glMultiTexCoord1s",
+  "glMultiTexCoord1sv",
+  "glMultiTexCoord2d",
+  "glMultiTexCoord2dv",
+  "glMultiTexCoord2f",
+  "glMultiTexCoord2fv",
+  "glMultiTexCoord2i",
+  "glMultiTexCoord2iv",
+  "glMultiTexCoord2s",
+  "glMultiTexCoord2sv",
+  "glMultiTexCoord3d",
+  "glMultiTexCoord3dv",
+  "glMultiTexCoord3f",
+  "glMultiTexCoord3fv",
+  "glMultiTexCoord3i",
+  "glMultiTexCoord3iv",
+  "glMultiTexCoord3s",
+  "glMultiTexCoord3sv",
+  "glMultiTexCoord4d",
+  "glMultiTexCoord4dv",
+  "glMultiTexCoord4f",
+  "glMultiTexCoord4fv",
+  "glMultiTexCoord4i",
+  "glMultiTexCoord4iv",
+  "glMultiTexCoord4s",
+  "glMultiTexCoord4sv",
+  "glLoadTransposeMatrixd",
+  "glLoadTransposeMatrixf",
+  "glMultTransposeMatrixd",
+  "glMultTransposeMatrixf",
+  "glSampleCoverage",
+  "glActiveTextureARB",
+  "glClientActiveTextureARB",
+  "glMultiTexCoord1dARB",
+  "glMultiTexCoord1dvARB",
+  "glMultiTexCoord1fARB",
+  "glMultiTexCoord1fvARB",
+  "glMultiTexCoord1iARB",
+  "glMultiTexCoord1ivARB",
+  "glMultiTexCoord1sARB",
+  "glMultiTexCoord1svARB",
+  "glMultiTexCoord2dARB",
+  "glMultiTexCoord2dvARB",
+  "glMultiTexCoord2fARB",
+  "glMultiTexCoord2fvARB",
+  "glMultiTexCoord2iARB",
+  "glMultiTexCoord2ivARB",
+  "glMultiTexCoord2sARB",
+  "glMultiTexCoord2svARB",
+  "glMultiTexCoord3dARB",
+  "glMultiTexCoord3dvARB",
+  "glMultiTexCoord3fARB",
+  "glMultiTexCoord3fvARB",
+  "glMultiTexCoord3iARB",
+  "glMultiTexCoord3ivARB",
+  "glMultiTexCoord3sARB",
+  "glMultiTexCoord3svARB",
+  "glMultiTexCoord4dARB",
+  "glMultiTexCoord4dvARB",
+  "glMultiTexCoord4fARB",
+  "glMultiTexCoord4fvARB",
+  "glMultiTexCoord4iARB",
+  "glMultiTexCoord4ivARB",
+  "glMultiTexCoord4sARB",
+  "glMultiTexCoord4svARB",
+  "glLoadTransposeMatrixfARB",
+  "glLoadTransposeMatrixdARB",
+  "glMultTransposeMatrixfARB",
+  "glMultTransposeMatrixdARB",
+  "glSampleCoverageARB",
+  "glPointParameterfARB",
+  "glVertexBlendARB",
+  "glCurrentPaletteMatrixARB",
+  "glWindowPos2dARB",
+  "glWindowPos2dvARB",
+  "glWindowPos2fARB",
+  "glWindowPos2fvARB",
+  "glWindowPos2iARB",
+  "glWindowPos2ivARB",
+  "glWindowPos2sARB",
+  "glWindowPos2svARB",
+  "glWindowPos3dARB",
+  "glWindowPos3dvARB",
+  "glWindowPos3fARB",
+  "glWindowPos3fvARB",
+  "glWindowPos3iARB",
+  "glWindowPos3ivARB",
+  "glWindowPos3sARB",
+  "glWindowPos3svARB",
+  "glVertexAttrib1dARB",
+  "glVertexAttrib1dvARB",
+  "glVertexAttrib1fARB",
+  "glVertexAttrib1fvARB",
+  "glVertexAttrib1sARB",
+  "glVertexAttrib1svARB",
+  "glVertexAttrib2dARB",
+  "glVertexAttrib2dvARB",
+  "glVertexAttrib2fARB",
+  "glVertexAttrib2fvARB",
+  "glVertexAttrib2sARB",
+  "glVertexAttrib2svARB",
+  "glVertexAttrib3dARB",
+  "glVertexAttrib3dvARB",
+  "glVertexAttrib3fARB",
+  "glVertexAttrib3fvARB",
+  "glVertexAttrib3sARB",
+  "glVertexAttrib3svARB",
+  "glVertexAttrib4NbvARB",
+  "glVertexAttrib4NivARB",
+  "glVertexAttrib4NsvARB",
+  "glVertexAttrib4NubARB",
+  "glVertexAttrib4NubvARB",
+  "glVertexAttrib4NuivARB",
+  "glVertexAttrib4NusvARB",
+  "glVertexAttrib4bvARB",
+  "glVertexAttrib4dARB",
+  "glVertexAttrib4dvARB",
+  "glVertexAttrib4fARB",
+  "glVertexAttrib4fvARB",
+  "glVertexAttrib4ivARB",
+  "glVertexAttrib4sARB",
+  "glVertexAttrib4svARB",
+  "glVertexAttrib4ubvARB",
+  "glVertexAttrib4uivARB",
+  "glVertexAttrib4usvARB",
+  "glEnableVertexAttribArrayARB",
+  "glDisableVertexAttribArrayARB",
+  "glBindProgramARB",
+  "glProgramEnvParameter4dARB",
+  "glProgramEnvParameter4dvARB",
+  "glProgramEnvParameter4fARB",
+  "glProgramEnvParameter4fvARB",
+  "glProgramLocalParameter4dARB",
+  "glProgramLocalParameter4dvARB",
+  "glProgramLocalParameter4fARB",
+  "glProgramLocalParameter4fvARB",
+  "glIsProgramARB",
+  "glBindBufferARB",
+  "glIsBufferARB",
+  "glUnmapBufferARB",
+  "glIsQueryARB",
+  "glBeginQueryARB",
+  "glEndQueryARB",
+  "glDeleteObjectARB",
+  "glGetHandleARB",
+  "glDetachObjectARB",
+  "glCreateShaderObjectARB",
+  "glCompileShaderARB",
+  "glCreateProgramObjectARB",
+  "glAttachObjectARB",
+  "glLinkProgramARB",
+  "glUseProgramObjectARB",
+  "glValidateProgramARB",
+  "glUniform1fARB",
+  "glUniform2fARB",
+  "glUniform3fARB",
+  "glUniform4fARB",
+  "glUniform1iARB",
+  "glUniform2iARB",
+  "glUniform3iARB",
+  "glUniform4iARB",
+  "glUniform1fvARB",
+  "glUniform2fvARB",
+  "glUniform3fvARB",
+  "glUniform4fvARB",
+  "glUniform1ivARB",
+  "glUniform2ivARB",
+  "glUniform3ivARB",
+  "glUniform4ivARB",
+  "glUniformMatrix2fvARB",
+  "glUniformMatrix3fvARB",
+  "glUniformMatrix4fvARB",
+  "glClampColorARB",
+  "glBlendColorEXT",
+  "glPolygonOffsetEXT",
+  "glCopyTexImage1DEXT",
+  "glCopyTexImage2DEXT",
+  "glCopyTexSubImage1DEXT",
+  "glCopyTexSubImage2DEXT",
+  "glCopyTexSubImage3DEXT",
+  "glHistogramEXT",
+  "glMinmaxEXT",
+  "glResetHistogramEXT",
+  "glResetMinmaxEXT",
+  "glConvolutionParameterfEXT",
+  "glConvolutionParameteriEXT",
+  "glCopyConvolutionFilter1DEXT",
+  "glCopyConvolutionFilter2DEXT",
+  "glCopyColorTableSGI",
+  "glPixelTexGenSGIX",
+  "glPixelTexGenParameteriSGIS",
+  "glPixelTexGenParameterfSGIS",
+  "glBindTextureEXT",
+  "glIsTextureEXT",
+  "glSampleMaskSGIS",
+  "glSamplePatternSGIS",
+  "glArrayElementEXT",
+  "glBlendEquationEXT",
+  "glSpriteParameterfSGIX",
+  "glSpriteParameteriSGIX",
+  "glPointParameterfEXT",
+  "glPointParameterfSGIS",
+  "glGetInstrumentsSGIX",
+  "glReadInstrumentsSGIX",
+  "glStartInstrumentsSGIX",
+  "glStopInstrumentsSGIX",
+  "glFrameZoomSGIX",
+  "glTagSampleBufferSGIX",
+  "glDeformSGIX",
+  "glLoadIdentityDeformationMapSGIX",
+  "glFlushRasterSGIX",
+  "glCopyColorSubTableEXT",
+  "glListParameterfSGIX",
+  "glListParameteriSGIX",
+  "glIndexMaterialEXT",
+  "glIndexFuncEXT",
+  "glLockArraysEXT",
+  "glUnlockArraysEXT",
+  "glFragmentColorMaterialSGIX",
+  "glFragmentLightfSGIX",
+  "glFragmentLightiSGIX",
+  "glFragmentLightModelfSGIX",
+  "glFragmentLightModeliSGIX",
+  "glFragmentMaterialfSGIX",
+  "glFragmentMaterialiSGIX",
+  "glLightEnviSGIX",
+  "glApplyTextureEXT",
+  "glTextureLightEXT",
+  "glTextureMaterialEXT",
+  "glAsyncMarkerSGIX",
+  "glGenAsyncMarkersSGIX",
+  "glDeleteAsyncMarkersSGIX",
+  "glIsAsyncMarkerSGIX",
+  "glPixelTransformParameteriEXT",
+  "glPixelTransformParameterfEXT",
+  "glSecondaryColor3bEXT",
+  "glSecondaryColor3bvEXT",
+  "glSecondaryColor3dEXT",
+  "glSecondaryColor3dvEXT",
+  "glSecondaryColor3fEXT",
+  "glSecondaryColor3fvEXT",
+  "glSecondaryColor3iEXT",
+  "glSecondaryColor3ivEXT",
+  "glSecondaryColor3sEXT",
+  "glSecondaryColor3svEXT",
+  "glSecondaryColor3ubEXT",
+  "glSecondaryColor3ubvEXT",
+  "glSecondaryColor3uiEXT",
+  "glSecondaryColor3uivEXT",
+  "glSecondaryColor3usEXT",
+  "glSecondaryColor3usvEXT",
+  "glTextureNormalEXT",
+  "glFogCoordfEXT",
+  "glFogCoorddEXT",
+  "glTangent3bEXT",
+  "glTangent3bvEXT",
+  "glTangent3dEXT",
+  "glTangent3dvEXT",
+  "glTangent3fEXT",
+  "glTangent3fvEXT",
+  "glTangent3iEXT",
+  "glTangent3ivEXT",
+  "glTangent3sEXT",
+  "glTangent3svEXT",
+  "glBinormal3bEXT",
+  "glBinormal3bvEXT",
+  "glBinormal3dEXT",
+  "glBinormal3dvEXT",
+  "glBinormal3fEXT",
+  "glBinormal3fvEXT",
+  "glBinormal3iEXT",
+  "glBinormal3ivEXT",
+  "glBinormal3sEXT",
+  "glBinormal3svEXT",
+  "glBlendFuncSeparateEXT",
+  "glVertexWeightfEXT",
+  "glFlushVertexArrayRangeNV",
+  "glCombinerParameterfNV",
+  "glCombinerParameteriNV",
+  "glCombinerInputNV",
+  "glCombinerOutputNV",
+  "glFinalCombinerInputNV",
+  "glResizeBuffersMESA",
+  "glWindowPos2dMESA",
+  "glWindowPos2dvMESA",
+  "glWindowPos2fMESA",
+  "glWindowPos2fvMESA",
+  "glWindowPos2iMESA",
+  "glWindowPos2ivMESA",
+  "glWindowPos2sMESA",
+  "glWindowPos2svMESA",
+  "glWindowPos3dMESA",
+  "glWindowPos3dvMESA",
+  "glWindowPos3fMESA",
+  "glWindowPos3fvMESA",
+  "glWindowPos3iMESA",
+  "glWindowPos3ivMESA",
+  "glWindowPos3sMESA",
+  "glWindowPos3svMESA",
+  "glWindowPos4dMESA",
+  "glWindowPos4dvMESA",
+  "glWindowPos4fMESA",
+  "glWindowPos4fvMESA",
+  "glWindowPos4iMESA",
+  "glWindowPos4ivMESA",
+  "glWindowPos4sMESA",
+  "glWindowPos4svMESA",
+  "glSampleMaskEXT",
+  "glSamplePatternEXT",
+  "glTextureColorMaskSGIS",
+  "glIsFenceNV",
+  "glTestFenceNV",
+  "glFinishFenceNV",
+  "glSetFenceNV",
+  "glEvalMapsNV",
+  "glBindProgramNV",
+  "glIsProgramNV",
+  "glProgramParameter4dNV",
+  "glProgramParameter4dvNV",
+  "glProgramParameter4fNV",
+  "glProgramParameter4fvNV",
+  "glProgramParameters4dvNV",
+  "glProgramParameters4fvNV",
+  "glTrackMatrixNV",
+  "glVertexAttrib1dNV",
+  "glVertexAttrib1dvNV",
+  "glVertexAttrib1fNV",
+  "glVertexAttrib1fvNV",
+  "glVertexAttrib1sNV",
+  "glVertexAttrib1svNV",
+  "glVertexAttrib2dNV",
+  "glVertexAttrib2dvNV",
+  "glVertexAttrib2fNV",
+  "glVertexAttrib2fvNV",
+  "glVertexAttrib2sNV",
+  "glVertexAttrib2svNV",
+  "glVertexAttrib3dNV",
+  "glVertexAttrib3dvNV",
+  "glVertexAttrib3fNV",
+  "glVertexAttrib3fvNV",
+  "glVertexAttrib3sNV",
+  "glVertexAttrib3svNV",
+  "glVertexAttrib4dNV",
+  "glVertexAttrib4dvNV",
+  "glVertexAttrib4fNV",
+  "glVertexAttrib4fvNV",
+  "glVertexAttrib4sNV",
+  "glVertexAttrib4svNV",
+  "glVertexAttrib4ubNV",
+  "glVertexAttrib4ubvNV",
+  "glVertexAttribs1dvNV",
+  "glVertexAttribs1fvNV",
+  "glVertexAttribs1svNV",
+  "glVertexAttribs2dvNV",
+  "glVertexAttribs2fvNV",
+  "glVertexAttribs2svNV",
+  "glVertexAttribs3dvNV",
+  "glVertexAttribs3fvNV",
+  "glVertexAttribs3svNV",
+  "glVertexAttribs4dvNV",
+  "glVertexAttribs4fvNV",
+  "glVertexAttribs4svNV",
+  "glVertexAttribs4ubvNV",
+  "glGenFragmentShadersATI",
+  "glBindFragmentShaderATI",
+  "glDeleteFragmentShaderATI",
+  "glBeginFragmentShaderATI",
+  "glEndFragmentShaderATI",
+  "glPassTexCoordATI",
+  "glSampleMapATI",
+  "glColorFragmentOp1ATI",
+  "glColorFragmentOp2ATI",
+  "glColorFragmentOp3ATI",
+  "glAlphaFragmentOp1ATI",
+  "glAlphaFragmentOp2ATI",
+  "glAlphaFragmentOp3ATI",
+  "glPNTrianglesiATI",
+  "glPNTrianglesfATI",
+  "glIsObjectBufferATI",
+  "glFreeObjectBufferATI",
+  "glArrayObjectATI",
+  "glVariantArrayObjectATI",
+  "glBeginVertexShaderEXT",
+  "glEndVertexShaderEXT",
+  "glBindVertexShaderEXT",
+  "glGenVertexShadersEXT",
+  "glDeleteVertexShaderEXT",
+  "glShaderOp1EXT",
+  "glShaderOp2EXT",
+  "glShaderOp3EXT",
+  "glSwizzleEXT",
+  "glWriteMaskEXT",
+  "glInsertComponentEXT",
+  "glExtractComponentEXT",
+  "glGenSymbolsEXT",
+  "glEnableVariantClientStateEXT",
+  "glDisableVariantClientStateEXT",
+  "glBindLightParameterEXT",
+  "glBindMaterialParameterEXT",
+  "glBindTexGenParameterEXT",
+  "glBindTextureUnitParameterEXT",
+  "glBindParameterEXT",
+  "glIsVariantEnabledEXT",
+  "glVertexStream1sATI",
+  "glVertexStream1svATI",
+  "glVertexStream1iATI",
+  "glVertexStream1ivATI",
+  "glVertexStream1fATI",
+  "glVertexStream1fvATI",
+  "glVertexStream1dATI",
+  "glVertexStream1dvATI",
+  "glVertexStream2sATI",
+  "glVertexStream2svATI",
+  "glVertexStream2iATI",
+  "glVertexStream2ivATI",
+  "glVertexStream2fATI",
+  "glVertexStream2fvATI",
+  "glVertexStream2dATI",
+  "glVertexStream2dvATI",
+  "glVertexStream3sATI",
+  "glVertexStream3svATI",
+  "glVertexStream3iATI",
+  "glVertexStream3ivATI",
+  "glVertexStream3fATI",
+  "glVertexStream3fvATI",
+  "glVertexStream3dATI",
+  "glVertexStream3dvATI",
+  "glVertexStream4sATI",
+  "glVertexStream4svATI",
+  "glVertexStream4iATI",
+  "glVertexStream4ivATI",
+  "glVertexStream4fATI",
+  "glVertexStream4fvATI",
+  "glVertexStream4dATI",
+  "glVertexStream4dvATI",
+  "glNormalStream3bATI",
+  "glNormalStream3bvATI",
+  "glNormalStream3sATI",
+  "glNormalStream3svATI",
+  "glNormalStream3iATI",
+  "glNormalStream3ivATI",
+  "glNormalStream3fATI",
+  "glNormalStream3fvATI",
+  "glNormalStream3dATI",
+  "glNormalStream3dvATI",
+  "glClientActiveVertexStreamATI",
+  "glVertexBlendEnviATI",
+  "glVertexBlendEnvfATI",
+  "glDrawElementArrayATI",
+  "glDrawRangeElementArrayATI",
+  "glIsOcclusionQueryNV",
+  "glBeginOcclusionQueryNV",
+  "glEndOcclusionQueryNV",
+  "glPointParameteriNV",
+  "glActiveStencilFaceEXT",
+  "glVertex2hNV",
+  "glVertex3hNV",
+  "glVertex4hNV",
+  "glNormal3hNV",
+  "glColor3hNV",
+  "glColor4hNV",
+  "glTexCoord1hNV",
+  "glTexCoord2hNV",
+  "glTexCoord3hNV",
+  "glTexCoord4hNV",
+  "glMultiTexCoord1hNV",
+  "glMultiTexCoord2hNV",
+  "glMultiTexCoord3hNV",
+  "glMultiTexCoord4hNV",
+  "glFogCoordhNV",
+  "glSecondaryColor3hNV",
+  "glVertexWeighthNV",
+  "glVertexAttrib1hNV",
+  "glVertexAttrib2hNV",
+  "glVertexAttrib3hNV",
+  "glVertexAttrib4hNV",
+  "glFlushPixelDataRangeNV",
+  "glPrimitiveRestartNV",
+  "glPrimitiveRestartIndexNV",
+  "glUnmapObjectBufferATI",
+  "glStencilOpSeparateATI",
+  "glStencilFuncSeparateATI",
+  "glVertexAttribArrayObjectATI",
+  "glDepthBoundsEXT",
+  "glBlendEquationSeparateEXT",
+  "glIsRenderbufferEXT",
+  "glBindRenderbufferEXT",
+  "glRenderbufferStorageEXT",
+  "glIsFramebufferEXT",
+  "glBindFramebufferEXT",
+  "glCheckFramebufferStatusEXT",
+  "glFramebufferTexture1DEXT",
+  "glFramebufferTexture2DEXT",
+  "glFramebufferTexture3DEXT",
+  "glFramebufferRenderbufferEXT",
+  "glGenerateMipmapEXT",
+};
+
diff -Nrup --exclude=CVS --exclude='*~' --exclude='config-host*' --exclude=Makefile --exclude=config.mak --exclude=config.h qemu.ori/target-i386/gl_func_perso.h qemu/target-i386/gl_func_perso.h
--- qemu.ori/target-i386/gl_func_perso.h	1970-01-01 01:00:00.000000000 +0100
+++ qemu/target-i386/gl_func_perso.h	2006-11-14 21:46:24.000000000 +0100
@@ -0,0 +1,93 @@
+/*
+ *  Hand-implemented GL/GLX API
+ * 
+ *  Copyright (c) 2006 Even Rouault
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+MAGIC_MACRO(_exit_process),
+MAGIC_MACRO(_moveResizeWindow),
+MAGIC_MACRO(_changeWindowState),
+MAGIC_MACRO(_needSync),
+
+MAGIC_MACRO(glXChooseVisual),
+MAGIC_MACRO(glXQueryExtensionsString),
+MAGIC_MACRO(glXQueryServerString),
+MAGIC_MACRO(glXCreateContext),
+MAGIC_MACRO(glXGetCurrentContext),
+MAGIC_MACRO(glXGetCurrentDrawable),
+MAGIC_MACRO(glXDestroyContext),
+MAGIC_MACRO(glXGetClientString),
+MAGIC_MACRO(glXQueryVersion),
+MAGIC_MACRO(glXMakeCurrent),
+MAGIC_MACRO(glXGetConfig),
+MAGIC_MACRO(glXChooseFBConfig),
+MAGIC_MACRO(glXCreatePbuffer),
+MAGIC_MACRO(glXGetVisualFromFBConfig),
+MAGIC_MACRO(glXUseXFont),
+MAGIC_MACRO(glXIsDirect),
+MAGIC_MACRO(glXGetProcAddress_fake),
+
+MAGIC_MACRO(glGetString),
+MAGIC_MACRO(glGetIntegerv),
+MAGIC_MACRO(glGetFloatv),
+MAGIC_MACRO(glGetConvolutionParameteriv),
+MAGIC_MACRO(glLightfv),
+MAGIC_MACRO(glMaterialfv),
+MAGIC_MACRO(glXSwapBuffers),
+MAGIC_MACRO(glXQueryExtension),
+MAGIC_MACRO(glLightModelfv),
+MAGIC_MACRO(glMap1f),
+MAGIC_MACRO(glMap1d),
+MAGIC_MACRO(glMap2f),
+MAGIC_MACRO(glMap2d),
+MAGIC_MACRO(glGenTextures),
+MAGIC_MACRO(glDeleteTextures),
+MAGIC_MACRO(glTexImage1D),
+MAGIC_MACRO(glTexImage2D),
+MAGIC_MACRO(glCompressedTexImage2DARB),
+MAGIC_MACRO(glTexSubImage2D),
+MAGIC_MACRO(glCompressedTexSubImage2DARB),
+MAGIC_MACRO(glTexImage3D),
+MAGIC_MACRO(glGetTexLevelParameteriv),
+MAGIC_MACRO(glFogfv),
+MAGIC_MACRO(glBitmap),
+MAGIC_MACRO(glTexGenfv),
+MAGIC_MACRO(glTexEnvfv),
+MAGIC_MACRO(glTexParameterfv),
+MAGIC_MACRO(glTexParameteriv),
+MAGIC_MACRO(glPointParameterfvARB),
+MAGIC_MACRO(glCallLists),
+MAGIC_MACRO(glGenProgramsARB),
+MAGIC_MACRO(glProgramStringARB),
+MAGIC_MACRO(glDeleteProgramsARB),
+MAGIC_MACRO(glShaderSourceARB),
+MAGIC_MACRO(glGetUniformLocationARB),
+MAGIC_MACRO(glGetVertexAttribfvARB),
+MAGIC_MACRO(glGetVertexAttribivARB),
+MAGIC_MACRO(glGetVertexAttribdvARB),
+MAGIC_MACRO(glGetProgramLocalParameterfvARB),
+MAGIC_MACRO(glGetProgramLocalParameterdvARB),
+MAGIC_MACRO(glGetProgramEnvParameterfvARB),
+MAGIC_MACRO(glGetProgramEnvParameterdvARB),
+MAGIC_MACRO(glGetProgramivARB),
+MAGIC_MACRO(glGetProgramStringARB),
+MAGIC_MACRO(glVertexPointer),
+MAGIC_MACRO(glNormalPointer),
+MAGIC_MACRO(glColorPointer),
+MAGIC_MACRO(glTexCoordPointer),
+MAGIC_MACRO(glDrawArrays),
+MAGIC_MACRO(glDrawElements),
diff -Nrup --exclude=CVS --exclude='*~' --exclude='config-host*' --exclude=Makefile --exclude=config.mak --exclude=config.h qemu.ori/target-i386/glgetv_cst.h qemu/target-i386/glgetv_cst.h
--- qemu.ori/target-i386/glgetv_cst.h	1970-01-01 01:00:00.000000000 +0100
+++ qemu/target-i386/glgetv_cst.h	2006-11-14 21:46:24.000000000 +0100
@@ -0,0 +1,250 @@
+struct token_name {
+  GLuint count;
+  GLenum token;
+  const char *name;
+};
+#define MAKE_TOKEN_NAME(x)   x, #x
+static const struct token_name limits[] = {
+  { 1, MAKE_TOKEN_NAME(GL_ACCUM_ALPHA_BITS) },
+  { 1, MAKE_TOKEN_NAME(GL_ACCUM_BLUE_BITS) },
+  { 4, MAKE_TOKEN_NAME(GL_ACCUM_CLEAR_VALUE) },
+  { 1, MAKE_TOKEN_NAME(GL_ACCUM_GREEN_BITS) },
+  { 1, MAKE_TOKEN_NAME(GL_ACCUM_RED_BITS) },
+  { 1, MAKE_TOKEN_NAME(GL_ACTIVE_TEXTURE_ARB) },
+  { 1, MAKE_TOKEN_NAME(GL_ALPHA_BIAS) },
+  { 1, MAKE_TOKEN_NAME(GL_ALPHA_BITS) },
+  { 1, MAKE_TOKEN_NAME(GL_ALPHA_SCALE) },
+  { 1, MAKE_TOKEN_NAME(GL_ALPHA_TEST) },
+  { 1, MAKE_TOKEN_NAME(GL_ALPHA_TEST_FUNC) },
+  { 1, MAKE_TOKEN_NAME(GL_ALPHA_TEST_REF) },
+  { 1, MAKE_TOKEN_NAME(GL_ATTRIB_STACK_DEPTH) },
+  { 1, MAKE_TOKEN_NAME(GL_AUTO_NORMAL) },
+  { 1, MAKE_TOKEN_NAME(GL_AUX_BUFFERS) },
+  { 1, MAKE_TOKEN_NAME(GL_BLEND) },
+  { 4, MAKE_TOKEN_NAME(GL_BLEND_COLOR) },
+  { 1, MAKE_TOKEN_NAME(GL_BLEND_DST) },
+  { 1, MAKE_TOKEN_NAME(GL_BLEND_EQUATION) },
+  { 1, MAKE_TOKEN_NAME(GL_BLEND_SRC) },
+  { 1, MAKE_TOKEN_NAME(GL_BLUE_BIAS) },
+  { 1, MAKE_TOKEN_NAME(GL_BLUE_BITS) },
+  { 1, MAKE_TOKEN_NAME(GL_BLUE_SCALE) },
+  { 1, MAKE_TOKEN_NAME(GL_CLIP_PLANE0) },
+  { 1, MAKE_TOKEN_NAME(GL_CLIP_PLANE1) },
+  { 1, MAKE_TOKEN_NAME(GL_CLIP_PLANE2) },
+  { 1, MAKE_TOKEN_NAME(GL_CLIP_PLANE3) },
+  { 1, MAKE_TOKEN_NAME(GL_CLIP_PLANE4) },
+  { 1, MAKE_TOKEN_NAME(GL_COLOR_ARRAY) },
+  { 1, MAKE_TOKEN_NAME(GL_COLOR_ARRAY_SIZE) },
+  { 1, MAKE_TOKEN_NAME(GL_COLOR_ARRAY_STRIDE) },
+  { 1, MAKE_TOKEN_NAME(GL_COLOR_ARRAY_TYPE) },
+  { 4, MAKE_TOKEN_NAME(GL_COLOR_CLEAR_VALUE) },
+  { 1, MAKE_TOKEN_NAME(GL_COLOR_LOGIC_OP) },
+  { 1, MAKE_TOKEN_NAME(GL_COLOR_MATERIAL) },
+  { 1, MAKE_TOKEN_NAME(GL_COLOR_MATERIAL_FACE) },
+  { 16, MAKE_TOKEN_NAME(GL_COLOR_MATRIX) },
+  { 1, MAKE_TOKEN_NAME(GL_COLOR_TABLE) },
+  { 4, MAKE_TOKEN_NAME(GL_COLOR_WRITEMASK) },
+  { 1, MAKE_TOKEN_NAME(GL_CONVOLUTION_1D) },
+  { 1, MAKE_TOKEN_NAME(GL_CONVOLUTION_2D) },
+  { 1, MAKE_TOKEN_NAME(GL_CULL_FACE) },
+  { 1, MAKE_TOKEN_NAME(GL_CULL_FACE_MODE) },
+  { 4, MAKE_TOKEN_NAME(GL_CURRENT_COLOR) },
+  { 1, MAKE_TOKEN_NAME(GL_CURRENT_INDEX) },
+  { 3, MAKE_TOKEN_NAME(GL_CURRENT_NORMAL) },
+  { 4, MAKE_TOKEN_NAME(GL_CURRENT_RASTER_COLOR) },
+  { 1, MAKE_TOKEN_NAME(GL_CURRENT_RASTER_INDEX) },
+  { 1, MAKE_TOKEN_NAME(GL_DEPTH_BIAS) },
+  { 1, MAKE_TOKEN_NAME(GL_DEPTH_BITS) },
+  { 1, MAKE_TOKEN_NAME(GL_DEPTH_CLEAR_VALUE) },
+  { 1, MAKE_TOKEN_NAME(GL_DEPTH_FUNC) },
+  { 2, MAKE_TOKEN_NAME(GL_DEPTH_RANGE) },
+  { 1, MAKE_TOKEN_NAME(GL_DEPTH_SCALE) },
+  { 1, MAKE_TOKEN_NAME(GL_DEPTH_TEST) },
+  { 1, MAKE_TOKEN_NAME(GL_DEPTH_WRITEMASK) },
+  { 1, MAKE_TOKEN_NAME(GL_DITHER) },
+  { 1, MAKE_TOKEN_NAME(GL_DOUBLEBUFFER) },
+  { 1, MAKE_TOKEN_NAME(GL_DRAW_BUFFER) },
+  { 1, MAKE_TOKEN_NAME(GL_EDGE_FLAG) },
+  { 1, MAKE_TOKEN_NAME(GL_EDGE_FLAG_ARRAY) },
+  { 1, MAKE_TOKEN_NAME(GL_FEEDBACK_BUFFER_SIZE) },
+  { 1, MAKE_TOKEN_NAME(GL_FEEDBACK_BUFFER_TYPE) },
+  { 1, MAKE_TOKEN_NAME(GL_FOG) },
+  { 4, MAKE_TOKEN_NAME(GL_FOG_COLOR) },
+  { 1, MAKE_TOKEN_NAME(GL_FOG_DENSITY) },
+  { 1, MAKE_TOKEN_NAME(GL_FOG_END) },
+  { 1, MAKE_TOKEN_NAME(GL_FOG_HINT) },
+  { 1, MAKE_TOKEN_NAME(GL_FOG_INDEX) },
+  { 1, MAKE_TOKEN_NAME(GL_FOG_MODE) },
+  { 1, MAKE_TOKEN_NAME(GL_FOG_START) },
+  { 1, MAKE_TOKEN_NAME(GL_FRONT_FACE) },
+  { 1, MAKE_TOKEN_NAME(GL_GREEN_BIAS) },
+  { 1, MAKE_TOKEN_NAME(GL_GREEN_BITS) },
+  { 1, MAKE_TOKEN_NAME(GL_GREEN_SCALE) },
+  { 1, MAKE_TOKEN_NAME(GL_HISTOGRAM) },
+  { 1, MAKE_TOKEN_NAME(GL_INDEX_ARRAY) },
+  { 1, MAKE_TOKEN_NAME(GL_INDEX_ARRAY_STRIDE) },
+  { 1, MAKE_TOKEN_NAME(GL_INDEX_ARRAY_TYPE) },
+  { 1, MAKE_TOKEN_NAME(GL_INDEX_BITS) },
+  { 1, MAKE_TOKEN_NAME(GL_INDEX_CLEAR_VALUE) },
+  { 1, MAKE_TOKEN_NAME(GL_INDEX_LOGIC_OP) },
+  { 1, MAKE_TOKEN_NAME(GL_INDEX_MODE) },
+  { 1, MAKE_TOKEN_NAME(GL_INDEX_OFFSET) },
+  { 1, MAKE_TOKEN_NAME(GL_INDEX_SHIFT) },
+  { 1, MAKE_TOKEN_NAME(GL_INDEX_WRITEMASK) },
+  { 1, MAKE_TOKEN_NAME(GL_LIGHT0) },
+  { 1, MAKE_TOKEN_NAME(GL_LIGHT1) },
+  { 1, MAKE_TOKEN_NAME(GL_LIGHT2) },
+  { 1, MAKE_TOKEN_NAME(GL_LIGHT3) },
+  { 1, MAKE_TOKEN_NAME(GL_LIGHT4) },
+  { 1, MAKE_TOKEN_NAME(GL_LIGHT5) },
+  { 1, MAKE_TOKEN_NAME(GL_LIGHT6) },
+  { 1, MAKE_TOKEN_NAME(GL_LIGHTING) },
+  { 4, MAKE_TOKEN_NAME(GL_LIGHT_MODEL_AMBIENT) },
+  { 1, MAKE_TOKEN_NAME(GL_LIGHT_MODEL_TWO_SIDE) },
+  { 1, MAKE_TOKEN_NAME(GL_LINE_SMOOTH) },
+  { 1, MAKE_TOKEN_NAME(GL_LINE_SMOOTH_HINT) },
+  { 1, MAKE_TOKEN_NAME(GL_LINE_STIPPLE) },
+  { 1, MAKE_TOKEN_NAME(GL_LINE_STIPPLE_PATTERN) },
+  { 1, MAKE_TOKEN_NAME(GL_LINE_STIPPLE_REPEAT) },
+  { 1, MAKE_TOKEN_NAME(GL_LINE_WIDTH) },
+  { 2, MAKE_TOKEN_NAME(GL_LINE_WIDTH_RANGE) },
+  { 1, MAKE_TOKEN_NAME(GL_LIST_BASE) },
+  { 1, MAKE_TOKEN_NAME(GL_LIST_INDEX) },
+  { 1, MAKE_TOKEN_NAME(GL_LIST_MODE) },
+  { 1, MAKE_TOKEN_NAME(GL_LOGIC_OP_MODE) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP1_COLOR_4) },
+  { 2, MAKE_TOKEN_NAME(GL_MAP1_GRID_DOMAIN) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP1_GRID_SEGMENTS) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP1_INDEX) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP1_NORMAL) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP1_TEXTURE_COORD_1) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP1_TEXTURE_COORD_2) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP1_TEXTURE_COORD_3) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP1_TEXTURE_COORD_4) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP1_VERTEX_3) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP1_VERTEX_4) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP2_COLOR_4) },
+  { 4, MAKE_TOKEN_NAME(GL_MAP2_GRID_DOMAIN) },
+  { 2, MAKE_TOKEN_NAME(GL_MAP2_GRID_SEGMENTS) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP2_INDEX) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP2_NORMAL) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP2_TEXTURE_COORD_1) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP2_TEXTURE_COORD_2) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP2_TEXTURE_COORD_3) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP2_TEXTURE_COORD_4) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP2_VERTEX_3) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP2_VERTEX_4) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP_COLOR) },
+  { 1, MAKE_TOKEN_NAME(GL_MAP_STENCIL) },
+  { 1, MAKE_TOKEN_NAME(GL_MATRIX_MODE) },
+  { 1, MAKE_TOKEN_NAME(GL_MAX_3D_TEXTURE_SIZE) },
+  { 1, MAKE_TOKEN_NAME(GL_MAX_CLIP_PLANES) },
+  { 1, MAKE_TOKEN_NAME(GL_MAX_ELEMENTS_INDICES) },
+  { 1, MAKE_TOKEN_NAME(GL_MAX_ELEMENTS_VERTICES) },
+  { 1, MAKE_TOKEN_NAME(GL_MAX_EVAL_ORDER) },
+  { 1, MAKE_TOKEN_NAME(GL_MAX_LIGHTS) },
+  { 1, MAKE_TOKEN_NAME(GL_MAX_LIST_NESTING) },
+  { 1, MAKE_TOKEN_NAME(GL_MAX_NAME_STACK_DEPTH) },
+  { 1, MAKE_TOKEN_NAME(GL_MAX_PIXEL_MAP_TABLE) },
+  { 1, MAKE_TOKEN_NAME(GL_MAX_TEXTURE_SIZE) },
+  { 1, MAKE_TOKEN_NAME(GL_MAX_TEXTURE_UNITS_ARB) },
+  { 2, MAKE_TOKEN_NAME(GL_MAX_VIEWPORT_DIMS) },
+  { 1, MAKE_TOKEN_NAME(GL_MINMAX) },
+  { 16, MAKE_TOKEN_NAME(GL_MODELVIEW_MATRIX) },
+  { 1, MAKE_TOKEN_NAME(GL_MODELVIEW_STACK_DEPTH) },
+  { 1, MAKE_TOKEN_NAME(GL_NAME_STACK_DEPTH) },
+  { 1, MAKE_TOKEN_NAME(GL_NORMAL_ARRAY) },
+  { 1, MAKE_TOKEN_NAME(GL_NORMAL_ARRAY_STRIDE) },
+  { 1, MAKE_TOKEN_NAME(GL_NORMAL_ARRAY_TYPE) },
+  { 1, MAKE_TOKEN_NAME(GL_NORMALIZE) },
+  { 1, MAKE_TOKEN_NAME(GL_PACK_ALIGNMENT) },
+  { 1, MAKE_TOKEN_NAME(GL_PACK_IMAGE_HEIGHT) },
+  { 1, MAKE_TOKEN_NAME(GL_PACK_LSB_FIRST) },
+  { 1, MAKE_TOKEN_NAME(GL_PACK_ROW_LENGTH) },
+  { 1, MAKE_TOKEN_NAME(GL_PACK_SKIP_IMAGES) },
+  { 1, MAKE_TOKEN_NAME(GL_PACK_SKIP_PIXELS) },
+  { 1, MAKE_TOKEN_NAME(GL_PACK_SKIP_ROWS) },
+  { 1, MAKE_TOKEN_NAME(GL_PACK_SWAP_BYTES) },
+  { 1, MAKE_TOKEN_NAME(GL_PIXEL_MAP_A_TO_A_SIZE) },
+  { 1, MAKE_TOKEN_NAME(GL_PIXEL_MAP_B_TO_B_SIZE) },
+  { 1, MAKE_TOKEN_NAME(GL_PIXEL_MAP_G_TO_G_SIZE) },
+  { 1, MAKE_TOKEN_NAME(GL_PIXEL_MAP_I_TO_A_SIZE) },
+  { 1, MAKE_TOKEN_NAME(GL_PIXEL_MAP_I_TO_B_SIZE) },
+  { 1, MAKE_TOKEN_NAME(GL_PIXEL_MAP_I_TO_G_SIZE) },
+  { 1, MAKE_TOKEN_NAME(GL_PIXEL_MAP_I_TO_I_SIZE) },
+  { 1, MAKE_TOKEN_NAME(GL_PIXEL_MAP_I_TO_R_SIZE) },
+  { 1, MAKE_TOKEN_NAME(GL_PIXEL_MAP_R_TO_R_SIZE) },
+  { 1, MAKE_TOKEN_NAME(GL_PIXEL_MAP_S_TO_S_SIZE) },
+  { 1, MAKE_TOKEN_NAME(GL_POINT_SIZE) },
+  { 2, MAKE_TOKEN_NAME(GL_POINT_SIZE_RANGE) },
+  { 1, MAKE_TOKEN_NAME(GL_POINT_SMOOTH) },
+  { 1, MAKE_TOKEN_NAME(GL_POINT_SMOOTH_HINT) },
+  { 2, MAKE_TOKEN_NAME(GL_POLYGON_MODE) },
+  { 1, MAKE_TOKEN_NAME(GL_POLYGON_OFFSET_FACTOR) },
+  { 1, MAKE_TOKEN_NAME(GL_POLYGON_OFFSET_UNITS) },
+  { 1, MAKE_TOKEN_NAME(GL_POLYGON_OFFSET_FILL) },
+  { 1, MAKE_TOKEN_NAME(GL_POLYGON_OFFSET_LINE) },
+  { 1, MAKE_TOKEN_NAME(GL_POLYGON_OFFSET_POINT) },
+  { 1, MAKE_TOKEN_NAME(GL_POLYGON_SMOOTH) },
+  { 1, MAKE_TOKEN_NAME(GL_POLYGON_SMOOTH_HINT) },
+  { 1, MAKE_TOKEN_NAME(GL_POLYGON_STIPPLE) },
+  { 16, MAKE_TOKEN_NAME(GL_PROJECTION_MATRIX) },
+  { 1, MAKE_TOKEN_NAME(GL_READ_BUFFER) },
+  { 1, MAKE_TOKEN_NAME(GL_RED_BIAS) },
+  { 1, MAKE_TOKEN_NAME(GL_RED_BITS) },
+  { 1, MAKE_TOKEN_NAME(GL_RED_SCALE) },
+  { 1, MAKE_TOKEN_NAME(GL_RENDER_MODE) },
+  { 1, MAKE_TOKEN_NAME(GL_RESCALE_NORMAL) },
+  { 1, MAKE_TOKEN_NAME(GL_RGBA_MODE) },
+  { 4, MAKE_TOKEN_NAME(GL_SCISSOR_BOX) },
+  { 1, MAKE_TOKEN_NAME(GL_SCISSOR_TEST) },
+  { 1, MAKE_TOKEN_NAME(GL_SEPARABLE_2D) },
+  { 1, MAKE_TOKEN_NAME(GL_SHADE_MODEL) },
+  { 1, MAKE_TOKEN_NAME(GL_STENCIL_BITS) },
+  { 1, MAKE_TOKEN_NAME(GL_STENCIL_CLEAR_VALUE) },
+  { 1, MAKE_TOKEN_NAME(GL_STENCIL_FAIL) },
+  { 1, MAKE_TOKEN_NAME(GL_STENCIL_FUNC) },
+  { 1, MAKE_TOKEN_NAME(GL_STENCIL_REF) },
+  { 1, MAKE_TOKEN_NAME(GL_STENCIL_TEST) },
+  { 1, MAKE_TOKEN_NAME(GL_STENCIL_VALUE_MASK) },
+  { 1, MAKE_TOKEN_NAME(GL_STENCIL_WRITEMASK) },
+  { 1, MAKE_TOKEN_NAME(GL_STEREO) },
+  { 1, MAKE_TOKEN_NAME(GL_SUBPIXEL_BITS) },
+  { 1, MAKE_TOKEN_NAME(GL_TEXTURE_1D) },
+  { 1, MAKE_TOKEN_NAME(GL_TEXTURE_BINDING_1D) },
+  { 1, MAKE_TOKEN_NAME(GL_TEXTURE_2D) },
+  { 1, MAKE_TOKEN_NAME(GL_TEXTURE_BINDING_2D) },
+  { 1, MAKE_TOKEN_NAME(GL_TEXTURE_3D) },
+  { 1, MAKE_TOKEN_NAME(GL_TEXTURE_BINDING_3D) },
+  { 1, MAKE_TOKEN_NAME(GL_TEXTURE_COORD_ARRAY) },
+  { 1, MAKE_TOKEN_NAME(GL_TEXTURE_GEN_Q) },
+  { 1, MAKE_TOKEN_NAME(GL_TEXTURE_GEN_R) },
+  { 1, MAKE_TOKEN_NAME(GL_TEXTURE_GEN_S) },
+  { 1, MAKE_TOKEN_NAME(GL_TEXTURE_GEN_T) },
+  { 16, MAKE_TOKEN_NAME(GL_TEXTURE_MATRIX) },
+  { 1, MAKE_TOKEN_NAME(GL_TEXTURE_STACK_DEPTH) },
+  { 1, MAKE_TOKEN_NAME(GL_UNPACK_ALIGNMENT) },
+  { 1, MAKE_TOKEN_NAME(GL_UNPACK_IMAGE_HEIGHT) },
+  { 1, MAKE_TOKEN_NAME(GL_UNPACK_LSB_FIRST) },
+  { 1, MAKE_TOKEN_NAME(GL_UNPACK_ROW_LENGTH) },
+  { 1, MAKE_TOKEN_NAME(GL_UNPACK_SKIP_IMAGES) },
+  { 1, MAKE_TOKEN_NAME(GL_UNPACK_SKIP_PIXELS) },
+  { 1, MAKE_TOKEN_NAME(GL_UNPACK_SKIP_ROWS) },
+  { 1, MAKE_TOKEN_NAME(GL_UNPACK_SWAP_BYTES) },
+  { 1, MAKE_TOKEN_NAME(GL_VERTEX_ARRAY) },
+  { 1, MAKE_TOKEN_NAME(GL_VERTEX_ARRAY_SIZE) },
+  { 1, MAKE_TOKEN_NAME(GL_VERTEX_ARRAY_STRIDE) },
+  { 1, MAKE_TOKEN_NAME(GL_VERTEX_ARRAY_TYPE) },
+  { 4, MAKE_TOKEN_NAME(GL_VIEWPORT) },
+  { 1, MAKE_TOKEN_NAME(GL_ZOOM_X) },
+  { 1, MAKE_TOKEN_NAME(GL_ZOOM_Y) },
+  { 2, MAKE_TOKEN_NAME(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT) },
+  { 1, MAKE_TOKEN_NAME(GL_MAX_GENERAL_COMBINERS_NV) },
+  { 1, MAKE_TOKEN_NAME(GL_MAX_TEXTURE_LOD_BIAS) },
+  { 1, MAKE_TOKEN_NAME(GL_MAX_TEXTURE_LOD_BIAS_EXT) },
+  { 1, MAKE_TOKEN_NAME(GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB) },
+  { 1, MAKE_TOKEN_NAME(GL_MAX_RECTANGLE_TEXTURE_SIZE_NV) },
+  { 1, MAKE_TOKEN_NAME(GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB) },
+  { 1, MAKE_TOKEN_NAME(GL_PROGRAM_ERROR_POSITION_ARB) },
+  { 0, (GLenum) 0, NULL }
+};
diff -Nrup --exclude=CVS --exclude='*~' --exclude='config-host*' --exclude=Makefile --exclude=config.mak --exclude=config.h qemu.ori/target-i386/helper.c qemu/target-i386/helper.c
--- qemu.ori/target-i386/helper.c	2006-11-14 00:18:10.000000000 +0100
+++ qemu/target-i386/helper.c	2006-11-14 21:46:24.000000000 +0100
@@ -3782,6 +3782,16 @@ void update_fp_status(void)
 #endif
 }
 
+void helper_opengl(CPUState *env);
+
+void helper_int99()
+{
+  regs_to_env();
+  helper_opengl(env);
+  env_to_regs();
+}
+
+
 #if !defined(CONFIG_USER_ONLY) 
 
 #define MMUSUFFIX _mmu
diff -Nrup --exclude=CVS --exclude='*~' --exclude='config-host*' --exclude=Makefile --exclude=config.mak --exclude=config.h qemu.ori/target-i386/helper_opengl.c qemu/target-i386/helper_opengl.c
--- qemu.ori/target-i386/helper_opengl.c	1970-01-01 01:00:00.000000000 +0100
+++ qemu/target-i386/helper_opengl.c	2006-11-14 21:57:41.000000000 +0100
@@ -0,0 +1,1764 @@
+/*
+ *  Host-side implementation of GL/GLX API
+ * 
+ *  Copyright (c) 2006 Even Rouault
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <stdio.h>
+#include "exec.h"
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <GL/gl.h>
+#include <GL/glx.h>
+
+#include <stdlib.h>
+#include <assert.h>
+#include <string.h>
+
+#include <GL/gl.h>
+#include <GL/glx.h>
+
+#include "opengl_func.h"
+
+#include "glgetv_cst.h"
+
+#define GET_EXT_PTR(type, func_name, args_decl) \
+      static int detect = 0; \
+      static type(*ptr_func)args_decl = NULL; \
+      if (detect == 0) \
+{ \
+        detect = 1; \
+        ptr_func = glXGetProcAddress((const GLubyte*)#func_name); \
+        assert (ptr_func); \
+}
+
+static inline void* get_phys_mem_addr(const CPUState *env, target_ulong addr)
+{
+  int is_user, index;
+  index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
+  is_user = ((env->hflags & HF_CPL_MASK) == 3);
+  if (is_user == 0)
+  {
+    fprintf(stderr, "not in userland !!!\n");
+    return NULL;
+  }
+  if (__builtin_expect(env->tlb_table[is_user][index].addr_code != 
+      (addr & TARGET_PAGE_MASK), 0))
+  {
+    target_ulong ret = cpu_get_phys_page_debug(env, addr);
+    if (ret == -1)
+    {
+      fprintf(stderr, "cpu_get_phys_page_debug(env, %p) == %p\n", addr, ret);
+      fprintf(stderr, "not in phys mem %p (%p %p)\n", addr, env->tlb_table[is_user][index].addr_code, addr & TARGET_PAGE_MASK);
+      fprintf(stderr, "cpu_x86_handle_mmu_fault = %d\n",
+              cpu_x86_handle_mmu_fault(env, addr, 0, 1, 1));
+      return NULL;
+    }
+    else
+    {
+      if (ret + TARGET_PAGE_SIZE <= phys_ram_size)
+      {
+        return phys_ram_base + ret + (((target_ulong)addr) & (TARGET_PAGE_SIZE - 1));
+      }
+      else
+      {
+        fprintf(stderr, "cpu_get_phys_page_debug(env, %p) == %p\n", addr, ret);
+        fprintf(stderr, "ret=%p phys_ram_size=%p\n", ret, phys_ram_size);
+        return NULL;
+      }
+    }
+  }
+  else
+  {
+    return (void*)(addr + env->tlb_table[is_user][index].addend);
+  }
+}
+
+#define MIN(a,b) (((a)<(b)) ? (a) : (b))
+
+enum
+{
+  NOT_MAPPED,
+  MAPPED_CONTIGUOUS,
+  MAPPED_NOT_CONTIGUOUS
+};
+
+#define TARGET_ADDR_LOW_ALIGN(x)  ((target_ulong)(x) & ~(TARGET_PAGE_SIZE - 1))
+
+/* Return NOT_MAPPED if a page is not mapped into target physical memory */
+/*        MAPPED_CONTIGUOUS if all pages are mapped into target physical memory and contiguous */
+/*        MAPPED_NOT_CONTIGUOUS if all pages are mapped into target physical memory but not contiguous */
+static int get_target_mem_state(const CPUState *env, const void* target_addr, int len)
+{
+  void* aligned_target_addr = TARGET_ADDR_LOW_ALIGN(target_addr);
+  int to_end_page = (long)aligned_target_addr + TARGET_PAGE_SIZE - (long)target_addr;
+  int ret = MAPPED_CONTIGUOUS;
+  
+  if (aligned_target_addr != target_addr)
+  {
+    void* phys_addr = get_phys_mem_addr(env, aligned_target_addr);
+    void* last_phys_addr = phys_addr;
+    if (phys_addr == 0)
+    {
+      return NOT_MAPPED;
+    }
+    if (len > to_end_page)
+    {
+      len -= to_end_page;
+      aligned_target_addr += TARGET_PAGE_SIZE;
+      int i;
+      for(i=0;i<len;i+=TARGET_PAGE_SIZE)
+      {
+        void* phys_addr = get_phys_mem_addr(env, aligned_target_addr + i);
+        if (phys_addr == 0)
+        {
+          return NOT_MAPPED;
+        }
+        if (phys_addr != last_phys_addr + TARGET_PAGE_SIZE)
+          ret = MAPPED_NOT_CONTIGUOUS;
+        last_phys_addr = phys_addr;
+      }
+    }
+  }
+  else
+  {
+    void* last_phys_addr = NULL;
+    int i;
+    for(i=0;i<len;i+=TARGET_PAGE_SIZE)
+    {
+      void* phys_addr = get_phys_mem_addr(env, target_addr + i);
+      if (phys_addr == 0)
+      {
+        return NOT_MAPPED;
+      }
+      if (i != 0 && phys_addr != last_phys_addr + TARGET_PAGE_SIZE)
+          ret = MAPPED_NOT_CONTIGUOUS;
+      last_phys_addr = phys_addr;
+    }
+  }
+  return ret;
+}
+
+/* copy len bytes from host memory at addr host_addr to target memory at logical addr target_addr */
+/* Returns 1 if successfull, 0 if some target pages are not mapped into target physical memory */
+static int memcpy_host_to_target(const CPUState *env, target_ulong target_addr, const void* host_addr, int len)
+{
+  int i;
+  void* aligned_target_addr = TARGET_ADDR_LOW_ALIGN(target_addr);
+  int to_end_page = (long)aligned_target_addr + TARGET_PAGE_SIZE - (long)target_addr;
+  int ret = get_target_mem_state(env, target_addr, len);
+  if (ret == NOT_MAPPED)
+  {
+    return 0;
+  }
+  
+  if (ret == MAPPED_CONTIGUOUS)
+  {
+    void *phys_addr = get_phys_mem_addr(env, target_addr);
+    memcpy(phys_addr, host_addr, len);
+  }
+  else
+  {
+    if (aligned_target_addr != target_addr)
+    {
+      void* phys_addr = get_phys_mem_addr(env, target_addr);
+      memcpy(phys_addr, host_addr, MIN(len, to_end_page));
+      if (len <= to_end_page)
+      {
+        return 1;
+      }
+      len -= to_end_page;
+      host_addr += to_end_page;
+      target_addr = aligned_target_addr + TARGET_PAGE_SIZE;
+    }
+    for(i=0;i<len;i+=TARGET_PAGE_SIZE)
+    {
+      void *phys_addr = get_phys_mem_addr(env, target_addr + i);
+      memcpy(phys_addr, host_addr + i, (i + TARGET_PAGE_SIZE < len) ? TARGET_PAGE_SIZE : len & (TARGET_PAGE_SIZE - 1));
+    }
+  }
+  
+  return 1;
+}
+
+static int memcpy_target_to_host(const CPUState *env, void* host_addr, target_ulong target_addr, int len)
+{
+  int i;
+  void* aligned_target_addr = TARGET_ADDR_LOW_ALIGN(target_addr);
+  int to_end_page = (long)aligned_target_addr + TARGET_PAGE_SIZE - (long)target_addr;
+  int ret = get_target_mem_state(env, target_addr, len);
+  if (ret == NOT_MAPPED)
+  {
+    return 0;
+  }
+  
+  if (ret == MAPPED_CONTIGUOUS)
+  {
+    void *phys_addr = get_phys_mem_addr(env, target_addr);
+    memcpy(host_addr, phys_addr, len);
+  }
+  else
+  {
+    if (aligned_target_addr != target_addr)
+    {
+      void* phys_addr = get_phys_mem_addr(env, target_addr);
+      memcpy(host_addr, phys_addr, MIN(len, to_end_page));
+      if (len <= to_end_page)
+      {
+        return 1;
+      }
+      len -= to_end_page;
+      host_addr += to_end_page;
+      target_addr = aligned_target_addr + TARGET_PAGE_SIZE;
+    }
+    for(i=0;i<len;i+=TARGET_PAGE_SIZE)
+    {
+      void *phys_addr = get_phys_mem_addr(env, target_addr + i);
+      memcpy(host_addr + i, phys_addr, (i + TARGET_PAGE_SIZE < len) ? TARGET_PAGE_SIZE : len & (TARGET_PAGE_SIZE - 1));
+    }
+  }
+  
+  return 1;
+}
+
+static int host_offset = 0;
+static void reset_host_offset()
+{
+  host_offset = 0;
+}
+
+/* Return a host pointer with the content of [target_addr, target_addr + len bytes[ */
+/* Do not free or modify */
+static const void* get_host_read_pointer(const CPUState *env, const target_ulong target_addr, int len)
+{
+  int ret = get_target_mem_state(env, target_addr, len);
+  if (ret == NOT_MAPPED)
+  {
+    return NULL;
+  }
+  else if (ret == MAPPED_CONTIGUOUS)
+  {
+    return get_phys_mem_addr(env, target_addr);
+  }
+  else
+  {
+    static int host_mem_size = 0;
+    static void* host_mem = NULL;
+    static void* ret;
+    if (host_mem_size < host_offset + len)
+    {
+      host_mem_size = 2 * host_mem_size + host_offset + len;
+      host_mem = realloc(host_mem, host_mem_size);
+    }
+    ret = host_mem + host_offset;
+    assert(memcpy_target_to_host(env, ret, target_addr, len));
+    host_offset += len;
+    return ret;
+  }
+}
+
+
+static Display* dpy = NULL;
+static int display_function_call = 0;
+static char* ret_string = NULL;
+
+static XVisualInfo* get_visual()
+{
+  int attribDouble[] = {
+    GLX_RGBA,
+    GLX_RED_SIZE, 1,
+    GLX_GREEN_SIZE, 1,
+    GLX_BLUE_SIZE, 1,
+    GLX_DOUBLEBUFFER,
+    None
+  };
+  static XVisualInfo* vis = NULL;
+  if (vis == NULL)
+    vis = glXChooseVisual(dpy, 0, attribDouble);  
+  return vis;
+}
+static Window create_window( const char *name, int x, int y, int width, int height)
+{
+  int scrnum;
+  XSetWindowAttributes attr;
+  unsigned long mask;
+  Window root;
+  Window win;
+  XVisualInfo *vis;
+
+  scrnum = DefaultScreen( dpy );
+  root = RootWindow( dpy, scrnum );
+  vis = get_visual();
+  
+  /* window attributes */
+  attr.background_pixel = 0;
+  attr.border_pixel = 0;
+  attr.colormap = XCreateColormap( dpy, root, vis->visual, AllocNone);
+  attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask;
+  attr.override_redirect = 0; //fullscreen;
+  mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask | CWOverrideRedirect;
+
+  win = XCreateWindow( dpy, root, 0, 0, width, height,
+                       0, vis->depth, InputOutput,
+                       vis->visual, mask, &attr );
+
+  /* set hints and properties */
+  {
+    XSizeHints sizehints;
+    sizehints.x = x;
+    sizehints.y = y;
+    sizehints.width  = width;
+    sizehints.height = height;
+    sizehints.flags = USSize | USPosition;
+    XSetWMNormalHints(dpy, win, &sizehints);
+    XSetStandardProperties(dpy, win, name, name,
+                           None, (char **)NULL, 0, &sizehints);
+  }
+  
+  /*
+  int loop = 1;
+  while (loop) {
+    while (XPending(dpy) > 0) {
+      XEvent event;
+      XNextEvent(dpy, &event);
+      switch (event.type) {
+        case CreateNotify:
+        {
+          if (((XCreateWindowEvent*)&event)->window == win)
+          {
+            loop = 0;
+          }
+          break;
+        }
+      }
+    }
+}*/
+  
+  return win;
+}
+
+
+typedef struct
+{
+  void* key;
+  void* value;
+} Assoc;
+
+
+#define MAX_HANDLED_PROCESS 100
+#define MAX_ASSOC_SIZE 100
+
+typedef struct
+{
+  int process_id;
+  
+  int next_available_context_number;
+
+  void* vertexPointer;
+  void* normalPointer;
+  void* colorPointer;
+  void* texCoordPointer;
+  int vertexPointerStride;
+
+  int serverActiveTexture;
+  int clientActiveTexture;
+  int pointerArraysEnable[6];
+  int texCoordPointerEnable[16];
+
+  Assoc association_fakecontext_glxcontext[MAX_ASSOC_SIZE];
+  Assoc association_clientdrawable_serverdrawable[MAX_ASSOC_SIZE];
+} ProcessStruct;
+
+ProcessStruct processTab[MAX_HANDLED_PROCESS];
+
+int last_process_id = 0;
+
+target_ulong args[50];
+
+
+#ifdef SYSTEMATIC_ERROR_CHECK
+int last_error = 0;
+#endif
+
+
+#define ARG_TO_CHAR(x)                (char)(x)
+#define ARG_TO_UNSIGNED_CHAR(x)       (unsigned char)(x)
+#define ARG_TO_SHORT(x)               (short)(x)
+#define ARG_TO_UNSIGNED_SHORT(x)      (unsigned short)(x)
+#define ARG_TO_INT(x)                 (int)(x)
+#define ARG_TO_UNSIGNED_INT(x)        (unsigned int)(x)
+#define ARG_TO_FLOAT(x)               (*(float*)&(x))
+#define ARG_TO_DOUBLE(x)              (*(double*)(x))
+#define ARG_TO_FLOAT16_ARRAY(x)       (float*)(x)
+#define ARG_TO_DOUBLE16_ARRAY(x)      (double*)(x)
+
+#include "server_stub.c"
+
+int do_function_call(int func_number, int pid);
+
+
+static const int attribDouble[] = {
+  GLX_RGBA,
+  GLX_RED_SIZE, 1,
+  GLX_GREEN_SIZE, 1,
+  GLX_BLUE_SIZE, 1,
+  GLX_DOUBLEBUFFER,
+  None
+};
+
+void* get_association_fakecontext_glxcontext(ProcessStruct* process, void* fakecontext)
+{
+  int i;
+  for(i=0;i < MAX_ASSOC_SIZE && process->association_fakecontext_glxcontext[i].key != NULL;i++)
+  {
+    if (process->association_fakecontext_glxcontext[i].key == fakecontext)
+      return process->association_fakecontext_glxcontext[i].value;
+  }
+  return NULL;
+}
+void set_association_fakecontext_glxcontext(ProcessStruct* process, void* fakecontext, void* glxcontext)
+{
+  int i;
+  for(i=0;i < MAX_ASSOC_SIZE && process->association_fakecontext_glxcontext[i].key != NULL;i++)
+  {
+    if (process->association_fakecontext_glxcontext[i].key == fakecontext)
+    {
+      break;
+    }
+  }
+  if (i < MAX_ASSOC_SIZE)
+  {
+    process->association_fakecontext_glxcontext[i].key = fakecontext;
+    process->association_fakecontext_glxcontext[i].value = glxcontext;
+  }
+  else
+  {
+    fprintf(stderr, "MAX_ASSOC_SIZE reached\n");
+  }
+}
+void unset_association_fakecontext_glxcontext(ProcessStruct* process, void* fakecontext)
+{
+  int i;
+  for(i=0;i < MAX_ASSOC_SIZE && process->association_fakecontext_glxcontext[i].key != NULL;i++)
+  {
+    if (process->association_fakecontext_glxcontext[i].key == fakecontext)
+    {
+      memmove(&process->association_fakecontext_glxcontext[i],
+               &process->association_fakecontext_glxcontext[i+1],
+              sizeof(Assoc) * (MAX_ASSOC_SIZE - 1 - i));
+      return;
+    }
+  }
+}
+
+void* get_association_clientdrawable_serverdrawable(ProcessStruct* process, void* clientdrawable)
+{
+  int i;
+  for(i=0;i < MAX_ASSOC_SIZE && process->association_clientdrawable_serverdrawable[i].key != NULL;i++)
+  {
+    if (process->association_clientdrawable_serverdrawable[i].key == clientdrawable)
+      return process->association_clientdrawable_serverdrawable[i].value;
+  }
+  return NULL;
+}
+void* get_association_serverdrawable_clientdrawable(ProcessStruct* process, void* serverdrawable)
+{
+  int i;
+  for(i=0;i < MAX_ASSOC_SIZE && process->association_clientdrawable_serverdrawable[i].key != NULL;i++)
+  {
+    if (process->association_clientdrawable_serverdrawable[i].value == serverdrawable)
+      return process->association_clientdrawable_serverdrawable[i].key;
+  }
+  return NULL;
+}
+void set_association_clientdrawable_serverdrawable(ProcessStruct* process, void* clientdrawable, void* serverdrawable)
+{
+  int i;
+  for(i=0;process->association_clientdrawable_serverdrawable[i].key != NULL;i++)
+  {
+    if (process->association_clientdrawable_serverdrawable[i].key == clientdrawable)
+    {
+      break;
+    }
+  }
+  if (i < MAX_ASSOC_SIZE)
+  {
+    process->association_clientdrawable_serverdrawable[i].key = clientdrawable;
+    process->association_clientdrawable_serverdrawable[i].value = serverdrawable;
+  }
+  else
+  {
+    fprintf(stderr, "MAX_ASSOC_SIZE reached\n");
+  }
+}
+
+void display_client_server_state(ProcessStruct* process)
+{
+  int i;
+  printf("serverActiveTexture = %d\n", process->serverActiveTexture);
+  printf("clientActiveTexture = %d\n", process->clientActiveTexture);
+  for(i=0;i<6;i++)
+  {
+    if (i == 5) continue;
+    printf("pointerArraysEnable[%d] = %d\n", i, process->pointerArraysEnable[i]);
+  }
+  for(i=0;i<8;i++)
+  {
+    printf("texCoordPointerEnable[%d] = %d\n", i, process->texCoordPointerEnable[i]);
+  }
+}
+
+int do_function_call(int func_number, int pid)
+{
+  char ret_char = 0;
+  int ret_int = 0;
+  void* ret_ptr = NULL;
+  const char* ret_str = NULL;
+  
+  int iProcess;
+  ProcessStruct* process = NULL;
+  for(iProcess=0;iProcess<MAX_HANDLED_PROCESS;iProcess++)
+  {
+    if (processTab[iProcess].process_id == pid)
+    {
+      process = &processTab[iProcess];
+      break;
+    }
+    else if (processTab[iProcess].process_id == 0)
+    {
+      process = &processTab[iProcess];
+      memset(process, 0, sizeof(ProcessStruct));
+      process->process_id = pid;
+      break;
+    }
+  }
+  if (process == NULL)
+  {
+    fprintf(stderr, "Too many processes !\n");
+    return 0;
+  }
+
+  //fprintf(stderr, "%s\n", tab_opengl_calls_name[func_number]);
+
+  switch (func_number)
+  {
+    case _exit_process_func:
+    {
+      int i;
+      if (display_function_call) fprintf(stderr, "_exit_process\n");
+      
+      for(i=0;i < MAX_ASSOC_SIZE && process->association_fakecontext_glxcontext[i].key != NULL;i++)
+      {
+        GLXContext ctxt = process->association_fakecontext_glxcontext[i].value;
+        fprintf(stderr, "Destroy context corresponding to fake_context = %d\n",
+                process->association_fakecontext_glxcontext[i].key);
+        glXDestroyContext(dpy, ctxt);
+      }
+      
+      for(i=0;i < MAX_ASSOC_SIZE && process->association_clientdrawable_serverdrawable[i].key != NULL;i++)
+      {
+        fprintf(stderr, "Destroy window corresponding to client_drawable = %p\n",
+                process->association_clientdrawable_serverdrawable[i].key);
+        
+        Window win = process->association_clientdrawable_serverdrawable[i].value;
+        XDestroyWindow(dpy, win);
+        
+        int loop = 1;
+        while (loop) {
+          while (XPending(dpy) > 0) {
+            XEvent event;
+            XNextEvent(dpy, &event);
+            switch (event.type) {
+              case DestroyNotify:
+              {
+                if (((XDestroyWindowEvent*)&event)->window == win)
+                {
+                  loop = 0;
+                }
+                break;
+              }
+            }
+          }
+        }
+      }
+      
+      if (process->vertexPointer) free(process->vertexPointer);
+      if (process->normalPointer) free(process->normalPointer);
+      if (process->colorPointer) free(process->colorPointer);
+      if (process->texCoordPointer) free(process->texCoordPointer);
+      
+      memmove(&processTab[iProcess], &processTab[iProcess+1], (MAX_HANDLED_PROCESS - 1 - iProcess) * sizeof(ProcessStruct));
+      
+      last_process_id = 0;
+
+      break;
+    }
+    
+    case _changeWindowState_func:
+    {
+      GLXDrawable client_drawable = args[0];
+      if (display_function_call) fprintf(stderr, "_changeWindowState_func client_drawable=%p\n", (void*)client_drawable);
+      
+      GLXDrawable drawable = get_association_clientdrawable_serverdrawable(process, client_drawable);
+      if (drawable)
+      {
+        if (args[1] == IsViewable)
+        {
+          XMapWindow(dpy, drawable);
+          
+          int loop = 1;
+          while (loop) {
+            while (XPending(dpy) > 0) {
+              XEvent event;
+              XNextEvent(dpy, &event);
+              switch (event.type) {
+                case ConfigureNotify:
+                {
+                  if (((XConfigureEvent*)&event)->window == drawable)
+                  {
+                    loop = 0;
+                  }
+                  break;
+                }
+              }
+            }
+          }
+        }
+      }
+      
+      break;
+    }
+    
+    case _moveResizeWindow_func:
+    {
+      GLXDrawable client_drawable = args[0];
+      if (display_function_call) fprintf(stderr, "_moveResizeWindow client_drawable=%p\n", (void*)client_drawable);
+      
+      GLXDrawable drawable = get_association_clientdrawable_serverdrawable(process, client_drawable);
+      if (drawable)
+      {
+        int* params = (int*)args[1];
+        fprintf(stderr, "%d %d %d %d\n", params[0], params[1], params[2], params[3]);
+        XMoveResizeWindow(dpy, drawable, params[0], params[1], params[2], params[3]);
+        
+        int loop = 1;
+        while (loop) {
+          while (XPending(dpy) > 0) {
+            XEvent event;
+            XNextEvent(dpy, &event);
+            switch (event.type) {
+              case ConfigureNotify:
+              {
+                if (((XConfigureEvent*)&event)->window == drawable)
+                {
+                  loop = 0;
+                }
+                break;
+              }
+            }
+          }
+        }
+      }
+      break;
+    }
+
+    case _needSync_func:
+    {
+      if (display_function_call) fprintf(stderr, "_needSync\n");
+      ret_int = 1;
+      break;
+    }
+  
+    case glXChooseVisual_func:
+    {
+      if (display_function_call) fprintf(stderr, "glXChooseVisual\n");
+      ret_ptr = glXChooseVisual(dpy, 0, (void*)args[2]);
+      break;
+    }
+  
+    case glXQueryExtensionsString_func:
+    {
+      if (display_function_call) fprintf(stderr, "glXQueryExtensionsString\n");
+      ret_str = glXQueryExtensionsString(dpy, 0);
+      break;
+    }
+  
+    case glXQueryServerString_func:
+    {
+      if (display_function_call) fprintf(stderr, "glXQueryServerString %d\n", args[2]);
+      ret_str = glXQueryServerString(dpy, 0, args[2]);
+      break;
+    }
+  
+    case glXGetClientString_func:
+    {
+      if (display_function_call) fprintf(stderr, "glXQueryServerString %d\n", args[1]);
+      ret_str = glXGetClientString(dpy, args[1]);
+      break;
+    }
+  
+    case glXCreateContext_func:
+    {
+      void* fake_shareList = args[2];
+      if (1 || display_function_call) fprintf(stderr, "glXCreateContext fake_shareList=%p\n", fake_shareList);
+    
+      process->next_available_context_number ++;
+      void* fake_ctxt = (void*)process->next_available_context_number;
+      
+      GLXContext shareList = get_association_fakecontext_glxcontext(process, fake_shareList);
+      XVisualInfo* vis = get_visual();
+      GLXContext ctxt = glXCreateContext(dpy, vis, shareList, args[3]);
+      set_association_fakecontext_glxcontext(process, fake_ctxt, ctxt);
+    
+      ret_ptr = fake_ctxt;
+      break;
+    }
+  
+    case glXGetCurrentContext_func:
+    {
+      if (display_function_call) fprintf(stderr, "glXGetCurrentContext\n");
+      ret_ptr = get_association_fakecontext_glxcontext(process, glXGetCurrentContext());
+      break;
+    }
+  
+    case glXGetCurrentDrawable_func:
+    {
+      if (display_function_call) fprintf(stderr, "glXGetCurrentDrawable\n");
+      ret_ptr = get_association_serverdrawable_clientdrawable(process, glXGetCurrentDrawable());
+      break;
+    }
+  
+    case glXDestroyContext_func:
+    {
+      GLXContext fake_ctxt = args[1];
+      if (display_function_call) fprintf(stderr, "glXDestroyContext fake_ctxt=%p\n", fake_ctxt);
+      
+      GLXContext ctxt = get_association_fakecontext_glxcontext(process, fake_ctxt);
+      if (ctxt == NULL)
+      {
+        fprintf(stderr, "invalid fake_ctxt (%p) !\n", fake_ctxt);
+      }
+      else
+      {
+        glXDestroyContext(dpy, ctxt);
+        unset_association_fakecontext_glxcontext(process, fake_ctxt);
+      }
+      break;
+    }
+  
+    case glXQueryVersion_func:
+    {
+      if (display_function_call) fprintf(stderr, "glXQueryVersion\n");
+      ret_int = glXQueryVersion(dpy, args[1], args[2]);
+      break;
+    }
+  
+    case glGetString_func:
+    {
+      if (display_function_call) fprintf(stderr, "glGetString %d\n", args[0]);
+      ret_str = (char*)glGetString(args[0]);
+      break;
+    }
+  
+    case glXMakeCurrent_func:
+    {
+      GLXDrawable client_drawable = args[1];
+      GLXContext fake_ctxt = args[2];
+      if (display_function_call) fprintf(stderr, "glXMakeCurrent client_drawable=%p fake_ctx=%p\n", (void*)client_drawable, fake_ctxt);
+      
+      if (client_drawable == NULL && fake_ctxt == NULL)
+      {
+        ret_int = glXMakeCurrent(dpy, NULL, NULL);
+      }
+      else
+      {
+        GLXContext ctxt = get_association_fakecontext_glxcontext(process, fake_ctxt);
+        GLXDrawable drawable;
+        if (ctxt == NULL)
+        {
+          fprintf(stderr, "invalid fake_ctxt (%p) !\n", fake_ctxt);
+          ret_int = 0;
+        }
+        else
+        {
+          drawable = get_association_clientdrawable_serverdrawable(process, client_drawable);
+          if (drawable == NULL)
+          {
+            drawable = create_window("", 0, 0, 300, 300);
+            set_association_clientdrawable_serverdrawable(process, client_drawable, drawable);
+          }
+          
+          ret_int = glXMakeCurrent(dpy, drawable, ctxt);
+        }
+      }
+      break;
+    }
+  
+    case glXSwapBuffers_func:
+    {
+      GLXDrawable client_drawable = args[1];
+      if (display_function_call) fprintf(stderr, "glXSwapBuffers client_drawable=%p\n", (void*)client_drawable);
+      
+      GLXDrawable drawable = get_association_clientdrawable_serverdrawable(process, client_drawable);
+      if (drawable == 0)
+      {
+        fprintf(stderr, "unknown client_drawable (%p) !\n", client_drawable);
+      }
+      else
+      {
+        glXSwapBuffers(dpy, drawable);
+      }
+      break;
+    }
+    
+    case glXIsDirect_func:
+    {
+      GLXContext fake_ctxt = args[1];
+      if (display_function_call) fprintf(stderr, "glXIsDirect fake_ctx=%p\n", fake_ctxt);
+      GLXContext ctxt = get_association_fakecontext_glxcontext(process, fake_ctxt);
+      if (ctxt == NULL)
+      {
+        fprintf(stderr, "invalid fake_ctxt (%p) !\n", fake_ctxt);
+        ret_char = False;
+      }
+      else
+      {
+        ret_char = glXIsDirect(dpy, ctxt);
+      }
+      break;
+    }
+  
+    case glXGetConfig_func:
+    {
+      if (display_function_call) fprintf(stderr, "glXGetConfig %d\n", args[2]);
+      ret_int = glXGetConfig(dpy, get_visual(), args[2], args[3]);
+      break;
+    }
+  
+    case glXUseXFont_func:
+    {
+      if (display_function_call) fprintf(stderr, "glXUseXFont\n");
+      fprintf(stderr, "not implemented !\n");
+      break;
+    }
+  
+      
+    case glXQueryExtension_func:
+    {
+      if (display_function_call) fprintf(stderr, "glXQueryExtension\n");
+      ret_int = glXQueryExtension(dpy, args[1], args[2]);
+      break;
+    }
+  
+    case glXChooseFBConfig_func:
+    {
+      if (display_function_call) fprintf(stderr, "glXChooseFBConfig\n");
+      fprintf(stderr, "not implemented !\n");
+      ret_ptr = 0;
+      break;
+    }
+  
+    case glXCreatePbuffer_func:
+    {
+      if (display_function_call) fprintf(stderr, "glXCreatePbuffer\n");
+      fprintf(stderr, "not implemented !\n");
+      ret_ptr = NULL;
+      break;
+    }
+  
+    case glXGetVisualFromFBConfig_func:
+    {
+      if (display_function_call) fprintf(stderr, "glXGetVisualFromFBConfig\n");
+      fprintf(stderr, "not implemented !\n");
+      ret_ptr = NULL;
+      break;
+    }
+  
+    case glXGetProcAddress_fake_func:
+    {
+      if (display_function_call) fprintf(stderr, "glXGetProcAddress %s\n", args[0]);
+      ret_int = glXGetProcAddress(args[0]) != NULL;
+      break;
+    }
+  
+    case glFlush_func:
+    {
+      glFlush();
+      break;
+    }
+  
+    case glGetIntegerv_func:
+    {
+      int param = args[0];
+      if (display_function_call) fprintf(stderr, "glGetIntegerv %d\n", param);
+      glGetIntegerv(param, args[1]);
+      break;
+    }
+  
+    case glGetFloatv_func:
+    {
+      int param = args[0];
+      if (display_function_call) fprintf(stderr, "glGetFloatv %d\n", param);
+      glGetIntegerv(param, args[1]);
+      break;
+    }
+  
+    case glGetConvolutionParameteriv_func:
+    {
+      if (display_function_call) fprintf(stderr, "glGetConvolutionParameteriv %d %d\n", args[0], args[1]);
+      glGetConvolutionParameteriv(args[0], args[1], args[2]);
+      break;
+    }
+  
+    case glLightfv_func:
+    {
+      if (display_function_call) fprintf(stderr, "glLightfv\n");
+      glLightfv(args[0], args[1],(float*)args[2]);
+      break;
+    }
+  
+    case glMaterialfv_func:
+    {
+      if (display_function_call) fprintf(stderr, "glMaterialfv\n");
+      glMaterialfv(args[0], args[1], (float*)args[2]);
+      break;
+    }
+  
+    case glLightModelfv_func:
+    {
+      if (display_function_call) fprintf(stderr, "glLightModelfv\n");
+      glLightModelfv(args[0], (float*)args[1]);
+      break;
+    }
+    
+    case glMap1f_func:
+    {
+      if (display_function_call) fprintf(stderr, "glMap1f\n");
+      glMap1f(args[0],
+              ARG_TO_FLOAT(args[1]),
+              ARG_TO_FLOAT(args[2]),
+              args[3],
+              args[4],
+              (float*)args[5]);
+      break;
+    }
+    
+    case glMap1d_func:
+    {
+      if (display_function_call) fprintf(stderr, "glMap1d\n");
+      glMap1f(args[0],
+              ARG_TO_DOUBLE(args[1]),
+              ARG_TO_DOUBLE(args[2]),
+              args[3],
+              args[4],
+              (double*)args[5]);
+      break;
+    }
+
+    case glMap2f_func:
+    {
+      if (display_function_call) fprintf(stderr, "glMap2f\n");
+      glMap2f(args[0],
+              ARG_TO_FLOAT(args[1]),
+              ARG_TO_FLOAT(args[2]),
+              args[3],
+              args[4],
+              ARG_TO_FLOAT(args[5]),
+              ARG_TO_FLOAT(args[6]),
+              args[7],
+              args[8],
+              (float*)args[9]);
+      break;
+    }
+  
+    case glMap2d_func:
+    {
+      if (display_function_call) fprintf(stderr, "glMap2d\n");
+      glMap2d(args[0],
+             ARG_TO_DOUBLE(args[1]),
+             ARG_TO_DOUBLE(args[2]),
+             args[3],
+             args[4],
+             ARG_TO_DOUBLE(args[5]),
+             ARG_TO_DOUBLE(args[6]),
+             args[7],
+             args[8],
+             (double*)args[9]);
+      break;
+    }
+  
+    case glGenTextures_func:
+    {
+      int nTextures = args[0];
+      if (display_function_call) fprintf(stderr, "glGenTextures\n");
+      glGenTextures(nTextures, args[1]);
+      break;
+    }
+  
+    case glDeleteTextures_func:
+    {
+      if (display_function_call) fprintf(stderr, "glDeleteTextures\n");
+      glDeleteTextures(args[0], (int*)args[1]);
+      break;
+    }
+  
+    case glCallLists_func:
+    {
+      if (display_function_call) fprintf(stderr, "glCallLists\n");
+      glCallLists(args[0], args[1], (void*)args[2]);
+      break;
+    }
+    
+    case glTexImage1D_func:
+    {
+      if (display_function_call) fprintf(stderr, "glTexImage1D\n");
+      glTexImage1D(args[0],
+                   args[1],
+                   args[2],
+                   args[3],
+                   args[4],
+                   args[5],
+                   args[6],
+                   (void*)args[7]);
+      break;
+    }
+  
+    case glTexImage2D_func:
+    {
+      if (display_function_call) fprintf(stderr, "glTexImage2D\n");
+      glTexImage2D(args[0],
+                   args[1],
+                   args[2],
+                   args[3],
+                   args[4],
+                   args[5],
+                   args[6],
+                   args[7],
+                   (void*)args[8]);
+      break;
+    }
+
+    case glTexSubImage2D_func:
+    {
+      if (display_function_call) fprintf(stderr, "glTexSubImage2D\n");
+      glTexSubImage2D(args[0],
+                      args[1],
+                      args[2],
+                      args[3],
+                      args[4],
+                      args[5],
+                      args[6],
+                      args[7],
+                      (void*)args[8]);
+      break;
+    }
+
+    case glCompressedTexImage2DARB_func:
+    {
+      if (display_function_call) fprintf(stderr, "glCompressedTexImage2DARB\n");
+      GET_EXT_PTR(void, glCompressedTexImage2DARB, (int,int,int,int,int,int,int,void*));
+      ptr_func(args[0],
+                args[1],
+                args[2],
+                args[3],
+                args[4],
+                args[5],
+                args[6],
+                (void*)args[7]);
+      break;
+    }
+  
+    case glCompressedTexSubImage2DARB_func:
+    {
+      if (display_function_call) fprintf(stderr, "glCompressedTexSubImage2DARB\n");
+      GET_EXT_PTR(void, glCompressedTexSubImage2DARB, (int,int,int,int,int,int,int,void*));
+      ptr_func (args[0],
+                args[1],
+                args[2],
+                args[3],
+                args[4],
+                args[5],
+                args[6],
+                (void*)args[7]);
+      break;
+    }
+
+    case glGenProgramsARB_func:
+    {
+      if (display_function_call) fprintf(stderr, "glGenProgramsARB\n");
+      GET_EXT_PTR(void, glGenProgramsARB, (int,int*));
+      ptr_func(args[0], (int*)args[1]);
+      break;
+    }
+  
+    case glProgramStringARB_func:
+    {
+      if (display_function_call) fprintf(stderr, "glProgramStringARB\n");
+      GET_EXT_PTR(void, glProgramStringARB, (int,int,int,void*));
+      ptr_func(args[0], args[1], args[2], (void*)args[3]);
+      break;
+    }
+  
+    case glDeleteProgramsARB_func:
+    {
+      if (display_function_call) fprintf(stderr, "glDeleteProgramsARB\n");
+      GET_EXT_PTR(void, glDeleteProgramsARB, (int,int*));
+      ptr_func(args[0], (int*)args[1]);
+      break;
+    }
+  
+    case glShaderSourceARB_func:
+    {
+      if (display_function_call) fprintf(stderr, "glShaderSourceARB\n");
+      GET_EXT_PTR(void, glShaderSourceARB, (int,int,char**,void*));
+      ptr_func(args[0], 1, (char**)&args[1], NULL);
+      break;
+    }
+  
+    case glGetUniformLocationARB_func:
+    {
+      if (display_function_call) fprintf(stderr, "glGetUniformLocationARB\n");
+      GET_EXT_PTR(int, glGetUniformLocationARB, (int,char*));
+      ret_int = ptr_func(args[0], (char*)args[1]);
+      break;
+    }
+
+    case glPointParameterfvARB_func:
+    {
+      if (display_function_call) fprintf(stderr, "glPointParameterfvARB\n");
+      GET_EXT_PTR(void, glPointParameterfvARB, (int,float*));
+      ptr_func(args[0], (float*)args[1]);
+      break;
+    }
+  
+    case glGetVertexAttribfvARB_func:
+    {
+      if (display_function_call) fprintf(stderr, "glGetVertexAttribfvARB\n");
+      GET_EXT_PTR(void, glGetVertexAttribfvARB, (int,int,float*));
+      ptr_func(args[0], args[1], (float*)args[2]);
+      break;
+    }
+  
+    case glGetVertexAttribivARB_func:
+    {
+      if (display_function_call) fprintf(stderr, "glGetVertexAttribivARB\n");
+      GET_EXT_PTR(void, glGetVertexAttribfvARB, (int,int,double*));
+      ptr_func(args[0], args[1], (double*)args[2]);
+      break;
+    }
+  
+    case glGetVertexAttribdvARB_func:
+    {
+      if (display_function_call) fprintf(stderr, "glGetVertexAttribdvARB\n");
+      GET_EXT_PTR(void, glGetVertexAttribdvARB, (int,int,int*));
+      ptr_func(args[0], args[1], (int*)args[2]);
+      break;
+    }
+  
+    case glGetProgramLocalParameterfvARB_func:
+    {
+      if (display_function_call) fprintf(stderr, "glGetProgramLocalParameterfvARB\n");
+      GET_EXT_PTR(void, glGetProgramLocalParameterfvARB, (int,int,float*));
+      ptr_func(args[0], args[1], (float*)args[2]);
+      break;
+    }
+  
+    case glGetProgramLocalParameterdvARB_func:
+    {
+      if (display_function_call) fprintf(stderr, "glGetProgramLocalParameterdvARB\n");
+      GET_EXT_PTR(void, glGetProgramLocalParameterdvARB, (int,int,double*));
+      ptr_func(args[0], args[1], (double*)args[2]);
+      break;
+    }
+  
+    case glGetProgramEnvParameterfvARB_func:
+    {
+      if (display_function_call) fprintf(stderr, "glGetProgramEnvParameterfvARB\n");
+      GET_EXT_PTR(void, glGetProgramEnvParameterfvARB, (int,int,float*));
+      ptr_func(args[0], args[1], (float*)args[2]);
+      break;
+    }
+  
+    case glGetProgramEnvParameterdvARB_func:
+    {
+      if (display_function_call) fprintf(stderr, "glGetProgramEnvParameterdvARB\n");
+      GET_EXT_PTR(void, glGetProgramEnvParameterdvARB, (int,int,double*));
+      ptr_func(args[0], args[1], (double*)args[2]);
+      break;
+    }
+  
+    case glGetProgramivARB_func:
+    {
+      if (display_function_call) fprintf(stderr, "glGetProgramivARB\n");
+      GET_EXT_PTR(void, glGetProgramivARB, (int,int,int*));
+      ptr_func(args[0], args[1], (int*)args[2]);
+      break;
+    }
+  
+    case glGetProgramStringARB_func:
+    {
+      assert(0);
+      /*
+      int len;
+      char* string;
+      {
+        GET_EXT_PTR(void, glGetProgramivARB, (int,int,int*));
+        ptr_func(args[0], GL_PROGRAM_LENGTH_ARB, &len);
+        string = g_malloc(len);
+      }
+      if (display_function_call) fprintf(stderr, "glGetProgramStringARB\n");
+      GET_EXT_PTR(void, glGetProgramStringARB, (int,int,void*));
+      ptr_func(args[0], args[1], string);
+      len = strlen(string);
+      write_to_client(client, &len, sizeof(int));
+      write_to_client(client, string, len);
+      g_free(string);*/
+      break;
+    }
+
+    case glTexImage3D_func:
+    {
+      if (display_function_call) fprintf(stderr, "glTexImage3D\n");
+      glTexImage3D(args[0],
+                    args[1],
+                    args[2],
+                    args[3],
+                    args[4],
+                    args[5],
+                    args[6],
+                    args[7],
+                    args[8],
+                    (void*)args[9]);
+      break;
+    }
+  
+    case glGetTexLevelParameteriv_func:
+    {
+      if (display_function_call) fprintf(stderr, "glGetTexLevelParameteriv\n");
+      glGetTexLevelParameteriv(args[0], args[1], args[2], (int*)args[3]);
+      break;
+    }
+  
+    case glFogfv_func:
+    {
+      if (display_function_call) fprintf(stderr, "glFogfv\n");
+      glFogfv(args[0], (float*)args[1]);
+      break;
+    }
+  
+    case glBitmap_func:
+    {
+      if (display_function_call) fprintf(stderr, "glBitmap\n");
+      glBitmap (args[0],
+                args[1],
+                ARG_TO_FLOAT(args[2]),
+                ARG_TO_FLOAT(args[3]),
+                ARG_TO_FLOAT(args[4]),
+                ARG_TO_FLOAT(args[5]),
+                (void*)args[6]);
+      break;
+    }
+  
+    case glTexGenfv_func:
+    {
+      if (display_function_call) fprintf(stderr, "glTexGenfv\n");
+      glTexGenfv(args[0], args[1], (float*)args[2]);
+      break;
+    }
+  
+    case glTexEnvfv_func:
+    {
+      if (display_function_call) fprintf(stderr, "glTexEnvfv\n");
+      glTexEnvfv(args[0], args[1], (float*)args[2]);
+      break;
+    }
+  
+    case glTexParameterfv_func:
+    {
+      if (display_function_call) fprintf(stderr, "glTexParameterfv\n");
+      glTexParameterfv(args[0], args[1], (float*)args[2]);
+      break;
+    }
+  
+    case glTexParameteriv_func:
+    {
+      if (display_function_call) fprintf(stderr, "glTexParameteriv\n");
+      glTexParameteriv(args[0], args[1], (int*)args[2]);
+      break;
+    }
+  
+    case glVertexPointer_func:
+    {
+      if (display_function_call) fprintf(stderr, "glVertexPointer\n");
+      if (process->vertexPointer) free(process->vertexPointer);
+      int size = args[3];
+      process->vertexPointer = malloc(size);
+      memcpy(process->vertexPointer, args[4], size);
+      glVertexPointer(args[0], args[1], args[2], process->vertexPointer);
+      break;
+    }
+  
+    case glNormalPointer_func:
+    {
+      if (display_function_call) fprintf(stderr, "glNormalPointer\n");
+      if (process->normalPointer) free(process->normalPointer);
+      int size = args[2];
+      process->normalPointer = malloc(size);
+      memcpy(process->normalPointer, args[3], size);
+      glNormalPointer(args[0], args[1], process->normalPointer);
+      break;
+    }
+  
+    case glColorPointer_func:
+    {
+      if (display_function_call) fprintf(stderr, "glColorPointer\n");
+      if (process->colorPointer) free(process->colorPointer);
+      int size = args[3];
+      process->colorPointer = malloc(size);
+      memcpy(process->colorPointer, args[4], size);
+      glColorPointer(args[0], args[1], args[2], process->colorPointer);
+
+      break;
+    }
+  
+    case glTexCoordPointer_func:
+    {
+      if (display_function_call) fprintf(stderr, "glTexCoordPointer\n");
+      if (process->texCoordPointer) free(process->texCoordPointer);
+      int size = args[3];
+      process->texCoordPointer = malloc(size);
+      memcpy(process->texCoordPointer, args[4], size);
+      glTexCoordPointer(args[0], args[1], args[2], process->texCoordPointer);
+      break;
+    }
+  
+    case glBegin_func:
+    {
+    //display_client_server_state(client);
+      glBegin(args[0]);
+      break;
+    }
+  
+    case glActiveTexture_func:
+    case glActiveTextureARB_func:
+    {
+      process->serverActiveTexture = args[0] - GL_TEXTURE0_ARB;
+    //printf("set server active texture %d\n", clientActiveTexture);
+      glActiveTexture(args[0]);
+      break;
+    }
+  
+    case glClientActiveTexture_func:
+    case glClientActiveTextureARB_func:
+    {
+      process->clientActiveTexture = args[0] - GL_TEXTURE0_ARB;
+    //printf("set client active texture %d\n", clientActiveTexture);
+      glClientActiveTexture(args[0]);
+      break;
+    }
+  
+    case glEnableClientState_func:
+    {
+      int num = args[0] - GL_VERTEX_ARRAY;
+      if (num == GL_TEXTURE_COORD_ARRAY - GL_VERTEX_ARRAY)
+      {
+      //printf("enable texture %d\n", clientActiveTexture);
+        process->texCoordPointerEnable[process->clientActiveTexture] = 1;
+      }
+      else if (num >= 0 && num < 6)
+      {
+        //printf("enable feature %d\n", num);
+        process->pointerArraysEnable[num] = 1;
+      }
+      glEnableClientState(args[0]);
+      break;
+    }
+  
+    case glDisableClientState_func:
+    {
+      int num = args[0] - GL_VERTEX_ARRAY;
+      if (num == GL_TEXTURE_COORD_ARRAY - GL_VERTEX_ARRAY)
+      {
+      //printf("disable texture %d\n", clientActiveTexture);
+        process->texCoordPointerEnable[process->clientActiveTexture] = 0;
+      }
+      else if (num >= 0 && num < 6)
+      {
+        //printf("disable feature %d\n", num);
+        process->pointerArraysEnable[num] = 0;
+      }
+      glDisableClientState(args[0]);
+      break;
+    }
+  
+    case glArrayElement_func:
+    {
+      if (display_function_call) fprintf(stderr, "glArrayElement\n");
+      glArrayElement(args[0]);
+      break;
+    }
+  
+    case glDrawArrays_func:
+    {
+      if (display_function_call) fprintf(stderr, "glDrawArrays\n");
+    //printf("glDrawArrays %d %d %d\n",args[0], args[1],args[2]);
+      glDrawArrays(args[0], args[1],args[2]);
+      break;
+    }
+  
+    case glDrawElements_func:
+    {
+      if (display_function_call) fprintf(stderr, "glDrawElements\n");
+      glDrawElements(args[0], args[1],args[2],(void*)args[3]);
+      break;
+    }
+    
+    case glGetError_func:
+    {
+#ifdef SYSTEMATIC_ERROR_CHECK
+      ret_int = last_error;
+#else
+      ret_int = glGetError();
+#endif
+      break;
+    }
+  
+    default:
+      execute_func(func_number, &ret_int, &ret_char);
+      break;
+  }
+
+#ifdef SYSTEMATIC_ERROR_CHECK
+  if (funcNumber == glGetError_func)
+  {
+    last_error = 0;
+  }
+  else
+  {
+    last_error = glGetError();
+    if (last_error != 0)
+    {
+      printf("error %s 0x%X\n",  tab_opengl_calls_name[func_number], last_error);
+    }
+  }
+#endif
+
+  Signature* signature = (Signature*)tab_opengl_calls[func_number];
+  int ret_type = signature->ret_type;
+  int nb_args = signature->nb_args;
+  switch(ret_type)
+  {
+    case TYPE_NONE:
+      break;
+    
+    case TYPE_CHAR:
+    case TYPE_UNSIGNED_CHAR:
+      ret_int = ret_char;
+      break;
+    
+    case TYPE_INT:
+    case TYPE_UNSIGNED_INT:
+      break;
+    
+    case TYPE_POINTER:
+      ret_int = ret_ptr;
+      break;
+    
+    case TYPE_VISUAL_INFO:
+      //memcpy(args[nb_args], ret_ptr, sizeof(XVisualInfo));
+      XFree(ret_ptr);
+      break;
+    
+    case TYPE_CONST_CHAR:
+    {
+      strncpy(ret_string, ret_str, 32768);
+      break;
+    }
+    
+    default:
+      fprintf(stderr, "unexpected ret type : %d\n", ret_type);
+      exit(-1);
+      break;
+  }
+
+  return ret_int;
+}
+ 
+int doing_opengl = 0;
+static int last_func_number = -1;
+
+static int decode_call_int(CPUState *env, int func_number, int pid, target_ulong target_ret_string,
+                           target_ulong in_args, target_ulong in_args_size)
+{
+  Signature* signature = (Signature*)tab_opengl_calls[func_number];
+  int ret_type = signature->ret_type;
+  int has_out_parameters = signature->has_out_parameters;
+  int nb_args = signature->nb_args;
+  int* args_type = signature->args_type;
+  int i;
+  int ret;
+  const int* args_size = NULL;
+  target_ulong saved_out_ptr[50];
+  
+  if (last_func_number == _exit_process_func && func_number == _exit_process_func)
+  {
+    last_func_number = -1;
+    return 0;
+  }
+  
+  if (last_process_id == 0)
+  {
+    last_process_id = pid;
+  }
+  else if (last_process_id != pid)
+  {
+    fprintf(stderr, "damnit. I don't support (yet) opengl calls coming from // processes... Sorry !\n");
+    return 0;
+  }
+      
+  if (dpy == NULL)
+  {
+    dpy = XOpenDisplay(NULL);
+    memset(processTab, 0, sizeof(processTab));
+    ret_string = malloc(32768);
+  }
+  
+  reset_host_offset();
+  
+  if (nb_args)
+  {
+    if (memcpy_target_to_host(env, args, in_args, sizeof(target_ulong) * nb_args) == 0)
+    {
+      fprintf(stderr, "call %s pid=%d\n", tab_opengl_calls_name[func_number], pid);
+      fprintf(stderr, "cannot get call parameters\n");
+      return 0;
+    }
+    
+    args_size = (const int*)get_host_read_pointer(env, in_args_size, sizeof(int) * nb_args);
+    if (args_size == NULL)
+    {
+      fprintf(stderr, "call %s pid=%d\n", tab_opengl_calls_name[func_number], pid);
+      fprintf(stderr, "cannot get call parameters size\n");
+      return 0;
+    }
+  }
+  
+  for(i=0;i<nb_args;i++)
+  {
+    switch(args_type[i])
+    {
+      case TYPE_VISUAL_INFO:
+      case TYPE_POINTER:
+      {
+        fprintf(stderr, "call %s arg %d pid=%d\n", tab_opengl_calls_name[func_number], i, pid);
+        fprintf(stderr, "unsupported arg TYPE_POINTER\n");
+        return 0;
+        break;
+      }
+        
+      case TYPE_NONE_TERMINATED_INT_ARRAY:
+      case TYPE_NULL_TERMINATED_STRING:
+      case TYPE_ARRAY_CHAR:
+      case TYPE_ARRAY_INT:
+      case TYPE_ARRAY_FLOAT:
+      case TYPE_ARRAY_DOUBLE:
+        if (args[i] != 0)
+        {
+          if (args_size[i] == 0)
+          {
+            fprintf(stderr, "call %s arg %d pid=%d\n", tab_opengl_calls_name[func_number], i, pid);
+            fprintf(stderr, "args_size[i] == 0 !!\n");
+            return 0;
+          }
+          args[i] = get_host_read_pointer(env, args[i], args_size[i]);
+          if (args[i] == 0)
+          {
+            fprintf(stderr, "call %s arg %d pid=%d\n", tab_opengl_calls_name[func_number], i, pid);
+            fprintf(stderr, "can not get %d bytes\n", args_size[i]);
+            return 0;
+          }
+        }
+        break;
+        
+      case TYPE_OUT_CHAR_ARRAY:
+      case TYPE_OUT_INT_ARRAY:
+      case TYPE_OUT_FLOAT_ARRAY:
+      case TYPE_OUT_DOUBLE_ARRAY:
+      case TYPE_OUT_INT_POINTER:
+      {
+        int mem_state;
+        if (func_number == glXQueryExtension_func && args[i] == 0)
+        {
+          saved_out_ptr[i] = 0;
+          continue;
+        }
+        if (args[i] == 0)
+        {
+          fprintf(stderr, "call %s arg %d pid=%d\n", tab_opengl_calls_name[func_number], i, pid);
+          return 0;
+        }
+        if (args_size[i] == 0)
+        {
+          fprintf(stderr, "call %s arg %d pid=%d\n", tab_opengl_calls_name[func_number], i, pid);
+          fprintf(stderr, "args_size[i] == 0 !!\n");
+          return 0;
+        }
+        mem_state = get_target_mem_state(env, args[i], args_size[i]);
+        if (mem_state == NOT_MAPPED)
+        {
+          fprintf(stderr, "call %s arg %d pid=%d addr=%p size=%d NOT_MAPPED\n", tab_opengl_calls_name[func_number], i, pid, args[i], args_size[i]);
+          return 0;
+        }
+        else if (mem_state == MAPPED_CONTIGUOUS)
+        {
+          saved_out_ptr[i] = 0;
+          args[i] = get_phys_mem_addr(env, args[i]); 
+        }
+        else
+        {
+          saved_out_ptr[i] = args[i];
+          args[i] = malloc(args_size[i]);
+        }
+        break;
+      }
+        
+      case TYPE_DOUBLE:
+      case TYPE_2CHAR:
+      case TYPE_3CHAR:
+      case TYPE_4CHAR:
+      case TYPE_2SHORT:
+      case TYPE_3SHORT:
+      case TYPE_4SHORT:
+      case TYPE_2INT:
+      case TYPE_3INT:
+      case TYPE_4INT:
+      case TYPE_2FLOAT:
+      case TYPE_3FLOAT:
+      case TYPE_4FLOAT:
+      case TYPE_16FLOAT:
+      case TYPE_2DOUBLE:
+      case TYPE_3DOUBLE:
+      case TYPE_4DOUBLE:
+      case TYPE_16DOUBLE:
+        args[i] = get_host_read_pointer(env, args[i], tab_args_type_length[args_type[i]]);
+        if (args[i] == 0)
+        {
+          fprintf(stderr, "call %s arg %d pid=%d\n", tab_opengl_calls_name[func_number], i, pid);
+          fprintf(stderr, "can not get %d bytes\n", tab_args_type_length[args_type[i]]);
+          return 0;
+        }
+        break;
+        
+     case TYPE_IN_IGNORED_POINTER:
+       args[i] = 0;
+       break;
+        
+      default:
+        if (tab_args_type_length[args_type[i]] == 0)
+        {
+          fprintf(stderr, "args %s, type %d\n", i, args_type[i]);
+          return 0;
+        }
+        break;
+    }
+  }
+  
+  if (ret_type == TYPE_CONST_CHAR)
+  {
+    ret_string[0] = 0;
+  }
+  
+  if (func_number == glDrawElements_func)
+  {
+    fprintf(stderr, "glDrawElements_func %d %d %d %X\n", args[0], args[1], args[2], args[3]);
+  }
+
+  ret = do_function_call(func_number, pid);
+  
+  for(i=0;i<nb_args;i++)
+  {
+    switch(args_type[i])
+    {
+      case TYPE_OUT_CHAR_ARRAY:
+      case TYPE_OUT_INT_ARRAY:
+      case TYPE_OUT_FLOAT_ARRAY:
+      case TYPE_OUT_DOUBLE_ARRAY:
+      case TYPE_OUT_INT_POINTER:
+      {
+        if (saved_out_ptr[i])
+        {
+          if (memcpy_host_to_target(env, saved_out_ptr[i], args[i], args_size[i]) == 0)
+          {
+            return 0;
+          }
+          free(args[i]);
+        }
+        break;
+      }
+      
+      default:
+        break;
+    }
+  }
+  
+  if (ret_type == TYPE_CONST_CHAR)
+  {
+    if (target_ret_string)
+    {
+      if (memcpy_host_to_target(env, target_ret_string, ret_string, strlen(ret_string) + 1) == 0)
+      {
+        return 0;
+      }
+    }
+  }
+  return ret;
+}
+
+static int decode_call(CPUState *env, int func_number, int pid, target_ulong target_ret_string,
+                       target_ulong in_args, target_ulong in_args_size)
+{
+  int ret;
+  //fprintf(stderr, "cr3 = %d\n", env->cr[3]);
+  if( ! (func_number >= 0 && func_number < GL_N_CALLS) )
+  {
+    fprintf(stderr, "func_number >= 0 && func_number < GL_N_CALLS failed\n");
+    return 0;
+  }
+  if (func_number == glDrawElements_func)
+  {
+    fprintf(stderr, "entering call %s pid=%d\n", tab_opengl_calls_name[func_number], pid);
+  }
+  ret = decode_call_int(env, func_number, pid, target_ret_string, in_args, in_args_size);
+  if (func_number == glDrawElements_func)
+  {
+    fprintf(stderr, "leaving call %s pid=%d\n", tab_opengl_calls_name[func_number], pid);
+  }
+  return ret;
+}
+
+void helper_opengl(CPUState *env)
+{
+  doing_opengl = 1;
+  env->regs[R_EAX] = decode_call(env,
+                                 env->regs[R_EAX],
+                                 env->regs[R_EBX],
+                                 env->regs[R_ECX],
+                                 env->regs[R_EDX],
+                                 env->regs[R_ESI]);
+  doing_opengl = 0;
+}
diff -Nrup --exclude=CVS --exclude='*~' --exclude='config-host*' --exclude=Makefile --exclude=config.mak --exclude=config.h qemu.ori/target-i386/op.c qemu/target-i386/op.c
--- qemu.ori/target-i386/op.c	2006-11-14 00:18:10.000000000 +0100
+++ qemu/target-i386/op.c	2006-11-14 21:46:24.000000000 +0100
@@ -132,6 +132,13 @@ static inline target_long lshift(target_
 
 #endif
 
+void helper_int99(void);
+
+void OPPROTO op_int99(void)
+{
+  helper_int99();
+}
+
 /* operations with flags */
 
 /* update flags with T0 and T1 (add/sub case) */
diff -Nrup --exclude=CVS --exclude='*~' --exclude='config-host*' --exclude=Makefile --exclude=config.mak --exclude=config.h qemu.ori/target-i386/opengl_client.c qemu/target-i386/opengl_client.c
--- qemu.ori/target-i386/opengl_client.c	1970-01-01 01:00:00.000000000 +0100
+++ qemu/target-i386/opengl_client.c	2006-11-14 21:46:24.000000000 +0100
@@ -0,0 +1,1956 @@
+/*
+ *  Guest-side implementation of GL/GLX API. Replacement of standard libGL.so
+ * 
+ *  Copyright (c) 2006 Even Rouault
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+/* gcc -Wall -g opengl_client.c -shared -o libGL.so.1 */
+
+#define _GNU_SOURCE
+#define _XOPEN_SOURCE 600
+#include <stdlib.h>
+#include <stdio.h>
+#include <signal.h>
+#include <sys/mman.h>
+#include <errno.h>
+
+#include <X11/X.h>
+#include <X11/Xutil.h>
+
+#include <stdarg.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <netdb.h>
+#include <dlfcn.h>
+
+#include <GL/gl.h>
+#include <GL/glx.h>
+
+#define EXT_FUNC(x) x
+
+#define CHECK_PROC_WITH_RET(x)  \
+  static int detect = -1; \
+  if (detect < 0) \
+  { \
+    detect = (glXGetProcAddress((const GLubyte *)#x) != NULL); \
+  } \
+  if (detect == 0) \
+  {  \
+    fprintf(stderr, "Symbol " #x " not available in server libGL\n"); \
+    return 0; \
+  } 
+
+#define CHECK_PROC(x)  \
+  static int detect = -1; \
+  if (detect < 0) \
+  { \
+    detect = (glXGetProcAddress((const GLubyte *)#x) != NULL); \
+  } \
+  if (detect == 0) \
+  {  \
+    fprintf(stderr, "Symbol " #x " not available in server libGL\n"); \
+    return; \
+  } 
+
+#include "opengl_func.h"
+
+#include "glgetv_cst.h"
+
+typedef struct
+{
+  int size;
+  int type;
+  int stride;
+  const void* ptr;
+} VertexNormalColorPointerStruct;
+
+static VertexNormalColorPointerStruct vertexPointer = {0};
+static VertexNormalColorPointerStruct normalPointer = {0};
+static VertexNormalColorPointerStruct colorPointer = {0};
+static VertexNormalColorPointerStruct texCoordPointer[16] = {{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},};
+static int clientActiveTexture = 0;
+static int pointerArraysEnable[6] = { 0 };
+static int texCoordPointerEnable[16] = { 0 };
+
+
+static struct sigaction old_action;
+void sigsegv_handler(int signum, siginfo_t* info, void* ptr)
+{
+  struct ucontext* context = (struct ucontext*)ptr;
+  unsigned char* eip_ptr = context->uc_mcontext.gregs[REG_EIP];
+  if (eip_ptr[0] == 0xCD && eip_ptr[1] == 0x99)
+  {
+    context->uc_mcontext.gregs[REG_EIP] += 2;
+  }
+  else
+  {
+    fprintf(stderr, "unhandled SIGSEGV\n");
+    exit(-1); // FIXME
+    if (old_action.sa_flags & SA_SIGINFO)
+    {
+      old_action.sa_sigaction(signum, info, ptr);
+    }
+    else
+    {
+      old_action.sa_handler(signum);
+    }
+  }
+}
+
+int call_opengl(int func_number, int pid, void* ret_string, void* args, void* args_size)
+{
+  __asm__ ("push %ebx");
+  __asm__ ("push %ecx");
+  __asm__ ("push %edx");
+  __asm__ ("push %esi");
+  __asm__ ("mov %0, %%eax"::"m"(func_number));
+  __asm__ ("mov %0, %%ebx"::"m"(pid));
+  __asm__ ("mov %0, %%ecx"::"m"(ret_string));
+  __asm__ ("mov %0, %%edx"::"m"(args));
+  __asm__ ("mov %0, %%esi"::"m"(args_size));
+  __asm__ ("int $0x99");
+  __asm__ ("pop %esi");
+  __asm__ ("pop %edx");
+  __asm__ ("pop %ecx");
+  __asm__ ("pop %ebx");
+}
+
+static void do_opengl_call(int func_number, void* ret_ptr, ...);
+
+static int pid_fork = -1;
+static int stop_now = 0;
+
+static void sigint_exit_process_func(int ignored)
+{
+  stop_now = 1;
+  if (pid_fork > 0)
+  {
+    call_opengl(_exit_process_func, pid_fork, NULL, NULL, NULL);
+    pid_fork = 0;
+  }
+  exit(0);
+}
+
+static void real_sigint_exit_process_func(int ignored)
+{
+  call_opengl(_exit_process_func, getpid(), NULL, NULL, NULL);
+  exit(0);
+}
+
+
+static void do_init()
+{
+  static int init_done = 0;
+  if (init_done == 0)
+  {
+    init_done = 1;
+    
+    pid_fork = fork();
+    if (pid_fork > 0)
+    {
+      struct sigaction action;
+      action.sa_sigaction = sigsegv_handler;
+      sigemptyset(&(action.sa_mask));
+      action.sa_flags = SA_SIGINFO;
+      sigaction(SIGSEGV, &action, &old_action);
+
+      signal(SIGINT, sigint_exit_process_func);
+      signal(SIGKILL, sigint_exit_process_func);
+      signal(SIGQUIT, sigint_exit_process_func);
+      int status;
+      wait(&status);
+      if (pid_fork > 0)
+      {
+        call_opengl(_exit_process_func, pid_fork, NULL, NULL, NULL);
+        pid_fork = 0;
+      }
+      if (WIFEXITED(status))
+      {
+        exit(WEXITSTATUS(status));
+      }
+      else
+      {
+        exit(0);
+      }
+    }
+    
+    signal(SIGINT, real_sigint_exit_process_func);
+    
+    struct sigaction action;
+    action.sa_sigaction = sigsegv_handler;
+    sigemptyset(&(action.sa_mask));
+    action.sa_flags = SA_SIGINFO;
+    sigaction(SIGSEGV, &action, &old_action);
+  }
+}
+
+static int try_to_put_into_phys_memory(void* addr, int len)
+{
+  int pagesize = getpagesize();
+  int i;
+  void* aligned_addr = ((long)addr & (~(pagesize - 1)));
+  int to_end_page = (long)aligned_addr + pagesize - (long)addr;
+  char c = 0;
+  if (aligned_addr != addr)
+  {
+    c += ((char*)addr)[0];
+    if (len <= to_end_page)
+    {
+      return c;
+    }
+    len -= to_end_page;
+    addr = aligned_addr + pagesize;
+  }
+  for(i=0;i<len;i+=pagesize)
+  {
+    c += ((char*)addr)[0];
+    addr += pagesize;
+  }
+  return c;
+}
+
+static void do_opengl_call(int func_number, void* ret_ptr, ...)
+{
+  if( ! (func_number >= 0 && func_number < GL_N_CALLS) )
+  {
+    fprintf(stderr, "func_number >= 0 && func_number < GL_N_CALLS failed\n");
+    return;
+  }
+
+  Signature* signature = (Signature*)tab_opengl_calls[func_number];
+  int ret_type = signature->ret_type;
+  int nb_args = signature->nb_args;
+  int* args_type = signature->args_type;
+  static long args[100] = {0};
+  static int args_size[100]={0};
+  static double args_double[100]={0};
+  static char* ret_string = NULL;
+  int ret_int;
+  va_list list;
+  int i;
+  
+  do_init();
+
+  if (ret_string == NULL)
+  {
+    int pagesize = getpagesize();
+    int nbPages = 32768 / pagesize;
+    posix_memalign(&ret_string, pagesize, 32768);
+    memset(ret_string, 0, 32768);
+    int ret = mlock(ret_string, 32768);
+    if (ret == -1)
+    {
+      fprintf(stderr, "errno = %d, ENOMEM=%d, EPERM=%d, EINVAL=%d\n", errno, ENOMEM, EPERM, EINVAL);
+      assert(0);
+    }
+  }
+  
+  //fprintf(stderr, "%s\n", tab_opengl_calls_name[func_number]);
+  
+  va_start(list, ret_ptr);
+  for(i=0;i<nb_args;i++)
+  {
+    void* arg_pointer;
+    char arg_char;
+    short arg_short;
+    int arg_int;
+    float arg_float;
+    double arg_double;
+    switch(args_type[i])
+    {
+      case TYPE_NONE:
+        args[i] = NULL;
+        break;
+        
+      case TYPE_UNSIGNED_INT:
+      case TYPE_INT:
+      {
+        arg_int = va_arg(list, int);
+        args[i] = arg_int;
+        break;
+      }
+      
+      case TYPE_FLOAT:
+      {
+        arg_float = va_arg(list, double);
+        args[i] = *(int*)&arg_float;
+        break;
+      }
+      
+      case TYPE_DOUBLE:
+      {
+        arg_double = va_arg(list, double);
+        args_double[i] = arg_double;
+        args[i] = (long)&args_double[i];
+        break;
+      }
+      
+      case TYPE_UNSIGNED_CHAR:
+      {
+        arg_char = va_arg(list, int);
+        args[i] = arg_char;
+        break;
+      }
+      
+      case TYPE_CHAR:
+      {
+        arg_char = va_arg(list, int);
+        args[i] = arg_char;
+        break;
+      }
+      
+      case TYPE_UNSIGNED_SHORT:
+      {
+        arg_short = va_arg(list, int);
+        args[i] = arg_short;
+        break;
+      }
+      
+      case TYPE_SHORT:
+      {
+        arg_short = va_arg(list, int);
+        args[i] = arg_short;
+        break;
+      }
+
+      case TYPE_POINTER:
+      {
+        arg_pointer = va_arg(list, void*);
+        args[i] = (int)arg_pointer;
+        break;
+      }
+      
+      case TYPE_NONE_TERMINATED_INT_ARRAY:
+      {
+        int* tab = va_arg(list, int*);
+        args[i] = (int)tab;
+        int array_size = 0;
+        while(tab[array_size])
+        {
+          array_size++;
+        }
+        array_size++;
+        args_size[i] = array_size * sizeof(int);
+        break;
+      }
+      
+      case TYPE_ARRAY_CHAR:
+      {
+        int array_size = va_arg(list, int);
+        void* tab = va_arg(list, void*);
+        try_to_put_into_phys_memory(tab, array_size);
+        args[i] = tab;
+        args_size[i] = array_size;
+        break;
+      }
+      
+      case TYPE_ARRAY_INT:
+      {
+        int array_size = va_arg(list, int);
+        array_size *= sizeof(int);
+        int* tab = va_arg(list, int*);
+        try_to_put_into_phys_memory(tab, array_size);
+        args[i] = tab;
+        args_size[i] = array_size;
+        break;
+      }
+      
+      case TYPE_ARRAY_FLOAT:
+      {
+        int array_size = va_arg(list, int);
+        array_size *= sizeof(float);
+        float* tab = va_arg(list, float*);
+        try_to_put_into_phys_memory(tab, array_size);
+        args[i] = tab;
+        args_size[i] = array_size;
+        break;
+      }
+      
+      case TYPE_ARRAY_DOUBLE:
+      {
+        int array_size = va_arg(list, int);
+        array_size *= sizeof(double);
+        double* tab = va_arg(list, double*);
+        try_to_put_into_phys_memory(tab, array_size);
+        args[i] = tab;
+        args_size[i] = array_size;
+        break;
+      }
+      
+      case TYPE_NULL_TERMINATED_STRING:
+      {
+        char* str = va_arg(list, char*);
+        int array_size = strlen(str) + 1;
+        args[i] = str;
+        args_size[i] = array_size;
+        break;
+      }
+      
+      case TYPE_OUT_INT_POINTER:
+      {
+        args[i] = va_arg(list, void*);
+        args_size[i] = sizeof(int);
+        break;
+      }
+      
+      case TYPE_IN_IGNORED_POINTER:
+      case TYPE_OUT_INT_ARRAY:
+      case TYPE_OUT_FLOAT_ARRAY:
+      case TYPE_OUT_DOUBLE_ARRAY:
+      {
+        args[i] = va_arg(list, void*);
+        args_size[i] = 0;
+        break;
+      }
+      
+      case TYPE_2CHAR:
+      case TYPE_3CHAR:
+      case TYPE_4CHAR:
+      case TYPE_2SHORT:
+      case TYPE_3SHORT:
+      case TYPE_4SHORT:
+      case TYPE_2INT:
+      case TYPE_3INT:
+      case TYPE_4INT:
+      case TYPE_2FLOAT:
+      case TYPE_3FLOAT:
+      case TYPE_4FLOAT:
+      case TYPE_16FLOAT:
+      case TYPE_2DOUBLE:
+      case TYPE_3DOUBLE:
+      case TYPE_4DOUBLE:
+      case TYPE_16DOUBLE:
+      {
+        void* tab = va_arg(list, void*);
+        try_to_put_into_phys_memory(tab, tab_args_type_length[args_type[i]]);
+        args[i] = tab;
+        break;
+      }
+      
+      default:
+      {
+        fprintf(stderr, "unexpected arg type %d\n", args_type[i]);
+        exit(-1);
+        break;
+      }
+    }
+  }
+  va_end(list);
+  
+  if (func_number == glActiveTexture_func || func_number == glActiveTextureARB_func)
+  {
+    //printf("server active texture %d\n", (int)args[0] - GL_TEXTURE0_ARB);
+  }
+  else
+  if (func_number == glClientActiveTexture_func || func_number == glClientActiveTextureARB_func)
+  {
+    clientActiveTexture = (int)args[0] - GL_TEXTURE0_ARB;
+    //printf("clientActiveTexture %d\n", clientActiveTexture);
+    assert(clientActiveTexture >= 0 && clientActiveTexture < 16);
+  }
+  else
+  if (func_number == glEnableClientState_func)
+  {
+    int num = (int)args[0] - GL_VERTEX_ARRAY;
+    if (num == GL_TEXTURE_COORD_ARRAY - GL_VERTEX_ARRAY)
+    {
+      //printf("enable texture %d\n", clientActiveTexture);
+      texCoordPointerEnable[clientActiveTexture] = 1;
+    }
+    else
+    if (num >= 0 && num < 6)
+    {
+      //printf("enable feature %d\n", num);
+      pointerArraysEnable[num] = 1;
+    }
+  }
+  else if (func_number == glDisableClientState_func)
+  {
+    int num = (int)args[0] - GL_VERTEX_ARRAY;
+    if (num == GL_TEXTURE_COORD_ARRAY - GL_VERTEX_ARRAY)
+    {
+      //printf("disable texture %d\n", clientActiveTexture);
+      texCoordPointerEnable[clientActiveTexture] = 0;
+    }
+    else
+    if (num >= 0 && num < 6)
+    {
+      //printf("disable feature %d\n", num);
+      pointerArraysEnable[num] = 0;
+    }
+  }
+  else if (func_number == glPushClientAttrib_func)
+  {
+    if ((int)args[0] & GL_CLIENT_VERTEX_ARRAY_BIT)
+    {
+      printf("save vertex array\n");
+    }
+  }
+
+  /* We set fake values into the pointers to avoid make QEMU crash */
+  switch (func_number)
+  {
+    case glXQueryVersion_func:
+    {
+      int* ptr;
+      ptr = (int*)args[1];
+      if (ptr) *ptr = 0;
+      ptr = (int*)args[2];
+      if (ptr) *ptr = 0;
+      break;
+    }
+    
+    case glXGetConfig_func:
+    {
+      *(int*)args[3] = 0;
+      break;
+    }
+    
+    case glGetIntegerv_func:
+    {
+      int* ptr = (int*)args[1];
+      int param = (int)args[0];
+      i = 0;
+      while(limits[i].count)
+      {
+        if (limits[i].token == param)
+        {
+          memset(ptr, 0, limits[i].count * sizeof(int));
+          break;
+        }
+        i++;
+      }
+      if (limits[i].count == 0)
+      {
+        fprintf(stderr, "unknown name for glGetIntegerv : %d\n", param);
+      }
+      args_size[1] = limits[i].count * sizeof(int);
+      break;
+    }
+    
+    case glGetFloatv_func:
+    {
+      float* ptr = (float*)args[1];
+      int param = (int)args[0];
+      i = 0;
+      while(limits[i].count)
+      {
+        if (limits[i].token == param)
+        {
+          memset(ptr, 0, limits[i].count * sizeof(float));
+          break;
+        }
+        i++;
+      }
+      if (limits[i].count == 0)
+      {
+        fprintf(stderr, "unknown name for glGetFloatv : %d\n", param);
+      }
+      args_size[1] = limits[i].count * sizeof(float);
+      break;
+    }
+    
+    case glGetConvolutionParameteriv_func:
+    {
+      int* ptr = (int*)args[2];
+      args_size[2] = (((int)args[1] == GL_CONVOLUTION_BORDER_COLOR) ? 4 : 1) * sizeof(int);
+      memset(ptr, 0, (((int)args[1] == GL_CONVOLUTION_BORDER_COLOR) ? 4 : 1) * sizeof(int));
+      break;
+    }
+    
+    case glXQueryExtension_func:
+    {
+      int* ptr;
+      ptr = (int*)args[1];
+      if (ptr) *ptr = 0;
+      ptr = (int*)args[2];
+      if (ptr) *ptr = 0;
+      break;
+    }
+    
+    case glGenTextures_func:
+    {
+      assert(args[1]);
+      memset(args[1], 0, (int)args[0] * sizeof(int));
+      args_size[1] = (int)args[0] * sizeof(int);
+      break;
+    }
+    
+    case glGetTexLevelParameteriv_func:
+    {
+      int* ptr = (int*)args[3];
+      assert(ptr);
+      *ptr = 0;
+      break;
+    }
+    
+    case glGenProgramsARB_func:
+    {
+      assert(args[1]);
+      *(int*)args[1] = 0;
+      break;
+    }
+    
+    case glXChooseFBConfig_func:
+    {
+      assert(args[3]);
+      *(int*)args[3] = 0;
+      break;
+    }
+    
+    case glGetVertexAttribfvARB_func:
+    {
+      assert(args[2]);
+      memset(args[2], 0, (((int)args[1] == GL_CURRENT_VERTEX_ATTRIB_ARB) ? 4 : 1) * sizeof(float));
+      args_size[2] = (((int)args[1] == GL_CURRENT_VERTEX_ATTRIB_ARB) ? 4 : 1) * sizeof(float);
+      break;
+    }
+    
+    case glGetVertexAttribivARB_func:
+    {
+      assert(args[2]);
+      memset(args[2], 0, (((int)args[1] == GL_CURRENT_VERTEX_ATTRIB_ARB) ? 4 : 1) * sizeof(int));
+      args_size[2] = (((int)args[1] == GL_CURRENT_VERTEX_ATTRIB_ARB) ? 4 : 1) * sizeof(int);
+      break;
+    }
+    
+    case glGetVertexAttribdvARB_func:
+    {
+      assert(args[2]);
+      memset(args[2], 0, (((int)args[1] == GL_CURRENT_VERTEX_ATTRIB_ARB) ? 4 : 1) * sizeof(double));
+      args_size[2] = (((int)args[1] == GL_CURRENT_VERTEX_ATTRIB_ARB) ? 4 : 1) * sizeof(double);
+      break;
+    }
+    
+    case glGetProgramLocalParameterfvARB_func:
+    {
+      assert(args[2]);
+      memset(args[2], 0, 4 * sizeof(float));
+      args_size[2] = 4 * sizeof(float);
+      break;
+    }
+    
+    case glGetProgramLocalParameterdvARB_func:
+    {
+      assert(args[2]);
+      memset(args[2], 0, 4 * sizeof(double));
+      args_size[2] = 4 * sizeof(double);
+      break;
+    }
+    
+    case glGetProgramEnvParameterfvARB_func:
+    {
+      assert(args[2]);
+      memset(args[2], 0, 4 * sizeof(float));
+      args_size[2] = 4 * sizeof(float);
+      break;
+    }
+    
+    case glGetProgramEnvParameterdvARB_func:
+    {
+      assert(args[2]);
+      memset(args[2], 0, 4 * sizeof(double));
+      args_size[2] = 4 * sizeof(double);
+      break;
+    }
+    
+    case glGetProgramivARB_func:
+    {
+      assert(args[2]);
+      memset(args[2], 0, sizeof(int));
+      break;
+    }
+    
+    case glGetProgramStringARB_func:
+    {
+      int len;
+      assert(args[2]);
+      assert(0); // FIXME
+      /*read_from_sock(sock, &len, sizeof(int));
+      read_from_sock(sock, args[2], len);*/
+    }
+    
+    default:
+      break;
+  }
+  
+  if (signature->ret_type == TYPE_CONST_CHAR)
+  {
+    try_to_put_into_phys_memory(ret_string, 32768);
+  }
+  
+  // DO CALL
+  if (stop_now)
+    return;
+  
+  ret_int = call_opengl(func_number, getpid(), (signature->ret_type == TYPE_CONST_CHAR) ? ret_string : NULL, args, args_size);
+  
+  if (signature->ret_type == TYPE_UNSIGNED_INT ||
+      signature->ret_type == TYPE_INT)
+  {
+    *(int*)ret_ptr = ret_int;
+  }
+  else if (signature->ret_type == TYPE_UNSIGNED_CHAR ||
+           signature->ret_type == TYPE_CHAR)
+  {
+    *(char*)ret_ptr = ret_int;
+  }
+  else if (signature->ret_type == TYPE_POINTER)
+  {
+    *(void**)ret_ptr = (void*)ret_int;
+  }
+  else if (signature->ret_type == TYPE_CONST_CHAR)
+  {
+    char* ret_str = NULL;
+    if (func_number == glXQueryExtensionsString_func)
+    {
+      static char* glXQueryExtensionsString_ret = NULL;
+      if (glXQueryExtensionsString_ret) free(glXQueryExtensionsString_ret);
+      glXQueryExtensionsString_ret = ret_str = strdup(ret_string);
+    }
+    else if (func_number == glXQueryServerString_func)
+    {
+      static char* glXQueryServerString_ret[100] = {NULL};
+      int name = (int)args[2];
+      assert(name >= 0 && name < 100);
+      if (glXQueryServerString_ret[name]) free(glXQueryServerString_ret[name]);
+      glXQueryServerString_ret[name] = ret_str = strdup(ret_string);
+    }
+    else if (func_number == glXGetClientString_func)
+    {
+      static char* glXGetClientString_ret[100] = {NULL};
+      int name = (int)args[1];
+      assert(name >= 0 && name < 100);
+      if (glXGetClientString_ret[name]) free(glXGetClientString_ret[name]);
+      glXGetClientString_ret[name] = ret_str = strdup(ret_string);
+    }
+    else if (func_number == glGetString_func)
+    {
+      static char* glGetString_ret[10000] = {NULL};
+      int name = (int)args[0];
+      assert(name >= 0 && name < 10000);
+      if (glGetString_ret[name]) free(glGetString_ret[name]);
+      glGetString_ret[name] = ret_str = strdup(ret_string);
+    }
+    else
+    {
+      exit(-1);
+    }
+    *(char**)(ret_ptr) = ret_str;
+  }
+  
+  /*switch (func_number)
+  {
+    case glXChooseVisual_func:
+    {
+      Display* dpy = args[0];
+      int screen = (int)args[1];
+      
+      XVisualInfo temp, *vis;
+      long mask;
+      int n;
+
+      mask = VisualScreenMask | VisualDepthMask | VisualClassMask;
+      temp.screen = screen;
+      temp.depth = DefaultDepth(dpy,screen);
+      temp.class = DefaultVisual(dpy,screen)->class;
+      temp.visualid = DefaultVisual(dpy,screen)->visualid;
+      mask |= VisualIDMask;
+
+      vis = XGetVisualInfo( dpy, mask, &temp, &n );
+      
+      *(void**)(ret_ptr) = vis;
+      break;
+    }
+    
+    default:
+      break;
+}*/
+}
+
+void glGetIntegerv( GLenum pname, GLint *params )
+{
+  do_opengl_call(glGetIntegerv_func, NULL, pname, params);
+}
+
+void glGetFloatv( GLenum pname, GLfloat *params )
+{
+  do_opengl_call(glGetFloatv_func, NULL, pname, params);
+}
+
+const char *glXQueryExtensionsString( Display *dpy, int screen )
+{
+  const char* ret = NULL;
+  do_opengl_call(glXQueryExtensionsString_func, &ret, dpy, screen);
+  return ret;
+}
+
+XVisualInfo* glXChooseVisual( Display *dpy, int screen,
+                              int *attribList )
+{
+  XVisualInfo temp, *vis;
+  long mask;
+  int n;
+  
+  mask = VisualScreenMask | VisualDepthMask | VisualClassMask;
+  temp.screen = screen;
+  temp.depth = DefaultDepth(dpy,screen);
+  temp.class = DefaultVisual(dpy,screen)->class;
+  temp.visualid = DefaultVisual(dpy,screen)->visualid;
+  mask |= VisualIDMask;
+
+  vis = XGetVisualInfo( dpy, mask, &temp, &n );
+  
+  //do_opengl_call(glXChooseVisual_func, vis, dpy, screen, attribList);
+  
+  return vis;
+}
+
+const char *glXQueryServerString( Display *dpy, int screen, int name )
+{
+  const char* ret = NULL;
+  do_opengl_call(glXQueryServerString_func, &ret, dpy, screen, name);
+  return ret;
+}
+
+const char *glXGetClientString( Display *dpy, int name )
+{
+  const char* ret = NULL;
+  do_opengl_call(glXGetClientString_func, &ret, dpy, name);
+  return ret;
+}
+
+GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
+                             GLXContext shareList, Bool direct )
+{
+  GLXContext ret = NULL;
+  do_opengl_call(glXCreateContext_func, &ret, dpy, vis, shareList, direct);
+  printf("glXCreateContext = %p\n", ret);
+  return ret;
+}
+
+GLXContext glXGetCurrentContext (void)
+{
+  GLXContext ret = NULL;
+  do_opengl_call(glXGetCurrentContext_func, &ret);
+  printf("glXGetCurrentContext = %p\n", ret);
+  return ret;
+}
+
+GLXDrawable glXGetCurrentDrawable (void)
+{
+  GLXDrawable ret = 0;
+  do_opengl_call(glXGetCurrentDrawable_func, &ret);
+  printf("glXGetCurrentDrawable = %p\n", (void*)ret);
+  return ret;
+}
+
+void glXDestroyContext( Display *dpy, GLXContext ctx )
+{
+  printf("glXDestroyContext %p\n", ctx);
+  do_opengl_call(glXDestroyContext_func, NULL, dpy, ctx);
+}
+
+Bool glXQueryVersion( Display *dpy, int *maj, int *min )
+{
+  Bool ret = False;
+  do_opengl_call(glXQueryVersion_func, &ret, dpy, maj, min);
+  return ret;
+}
+
+
+typedef struct
+{
+  int x;
+  int y;
+  int width;
+  int height;
+  int map_state;
+} WindowPosStruct;
+
+static WindowPosStruct oldPos = {0};
+
+static void _get_window_pos(Display *dpy, Window win, WindowPosStruct* pos)
+{
+  XWindowAttributes window_attributes_return;
+  Window child;
+  int x, y;
+  Window root = DefaultRootWindow(dpy);
+  XGetWindowAttributes(dpy, win, &window_attributes_return);
+  XTranslateCoordinates(dpy, win, root, 0, 0, &x, &y, &child);
+  /*printf("%d %d %d %d\n", x, y,
+  window_attributes_return.width, window_attributes_return.height);*/
+  pos->x = x;
+  pos->y = y;
+  pos->width = window_attributes_return.width;
+  pos->height = window_attributes_return.height;
+  pos->map_state = window_attributes_return.map_state;
+}
+
+static GLXPbuffer pbuffer = NULL;
+
+static void _move_win_if_necessary(Display *dpy, Window win)
+{
+  if (pbuffer != NULL && win == pbuffer)
+  {
+    return;
+  }
+  
+  WindowPosStruct pos;
+  _get_window_pos(dpy, win, &pos);
+  if (memcmp(&pos, &oldPos, sizeof(oldPos)) != 0)
+  {
+    if (pos.map_state != oldPos.map_state)
+    {
+      do_opengl_call(_changeWindowState_func, NULL, win, pos.map_state);
+    }
+    memcpy(&oldPos, &pos, sizeof(oldPos));
+    do_opengl_call(_moveResizeWindow_func, NULL, win, &pos);
+  }
+}
+
+Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable, GLXContext ctx)
+{
+  Bool ret = False;
+  do_opengl_call(glXMakeCurrent_func, &ret, dpy, drawable, ctx);
+  _move_win_if_necessary(dpy, drawable);
+  return ret;
+}
+
+
+Bool glXIsDirect( Display *dpy, GLXContext ctx )
+{
+  Bool ret = False;
+  do_opengl_call(glXIsDirect_func, &ret, dpy, ctx);
+  return ret;
+}
+
+int glXGetConfig( Display *dpy, XVisualInfo *visual,
+                  int attrib, int *value )
+{
+  int ret = 0;
+  do_opengl_call(glXGetConfig_func, &ret, dpy, visual, attrib, value);
+  return ret;
+}
+
+void glXSwapBuffers( Display *dpy, GLXDrawable drawable )
+{
+  _move_win_if_necessary(dpy, drawable);
+  do_opengl_call(glXSwapBuffers_func, NULL, dpy, drawable);
+}
+
+Bool glXQueryExtension( Display *dpy,
+                        int *errorBase,
+                        int *eventBase )
+{
+  Bool ret;
+  do_opengl_call(glXQueryExtension_func, &ret, dpy, errorBase, eventBase);
+  return ret;
+}
+
+void glXWaitGL (void)
+{
+}
+
+void glXWaitX (void)
+{
+}
+
+#if 0
+GLXFBConfig* fbConfig = NULL;
+
+GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen,
+                                const int *attribList, int *nitems )
+{
+  GLXFBConfig * ret = NULL;
+  do_opengl_call(glXChooseFBConfig_func, &ret, dpy, screen, attribList, nitems);
+  fbConfig = ret = malloc(sizeof(GLXFBConfig) * (*nitems));
+  int i;
+  for(i=0;i<*nitems;i++)
+  {
+    fbConfig[i] = i + 1;
+  }
+  printf("nitems = %d\n", *nitems);
+  return ret;
+}
+
+GLXPbuffer glXCreatePbuffer(Display *dpy,
+                            GLXFBConfig config,
+                            const int *AttributeList)
+{
+  GLXPbuffer ret = NULL;
+  int i = (int)config - 1;
+  printf("fb config %d\n", i);
+  do_opengl_call(glXCreatePbuffer_func, &ret, dpy, i, AttributeList);
+  printf("pbuffer = %p\n", ret);
+  pbuffer = ret;
+  return ret;
+}
+
+XVisualInfo *glXGetVisualFromFBConfig( Display *dpy,
+                                       GLXFBConfig config )
+{
+  int screen = 0;
+      
+  XVisualInfo temp, *vis;
+  long mask;
+  int n;
+  
+  mask = VisualScreenMask | VisualDepthMask | VisualClassMask;
+  temp.screen = screen;
+  temp.depth = DefaultDepth(dpy,screen);
+  temp.class = DefaultVisual(dpy,screen)->class;
+  temp.visualid = DefaultVisual(dpy,screen)->visualid;
+  mask |= VisualIDMask;
+
+  vis = XGetVisualInfo( dpy, mask, &temp, &n );
+  
+  int i = (int)config - 1;
+  do_opengl_call(glXGetVisualFromFBConfig_func, vis, dpy, i);
+  
+  return vis;
+  
+}
+
+void glXUseXFont( Font font_id, int first, int count, int list )
+{
+  fprintf(stderr, "glXUseXFont : unsupported call\n");
+  //do_opengl_call(glXUseXFont_func, NULL, font, first, count, list);
+}
+#endif
+
+#include "client_stub.c"
+
+const GLubyte * glGetString( GLenum name )
+{
+  const GLubyte* ret = NULL;
+  do_opengl_call(glGetString_func, &ret, name);
+  return ret;
+}
+
+void glGetConvolutionParameteriv( GLenum target, GLenum pname,
+                                  GLint *params )
+{
+  do_opengl_call(glGetConvolutionParameteriv_func, NULL, target, pname, params);
+}
+
+void glLightfv( GLenum light, GLenum pname, const GLfloat *params )
+{
+  int size = 0;
+  switch(pname)
+  {
+    case GL_AMBIENT:
+    case GL_DIFFUSE:
+    case GL_SPECULAR:
+    case GL_POSITION:
+      size = 4;
+      break;
+      
+    case GL_SPOT_DIRECTION:
+      size = 3;
+      break;
+      
+    case GL_SPOT_EXPONENT:
+    case GL_SPOT_CUTOFF:
+    case GL_CONSTANT_ATTENUATION:
+    case GL_LINEAR_ATTENUATION:
+    case GL_QUADRATIC_ATTENUATION:
+      size = 1;
+      break;
+      
+    default:
+      fprintf(stderr, "unhandled pname = %d\n", pname);
+      return;
+  }
+  do_opengl_call(glLightfv_func, NULL, light, pname, size, params);
+}
+
+void glMaterialfv( GLenum face, GLenum pname, const GLfloat *params )
+{
+  int size = 0;
+  switch(pname)
+  {
+    case GL_AMBIENT:
+    case GL_DIFFUSE:
+    case GL_SPECULAR:
+    case GL_EMISSION:
+    case GL_AMBIENT_AND_DIFFUSE:
+      size = 4;
+      break;
+      
+    case GL_SHININESS:
+      size = 1;
+      break;
+      
+    case GL_COLOR_INDEXES:
+      size = 3;
+      break;
+      
+    default:
+      fprintf(stderr, "unhandled pname = %d\n", pname);
+      return;
+  }
+  do_opengl_call(glMaterialfv_func, NULL, face, pname, size, params);
+}
+
+void glLightModelfv( GLenum pname,
+                     const GLfloat *params )
+{
+  int size = 0;
+  switch(pname)
+  {
+    case GL_LIGHT_MODEL_AMBIENT:
+      size = 4;
+      break;
+      
+    case GL_LIGHT_MODEL_COLOR_CONTROL:
+      fprintf(stderr, "not sure how to handle GL_LIGHT_MODEL_COLOR_CONTROL. Exiting\n");
+      return;
+      
+    case GL_LIGHT_MODEL_LOCAL_VIEWER:
+    case GL_LIGHT_MODEL_TWO_SIDE:
+      size = 1;
+      break;
+    
+    default:
+      fprintf(stderr, "unhandled pname = %d\n", pname);
+      return;
+  }
+  do_opengl_call(glLightModelfv_func, NULL, pname, size, params);
+}
+
+static int glMap1_get_multiplier(GLenum target)
+{
+  switch (target)
+  {
+    case GL_MAP1_VERTEX_3:
+    case GL_MAP1_NORMAL:
+    case GL_MAP1_TEXTURE_COORD_3:
+      return 3;
+      break;
+      
+    case GL_MAP1_VERTEX_4:
+    case GL_MAP1_COLOR_4:
+    case GL_MAP1_TEXTURE_COORD_4:
+      return 4;
+      break;
+      
+    case GL_MAP1_INDEX:
+    case GL_MAP1_TEXTURE_COORD_1:
+      return 1;
+      break;
+      
+    case GL_MAP1_TEXTURE_COORD_2:
+      return 2;
+      break;
+      
+    default:
+      fprintf(stderr, "unhandled target = %d\n", target);
+      return 0;
+  }
+}
+
+void glMap1f( GLenum target,
+              GLfloat u1,
+              GLfloat u2,
+              GLint stride,
+              GLint order,
+              const GLfloat *points )
+{
+  int num_points = order;
+  int multiplier = glMap1_get_multiplier(target);
+  if (multiplier)
+  {
+    num_points *= multiplier;
+    do_opengl_call(glMap1f_func, NULL,
+                  target, u1, u2, stride, order, num_points, points);
+  }
+}
+
+void glMap1d( GLenum target,
+              GLdouble u1,
+              GLdouble u2,
+              GLint stride,
+              GLint order,
+              const GLdouble *points )
+{
+  int num_points = order;
+  int multiplier = glMap1_get_multiplier(target);
+  if (multiplier)
+  {
+    num_points *= multiplier;
+    do_opengl_call(glMap1d_func, NULL,
+                  target, u1, u2, stride, order, num_points, points);
+  }
+}
+
+static int glMap2_get_multiplier(GLenum target)
+{
+  switch (target)
+  {
+    case GL_MAP2_VERTEX_3:
+    case GL_MAP2_NORMAL:
+    case GL_MAP2_TEXTURE_COORD_3:
+      return 3;
+      break;
+      
+    case GL_MAP2_VERTEX_4:
+    case GL_MAP2_COLOR_4:
+    case GL_MAP2_TEXTURE_COORD_4:
+      return 4;
+      break;
+      
+    case GL_MAP2_INDEX:
+    case GL_MAP2_TEXTURE_COORD_1:
+      return 1;
+      break;
+      
+    case GL_MAP2_TEXTURE_COORD_2:
+      return 2;
+      break;
+      
+    default:
+      fprintf(stderr, "unhandled target = %d\n", target);
+      return 0;
+  }
+}
+
+void glMap2f( GLenum target,
+              GLfloat u1,
+              GLfloat u2,
+              GLint ustride,
+              GLint uorder,
+              GLfloat v1,
+              GLfloat v2,
+              GLint vstride,
+              GLint vorder,
+              const GLfloat *points )
+{
+  int num_points = uorder * vorder;
+  int multiplier = glMap2_get_multiplier(target);
+  if (multiplier)
+  {
+    num_points *= multiplier;
+    do_opengl_call(glMap2f_func, NULL,
+                  target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, num_points, points);
+  }
+}
+
+
+void glMap2d( GLenum target,
+              GLdouble u1,
+              GLdouble u2,
+              GLint ustride,
+              GLint uorder,
+              GLdouble v1,
+              GLdouble v2,
+              GLint vstride,
+              GLint vorder,
+              const GLdouble *points )
+{
+  int num_points = uorder * vorder;
+  int multiplier = glMap2_get_multiplier(target);
+  if (multiplier)
+  {
+    num_points *= multiplier;
+    do_opengl_call(glMap2d_func, NULL,
+                  target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, num_points, points);
+  }
+}
+
+void glGenTextures( GLsizei n, GLuint *textures )
+{
+  do_opengl_call(glGenTextures_func, NULL, n, textures);
+}
+
+void glDeleteTextures ( GLsizei n, const GLuint *textures )
+{
+  do_opengl_call(glDeleteTextures_func, NULL, n, n, textures);
+}
+
+void glCallLists( GLsizei n,
+                  GLenum type,
+                  const GLvoid *lists )
+{
+  int size = n;
+  switch(type)
+  {
+    case GL_BYTE:
+    case GL_UNSIGNED_BYTE:
+      break;
+      
+    case GL_SHORT:
+    case GL_UNSIGNED_SHORT:
+    case GL_2_BYTES:
+      size *= 2;
+      break;
+      
+    case GL_3_BYTES:
+      size *= 3;
+      break;
+      
+    case GL_INT:
+    case GL_UNSIGNED_INT:
+    case GL_FLOAT:
+    case GL_4_BYTES:
+      size *= 4;
+      break;
+      
+    default:
+      fprintf(stderr, "unsupported type = %d\n", type);
+      return;
+  }
+  do_opengl_call(glCallLists_func, NULL, n, type, size, lists);
+}
+
+void EXT_FUNC(glGenProgramsARB) (GLsizei n, GLuint* programs)
+{
+  CHECK_PROC(glGenProgramsARB);
+  do_opengl_call(glGenProgramsARB_func, NULL, n, programs);
+}
+
+void EXT_FUNC(glDeleteProgramsARB) (GLsizei n, const GLuint *programs)
+{
+  CHECK_PROC(glDeleteProgramsARB);
+  do_opengl_call(glDeleteProgramsARB_func, NULL, n, programs);
+}
+
+void EXT_FUNC(glProgramStringARB) (GLenum a, GLenum b, GLsizei c, const GLvoid *d)
+{
+  CHECK_PROC(glProgramStringARB);
+  do_opengl_call(glProgramStringARB_func, NULL, a, b, c, c, d);
+}
+
+void EXT_FUNC(glShaderSourceARB) (GLhandleARB handle , GLsizei size, const GLcharARB* *p_tab_prog, const GLint * d)
+{
+  CHECK_PROC(glShaderSourceARB);
+  if (size == 1 && d == NULL && p_tab_prog != NULL)
+  {
+    do_opengl_call(glShaderSourceARB_func, NULL, handle, *p_tab_prog);
+  }
+  else
+  {
+    fprintf(stderr, "Unsupported parameters for glShaderSourceARB\n");
+  }
+}
+
+GLint EXT_FUNC(glGetUniformLocationARB) (GLhandleARB handle, const GLcharARB *txt)
+{
+  int ret;
+  CHECK_PROC_WITH_RET(glGetUniformLocationARB);
+  do_opengl_call(glGetUniformLocationARB_func, &ret, handle, txt);
+  return ret;
+}
+
+void EXT_FUNC(glCompressedTexImage2DARB)(GLenum target,
+                               GLint level,
+                               GLint internalformat,
+                               GLsizei width,
+                               GLsizei height,
+                               GLint border,
+                               GLsizei imageSize,
+                               const GLvoid * data)
+{
+  CHECK_PROC(glCompressedTexImage2DARB);
+  do_opengl_call(glCompressedTexImage2DARB_func, NULL,
+                 target, level, internalformat, width, height, border, imageSize, imageSize, data);
+}
+
+
+void EXT_FUNC(glCompressedTexSubImage2DARB)(GLenum target,
+                                  GLint level,
+                                  GLint xoffset,
+                                  GLint yoffset,
+                                  GLsizei width,
+                                  GLsizei height,
+                                  GLenum format,
+                                  GLsizei imageSize,
+                                  const GLvoid * data)
+{
+  CHECK_PROC(glCompressedTexSubImage2DARB);
+  do_opengl_call(glCompressedTexSubImage2DARB_func, NULL,
+                 target, level, xoffset, yoffset, width, height, format, imageSize, imageSize, data);
+}
+
+void EXT_FUNC(glPointParameterfvARB)(GLenum pname, const GLfloat * params)
+{
+  int size;
+  CHECK_PROC(glPointParameterfvARB);
+  size = (pname == GL_POINT_DISTANCE_ATTENUATION) ? 3 : 1;
+  do_opengl_call(glPointParameterfvARB_func, NULL, pname, size, params);
+}
+
+void EXT_FUNC(glGetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat *params)
+{
+  CHECK_PROC(glGetVertexAttribfvARB);
+  do_opengl_call(glGetVertexAttribfvARB_func, NULL, index, pname, params);
+}
+
+void EXT_FUNC(glGetVertexAttribivARB)(GLuint index, GLenum pname, GLint *params)
+{
+  CHECK_PROC(glGetVertexAttribivARB);
+  do_opengl_call(glGetVertexAttribivARB_func, NULL, index, pname, params);
+}
+
+void EXT_FUNC(glGetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble *params)
+{
+  CHECK_PROC(glGetVertexAttribdvARB);
+  do_opengl_call(glGetVertexAttribdvARB_func, NULL, index, pname, params);
+}
+
+void EXT_FUNC(glGetProgramLocalParameterfvARB) (GLenum target, GLuint index, GLfloat *params)
+{
+  CHECK_PROC(glGetProgramLocalParameterfvARB);
+  do_opengl_call(glGetProgramLocalParameterfvARB_func, NULL, target, index, params);
+}
+
+void EXT_FUNC(glGetProgramLocalParameterdvARB) (GLenum target, GLuint index, GLdouble *params)
+{
+  CHECK_PROC(glGetProgramLocalParameterdvARB);
+  do_opengl_call(glGetProgramLocalParameterdvARB_func, NULL, target, index, params);
+}
+
+void EXT_FUNC(glGetProgramEnvParameterfvARB) (GLenum target, GLuint index, GLfloat *params)
+{
+  CHECK_PROC(glGetProgramEnvParameterfvARB);
+  do_opengl_call(glGetProgramEnvParameterfvARB_func, NULL, target, index, params);
+}
+
+void EXT_FUNC(glGetProgramEnvParameterdvARB) (GLenum target, GLuint index, GLdouble *params)
+{
+  CHECK_PROC(glGetProgramEnvParameterdvARB);
+  do_opengl_call(glGetProgramEnvParameterdvARB_func, NULL, target, index, params);
+}
+
+void EXT_FUNC(glGetProgramivARB) (GLenum target, GLenum pname, GLint *params)
+{
+  CHECK_PROC(glGetProgramivARB);
+  do_opengl_call(glGetProgramivARB_func, NULL, target, pname, params);
+}
+
+void EXT_FUNC(glGetProgramStringARB) (GLenum target, GLenum pname, GLvoid *string)
+{
+  CHECK_PROC(glGetProgramStringARB);
+  do_opengl_call(glGetProgramStringARB_func, NULL, target, pname, string);
+}
+
+static int getTexImageFactorFromFormat(int format)
+{
+  switch (format)
+  {
+    case GL_COLOR_INDEX:
+    case GL_RED:
+    case GL_GREEN:
+    case GL_BLUE:
+    case GL_ALPHA:
+    case GL_LUMINANCE:
+    case GL_INTENSITY:
+      return 1;
+      break;
+      
+    case GL_LUMINANCE_ALPHA:
+      return 2;
+      break;
+      
+    case GL_RGB:
+    case GL_BGR:
+      return 3;
+      break;
+      
+    case GL_RGBA:
+    case GL_BGRA:
+      return 4;
+      break;
+          
+    default:
+      fprintf(stderr, "unknown texture format : %d\n", format);
+      return 0;
+  }
+}
+
+void glTexImage1D(GLenum target,
+                  GLint level,
+                  GLint internalFormat,
+                  GLsizei width,
+                  GLint border,
+                  GLenum format,
+                  GLenum type,
+                  const GLvoid *pixels )
+{
+ int size = width * getTexImageFactorFromFormat(format);
+  
+  if (type != GL_UNSIGNED_BYTE)
+  {
+    fprintf(stderr, "unknown pixel type : %d\n", type);
+    return;
+  }
+
+  if (pixels == NULL) size = 0;
+  do_opengl_call(glTexImage1D_func, NULL, target, level, internalFormat, width, border, format, type, size, pixels);
+
+}
+
+void glTexImage2D( GLenum target,
+                   GLint level,
+                   GLint internalFormat,
+                   GLsizei width,
+                   GLsizei height,
+                   GLint border,
+                   GLenum format,
+                   GLenum type,
+                   const GLvoid *pixels )
+{
+  int size = width * height * getTexImageFactorFromFormat(format);
+  
+  if (type != GL_UNSIGNED_BYTE)
+  {
+    fprintf(stderr, "unknown pixel type : %d\n", type);
+    return;
+  }
+
+  if (pixels == NULL) size = 0;
+  do_opengl_call(glTexImage2D_func, NULL, target, level, internalFormat, width, height, border, format, type, size, pixels);
+}
+
+void glTexSubImage2D( GLenum target,
+                      GLint level,
+                      GLint xoffset,
+                      GLint yoffset,
+                      GLsizei width,
+                      GLsizei height,
+                      GLenum format,
+                      GLenum type,
+                      const GLvoid *pixels )
+{
+  int size = width * height * getTexImageFactorFromFormat(format);
+  
+  if (type != GL_UNSIGNED_BYTE)
+  {
+    fprintf(stderr, "unknown pixel type : %d\n", type);
+    return;
+  }
+
+  do_opengl_call(glTexSubImage2D_func, NULL, target, level, xoffset, yoffset, width, height, format, type, size, pixels);
+}
+
+void glTexImage3D( GLenum target,
+                   GLint level,
+                   GLint internalFormat,
+                   GLsizei width,
+                   GLsizei height,
+                   GLsizei depth,
+                   GLint border,
+                   GLenum format,
+                   GLenum type,
+                   const GLvoid *pixels )
+{
+  int size = width * height * depth * getTexImageFactorFromFormat(format);
+  
+  if (type != GL_UNSIGNED_BYTE)
+  {
+    fprintf(stderr, "unknown pixel type : %d\n", type);
+    return;
+  }
+
+  do_opengl_call(glTexImage3D_func, NULL, target, level, internalFormat, width, height, depth, border, format, type, size, pixels);
+}
+
+void glGetTexLevelParameteriv( GLenum target,
+                               GLint level,
+                               GLenum pname,
+                               GLint *params )
+{
+  do_opengl_call(glGetTexLevelParameteriv_func, NULL, target, level, pname, params);
+}
+
+void glTexParameterfv( GLenum target,
+                        GLenum pname,
+                        const GLfloat *params )
+{
+  int size = (pname == GL_TEXTURE_BORDER_COLOR) ? 4 : 1;
+  do_opengl_call(glTexParameterfv_func, NULL, target, pname, size, params);
+}
+
+void glTexParameteriv( GLenum target,
+                       GLenum pname,
+                       const GLint *params )
+{
+  int size = (pname == GL_TEXTURE_BORDER_COLOR) ? 4 : 1;
+  do_opengl_call(glTexParameteriv_func, NULL, target, pname, size, params);
+}
+
+void glFogfv( GLenum pname, const GLfloat *params )
+{
+  int size;
+  if (pname == GL_FOG_COLOR)
+    size = 4;
+  else
+    size = 1;
+  do_opengl_call(glFogfv_func, NULL, pname, size, params);
+}
+
+void glBitmap(GLsizei width,
+              GLsizei height,
+              GLfloat xorig,
+              GLfloat yorig,
+              GLfloat xmove,
+              GLfloat ymove,
+              const GLubyte *bitmap ) 
+{
+  int size = width * height;
+  //printf("bitmap %d %d %d\n", width, height, size);
+  do_opengl_call(glBitmap_func, NULL, width, height, xorig, yorig, xmove, ymove, size, bitmap);
+}
+
+void glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params )
+{
+  int size = (pname == GL_TEXTURE_GEN_MODE) ? 1 : 4;
+  do_opengl_call(glTexGenfv_func, NULL, coord, pname, size, params);
+}
+
+void glTexEnvfv( GLenum target,
+                 GLenum pname,
+                 const GLfloat *params )
+{
+  int size = (pname == GL_TEXTURE_ENV_MODE) ? 1 : 4;
+  do_opengl_call(glTexEnvfv_func, NULL, target, pname, size, params);
+}
+
+void glVertexPointer( GLint size,
+                      GLenum type,
+                      GLsizei stride,
+                      const GLvoid *ptr )
+{
+  //printf("glVertexPointer %d %d %d %p\n", size, type, stride, ptr);
+  vertexPointer.size = size;
+  vertexPointer.type = type;
+  vertexPointer.stride = stride;
+  vertexPointer.ptr = ptr;
+}
+
+void glNormalPointer( GLenum type,
+                      GLsizei stride,
+                      const GLvoid *ptr )
+{
+  //printf("glNormalPointer %d %d %p\n", type, stride, ptr);
+  normalPointer.size = 3;
+  normalPointer.type = type;
+  normalPointer.stride = stride;
+  normalPointer.ptr = ptr;
+}
+
+void glColorPointer( GLint size,
+                     GLenum type,
+                     GLsizei stride,
+                     const GLvoid *ptr )
+{
+  //printf("glColorPointer %d %d %d %p\n", size, type, stride, ptr);
+  colorPointer.size = size;
+  colorPointer.type = type;
+  colorPointer.stride = stride;
+  colorPointer.ptr = ptr;
+}
+
+void glTexCoordPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr )
+{
+  //printf("glTexCoordPointer %d %d %d %p\n", size, type, stride, ptr);
+  texCoordPointer[clientActiveTexture].size = size;
+  texCoordPointer[clientActiveTexture].type = type;
+  texCoordPointer[clientActiveTexture].stride = stride;
+  texCoordPointer[clientActiveTexture].ptr = ptr;
+}
+
+static int getMulFactorFromPointerArray(VertexNormalColorPointerStruct* array)
+{
+  switch(array->type)
+  {
+    case GL_BYTE:
+    case GL_UNSIGNED_BYTE:
+      return array->stride + array->size;
+      break;
+      
+    case GL_SHORT:
+    case GL_UNSIGNED_SHORT:
+      return array->stride + 2 * array->size;
+      break;
+      
+    case GL_INT:
+    case GL_UNSIGNED_INT:
+    case GL_FLOAT:
+      return array->stride + 4 * array->size;
+      break;
+      
+    case GL_DOUBLE:
+      return array->stride + 8 * array->size;
+      break;
+
+    default:
+      fprintf(stderr, "unsupported type = %d\n", array->type);
+      return 0;
+  }
+}
+
+void _glArraySend(int func, VertexNormalColorPointerStruct* array, int nbElts)
+{
+  int data_size = nbElts * getMulFactorFromPointerArray(array);
+  if (func == glNormalPointer_func)
+    do_opengl_call(func, NULL,
+                    array->type, array->stride, data_size, data_size, array->ptr);
+  else
+    do_opengl_call(func, NULL,
+                  array->size, array->type, array->stride, data_size, data_size, array->ptr);
+}
+
+
+void _glArraysSend(int nbElts)
+{
+  if (pointerArraysEnable[GL_VERTEX_ARRAY - GL_VERTEX_ARRAY])
+  {
+    //printf("vertex enable\n");
+    _glArraySend(glVertexPointer_func, &vertexPointer, nbElts);
+  }
+  
+  if (pointerArraysEnable[GL_NORMAL_ARRAY - GL_VERTEX_ARRAY])
+  {
+    //printf("normal enable\n");
+    _glArraySend(glNormalPointer_func, &normalPointer, nbElts);
+  }
+  
+  if (pointerArraysEnable[GL_COLOR_ARRAY - GL_VERTEX_ARRAY])
+  {
+    //printf("color enable\n");
+    _glArraySend(glColorPointer_func, &colorPointer, nbElts);
+  }
+  
+  //if (pointerArraysEnable[GL_TEXTURE_COORD_ARRAY - GL_VERTEX_ARRAY])
+  if (texCoordPointerEnable[clientActiveTexture])
+  {
+    printf("texture enable\n");
+    _glArraySend(glTexCoordPointer_func, &texCoordPointer[clientActiveTexture], nbElts);
+  }
+}
+
+void glDrawArrays( GLenum mode,
+                   GLint first,
+                   GLsizei count )
+{
+  _glArraysSend(first + count);
+  do_opengl_call(glDrawArrays_func, NULL, mode, first, count);
+}
+
+
+void glDrawElements( GLenum mode,
+                     GLsizei count,
+                     GLenum type,
+                     const GLvoid *indices )
+{
+  int i;
+  int size = count;
+  int maxIndice = -1;
+  
+  if (count == 0) return;
+  
+  switch(type)
+  {
+    case GL_UNSIGNED_BYTE:
+    {
+      unsigned char* c = indices;
+      for(i=0;i<count;i++)
+      {
+        if (i == 0 || c[i] > maxIndice) maxIndice = c[i];
+      }
+      break;
+    }
+      
+    case GL_UNSIGNED_SHORT:
+    {
+      size *= 2;
+      unsigned short* s = indices;
+      for(i=0;i<count;i++)
+      {
+        if (i == 0 || s[i] > maxIndice) maxIndice = s[i];
+      }
+      break;
+    }
+      
+    case GL_UNSIGNED_INT:
+    {
+      size *= 4;
+      unsigned int* _int = indices;
+      for(i=0;i<count;i++)
+      {
+        if (i == 0 || _int[i] > maxIndice) maxIndice = _int[i];
+      }
+      break;
+    }
+
+    default:
+      fprintf(stderr, "unsupported type = %d\n", type);
+      return;
+  }
+  
+  //printf("glDrawElements : %d %d %d %p %d\n", mode, count, type, indices, maxIndice);
+
+#if 0
+  do_opengl_call(glBegin_func, NULL, mode);
+  if (type == GL_UNSIGNED_INT)
+  {
+    for(i=0;i<count;i++)
+    {
+      //do_opengl_call(glArrayElement_func, NULL, ((unsigned int*)indices)[i]);
+      int indice = ((unsigned int*)indices)[i];
+      glNormal3fv(normalPointer.ptr + indice * normalPointer.stride);
+      if (pointerArraysEnable[GL_COLOR_ARRAY - GL_VERTEX_ARRAY])
+      {
+        glColor4ubv(colorPointer.ptr + indice * colorPointer.stride);
+      }
+      glVertex3fv(vertexPointer.ptr + indice * vertexPointer.stride);
+      /*glNormal3fv((float*)(VNCArray + 4 * sizeof(float) + indice * STRIDE_GL_ARRAY));
+      if (colorOK)
+        glColor4ubv((unsigned char*)(VNCArray + 8 * sizeof(float) + indice * STRIDE_GL_ARRAY));
+          glVertex3fv((float*)(VNCArray + indice * STRIDE_GL_ARRAY));*/
+    }
+  }
+  else if (type == GL_UNSIGNED_SHORT)
+  {
+    for(i=0;i<count;i++)
+    {
+      do_opengl_call(glArrayElement_func, NULL, ((unsigned short*)indices)[i]);
+    }
+  }
+  else if (type == GL_UNSIGNED_BYTE)
+  {
+    for(i=0;i<count;i++)
+    {
+      do_opengl_call(glArrayElement_func, NULL, ((unsigned char*)indices)[i]);
+    }
+  }
+  else
+  {
+    assert(0);
+  }
+  do_opengl_call(glEnd_func, NULL);
+#else
+  _glArraysSend(1 + maxIndice);
+  do_opengl_call(glDrawElements_func, NULL, mode, count, type, size, indices);
+#endif
+}
+
+typedef struct
+{
+  unsigned int hash;
+  char* name;
+  __GLXextFuncPtr func;
+} AssocProcAdress;
+
+unsigned int str_hash (const void* v)
+{
+  /* 31 bit hash function */
+  const signed char *p = v;
+  unsigned int h = *p;
+
+  if (h)
+    for (p += 1; *p != '\0'; p++)
+      h = (h << 5) - h + *p;
+
+  return h;
+}
+
+__GLXextFuncPtr glXGetProcAddress (const GLubyte * _name)
+{
+  static int nbElts = 0;
+  static int tabSize = 0;
+  static AssocProcAdress* tab_assoc = NULL;
+  static void* handle = NULL;
+  char tmp[256];
+  
+  const char* name = (const char*)_name;
+  int i;
+  
+  if (name == NULL)
+  {
+    return NULL;
+  }
+  
+  if (tabSize == 0)
+  {
+    tabSize = 500;
+    tab_assoc = calloc(tabSize, sizeof(AssocProcAdress));
+  }
+  int hash = str_hash(name);
+  for(i=0;i<nbElts;i++)
+  {
+    if (tab_assoc[i].hash == hash && strcmp(tab_assoc[i].name, name) == 0)
+    {
+      return (__GLXextFuncPtr)tab_assoc[i].func;
+    }
+  }
+  int ret = 0;
+  do_opengl_call(glXGetProcAddress_fake_func, &ret, name);
+  if (ret == 0)
+  {
+    if (nbElts < tabSize)
+    {
+      tab_assoc[nbElts].hash = hash;
+      tab_assoc[nbElts].name = strdup(name);
+      tab_assoc[nbElts].func = NULL;
+      nbElts ++;
+    }
+    fprintf(stderr, "not found name on server side = %s\n", name);
+    return NULL;
+  }
+  else
+  {
+    void* func;
+    if (handle == NULL)
+    {
+      handle = dlopen("libGL.so",RTLD_LAZY);
+      if (!handle) {
+        fprintf (stderr, "%s\n", dlerror());
+        exit(1);
+      }
+    }
+    func = dlsym(handle, name);
+    if (func == NULL)
+    {
+      fprintf(stderr, "not found name on client side = %s\n", name);
+    }
+    if (nbElts < tabSize)
+    {
+      tab_assoc[nbElts].hash = hash;
+      tab_assoc[nbElts].name = strdup(name);
+      tab_assoc[nbElts].func = func;
+      nbElts ++;
+    }
+    return func;
+  }
+}
+
+__GLXextFuncPtr glXGetProcAddressARB (const GLubyte * name)
+{
+  return glXGetProcAddress(name);
+}
+
diff -Nrup --exclude=CVS --exclude='*~' --exclude='config-host*' --exclude=Makefile --exclude=config.mak --exclude=config.h qemu.ori/target-i386/opengl_func.h qemu/target-i386/opengl_func.h
--- qemu.ori/target-i386/opengl_func.h	1970-01-01 01:00:00.000000000 +0100
+++ qemu/target-i386/opengl_func.h	2006-11-14 21:46:24.000000000 +0100
@@ -0,0 +1,424 @@
+/*
+ *  Main header for both host and guest sides
+ * 
+ *  Copyright (c) 2006 Even Rouault
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+enum
+{
+  TYPE_NONE,
+  TYPE_CHAR,
+  TYPE_UNSIGNED_CHAR,
+  TYPE_SHORT,
+  TYPE_UNSIGNED_SHORT,
+  TYPE_INT,
+  TYPE_UNSIGNED_INT,
+  TYPE_POINTER,
+  TYPE_FLOAT,
+  TYPE_DOUBLE,
+  TYPE_NONE_TERMINATED_INT_ARRAY,
+  TYPE_CONST_CHAR,
+  TYPE_1CHAR,
+  TYPE_2CHAR,
+  TYPE_3CHAR,
+  TYPE_4CHAR,
+  TYPE_1SHORT,
+  TYPE_2SHORT,
+  TYPE_3SHORT,
+  TYPE_4SHORT,
+  TYPE_1INT,
+  TYPE_2INT,
+  TYPE_3INT,
+  TYPE_4INT,
+  TYPE_1FLOAT,
+  TYPE_2FLOAT,
+  TYPE_3FLOAT,
+  TYPE_4FLOAT,
+  TYPE_16FLOAT,
+  TYPE_1DOUBLE,
+  TYPE_2DOUBLE,
+  TYPE_3DOUBLE,
+  TYPE_4DOUBLE,
+  TYPE_16DOUBLE,
+  TYPE_OUT_INT_POINTER,
+  TYPE_ARRAY_CHAR,
+  TYPE_ARRAY_INT,
+  TYPE_ARRAY_FLOAT,
+  TYPE_ARRAY_DOUBLE,
+  TYPE_IN_IGNORED_POINTER,
+  TYPE_OUT_CHAR_ARRAY,
+  TYPE_OUT_INT_ARRAY,
+  TYPE_OUT_FLOAT_ARRAY,
+  TYPE_OUT_DOUBLE_ARRAY,
+  TYPE_NULL_TERMINATED_STRING,
+  TYPE_VISUAL_INFO
+};  
+
+static int tab_args_type_length[] =
+{
+  0,
+  sizeof(char),
+  sizeof(unsigned char),
+  sizeof(short),
+  sizeof(unsigned short),
+  sizeof(int),
+  sizeof(unsigned int),
+  sizeof(void*),
+  sizeof(float),
+  sizeof(double),
+  0,
+  0,
+  1 * sizeof(char),
+  2 * sizeof(char),
+  3 * sizeof(char),
+  4 * sizeof(char),
+  1 * sizeof(short),
+  2 * sizeof(short),
+  3 * sizeof(short),
+  4 * sizeof(short),
+  1 * sizeof(int),
+  2 * sizeof(int),
+  3 * sizeof(int),
+  4 * sizeof(int),
+  1 * sizeof(float),
+  2 * sizeof(float),
+  3 * sizeof(float),
+  4 * sizeof(float),
+  16 * sizeof(float),
+  1 * sizeof(double),
+  2 * sizeof(double),
+  3 * sizeof(double),
+  4 * sizeof(double),
+  16 * sizeof(double),
+  sizeof(int),
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  sizeof(XVisualInfo)
+};
+
+typedef struct
+{
+  int ret_type;
+  int has_out_parameters;
+  int nb_args;
+  int args_type[0];
+} Signature;
+
+static const int _exit_process_signature[] = {TYPE_NONE, 0, 0};
+
+static const int _changeWindowState_signature[] = {TYPE_NONE, 0, 2, TYPE_INT, TYPE_INT};
+
+static const int _moveResizeWindow_signature[] = {TYPE_NONE, 0, 2, TYPE_INT, TYPE_4INT};
+
+static const int _needSync_signature[] = {TYPE_INT, 0, 0};
+
+/* XVisualInfo* glXChooseVisual( Display *dpy, int screen, int *attribList ) */
+static const int glXChooseVisual_signature[] = {TYPE_VISUAL_INFO, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_NONE_TERMINATED_INT_ARRAY };
+
+/*GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
+                             GLXContext shareList, Bool direct )*/
+static const int glXCreateContext_signature[] = {TYPE_POINTER, 0, 4, TYPE_IN_IGNORED_POINTER, TYPE_IN_IGNORED_POINTER, TYPE_INT/*TYPE_POINTER*/, TYPE_INT};
+
+/*GLXContext glXGetCurrentContext()*/
+static const int glXGetCurrentContext_signature[] = {TYPE_POINTER, 0, 0};
+
+/* GLXDrawable glXGetCurrentDrawable( void ); */
+static const int glXGetCurrentDrawable_signature[] = {TYPE_POINTER, 0, 0};
+
+/* void glXDestroyContext( Display *dpy, GLXContext ctx ) */
+static const int glXDestroyContext_signature[] = {TYPE_NONE, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT/*TYPE_POINTER*/};
+
+/* Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable, GLXContext ctx) */
+static const int glXMakeCurrent_signature[] = {TYPE_INT, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT/*TYPE_POINTER*/};
+
+/*int glXGetConfig( Display *dpy, XVisualInfo *visual,
+                  int attrib, int *value )*/
+static const int glXGetConfig_signature[] = {TYPE_INT, 1, 4, TYPE_IN_IGNORED_POINTER, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_OUT_INT_POINTER};
+
+/* void glXSwapBuffers( Display *dpy, GLXDrawable drawable ); */
+static const int glXSwapBuffers_signature[] = {TYPE_NONE, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT};
+
+/* Bool glXQueryVersion( Display *dpy, int *maj, int *min ) */
+static const int glXQueryVersion_signature[] = {TYPE_INT, 1, 3, TYPE_IN_IGNORED_POINTER, TYPE_OUT_INT_POINTER, TYPE_OUT_INT_POINTER};
+
+/* Bool glXQueryExtension( Display *dpy, int *errorBase, int *eventBase ) */
+static const int glXQueryExtension_signature[] = {TYPE_INT, 1, 3, TYPE_IN_IGNORED_POINTER, TYPE_OUT_INT_POINTER, TYPE_OUT_INT_POINTER};
+
+/* GLX 1.1 and later */
+
+/* const char *glXGetClientString( Display *dpy, int name ) */
+static const int glXGetClientString_signature[] = {TYPE_CONST_CHAR, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT};
+
+/*const char *glXQueryExtensionsString( Display *dpy, int screen ) */
+static const int glXQueryExtensionsString_signature[] = {TYPE_CONST_CHAR, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT};
+
+/* const char *glXQueryServerString( Display *dpy, int screen, int name ) */
+static const int glXQueryServerString_signature[] = {TYPE_CONST_CHAR, 0, 3, TYPE_IN_IGNORED_POINTER, TYPE_INT, TYPE_INT};
+
+
+static const int glXGetProcAddress_fake_signature[] = {TYPE_INT, 0, 1, TYPE_NULL_TERMINATED_STRING};
+
+/* GLX 1.3 and later */
+
+/*
+GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen,
+                                       const int *attribList, int *nitems ); */
+static const int glXChooseFBConfig_signature[] = {TYPE_POINTER, 1, 4, TYPE_POINTER, TYPE_INT, TYPE_NONE_TERMINATED_INT_ARRAY, TYPE_OUT_INT_POINTER};
+
+/* GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config,
+                             const int *attribList ) */
+static const int glXCreatePbuffer_signature[] = {TYPE_POINTER, 1, 3, TYPE_POINTER, TYPE_POINTER, TYPE_NONE_TERMINATED_INT_ARRAY};
+
+/*XVisualInfo *glXGetVisualFromFBConfig( Display *dpy,
+                                       GLXFBConfig config ) */
+static const int glXGetVisualFromFBConfig_signature[] = {TYPE_VISUAL_INFO, 0, 3, TYPE_POINTER, TYPE_POINTER};
+
+/* void glXUseXFont( Font font, int first, int count, int list ) */
+static const int glXUseXFont_signature[] = {TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT};
+
+/* Bool glXIsDirect( Display *dpy, GLXContext ctx ) */
+static const int glXIsDirect_signature[] = {TYPE_CHAR, 0, 2, TYPE_IN_IGNORED_POINTER, TYPE_INT };
+
+
+
+/* const GLubyte * glGetString( GLenum name ) */
+static const int glGetString_signature[] = {TYPE_CONST_CHAR, 0, 1, TYPE_INT};
+
+
+/* void glGetIntegerv( GLenum pname, GLint *params ) */
+static const int glGetIntegerv_signature[] = {TYPE_NONE, 1, 2, TYPE_INT, TYPE_OUT_INT_ARRAY};
+
+/* void glGetFloatv( GLenum pname, GLfloat *params ) */
+static const int glGetFloatv_signature[] = {TYPE_NONE, 1, 2, TYPE_INT, TYPE_OUT_FLOAT_ARRAY};
+
+/*void glGetConvolutionParameteriv( GLenum target, GLenum pname,
+                                  GLint *params ) */
+static const int glGetConvolutionParameteriv_signature[] = {TYPE_NONE, 1, 3, TYPE_INT, TYPE_INT, TYPE_OUT_INT_ARRAY};
+
+static const int glLightfv_signature[] = {TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_ARRAY_FLOAT};
+
+static const int glMaterialfv_signature[] = {TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_ARRAY_FLOAT};
+
+static const int glLightModelfv_signature[] = {TYPE_NONE, 0, 2, TYPE_INT, TYPE_ARRAY_FLOAT};
+
+/* void glMap1f( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points ) */
+static const int glMap1f_signature[] =
+ {TYPE_NONE, 0, 6, TYPE_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_INT, TYPE_INT, TYPE_ARRAY_FLOAT
+ };
+ 
+static const int glMap1d_signature[] =
+ {TYPE_NONE, 0, 6, TYPE_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_INT, TYPE_INT, TYPE_ARRAY_DOUBLE
+ };
+
+/* void glMap2f( GLenum target,
+              GLfloat u1,
+              GLfloat u2,
+              GLint ustride,
+              GLint uorder,
+              GLfloat v1,
+              GLfloat v2,
+              GLint vstride,
+              GLint vorder,
+              const GLfloat *points ) */
+static const int glMap2f_signature[] =
+ {TYPE_NONE, 0, 10, TYPE_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_INT, TYPE_INT,
+                              TYPE_FLOAT, TYPE_FLOAT, TYPE_INT, TYPE_INT,
+                              TYPE_ARRAY_FLOAT
+ };
+
+static const int glMap2d_signature[] =
+{TYPE_NONE, 0, 10, TYPE_INT, TYPE_DOUBLE, TYPE_DOUBLE, TYPE_INT, TYPE_INT,
+                             TYPE_DOUBLE, TYPE_DOUBLE, TYPE_INT, TYPE_INT,
+                             TYPE_ARRAY_DOUBLE
+ };
+
+ /* void glGenTextures( GLsizei n, GLuint *textures ); */
+static const int glGenTextures_signature[] = {TYPE_NONE, 1, 2, TYPE_INT, TYPE_OUT_INT_ARRAY };
+
+/* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
+static const int glDeleteTextures_signature[] = {TYPE_NONE, 0, 2, TYPE_INT, TYPE_ARRAY_INT };
+
+/* void glCallLists( GLsizei n,
+                  GLenum type,
+                  const GLvoid *lists )*/
+static const int glCallLists_signature[] = {TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
+
+
+/*void glTexImage1D( GLenum target,
+                   GLint level,
+                   GLint internalFormat,
+                   GLsizei width,
+                   GLint border,
+                   GLenum format,
+                   GLenum type,
+                   const GLvoid *pixels ) */
+static const int glTexImage1D_signature[] =
+{TYPE_NONE, 0, 8, TYPE_INT, TYPE_INT, TYPE_INT,TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
+
+
+/*void glTexImage2D( GLenum target,
+                   GLint level,
+                   GLint internalFormat,
+                   GLsizei width,
+                   GLsizei height,
+                   GLint border,
+                   GLenum format,
+                   GLenum type,
+                   const GLvoid *pixels ) */
+static const int glTexImage2D_signature[] =
+{TYPE_NONE, 0, 9, TYPE_INT, TYPE_INT, TYPE_INT,TYPE_INT,TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
+
+/*void glTexSubImage2D( GLenum target,
+                      GLint level,
+                      GLint xoffset,
+                      GLint yoffset,
+                      GLsizei width,
+                      GLsizei height,
+                      GLenum format,
+                      GLenum type,
+                      const GLvoid *pixels )*/
+static const int glCompressedTexImage2DARB_signature[] =
+{TYPE_NONE, 0, 8, TYPE_INT, TYPE_INT,TYPE_INT,TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
+
+
+/*void glTexSubImage2D( GLenum target,
+                      GLint level,
+                      GLint xoffset,
+                      GLint yoffset,
+                      GLsizei width,
+                      GLsizei height,
+                      GLenum format,
+                      GLenum type,
+                      const GLvoid *pixels )*/
+static const int glTexSubImage2D_signature[] =
+{TYPE_NONE, 0, 9, TYPE_INT, TYPE_INT, TYPE_INT,TYPE_INT,TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
+
+/*void glCompressedTexSubImage2DARB(GLenum target,
+                                  GLint level,
+                                  GLint xoffset,
+                                  GLint yoffset,
+                                  GLsizei width,
+                                  GLsizei height,
+                                  GLenum format,
+                                  GLsizei imageSize,
+                                  const GLvoid * data)*/
+static const int glCompressedTexSubImage2DARB_signature[] =
+{TYPE_NONE, 0, 8, TYPE_INT, TYPE_INT,TYPE_INT,TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
+
+/*void glTexImage3D( GLenum target,
+                   GLint level,
+                   GLint internalFormat,
+                   GLsizei width,
+                   GLsizei height,
+                   GLsizei depth,
+                   GLint border,
+                   GLenum format,
+                   GLenum type,
+                   const GLvoid *pixels )*/
+static const int glTexImage3D_signature[] =
+{TYPE_NONE, 0, 10, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,TYPE_INT,TYPE_INT,TYPE_INT,TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
+
+/* void glGetTexLevelParameteriv( GLenum target, GLint level, GLenum pname, GLint *params ) */
+static const int glGetTexLevelParameteriv_signature[] = { TYPE_NONE, 1, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_OUT_INT_POINTER };
+
+/* void glFogfv( GLenum pname, const GLfloat *params ); */
+static const int glFogfv_signature[] = { TYPE_NONE, 0, 2, TYPE_INT, TYPE_ARRAY_FLOAT };
+
+/*void glBitmap( GLsizei width,
+               GLsizei height,
+               GLfloat xorig,
+               GLfloat yorig,
+               GLfloat xmove,
+               GLfloat ymove,
+               const GLubyte *bitmap ) */
+static const int glBitmap_signature[] = { TYPE_NONE, 0, 7, TYPE_INT, TYPE_INT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT, TYPE_FLOAT,TYPE_ARRAY_CHAR };
+
+/* void glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params ); */
+static const int glTexGenfv_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_ARRAY_FLOAT };
+
+/* void glTexEnvfv( GLenum target,
+                 GLenum pname,
+                 const GLfloat *params ) */
+static const int glTexEnvfv_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_ARRAY_FLOAT };
+
+/*void glTexParameterfv( GLenum target,
+                       GLenum pname,
+                       const GLfloat *params )*/
+static const int glTexParameterfv_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_ARRAY_FLOAT };
+static const int glTexParameteriv_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_ARRAY_INT };
+
+/* void glPointParameterfvARB(GLenum pname, const GLfloat * params) */
+static const int glPointParameterfvARB_signature[] = { TYPE_NONE, 0, 2, TYPE_INT, TYPE_ARRAY_FLOAT };
+
+/* void glGenProgramsARB(GLsizei n, GLuint * program) */
+static const int glGenProgramsARB_signature[] = { TYPE_NONE, 1, 2, TYPE_INT, TYPE_OUT_INT_POINTER };
+
+/* void glProgramStringARB (GLenum a, GLenum b, GLsizei c, const GLvoid *d) */
+static const int glProgramStringARB_signature[] = { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
+
+/* void glDeleteProgramsARB (GLsizei n, const GLuint *programs) */
+static const int glDeleteProgramsARB_signature[] = { TYPE_NONE, 0, 2, TYPE_INT, TYPE_ARRAY_INT };
+
+/* void glShaderSourceARB (GLhandleARB handle , GLsizei size, const GLcharARB* *p_tab_prog, const GLint * d) */
+/* --> void glShaderSourceARB (GLhandleARB handle , const GLcharARB* prog) */
+static const int glShaderSourceARB_signature[] = { TYPE_NONE, 0, 2, TYPE_INT, TYPE_NULL_TERMINATED_STRING };
+
+/* GLint glGetUniformLocationARB (GLhandleARB handle, const GLcharARB *txt) */
+static const int glGetUniformLocationARB_signature[] = { TYPE_INT, 0, 2, TYPE_INT, TYPE_NULL_TERMINATED_STRING };
+
+/* void EXT_FUNC(glGetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat *params) */
+static const int glGetVertexAttribfvARB_signature[] = { TYPE_NONE, 1, 3, TYPE_INT, TYPE_INT, TYPE_OUT_FLOAT_ARRAY };
+static const int glGetVertexAttribivARB_signature[] = { TYPE_NONE, 1, 3, TYPE_INT, TYPE_INT, TYPE_OUT_INT_ARRAY };
+static const int glGetVertexAttribdvARB_signature[] = { TYPE_NONE, 1, 3, TYPE_INT, TYPE_INT, TYPE_OUT_DOUBLE_ARRAY };
+
+/* void EXT_FUNC(glGetProgramLocalParameterfvARB) (GLenum target, GLuint index, GLfloat *params) */
+static const int glGetProgramLocalParameterfvARB_signature[] = { TYPE_NONE, 1, 3, TYPE_INT, TYPE_INT, TYPE_OUT_FLOAT_ARRAY };
+static const int glGetProgramLocalParameterdvARB_signature[] = { TYPE_NONE, 1, 3, TYPE_INT, TYPE_INT, TYPE_OUT_DOUBLE_ARRAY };
+static const int glGetProgramEnvParameterfvARB_signature[] = { TYPE_NONE, 1, 3, TYPE_INT, TYPE_INT, TYPE_OUT_FLOAT_ARRAY };
+static const int glGetProgramEnvParameterdvARB_signature[] = { TYPE_NONE, 1, 3, TYPE_INT, TYPE_INT, TYPE_OUT_DOUBLE_ARRAY };
+
+/* void EXT_FUNC(glGetProgramivARB) (GLenum target, GLenum pname, GLint *params) */
+static const int glGetProgramivARB_signature[] = { TYPE_NONE, 1, 3, TYPE_INT, TYPE_INT, TYPE_OUT_INT_POINTER };
+
+/* void EXT_FUNC(glGetProgramStringARB) (GLenum target, GLenum pname, GLvoid *string) */
+static const int glGetProgramStringARB_signature[] = { TYPE_NONE, 1, 3, TYPE_INT, TYPE_INT, TYPE_OUT_CHAR_ARRAY };
+
+/*void glVertexPointer( GLint size,
+                      GLenum type,
+                      GLsizei stride,
+                      const GLvoid *ptr )*/
+static const int glVertexPointer_signature[] = { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
+static const int glNormalPointer_signature[] = { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
+static const int glColorPointer_signature[] = { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
+static const int glTexCoordPointer_signature[] = { TYPE_NONE, 0, 5, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
+static const int glDrawArrays_signature[] = { TYPE_NONE, 0, 3, TYPE_INT, TYPE_INT, TYPE_INT };
+
+/*void glDrawElements( GLenum mode,
+                     GLsizei count,
+                     GLenum type,
+                     const GLvoid *indices )*/
+static const int glDrawElements_signature[] = { TYPE_NONE, 0, 4, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_ARRAY_CHAR };
+
+#include "gl_func.h"
diff -Nrup --exclude=CVS --exclude='*~' --exclude='config-host*' --exclude=Makefile --exclude=config.mak --exclude=config.h qemu.ori/target-i386/parse_gl_h.c qemu/target-i386/parse_gl_h.c
--- qemu.ori/target-i386/parse_gl_h.c	1970-01-01 01:00:00.000000000 +0100
+++ qemu/target-i386/parse_gl_h.c	2006-11-14 21:54:22.000000000 +0100
@@ -0,0 +1,645 @@
+/*
+ *  Parse gl.h et glx.h to auto-generate source code
+ * 
+ *  Copyright (c) 2006 Even Rouault
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/* gcc parse_gl_h.c -o parse_gl_h && ./parse_gl_h */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int isExt(const char* name)
+{
+  return (strstr(name, "ARB") != NULL) ||
+         (strstr(name, "EXT") != NULL) ||
+         (strstr(name, "ATI") != NULL) ||
+         (strstr(name, "NV") != NULL) ||
+         (strstr(name, "MESA") != NULL) ||
+         (strstr(name, "SGI") != NULL);
+}
+
+char* get_arg_type(char* s)
+{
+  while(*s == ' ' || *s == '\t') s++;
+  char* n = s;
+  char* c = strstr(n, "const");
+  if (c)
+    n += 6;
+    
+  char* t = strstr(n, " ");
+  if (t)
+  {
+    if (t[1] == '*')
+      t += 2;
+    t[0] = 0;
+    char* ori = t;
+    t = strstr(t+1, "[");
+    if (t)
+    {
+      memmove(ori, t, strlen(t));
+      strstr(ori, "]")[1] = 0;
+    }
+  }
+  return strdup(s);
+}
+
+typedef struct
+{
+  char* type;
+  char* name;
+  int nargs;
+  char** args;
+  int ok;
+} FuncDesc;
+
+char* get_type_string(char* type)
+{
+  if (strstr(type, "[16]"))
+  {
+    if (strstr(type, "float"))
+      return ("TYPE_16FLOAT");
+    else if (strstr(type, "double"))
+      return ("TYPE_16DOUBLE");
+    else
+    {
+      printf("inconnu %s\n", type);
+      exit(-1);
+    }
+  }
+  else if (strcmp(type, "void") == 0)
+    return("TYPE_NONE");
+  else if (strcmp(type, "GLbyte") == 0)
+    return("TYPE_CHAR");
+  else if (strcmp(type, "GLubyte") == 0 ||
+           strcmp(type, "GLboolean") == 0)
+    return("TYPE_UNSIGNED_CHAR");
+  else if (strcmp(type, "GLshort") == 0)
+    return("TYPE_SHORT");
+  else if (strcmp(type, "GLushort") == 0 ||
+           strcmp(type, "GLhalfNV") == 0)
+    return("TYPE_UNSIGNED_SHORT");
+  else if (strcmp(type, "GLint") == 0 ||
+           strcmp(type, "GLsizei") == 0)
+    return("TYPE_INT");
+  else if (strcmp(type, "GLenum") == 0 ||
+           strcmp(type, "GLuint") == 0 ||
+           strcmp(type, "GLhandleARB") == 0 ||
+           strcmp(type, "GLbitfield") == 0)
+    return("TYPE_UNSIGNED_INT");
+  else if (strcmp(type, "GLfloat") == 0 ||
+           strcmp(type, "GLclampf") == 0)
+    return("TYPE_FLOAT");
+  else if (strcmp(type, "GLdouble") == 0 ||
+           strcmp(type, "GLclampd") == 0)
+    return("TYPE_DOUBLE");
+  else
+  {
+    printf("inconnu %s\n", type);
+    exit(-1);
+  }
+}
+
+typedef struct
+{
+  char* letter;
+  char* signature_type_name;
+  char* gl_c_type_name;
+  char* c_type_name;
+} ForIsKnownArgVector;
+
+int is_known_arg_vector(FuncDesc* desc, char** p_signature_type_name, char** p_c_type_name)
+{
+  static ForIsKnownArgVector my_tab[] =
+  {
+    { "b", "CHAR", "byte", "char" },
+    { "s", "SHORT", "short", "short" },
+    { "i", "INT", "int", "int" },
+    { "ub", "CHAR", "byte", "unsigned char" },
+    { "us", "SHORT", "short", "unsigned short" },
+    { "ui", "INT", "int", "unsigned int" },
+    { "Nb", "CHAR", "byte", "char" },
+    { "Ns", "SHORT", "short", "short" },
+    { "Ni", "INT", "int", "int" },
+    { "Nub", "CHAR", "byte", "unsigned char" },
+    { "Nus", "SHORT", "short", "unsigned short" },
+    { "Nui", "INT", "int", "unsigned int" },
+    
+    { "f", "FLOAT", "float", "float" },
+    { "d", "DOUBLE", "double", "double" },
+  };
+      
+  if (desc->nargs == 0)
+    return 0;
+  
+  int i , j;
+  
+  static char signatures[14][4][20] = {0};
+  char signature[10];
+  
+  for(i=0;i<14;i++)
+  {
+    for(j=1;j<=4;j++)
+    {
+      sprintf(signature, "%d%sv", j, my_tab[i].letter);
+      if (strstr(desc->name, signature) &&
+          strstr(desc->args[desc->nargs - 1], my_tab[i].gl_c_type_name) &&
+          strstr(desc->args[desc->nargs - 1], "*"))
+      {
+        if (p_signature_type_name)
+        {
+          if (signatures[i][j][0] == 0)
+            sprintf(signatures[i][j], "TYPE_%d%s", j, my_tab[i].signature_type_name);
+          *p_signature_type_name = signatures[i][j];
+        }
+        if (p_c_type_name) *p_c_type_name = my_tab[i].c_type_name;
+        return 1;
+      }
+    }
+  }
+  return 0;
+}
+
+int parse(FILE* f, FuncDesc* funcDesc, int ignoreEXT)
+{
+  char buffer[256];
+  int funcDescCount = 0;
+  while(fgets(buffer, 256, f))
+  {
+    if (strncmp(buffer, "GLAPI", 5) == 0 && strstr(buffer, "APIENTRY") && strstr(buffer, "("))
+    {
+      if (strstr(buffer, "glDrawArrays"))
+      {
+        continue;
+      }
+      if (strstr(buffer, "glGetIntegerv"))
+      {
+        continue;
+      }
+      
+      char** args = malloc(15 * sizeof(char*));
+      int narg = 0;
+      char* type = buffer + 6;
+      char* n = strstr(type, "GLAPIENTRY") ? strstr(type, "GLAPIENTRY") : strstr(type, "APIENTRY");
+      int skip_length = strstr(type, "GLAPIENTRY") ? 11 : 9;
+      n[-1] = 0;
+      type = strdup(type);
+      n += skip_length;
+      char* fonc = n;
+      n = strstr(n, "(");
+      if (n[-1] == ' ') n[-1] = 0;
+      n[0] = 0;
+      fonc = strdup(fonc);
+      /*if (strstr(fonc, "glLockArraysEXT") || strstr(fonc, "glUnlockArraysEXT"))
+      {
+      }
+      else*/
+      if ((ignoreEXT == 1 && isExt(fonc)) || (ignoreEXT == 0 && !isExt(fonc)))
+      {
+        free(type);
+        free(fonc);
+        continue;
+      }
+      n++;
+      while(1)
+      {
+        char* virg = strstr(n, ",");
+        if (virg)
+        {
+          args[narg] = n;
+          virg[0] = 0;
+          args[narg] = get_arg_type(args[narg]);
+          narg++;
+          n = virg+1;
+        }
+        else
+          break;
+      }
+      while (strstr(n, ")") == 0)
+      {
+        fgets(buffer, 256, f);
+        n = buffer;
+        while(1)
+        {
+          char* virg = strstr(n, ",");
+          if (virg)
+          {
+            args[narg] = n;
+            virg[0] = 0;
+            args[narg] = get_arg_type(args[narg]);
+            narg++;
+            n = virg+1;
+          }
+          else
+            break;
+        }
+      }
+      char* par = strstr(n, ")");
+      args[narg] = n;
+      par[0] = 0;
+      args[narg] = get_arg_type(args[narg]);
+      narg++;
+      int i;
+      
+      
+      /*printf("%s %s (", type, fonc);
+      for(i=0;i<narg;i++)
+      {
+      printf("%s,", args[i]);
+    }
+      printf(")\n");*/
+      
+      funcDesc[funcDescCount].type = type;
+      funcDesc[funcDescCount].name = fonc;
+      funcDesc[funcDescCount].nargs = narg;
+      funcDesc[funcDescCount].args = args;
+      funcDescCount++;
+      /*
+      for(i=0;i<narg;i++)
+      {
+      free(args[i]);
+    }
+      free(fonc);
+      free(type);*/
+    }
+  }
+  return funcDescCount;
+}
+
+int main(int argc, char* argv[])
+{
+  FuncDesc funcDesc[10000];
+  int funcDescCount = 0;
+  
+  FILE* f = fopen("/usr/include/GL/gl.h", "r");
+  funcDescCount += parse(f, &funcDesc[funcDescCount], 1);
+  fclose(f);
+  
+  f = fopen("/usr/include/GL/glext.h", "r");
+  funcDescCount += parse(f, &funcDesc[funcDescCount], 0);
+  fclose(f);
+  
+  FILE* header = fopen("gl_func.h", "w");
+  FILE* client_stub = fopen("client_stub.c", "w");
+  FILE* server_stub = fopen("server_stub.c", "w");
+  
+  fprintf(header, "/* This is a generated file. DO NOT EDIT ! */\n\n");
+  fprintf(header, "#define COMPOSE(x,y) x##y\n");
+  fprintf(header, "#define MAGIC_MACRO(x)  COMPOSE(x,_func)\n");
+  fprintf(header, "enum {\n"
+                  "#include \"gl_func_perso.h\"\n");
+  
+  fprintf(client_stub, "/* This is a generated file. DO NOT EDIT ! */\n\n");
+  
+  fprintf(server_stub, "/* This is a generated file. DO NOT EDIT ! */\n\n");
+  
+  int first = 1;
+  
+  int i;
+  for(i=0;i<funcDescCount;i++)
+  {
+    funcDesc[i].ok = 0;
+    char* name = funcDesc[i].name;
+    char* type = funcDesc[i].type;
+    if ((strcmp(type, "void") == 0 || strcmp(type, "GLboolean") == 0 ||
+        strcmp(type, "GLuint") == 0 || strcmp(type, "GLint") == 0 ||
+       strcmp(type, "GLenum") == 0) || strcmp(type, "GLhandleARB") == 0)
+    {
+      int pointer = 0;
+      int j;
+      
+      for(j=0;j<funcDesc[i].nargs-1;j++)
+      {
+        if (strstr(funcDesc[i].args[j], "[16]") == NULL)
+        {
+          pointer |= strstr(funcDesc[i].args[j], "*") != NULL;
+          pointer |= strstr(funcDesc[i].args[j], "[") != NULL;
+        }
+      }
+      if (pointer == 0)
+      {
+        if (is_known_arg_vector(&funcDesc[i], NULL, NULL))
+        {
+        }
+        else
+        {
+          if (funcDesc[i].nargs-1 >= 0)
+          {
+            j = funcDesc[i].nargs-1;
+            if (strstr(funcDesc[i].args[j], "[16]") == NULL)
+            {
+              pointer |= strstr(funcDesc[i].args[j], "*") != NULL;
+              pointer |= strstr(funcDesc[i].args[j], "[") != NULL;
+            }
+          }
+        }
+      }
+      if (pointer && funcDesc[i].nargs == 1 &&
+          (strstr(funcDesc[i].name, "Matrixf") || strstr(funcDesc[i].name, "Matrixd")))
+      {
+        free(funcDesc[i].args[0]);
+        if (strstr(funcDesc[i].name, "Matrixf"))
+          funcDesc[i].args[0] = strdup("GLfloat m[16]");
+        else
+          funcDesc[i].args[0] = strdup("GLdouble m[16]");
+        pointer = 0;
+      }
+      if (pointer == 0)
+      {
+        funcDesc[i].ok = 1;
+        if (first == 1)
+        {
+          first = 0;
+        }
+        fprintf(header, "  %s_func,\n", funcDesc[i].name);
+        if (funcDesc[i].nargs == 1 && strcmp(funcDesc[i].args[0], "void") == 0)
+        {
+          funcDesc[i].nargs = 0;
+        }
+        /*printf("%s %s (", funcDesc[i].type, funcDesc[i].name);
+        for(j=0;j<funcDesc[i].nargs;j++)
+        {
+          printf("%s,", funcDesc[i].args[j]);
+        }
+        printf(")\n");*/
+      }
+    }
+  }
+  
+  fprintf(header, "  GL_N_CALLS\n};\n");
+  
+  
+  fprintf(server_stub, "void execute_func(int func_number, int* pret_int, char* pret_char)\n");
+  fprintf(server_stub, "{\n");
+  fprintf(server_stub, "  if (display_function_call) fprintf(stderr, \"%%s\\n\", tab_opengl_calls_name[func_number]);\n", funcDesc[i].name);
+  fprintf(server_stub, "  switch(func_number)\n");
+  fprintf(server_stub, "  {\n");
+  
+  for(i=0;i<funcDescCount;i++)
+  {
+    if (funcDesc[i].ok)
+    {
+      fprintf(header, "static const int %s_signature[] = { %s, 0, ", funcDesc[i].name, get_type_string(funcDesc[i].type));
+      fprintf(header, "%d", funcDesc[i].nargs);
+      int j;
+      char* signature_type_name;
+      if (is_known_arg_vector(&funcDesc[i], &signature_type_name, NULL))
+      {
+        for(j=0;j<funcDesc[i].nargs - 1;j++)
+        {
+          fprintf(header, ", %s", get_type_string(funcDesc[i].args[j]));
+        }
+        fprintf(header, ", %s", signature_type_name);
+      }
+      else
+      {
+        for(j=0;j<funcDesc[i].nargs;j++)
+        {
+          fprintf(header, ", %s", get_type_string(funcDesc[i].args[j]));
+        }
+      }
+      fprintf(header, "};\n");
+      
+      if (isExt(funcDesc[i].name))
+        fprintf(client_stub, "%s EXT_FUNC(%s) (", funcDesc[i].type, funcDesc[i].name);
+      else
+        fprintf(client_stub, "%s %s(", funcDesc[i].type, funcDesc[i].name);
+      
+      for(j=0;j<funcDesc[i].nargs;j++)
+      {
+        if (j != 0) fprintf(client_stub,", ");
+        if (strstr(funcDesc[i].args[j], "16"))
+        {
+          if (strstr(funcDesc[i].args[j], "float"))
+          {
+            fprintf(client_stub, "const GLfloat arg_%d[16]", j);
+          }
+          else if (strstr(funcDesc[i].args[j], "double"))
+          {
+            fprintf(client_stub, "const GLdouble arg_%d[16]", j);
+          }
+          else
+          {
+            exit(-1);
+          }
+        }
+        else
+          fprintf(client_stub, "%s arg_%d", funcDesc[i].args[j], j);
+      }
+      fprintf(client_stub, ")\n");
+      fprintf(client_stub, "{\n");
+      if (strcmp(funcDesc[i].type, "void") != 0)
+      {
+        fprintf(client_stub, "  %s ret;\n", funcDesc[i].type);
+        if (isExt(funcDesc[i].name))
+          fprintf(client_stub, "  CHECK_PROC_WITH_RET(%s);\n", funcDesc[i].name);
+      }
+      else
+      {
+        if (isExt(funcDesc[i].name))
+          fprintf(client_stub, "  CHECK_PROC(%s);\n", funcDesc[i].name);
+      }
+      
+      fprintf(client_stub, "  do_opengl_call(%s_func, %s",
+              funcDesc[i].name, (strcmp(funcDesc[i].type, "void") == 0) ? "NULL" : "&ret");
+      for(j=0;j<funcDesc[i].nargs;j++)
+      {
+        fprintf(client_stub, ", arg_%d", j);
+      }
+      fprintf(client_stub, ");\n");
+      if (strcmp(funcDesc[i].type, "void") != 0)
+      {
+        fprintf(client_stub, "  return ret;\n");
+      }
+      fprintf(client_stub, "}\n\n");
+      
+      
+      fprintf(server_stub, "    case %s_func:\n", funcDesc[i].name);
+      fprintf(server_stub, "    {\n");
+      
+      if (isExt(funcDesc[i].name))
+      {
+        fprintf(server_stub, "      GET_EXT_PTR(%s, %s, (", funcDesc[i].type, funcDesc[i].name);
+        for(j=0;j<funcDesc[i].nargs;j++)
+        {
+          if (j != 0) fprintf(server_stub,", ");
+          if (strstr(funcDesc[i].args[j], "16"))
+          {
+            if (strstr(funcDesc[i].args[j], "float"))
+            {
+              fprintf(server_stub, "const GLfloat arg_%d[16]", j);
+            }
+            else if (strstr(funcDesc[i].args[j], "double"))
+            {
+              fprintf(server_stub, "const GLdouble arg_%d[16]", j);
+            }
+            else
+            {
+              exit(-1);
+            }
+          }
+          else
+            fprintf(server_stub, "%s arg_%d", funcDesc[i].args[j], j);
+        }
+        fprintf(server_stub, "));\n");
+      }
+      
+      fprintf(server_stub, "      ");
+      
+      if (strcmp(funcDesc[i].type, "void") == 0)
+        ;
+      else if (strcmp(get_type_string(funcDesc[i].type), "TYPE_INT") == 0 ||
+               strcmp(get_type_string(funcDesc[i].type), "TYPE_UNSIGNED_INT") == 0)
+        fprintf(server_stub, "*pret_int = ");
+      else if (strcmp(get_type_string(funcDesc[i].type), "TYPE_CHAR") == 0 ||
+               strcmp(get_type_string(funcDesc[i].type), "TYPE_UNSIGNED_CHAR") == 0)
+        fprintf(server_stub, "*pret_char = ");
+      else
+      {
+        fprintf(stderr, "unknown ret type = %s\n", get_type_string(funcDesc[i].type));
+        exit(-1);
+      }
+      /*if (strstr(funcDesc[i].name, "EXT"))
+      {
+        char* dup = strdup(funcDesc[i].name);
+        *strstr(dup, "EXT") = 0;
+        fprintf(server_stub, "%s(", dup);
+        free(dup);
+      }
+      else*/
+      { 
+        if (isExt(funcDesc[i].name))
+          fprintf(server_stub, "ptr_func(");
+        else
+          fprintf(server_stub, "%s(", funcDesc[i].name);
+      }
+      char* c_type_name;
+      if (is_known_arg_vector(&funcDesc[i], NULL, &c_type_name))
+      {
+        for(j=0;j<funcDesc[i].nargs - 1;j++)
+        {
+          if (j != 0) fprintf(server_stub,", ");
+          const char* symbolic_type = get_type_string(funcDesc[i].args[j]);
+          if (strcmp(symbolic_type, "TYPE_CHAR") == 0)
+            fprintf(server_stub, "ARG_TO_CHAR(args[%d])", j);
+          else if (strcmp(symbolic_type, "TYPE_UNSIGNED_CHAR") == 0)
+            fprintf(server_stub, "ARG_TO_UNSIGNED_CHAR(args[%d])", j);
+          else if (strcmp(symbolic_type, "TYPE_SHORT") == 0)
+            fprintf(server_stub, "ARG_TO_SHORT(args[%d])", j);
+          else if (strcmp(symbolic_type, "TYPE_UNSIGNED_SHORT") == 0)
+            fprintf(server_stub, "ARG_TO_UNSIGNED_SHORT(args[%d])", j);
+          else if (strcmp(symbolic_type, "TYPE_INT") == 0)
+            fprintf(server_stub, "ARG_TO_INT(args[%d])", j);
+          else if (strcmp(symbolic_type, "TYPE_UNSIGNED_INT") == 0)
+            fprintf(server_stub, "ARG_TO_UNSIGNED_INT(args[%d])", j);
+          else if (strcmp(symbolic_type, "TYPE_FLOAT") == 0)
+            fprintf(server_stub, "ARG_TO_FLOAT(args[%d])", j);
+          else if (strcmp(symbolic_type, "TYPE_16FLOAT") == 0)
+            fprintf(server_stub, "ARG_TO_FLOAT16_ARRAY(args[%d])", j);
+          else if (strcmp(symbolic_type, "TYPE_DOUBLE") == 0)
+            fprintf(server_stub, "ARG_TO_DOUBLE(args[%d])", j);
+          else if ( strcmp(symbolic_type, "TYPE_16DOUBLE") == 0)
+            fprintf(server_stub, "ARG_TO_DOUBLE16_ARRAY(args[%d])", j);
+          else
+          {
+            fprintf(stderr, "Unknown : %s\n", symbolic_type);
+            exit(-1);
+          }
+        }
+        if (j != 0) fprintf(server_stub,", ");
+        fprintf(server_stub, "(%s*)args[%d]", c_type_name, j);
+      }
+      else
+      {
+        for(j=0;j<funcDesc[i].nargs;j++)
+        {
+          if (j != 0) fprintf(server_stub,", ");
+          const char* symbolic_type = get_type_string(funcDesc[i].args[j]);
+          if (strcmp(symbolic_type, "TYPE_CHAR") == 0)
+            fprintf(server_stub, "ARG_TO_CHAR(args[%d])", j);
+          else if (strcmp(symbolic_type, "TYPE_UNSIGNED_CHAR") == 0)
+            fprintf(server_stub, "ARG_TO_UNSIGNED_CHAR(args[%d])", j);
+          else if (strcmp(symbolic_type, "TYPE_SHORT") == 0)
+            fprintf(server_stub, "ARG_TO_SHORT(args[%d])", j);
+          else if (strcmp(symbolic_type, "TYPE_UNSIGNED_SHORT") == 0)
+            fprintf(server_stub, "ARG_TO_UNSIGNED_SHORT(args[%d])", j);
+          else if (strcmp(symbolic_type, "TYPE_INT") == 0)
+            fprintf(server_stub, "ARG_TO_INT(args[%d])", j);
+          else if (strcmp(symbolic_type, "TYPE_UNSIGNED_INT") == 0)
+            fprintf(server_stub, "ARG_TO_UNSIGNED_INT(args[%d])", j);
+          else if (strcmp(symbolic_type, "TYPE_FLOAT") == 0)
+            fprintf(server_stub, "ARG_TO_FLOAT(args[%d])", j);
+          else if (strcmp(symbolic_type, "TYPE_16FLOAT") == 0)
+            fprintf(server_stub, "ARG_TO_FLOAT16_ARRAY(args[%d])", j);
+          else if (strcmp(symbolic_type, "TYPE_DOUBLE") == 0)
+            fprintf(server_stub, "ARG_TO_DOUBLE(args[%d])", j);
+          else if ( strcmp(symbolic_type, "TYPE_16DOUBLE") == 0)
+            fprintf(server_stub, "ARG_TO_DOUBLE16_ARRAY(args[%d])", j);
+          else
+          {
+            fprintf(stderr, "Unknown : %s\n", symbolic_type);
+            exit(-1);
+          }
+        }
+      }
+      fprintf(server_stub, ");\n");
+      
+      fprintf(server_stub, "      break;\n");
+      fprintf(server_stub, "    }\n");
+    }
+  }
+  
+  fprintf(server_stub, "    default:\n");
+  fprintf(server_stub, "      fprintf(stderr, \"unknown=%%d\", func_number);\n");
+  fprintf(server_stub, "      break;\n");
+  fprintf(server_stub, "  }\n");
+  fprintf(server_stub, "}\n");
+
+  fprintf(header, "#undef MAGIC_MACRO\n");
+  fprintf(header, "#define MAGIC_MACRO(x)  COMPOSE(x,_signature)\n");
+  fprintf(header, "static const int* tab_opengl_calls[GL_N_CALLS] =\n");
+  fprintf(header, "{\n");
+  fprintf(header, "#include \"gl_func_perso.h\"\n");
+  for(i=0;i<funcDescCount;i++)
+  {
+    if (funcDesc[i].ok)
+    {
+      fprintf(header, "  %s_signature,\n", funcDesc[i].name);
+    }
+  }
+  fprintf(header, "};\n\n");
+
+  fprintf(header, "#undef MAGIC_MACRO\n");
+  fprintf(header, "#define MAGIC_MACRO(x)  #x\n");
+  fprintf(header, "static const char* tab_opengl_calls_name[GL_N_CALLS] =\n");
+  fprintf(header, "{\n");
+  fprintf(header, "#include \"gl_func_perso.h\"\n");
+  for(i=0;i<funcDescCount;i++)
+  {
+    if (funcDesc[i].ok)
+    {
+      fprintf(header, "  \"%s\",\n", funcDesc[i].name);
+    }
+  }
+  fprintf(header, "};\n\n");
+  
+  fclose(header);
+  fclose(server_stub);
+  fclose(client_stub);
+
+  return 0;
+}
diff -Nrup --exclude=CVS --exclude='*~' --exclude='config-host*' --exclude=Makefile --exclude=config.mak --exclude=config.h qemu.ori/target-i386/server_stub.c qemu/target-i386/server_stub.c
--- qemu.ori/target-i386/server_stub.c	1970-01-01 01:00:00.000000000 +0100
+++ qemu/target-i386/server_stub.c	2006-11-14 21:46:24.000000000 +0100
@@ -0,0 +1,4317 @@
+/* This is a generated file. DO NOT EDIT ! */
+
+void execute_func(int func_number, int* pret_int, char* pret_char)
+{
+  if (display_function_call) fprintf(stderr, "%s\n", tab_opengl_calls_name[func_number]);
+  switch(func_number)
+  {
+    case glClearIndex_func:
+    {
+      glClearIndex(ARG_TO_FLOAT(args[0]));
+      break;
+    }
+    case glClearColor_func:
+    {
+      glClearColor(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glClear_func:
+    {
+      glClear(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glIndexMask_func:
+    {
+      glIndexMask(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glColorMask_func:
+    {
+      glColorMask(ARG_TO_UNSIGNED_CHAR(args[0]), ARG_TO_UNSIGNED_CHAR(args[1]), ARG_TO_UNSIGNED_CHAR(args[2]), ARG_TO_UNSIGNED_CHAR(args[3]));
+      break;
+    }
+    case glAlphaFunc_func:
+    {
+      glAlphaFunc(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glBlendFunc_func:
+    {
+      glBlendFunc(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glLogicOp_func:
+    {
+      glLogicOp(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glCullFace_func:
+    {
+      glCullFace(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glFrontFace_func:
+    {
+      glFrontFace(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glPointSize_func:
+    {
+      glPointSize(ARG_TO_FLOAT(args[0]));
+      break;
+    }
+    case glLineWidth_func:
+    {
+      glLineWidth(ARG_TO_FLOAT(args[0]));
+      break;
+    }
+    case glLineStipple_func:
+    {
+      glLineStipple(ARG_TO_INT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]));
+      break;
+    }
+    case glPolygonMode_func:
+    {
+      glPolygonMode(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glPolygonOffset_func:
+    {
+      glPolygonOffset(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glEdgeFlag_func:
+    {
+      glEdgeFlag(ARG_TO_UNSIGNED_CHAR(args[0]));
+      break;
+    }
+    case glScissor_func:
+    {
+      glScissor(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]));
+      break;
+    }
+    case glDrawBuffer_func:
+    {
+      glDrawBuffer(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glReadBuffer_func:
+    {
+      glReadBuffer(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glEnable_func:
+    {
+      glEnable(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glDisable_func:
+    {
+      glDisable(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glIsEnabled_func:
+    {
+      *pret_char = glIsEnabled(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glEnableClientState_func:
+    {
+      glEnableClientState(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glDisableClientState_func:
+    {
+      glDisableClientState(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glPushAttrib_func:
+    {
+      glPushAttrib(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glPopAttrib_func:
+    {
+      glPopAttrib();
+      break;
+    }
+    case glPushClientAttrib_func:
+    {
+      glPushClientAttrib(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glPopClientAttrib_func:
+    {
+      glPopClientAttrib();
+      break;
+    }
+    case glRenderMode_func:
+    {
+      *pret_int = glRenderMode(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glGetError_func:
+    {
+      *pret_int = glGetError();
+      break;
+    }
+    case glFinish_func:
+    {
+      glFinish();
+      break;
+    }
+    case glFlush_func:
+    {
+      glFlush();
+      break;
+    }
+    case glHint_func:
+    {
+      glHint(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glClearDepth_func:
+    {
+      glClearDepth(ARG_TO_DOUBLE(args[0]));
+      break;
+    }
+    case glDepthFunc_func:
+    {
+      glDepthFunc(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glDepthMask_func:
+    {
+      glDepthMask(ARG_TO_UNSIGNED_CHAR(args[0]));
+      break;
+    }
+    case glDepthRange_func:
+    {
+      glDepthRange(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]));
+      break;
+    }
+    case glClearAccum_func:
+    {
+      glClearAccum(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glAccum_func:
+    {
+      glAccum(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glMatrixMode_func:
+    {
+      glMatrixMode(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glOrtho_func:
+    {
+      glOrtho(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]), ARG_TO_DOUBLE(args[4]), ARG_TO_DOUBLE(args[5]));
+      break;
+    }
+    case glFrustum_func:
+    {
+      glFrustum(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]), ARG_TO_DOUBLE(args[4]), ARG_TO_DOUBLE(args[5]));
+      break;
+    }
+    case glViewport_func:
+    {
+      glViewport(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]));
+      break;
+    }
+    case glPushMatrix_func:
+    {
+      glPushMatrix();
+      break;
+    }
+    case glPopMatrix_func:
+    {
+      glPopMatrix();
+      break;
+    }
+    case glLoadIdentity_func:
+    {
+      glLoadIdentity();
+      break;
+    }
+    case glLoadMatrixd_func:
+    {
+      glLoadMatrixd(ARG_TO_DOUBLE16_ARRAY(args[0]));
+      break;
+    }
+    case glLoadMatrixf_func:
+    {
+      glLoadMatrixf(ARG_TO_FLOAT16_ARRAY(args[0]));
+      break;
+    }
+    case glMultMatrixd_func:
+    {
+      glMultMatrixd(ARG_TO_DOUBLE16_ARRAY(args[0]));
+      break;
+    }
+    case glMultMatrixf_func:
+    {
+      glMultMatrixf(ARG_TO_FLOAT16_ARRAY(args[0]));
+      break;
+    }
+    case glRotated_func:
+    {
+      glRotated(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]));
+      break;
+    }
+    case glRotatef_func:
+    {
+      glRotatef(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glScaled_func:
+    {
+      glScaled(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glScalef_func:
+    {
+      glScalef(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glTranslated_func:
+    {
+      glTranslated(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glTranslatef_func:
+    {
+      glTranslatef(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glIsList_func:
+    {
+      *pret_char = glIsList(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glDeleteLists_func:
+    {
+      glDeleteLists(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glGenLists_func:
+    {
+      *pret_int = glGenLists(ARG_TO_INT(args[0]));
+      break;
+    }
+    case glNewList_func:
+    {
+      glNewList(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glEndList_func:
+    {
+      glEndList();
+      break;
+    }
+    case glCallList_func:
+    {
+      glCallList(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glListBase_func:
+    {
+      glListBase(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glBegin_func:
+    {
+      glBegin(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glEnd_func:
+    {
+      glEnd();
+      break;
+    }
+    case glVertex2d_func:
+    {
+      glVertex2d(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]));
+      break;
+    }
+    case glVertex2f_func:
+    {
+      glVertex2f(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glVertex2i_func:
+    {
+      glVertex2i(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glVertex2s_func:
+    {
+      glVertex2s(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]));
+      break;
+    }
+    case glVertex3d_func:
+    {
+      glVertex3d(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glVertex3f_func:
+    {
+      glVertex3f(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glVertex3i_func:
+    {
+      glVertex3i(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glVertex3s_func:
+    {
+      glVertex3s(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]));
+      break;
+    }
+    case glVertex4d_func:
+    {
+      glVertex4d(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]));
+      break;
+    }
+    case glVertex4f_func:
+    {
+      glVertex4f(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glVertex4i_func:
+    {
+      glVertex4i(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]));
+      break;
+    }
+    case glVertex4s_func:
+    {
+      glVertex4s(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]));
+      break;
+    }
+    case glVertex2dv_func:
+    {
+      glVertex2dv((double*)args[0]);
+      break;
+    }
+    case glVertex2fv_func:
+    {
+      glVertex2fv((float*)args[0]);
+      break;
+    }
+    case glVertex2iv_func:
+    {
+      glVertex2iv((int*)args[0]);
+      break;
+    }
+    case glVertex2sv_func:
+    {
+      glVertex2sv((short*)args[0]);
+      break;
+    }
+    case glVertex3dv_func:
+    {
+      glVertex3dv((double*)args[0]);
+      break;
+    }
+    case glVertex3fv_func:
+    {
+      glVertex3fv((float*)args[0]);
+      break;
+    }
+    case glVertex3iv_func:
+    {
+      glVertex3iv((int*)args[0]);
+      break;
+    }
+    case glVertex3sv_func:
+    {
+      glVertex3sv((short*)args[0]);
+      break;
+    }
+    case glVertex4dv_func:
+    {
+      glVertex4dv((double*)args[0]);
+      break;
+    }
+    case glVertex4fv_func:
+    {
+      glVertex4fv((float*)args[0]);
+      break;
+    }
+    case glVertex4iv_func:
+    {
+      glVertex4iv((int*)args[0]);
+      break;
+    }
+    case glVertex4sv_func:
+    {
+      glVertex4sv((short*)args[0]);
+      break;
+    }
+    case glNormal3b_func:
+    {
+      glNormal3b(ARG_TO_CHAR(args[0]), ARG_TO_CHAR(args[1]), ARG_TO_CHAR(args[2]));
+      break;
+    }
+    case glNormal3d_func:
+    {
+      glNormal3d(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glNormal3f_func:
+    {
+      glNormal3f(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glNormal3i_func:
+    {
+      glNormal3i(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glNormal3s_func:
+    {
+      glNormal3s(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]));
+      break;
+    }
+    case glNormal3bv_func:
+    {
+      glNormal3bv((char*)args[0]);
+      break;
+    }
+    case glNormal3dv_func:
+    {
+      glNormal3dv((double*)args[0]);
+      break;
+    }
+    case glNormal3fv_func:
+    {
+      glNormal3fv((float*)args[0]);
+      break;
+    }
+    case glNormal3iv_func:
+    {
+      glNormal3iv((int*)args[0]);
+      break;
+    }
+    case glNormal3sv_func:
+    {
+      glNormal3sv((short*)args[0]);
+      break;
+    }
+    case glIndexd_func:
+    {
+      glIndexd(ARG_TO_DOUBLE(args[0]));
+      break;
+    }
+    case glIndexf_func:
+    {
+      glIndexf(ARG_TO_FLOAT(args[0]));
+      break;
+    }
+    case glIndexi_func:
+    {
+      glIndexi(ARG_TO_INT(args[0]));
+      break;
+    }
+    case glIndexs_func:
+    {
+      glIndexs(ARG_TO_SHORT(args[0]));
+      break;
+    }
+    case glIndexub_func:
+    {
+      glIndexub(ARG_TO_UNSIGNED_CHAR(args[0]));
+      break;
+    }
+    case glColor3b_func:
+    {
+      glColor3b(ARG_TO_CHAR(args[0]), ARG_TO_CHAR(args[1]), ARG_TO_CHAR(args[2]));
+      break;
+    }
+    case glColor3d_func:
+    {
+      glColor3d(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glColor3f_func:
+    {
+      glColor3f(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glColor3i_func:
+    {
+      glColor3i(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glColor3s_func:
+    {
+      glColor3s(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]));
+      break;
+    }
+    case glColor3ub_func:
+    {
+      glColor3ub(ARG_TO_UNSIGNED_CHAR(args[0]), ARG_TO_UNSIGNED_CHAR(args[1]), ARG_TO_UNSIGNED_CHAR(args[2]));
+      break;
+    }
+    case glColor3ui_func:
+    {
+      glColor3ui(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]));
+      break;
+    }
+    case glColor3us_func:
+    {
+      glColor3us(ARG_TO_UNSIGNED_SHORT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]));
+      break;
+    }
+    case glColor4b_func:
+    {
+      glColor4b(ARG_TO_CHAR(args[0]), ARG_TO_CHAR(args[1]), ARG_TO_CHAR(args[2]), ARG_TO_CHAR(args[3]));
+      break;
+    }
+    case glColor4d_func:
+    {
+      glColor4d(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]));
+      break;
+    }
+    case glColor4f_func:
+    {
+      glColor4f(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glColor4i_func:
+    {
+      glColor4i(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]));
+      break;
+    }
+    case glColor4s_func:
+    {
+      glColor4s(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]));
+      break;
+    }
+    case glColor4ub_func:
+    {
+      glColor4ub(ARG_TO_UNSIGNED_CHAR(args[0]), ARG_TO_UNSIGNED_CHAR(args[1]), ARG_TO_UNSIGNED_CHAR(args[2]), ARG_TO_UNSIGNED_CHAR(args[3]));
+      break;
+    }
+    case glColor4ui_func:
+    {
+      glColor4ui(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]));
+      break;
+    }
+    case glColor4us_func:
+    {
+      glColor4us(ARG_TO_UNSIGNED_SHORT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]), ARG_TO_UNSIGNED_SHORT(args[3]));
+      break;
+    }
+    case glColor3bv_func:
+    {
+      glColor3bv((char*)args[0]);
+      break;
+    }
+    case glColor3dv_func:
+    {
+      glColor3dv((double*)args[0]);
+      break;
+    }
+    case glColor3fv_func:
+    {
+      glColor3fv((float*)args[0]);
+      break;
+    }
+    case glColor3iv_func:
+    {
+      glColor3iv((int*)args[0]);
+      break;
+    }
+    case glColor3sv_func:
+    {
+      glColor3sv((short*)args[0]);
+      break;
+    }
+    case glColor3ubv_func:
+    {
+      glColor3ubv((unsigned char*)args[0]);
+      break;
+    }
+    case glColor3uiv_func:
+    {
+      glColor3uiv((unsigned int*)args[0]);
+      break;
+    }
+    case glColor3usv_func:
+    {
+      glColor3usv((unsigned short*)args[0]);
+      break;
+    }
+    case glColor4bv_func:
+    {
+      glColor4bv((char*)args[0]);
+      break;
+    }
+    case glColor4dv_func:
+    {
+      glColor4dv((double*)args[0]);
+      break;
+    }
+    case glColor4fv_func:
+    {
+      glColor4fv((float*)args[0]);
+      break;
+    }
+    case glColor4iv_func:
+    {
+      glColor4iv((int*)args[0]);
+      break;
+    }
+    case glColor4sv_func:
+    {
+      glColor4sv((short*)args[0]);
+      break;
+    }
+    case glColor4ubv_func:
+    {
+      glColor4ubv((unsigned char*)args[0]);
+      break;
+    }
+    case glColor4uiv_func:
+    {
+      glColor4uiv((unsigned int*)args[0]);
+      break;
+    }
+    case glColor4usv_func:
+    {
+      glColor4usv((unsigned short*)args[0]);
+      break;
+    }
+    case glTexCoord1d_func:
+    {
+      glTexCoord1d(ARG_TO_DOUBLE(args[0]));
+      break;
+    }
+    case glTexCoord1f_func:
+    {
+      glTexCoord1f(ARG_TO_FLOAT(args[0]));
+      break;
+    }
+    case glTexCoord1i_func:
+    {
+      glTexCoord1i(ARG_TO_INT(args[0]));
+      break;
+    }
+    case glTexCoord1s_func:
+    {
+      glTexCoord1s(ARG_TO_SHORT(args[0]));
+      break;
+    }
+    case glTexCoord2d_func:
+    {
+      glTexCoord2d(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]));
+      break;
+    }
+    case glTexCoord2f_func:
+    {
+      glTexCoord2f(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glTexCoord2i_func:
+    {
+      glTexCoord2i(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glTexCoord2s_func:
+    {
+      glTexCoord2s(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]));
+      break;
+    }
+    case glTexCoord3d_func:
+    {
+      glTexCoord3d(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glTexCoord3f_func:
+    {
+      glTexCoord3f(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glTexCoord3i_func:
+    {
+      glTexCoord3i(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glTexCoord3s_func:
+    {
+      glTexCoord3s(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]));
+      break;
+    }
+    case glTexCoord4d_func:
+    {
+      glTexCoord4d(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]));
+      break;
+    }
+    case glTexCoord4f_func:
+    {
+      glTexCoord4f(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glTexCoord4i_func:
+    {
+      glTexCoord4i(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]));
+      break;
+    }
+    case glTexCoord4s_func:
+    {
+      glTexCoord4s(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]));
+      break;
+    }
+    case glTexCoord1dv_func:
+    {
+      glTexCoord1dv((double*)args[0]);
+      break;
+    }
+    case glTexCoord1fv_func:
+    {
+      glTexCoord1fv((float*)args[0]);
+      break;
+    }
+    case glTexCoord1iv_func:
+    {
+      glTexCoord1iv((int*)args[0]);
+      break;
+    }
+    case glTexCoord1sv_func:
+    {
+      glTexCoord1sv((short*)args[0]);
+      break;
+    }
+    case glTexCoord2dv_func:
+    {
+      glTexCoord2dv((double*)args[0]);
+      break;
+    }
+    case glTexCoord2fv_func:
+    {
+      glTexCoord2fv((float*)args[0]);
+      break;
+    }
+    case glTexCoord2iv_func:
+    {
+      glTexCoord2iv((int*)args[0]);
+      break;
+    }
+    case glTexCoord2sv_func:
+    {
+      glTexCoord2sv((short*)args[0]);
+      break;
+    }
+    case glTexCoord3dv_func:
+    {
+      glTexCoord3dv((double*)args[0]);
+      break;
+    }
+    case glTexCoord3fv_func:
+    {
+      glTexCoord3fv((float*)args[0]);
+      break;
+    }
+    case glTexCoord3iv_func:
+    {
+      glTexCoord3iv((int*)args[0]);
+      break;
+    }
+    case glTexCoord3sv_func:
+    {
+      glTexCoord3sv((short*)args[0]);
+      break;
+    }
+    case glTexCoord4dv_func:
+    {
+      glTexCoord4dv((double*)args[0]);
+      break;
+    }
+    case glTexCoord4fv_func:
+    {
+      glTexCoord4fv((float*)args[0]);
+      break;
+    }
+    case glTexCoord4iv_func:
+    {
+      glTexCoord4iv((int*)args[0]);
+      break;
+    }
+    case glTexCoord4sv_func:
+    {
+      glTexCoord4sv((short*)args[0]);
+      break;
+    }
+    case glRasterPos2d_func:
+    {
+      glRasterPos2d(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]));
+      break;
+    }
+    case glRasterPos2f_func:
+    {
+      glRasterPos2f(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glRasterPos2i_func:
+    {
+      glRasterPos2i(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glRasterPos2s_func:
+    {
+      glRasterPos2s(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]));
+      break;
+    }
+    case glRasterPos3d_func:
+    {
+      glRasterPos3d(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glRasterPos3f_func:
+    {
+      glRasterPos3f(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glRasterPos3i_func:
+    {
+      glRasterPos3i(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glRasterPos3s_func:
+    {
+      glRasterPos3s(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]));
+      break;
+    }
+    case glRasterPos4d_func:
+    {
+      glRasterPos4d(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]));
+      break;
+    }
+    case glRasterPos4f_func:
+    {
+      glRasterPos4f(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glRasterPos4i_func:
+    {
+      glRasterPos4i(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]));
+      break;
+    }
+    case glRasterPos4s_func:
+    {
+      glRasterPos4s(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]));
+      break;
+    }
+    case glRasterPos2dv_func:
+    {
+      glRasterPos2dv((double*)args[0]);
+      break;
+    }
+    case glRasterPos2fv_func:
+    {
+      glRasterPos2fv((float*)args[0]);
+      break;
+    }
+    case glRasterPos2iv_func:
+    {
+      glRasterPos2iv((int*)args[0]);
+      break;
+    }
+    case glRasterPos2sv_func:
+    {
+      glRasterPos2sv((short*)args[0]);
+      break;
+    }
+    case glRasterPos3dv_func:
+    {
+      glRasterPos3dv((double*)args[0]);
+      break;
+    }
+    case glRasterPos3fv_func:
+    {
+      glRasterPos3fv((float*)args[0]);
+      break;
+    }
+    case glRasterPos3iv_func:
+    {
+      glRasterPos3iv((int*)args[0]);
+      break;
+    }
+    case glRasterPos3sv_func:
+    {
+      glRasterPos3sv((short*)args[0]);
+      break;
+    }
+    case glRasterPos4dv_func:
+    {
+      glRasterPos4dv((double*)args[0]);
+      break;
+    }
+    case glRasterPos4fv_func:
+    {
+      glRasterPos4fv((float*)args[0]);
+      break;
+    }
+    case glRasterPos4iv_func:
+    {
+      glRasterPos4iv((int*)args[0]);
+      break;
+    }
+    case glRasterPos4sv_func:
+    {
+      glRasterPos4sv((short*)args[0]);
+      break;
+    }
+    case glRectd_func:
+    {
+      glRectd(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]));
+      break;
+    }
+    case glRectf_func:
+    {
+      glRectf(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glRecti_func:
+    {
+      glRecti(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]));
+      break;
+    }
+    case glRects_func:
+    {
+      glRects(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]));
+      break;
+    }
+    case glArrayElement_func:
+    {
+      glArrayElement(ARG_TO_INT(args[0]));
+      break;
+    }
+    case glShadeModel_func:
+    {
+      glShadeModel(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glLightf_func:
+    {
+      glLightf(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glLighti_func:
+    {
+      glLighti(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glLightModelf_func:
+    {
+      glLightModelf(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glLightModeli_func:
+    {
+      glLightModeli(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glMaterialf_func:
+    {
+      glMaterialf(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glMateriali_func:
+    {
+      glMateriali(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glColorMaterial_func:
+    {
+      glColorMaterial(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glPixelZoom_func:
+    {
+      glPixelZoom(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glPixelStoref_func:
+    {
+      glPixelStoref(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glPixelStorei_func:
+    {
+      glPixelStorei(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glPixelTransferf_func:
+    {
+      glPixelTransferf(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glPixelTransferi_func:
+    {
+      glPixelTransferi(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glCopyPixels_func:
+    {
+      glCopyPixels(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_UNSIGNED_INT(args[4]));
+      break;
+    }
+    case glStencilFunc_func:
+    {
+      glStencilFunc(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]));
+      break;
+    }
+    case glStencilMask_func:
+    {
+      glStencilMask(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glStencilOp_func:
+    {
+      glStencilOp(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]));
+      break;
+    }
+    case glClearStencil_func:
+    {
+      glClearStencil(ARG_TO_INT(args[0]));
+      break;
+    }
+    case glTexGend_func:
+    {
+      glTexGend(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glTexGenf_func:
+    {
+      glTexGenf(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glTexGeni_func:
+    {
+      glTexGeni(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glTexEnvf_func:
+    {
+      glTexEnvf(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glTexEnvi_func:
+    {
+      glTexEnvi(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glTexParameterf_func:
+    {
+      glTexParameterf(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glTexParameteri_func:
+    {
+      glTexParameteri(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glBindTexture_func:
+    {
+      glBindTexture(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glIsTexture_func:
+    {
+      *pret_char = glIsTexture(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glCopyTexImage1D_func:
+    {
+      glCopyTexImage1D(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]), ARG_TO_INT(args[5]), ARG_TO_INT(args[6]));
+      break;
+    }
+    case glCopyTexImage2D_func:
+    {
+      glCopyTexImage2D(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]), ARG_TO_INT(args[5]), ARG_TO_INT(args[6]), ARG_TO_INT(args[7]));
+      break;
+    }
+    case glCopyTexSubImage1D_func:
+    {
+      glCopyTexSubImage1D(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]), ARG_TO_INT(args[5]));
+      break;
+    }
+    case glCopyTexSubImage2D_func:
+    {
+      glCopyTexSubImage2D(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]), ARG_TO_INT(args[5]), ARG_TO_INT(args[6]), ARG_TO_INT(args[7]));
+      break;
+    }
+    case glEvalCoord1d_func:
+    {
+      glEvalCoord1d(ARG_TO_DOUBLE(args[0]));
+      break;
+    }
+    case glEvalCoord1f_func:
+    {
+      glEvalCoord1f(ARG_TO_FLOAT(args[0]));
+      break;
+    }
+    case glEvalCoord1dv_func:
+    {
+      glEvalCoord1dv((double*)args[0]);
+      break;
+    }
+    case glEvalCoord1fv_func:
+    {
+      glEvalCoord1fv((float*)args[0]);
+      break;
+    }
+    case glEvalCoord2d_func:
+    {
+      glEvalCoord2d(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]));
+      break;
+    }
+    case glEvalCoord2f_func:
+    {
+      glEvalCoord2f(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glEvalCoord2dv_func:
+    {
+      glEvalCoord2dv((double*)args[0]);
+      break;
+    }
+    case glEvalCoord2fv_func:
+    {
+      glEvalCoord2fv((float*)args[0]);
+      break;
+    }
+    case glMapGrid1d_func:
+    {
+      glMapGrid1d(ARG_TO_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glMapGrid1f_func:
+    {
+      glMapGrid1f(ARG_TO_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glMapGrid2d_func:
+    {
+      glMapGrid2d(ARG_TO_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_INT(args[3]), ARG_TO_DOUBLE(args[4]), ARG_TO_DOUBLE(args[5]));
+      break;
+    }
+    case glMapGrid2f_func:
+    {
+      glMapGrid2f(ARG_TO_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_INT(args[3]), ARG_TO_FLOAT(args[4]), ARG_TO_FLOAT(args[5]));
+      break;
+    }
+    case glEvalPoint1_func:
+    {
+      glEvalPoint1(ARG_TO_INT(args[0]));
+      break;
+    }
+    case glEvalPoint2_func:
+    {
+      glEvalPoint2(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glEvalMesh1_func:
+    {
+      glEvalMesh1(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glEvalMesh2_func:
+    {
+      glEvalMesh2(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]));
+      break;
+    }
+    case glFogf_func:
+    {
+      glFogf(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glFogi_func:
+    {
+      glFogi(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glPassThrough_func:
+    {
+      glPassThrough(ARG_TO_FLOAT(args[0]));
+      break;
+    }
+    case glInitNames_func:
+    {
+      glInitNames();
+      break;
+    }
+    case glLoadName_func:
+    {
+      glLoadName(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glPushName_func:
+    {
+      glPushName(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glPopName_func:
+    {
+      glPopName();
+      break;
+    }
+    case glCopyTexSubImage3D_func:
+    {
+      glCopyTexSubImage3D(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]), ARG_TO_INT(args[5]), ARG_TO_INT(args[6]), ARG_TO_INT(args[7]), ARG_TO_INT(args[8]));
+      break;
+    }
+    case glCopyColorSubTable_func:
+    {
+      glCopyColorSubTable(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]));
+      break;
+    }
+    case glCopyColorTable_func:
+    {
+      glCopyColorTable(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]));
+      break;
+    }
+    case glBlendEquation_func:
+    {
+      glBlendEquation(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glBlendColor_func:
+    {
+      glBlendColor(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glHistogram_func:
+    {
+      glHistogram(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_CHAR(args[3]));
+      break;
+    }
+    case glResetHistogram_func:
+    {
+      glResetHistogram(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glMinmax_func:
+    {
+      glMinmax(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_CHAR(args[2]));
+      break;
+    }
+    case glResetMinmax_func:
+    {
+      glResetMinmax(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glConvolutionParameterf_func:
+    {
+      glConvolutionParameterf(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glConvolutionParameteri_func:
+    {
+      glConvolutionParameteri(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glCopyConvolutionFilter1D_func:
+    {
+      glCopyConvolutionFilter1D(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]));
+      break;
+    }
+    case glCopyConvolutionFilter2D_func:
+    {
+      glCopyConvolutionFilter2D(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]), ARG_TO_INT(args[5]));
+      break;
+    }
+    case glActiveTexture_func:
+    {
+      glActiveTexture(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glClientActiveTexture_func:
+    {
+      glClientActiveTexture(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glMultiTexCoord1d_func:
+    {
+      glMultiTexCoord1d(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]));
+      break;
+    }
+    case glMultiTexCoord1dv_func:
+    {
+      glMultiTexCoord1dv(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glMultiTexCoord1f_func:
+    {
+      glMultiTexCoord1f(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glMultiTexCoord1fv_func:
+    {
+      glMultiTexCoord1fv(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glMultiTexCoord1i_func:
+    {
+      glMultiTexCoord1i(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glMultiTexCoord1iv_func:
+    {
+      glMultiTexCoord1iv(ARG_TO_UNSIGNED_INT(args[0]), (int*)args[1]);
+      break;
+    }
+    case glMultiTexCoord1s_func:
+    {
+      glMultiTexCoord1s(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]));
+      break;
+    }
+    case glMultiTexCoord1sv_func:
+    {
+      glMultiTexCoord1sv(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glMultiTexCoord2d_func:
+    {
+      glMultiTexCoord2d(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glMultiTexCoord2dv_func:
+    {
+      glMultiTexCoord2dv(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glMultiTexCoord2f_func:
+    {
+      glMultiTexCoord2f(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glMultiTexCoord2fv_func:
+    {
+      glMultiTexCoord2fv(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glMultiTexCoord2i_func:
+    {
+      glMultiTexCoord2i(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glMultiTexCoord2iv_func:
+    {
+      glMultiTexCoord2iv(ARG_TO_UNSIGNED_INT(args[0]), (int*)args[1]);
+      break;
+    }
+    case glMultiTexCoord2s_func:
+    {
+      glMultiTexCoord2s(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]));
+      break;
+    }
+    case glMultiTexCoord2sv_func:
+    {
+      glMultiTexCoord2sv(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glMultiTexCoord3d_func:
+    {
+      glMultiTexCoord3d(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]));
+      break;
+    }
+    case glMultiTexCoord3dv_func:
+    {
+      glMultiTexCoord3dv(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glMultiTexCoord3f_func:
+    {
+      glMultiTexCoord3f(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glMultiTexCoord3fv_func:
+    {
+      glMultiTexCoord3fv(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glMultiTexCoord3i_func:
+    {
+      glMultiTexCoord3i(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]));
+      break;
+    }
+    case glMultiTexCoord3iv_func:
+    {
+      glMultiTexCoord3iv(ARG_TO_UNSIGNED_INT(args[0]), (int*)args[1]);
+      break;
+    }
+    case glMultiTexCoord3s_func:
+    {
+      glMultiTexCoord3s(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]));
+      break;
+    }
+    case glMultiTexCoord3sv_func:
+    {
+      glMultiTexCoord3sv(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glMultiTexCoord4d_func:
+    {
+      glMultiTexCoord4d(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]), ARG_TO_DOUBLE(args[4]));
+      break;
+    }
+    case glMultiTexCoord4dv_func:
+    {
+      glMultiTexCoord4dv(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glMultiTexCoord4f_func:
+    {
+      glMultiTexCoord4f(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]), ARG_TO_FLOAT(args[4]));
+      break;
+    }
+    case glMultiTexCoord4fv_func:
+    {
+      glMultiTexCoord4fv(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glMultiTexCoord4i_func:
+    {
+      glMultiTexCoord4i(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]));
+      break;
+    }
+    case glMultiTexCoord4iv_func:
+    {
+      glMultiTexCoord4iv(ARG_TO_UNSIGNED_INT(args[0]), (int*)args[1]);
+      break;
+    }
+    case glMultiTexCoord4s_func:
+    {
+      glMultiTexCoord4s(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]), ARG_TO_SHORT(args[4]));
+      break;
+    }
+    case glMultiTexCoord4sv_func:
+    {
+      glMultiTexCoord4sv(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glLoadTransposeMatrixd_func:
+    {
+      glLoadTransposeMatrixd(ARG_TO_DOUBLE16_ARRAY(args[0]));
+      break;
+    }
+    case glLoadTransposeMatrixf_func:
+    {
+      glLoadTransposeMatrixf(ARG_TO_FLOAT16_ARRAY(args[0]));
+      break;
+    }
+    case glMultTransposeMatrixd_func:
+    {
+      glMultTransposeMatrixd(ARG_TO_DOUBLE16_ARRAY(args[0]));
+      break;
+    }
+    case glMultTransposeMatrixf_func:
+    {
+      glMultTransposeMatrixf(ARG_TO_FLOAT16_ARRAY(args[0]));
+      break;
+    }
+    case glSampleCoverage_func:
+    {
+      glSampleCoverage(ARG_TO_FLOAT(args[0]), ARG_TO_UNSIGNED_CHAR(args[1]));
+      break;
+    }
+    case glActiveTextureARB_func:
+    {
+      GET_EXT_PTR(void, glActiveTextureARB, (GLenum arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glClientActiveTextureARB_func:
+    {
+      GET_EXT_PTR(void, glClientActiveTextureARB, (GLenum arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glMultiTexCoord1dARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord1dARB, (GLenum arg_0, GLdouble arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]));
+      break;
+    }
+    case glMultiTexCoord1dvARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord1dvARB, (GLenum arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glMultiTexCoord1fARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord1fARB, (GLenum arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glMultiTexCoord1fvARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord1fvARB, (GLenum arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glMultiTexCoord1iARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord1iARB, (GLenum arg_0, GLint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glMultiTexCoord1ivARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord1ivARB, (GLenum arg_0, const GLint * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (int*)args[1]);
+      break;
+    }
+    case glMultiTexCoord1sARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord1sARB, (GLenum arg_0, GLshort arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]));
+      break;
+    }
+    case glMultiTexCoord1svARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord1svARB, (GLenum arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glMultiTexCoord2dARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord2dARB, (GLenum arg_0, GLdouble arg_1, GLdouble arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glMultiTexCoord2dvARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord2dvARB, (GLenum arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glMultiTexCoord2fARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord2fARB, (GLenum arg_0, GLfloat arg_1, GLfloat arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glMultiTexCoord2fvARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord2fvARB, (GLenum arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glMultiTexCoord2iARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord2iARB, (GLenum arg_0, GLint arg_1, GLint arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glMultiTexCoord2ivARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord2ivARB, (GLenum arg_0, const GLint * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (int*)args[1]);
+      break;
+    }
+    case glMultiTexCoord2sARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord2sARB, (GLenum arg_0, GLshort arg_1, GLshort arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]));
+      break;
+    }
+    case glMultiTexCoord2svARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord2svARB, (GLenum arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glMultiTexCoord3dARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord3dARB, (GLenum arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]));
+      break;
+    }
+    case glMultiTexCoord3dvARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord3dvARB, (GLenum arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glMultiTexCoord3fARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord3fARB, (GLenum arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glMultiTexCoord3fvARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord3fvARB, (GLenum arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glMultiTexCoord3iARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord3iARB, (GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]));
+      break;
+    }
+    case glMultiTexCoord3ivARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord3ivARB, (GLenum arg_0, const GLint * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (int*)args[1]);
+      break;
+    }
+    case glMultiTexCoord3sARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord3sARB, (GLenum arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]));
+      break;
+    }
+    case glMultiTexCoord3svARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord3svARB, (GLenum arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glMultiTexCoord4dARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord4dARB, (GLenum arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]), ARG_TO_DOUBLE(args[4]));
+      break;
+    }
+    case glMultiTexCoord4dvARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord4dvARB, (GLenum arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glMultiTexCoord4fARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord4fARB, (GLenum arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]), ARG_TO_FLOAT(args[4]));
+      break;
+    }
+    case glMultiTexCoord4fvARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord4fvARB, (GLenum arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glMultiTexCoord4iARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord4iARB, (GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]));
+      break;
+    }
+    case glMultiTexCoord4ivARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord4ivARB, (GLenum arg_0, const GLint * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (int*)args[1]);
+      break;
+    }
+    case glMultiTexCoord4sARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord4sARB, (GLenum arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3, GLshort arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]), ARG_TO_SHORT(args[4]));
+      break;
+    }
+    case glMultiTexCoord4svARB_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord4svARB, (GLenum arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glLoadTransposeMatrixfARB_func:
+    {
+      GET_EXT_PTR(void, glLoadTransposeMatrixfARB, (const GLfloat arg_0[16]));
+      ptr_func(ARG_TO_FLOAT16_ARRAY(args[0]));
+      break;
+    }
+    case glLoadTransposeMatrixdARB_func:
+    {
+      GET_EXT_PTR(void, glLoadTransposeMatrixdARB, (const GLdouble arg_0[16]));
+      ptr_func(ARG_TO_DOUBLE16_ARRAY(args[0]));
+      break;
+    }
+    case glMultTransposeMatrixfARB_func:
+    {
+      GET_EXT_PTR(void, glMultTransposeMatrixfARB, (const GLfloat arg_0[16]));
+      ptr_func(ARG_TO_FLOAT16_ARRAY(args[0]));
+      break;
+    }
+    case glMultTransposeMatrixdARB_func:
+    {
+      GET_EXT_PTR(void, glMultTransposeMatrixdARB, (const GLdouble arg_0[16]));
+      ptr_func(ARG_TO_DOUBLE16_ARRAY(args[0]));
+      break;
+    }
+    case glSampleCoverageARB_func:
+    {
+      GET_EXT_PTR(void, glSampleCoverageARB, (GLclampf arg_0, GLboolean arg_1));
+      ptr_func(ARG_TO_FLOAT(args[0]), ARG_TO_UNSIGNED_CHAR(args[1]));
+      break;
+    }
+    case glPointParameterfARB_func:
+    {
+      GET_EXT_PTR(void, glPointParameterfARB, (GLenum arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glVertexBlendARB_func:
+    {
+      GET_EXT_PTR(void, glVertexBlendARB, (GLint arg_0));
+      ptr_func(ARG_TO_INT(args[0]));
+      break;
+    }
+    case glCurrentPaletteMatrixARB_func:
+    {
+      GET_EXT_PTR(void, glCurrentPaletteMatrixARB, (GLint arg_0));
+      ptr_func(ARG_TO_INT(args[0]));
+      break;
+    }
+    case glWindowPos2dARB_func:
+    {
+      GET_EXT_PTR(void, glWindowPos2dARB, (GLdouble arg_0, GLdouble arg_1));
+      ptr_func(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]));
+      break;
+    }
+    case glWindowPos2dvARB_func:
+    {
+      GET_EXT_PTR(void, glWindowPos2dvARB, (const GLdouble * arg_0));
+      ptr_func((double*)args[0]);
+      break;
+    }
+    case glWindowPos2fARB_func:
+    {
+      GET_EXT_PTR(void, glWindowPos2fARB, (GLfloat arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glWindowPos2fvARB_func:
+    {
+      GET_EXT_PTR(void, glWindowPos2fvARB, (const GLfloat * arg_0));
+      ptr_func((float*)args[0]);
+      break;
+    }
+    case glWindowPos2iARB_func:
+    {
+      GET_EXT_PTR(void, glWindowPos2iARB, (GLint arg_0, GLint arg_1));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glWindowPos2ivARB_func:
+    {
+      GET_EXT_PTR(void, glWindowPos2ivARB, (const GLint * arg_0));
+      ptr_func((int*)args[0]);
+      break;
+    }
+    case glWindowPos2sARB_func:
+    {
+      GET_EXT_PTR(void, glWindowPos2sARB, (GLshort arg_0, GLshort arg_1));
+      ptr_func(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]));
+      break;
+    }
+    case glWindowPos2svARB_func:
+    {
+      GET_EXT_PTR(void, glWindowPos2svARB, (const GLshort * arg_0));
+      ptr_func((short*)args[0]);
+      break;
+    }
+    case glWindowPos3dARB_func:
+    {
+      GET_EXT_PTR(void, glWindowPos3dARB, (GLdouble arg_0, GLdouble arg_1, GLdouble arg_2));
+      ptr_func(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glWindowPos3dvARB_func:
+    {
+      GET_EXT_PTR(void, glWindowPos3dvARB, (const GLdouble * arg_0));
+      ptr_func((double*)args[0]);
+      break;
+    }
+    case glWindowPos3fARB_func:
+    {
+      GET_EXT_PTR(void, glWindowPos3fARB, (GLfloat arg_0, GLfloat arg_1, GLfloat arg_2));
+      ptr_func(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glWindowPos3fvARB_func:
+    {
+      GET_EXT_PTR(void, glWindowPos3fvARB, (const GLfloat * arg_0));
+      ptr_func((float*)args[0]);
+      break;
+    }
+    case glWindowPos3iARB_func:
+    {
+      GET_EXT_PTR(void, glWindowPos3iARB, (GLint arg_0, GLint arg_1, GLint arg_2));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glWindowPos3ivARB_func:
+    {
+      GET_EXT_PTR(void, glWindowPos3ivARB, (const GLint * arg_0));
+      ptr_func((int*)args[0]);
+      break;
+    }
+    case glWindowPos3sARB_func:
+    {
+      GET_EXT_PTR(void, glWindowPos3sARB, (GLshort arg_0, GLshort arg_1, GLshort arg_2));
+      ptr_func(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]));
+      break;
+    }
+    case glWindowPos3svARB_func:
+    {
+      GET_EXT_PTR(void, glWindowPos3svARB, (const GLshort * arg_0));
+      ptr_func((short*)args[0]);
+      break;
+    }
+    case glVertexAttrib1dARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib1dARB, (GLuint arg_0, GLdouble arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]));
+      break;
+    }
+    case glVertexAttrib1dvARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib1dvARB, (GLuint arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glVertexAttrib1fARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib1fARB, (GLuint arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glVertexAttrib1fvARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib1fvARB, (GLuint arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glVertexAttrib1sARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib1sARB, (GLuint arg_0, GLshort arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]));
+      break;
+    }
+    case glVertexAttrib1svARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib1svARB, (GLuint arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glVertexAttrib2dARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib2dARB, (GLuint arg_0, GLdouble arg_1, GLdouble arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glVertexAttrib2dvARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib2dvARB, (GLuint arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glVertexAttrib2fARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib2fARB, (GLuint arg_0, GLfloat arg_1, GLfloat arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glVertexAttrib2fvARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib2fvARB, (GLuint arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glVertexAttrib2sARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib2sARB, (GLuint arg_0, GLshort arg_1, GLshort arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]));
+      break;
+    }
+    case glVertexAttrib2svARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib2svARB, (GLuint arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glVertexAttrib3dARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib3dARB, (GLuint arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]));
+      break;
+    }
+    case glVertexAttrib3dvARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib3dvARB, (GLuint arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glVertexAttrib3fARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib3fARB, (GLuint arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glVertexAttrib3fvARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib3fvARB, (GLuint arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glVertexAttrib3sARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib3sARB, (GLuint arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]));
+      break;
+    }
+    case glVertexAttrib3svARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib3svARB, (GLuint arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glVertexAttrib4NbvARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4NbvARB, (GLuint arg_0, const GLbyte * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (char*)args[1]);
+      break;
+    }
+    case glVertexAttrib4NivARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4NivARB, (GLuint arg_0, const GLint * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (int*)args[1]);
+      break;
+    }
+    case glVertexAttrib4NsvARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4NsvARB, (GLuint arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glVertexAttrib4NubARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4NubARB, (GLuint arg_0, GLubyte arg_1, GLubyte arg_2, GLubyte arg_3, GLubyte arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_CHAR(args[1]), ARG_TO_UNSIGNED_CHAR(args[2]), ARG_TO_UNSIGNED_CHAR(args[3]), ARG_TO_UNSIGNED_CHAR(args[4]));
+      break;
+    }
+    case glVertexAttrib4NubvARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4NubvARB, (GLuint arg_0, const GLubyte * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (unsigned char*)args[1]);
+      break;
+    }
+    case glVertexAttrib4NuivARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4NuivARB, (GLuint arg_0, const GLuint * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (unsigned int*)args[1]);
+      break;
+    }
+    case glVertexAttrib4NusvARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4NusvARB, (GLuint arg_0, const GLushort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (unsigned short*)args[1]);
+      break;
+    }
+    case glVertexAttrib4bvARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4bvARB, (GLuint arg_0, const GLbyte * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (char*)args[1]);
+      break;
+    }
+    case glVertexAttrib4dARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4dARB, (GLuint arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]), ARG_TO_DOUBLE(args[4]));
+      break;
+    }
+    case glVertexAttrib4dvARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4dvARB, (GLuint arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glVertexAttrib4fARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4fARB, (GLuint arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]), ARG_TO_FLOAT(args[4]));
+      break;
+    }
+    case glVertexAttrib4fvARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4fvARB, (GLuint arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glVertexAttrib4ivARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4ivARB, (GLuint arg_0, const GLint * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (int*)args[1]);
+      break;
+    }
+    case glVertexAttrib4sARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4sARB, (GLuint arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3, GLshort arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]), ARG_TO_SHORT(args[4]));
+      break;
+    }
+    case glVertexAttrib4svARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4svARB, (GLuint arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glVertexAttrib4ubvARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4ubvARB, (GLuint arg_0, const GLubyte * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (unsigned char*)args[1]);
+      break;
+    }
+    case glVertexAttrib4uivARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4uivARB, (GLuint arg_0, const GLuint * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (unsigned int*)args[1]);
+      break;
+    }
+    case glVertexAttrib4usvARB_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4usvARB, (GLuint arg_0, const GLushort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (unsigned short*)args[1]);
+      break;
+    }
+    case glEnableVertexAttribArrayARB_func:
+    {
+      GET_EXT_PTR(void, glEnableVertexAttribArrayARB, (GLuint arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glDisableVertexAttribArrayARB_func:
+    {
+      GET_EXT_PTR(void, glDisableVertexAttribArrayARB, (GLuint arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glBindProgramARB_func:
+    {
+      GET_EXT_PTR(void, glBindProgramARB, (GLenum arg_0, GLuint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glProgramEnvParameter4dARB_func:
+    {
+      GET_EXT_PTR(void, glProgramEnvParameter4dARB, (GLenum arg_0, GLuint arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4, GLdouble arg_5));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]), ARG_TO_DOUBLE(args[4]), ARG_TO_DOUBLE(args[5]));
+      break;
+    }
+    case glProgramEnvParameter4dvARB_func:
+    {
+      GET_EXT_PTR(void, glProgramEnvParameter4dvARB, (GLenum arg_0, GLuint arg_1, const GLdouble * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), (double*)args[2]);
+      break;
+    }
+    case glProgramEnvParameter4fARB_func:
+    {
+      GET_EXT_PTR(void, glProgramEnvParameter4fARB, (GLenum arg_0, GLuint arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4, GLfloat arg_5));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]), ARG_TO_FLOAT(args[4]), ARG_TO_FLOAT(args[5]));
+      break;
+    }
+    case glProgramEnvParameter4fvARB_func:
+    {
+      GET_EXT_PTR(void, glProgramEnvParameter4fvARB, (GLenum arg_0, GLuint arg_1, const GLfloat * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), (float*)args[2]);
+      break;
+    }
+    case glProgramLocalParameter4dARB_func:
+    {
+      GET_EXT_PTR(void, glProgramLocalParameter4dARB, (GLenum arg_0, GLuint arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4, GLdouble arg_5));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]), ARG_TO_DOUBLE(args[4]), ARG_TO_DOUBLE(args[5]));
+      break;
+    }
+    case glProgramLocalParameter4dvARB_func:
+    {
+      GET_EXT_PTR(void, glProgramLocalParameter4dvARB, (GLenum arg_0, GLuint arg_1, const GLdouble * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), (double*)args[2]);
+      break;
+    }
+    case glProgramLocalParameter4fARB_func:
+    {
+      GET_EXT_PTR(void, glProgramLocalParameter4fARB, (GLenum arg_0, GLuint arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4, GLfloat arg_5));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]), ARG_TO_FLOAT(args[4]), ARG_TO_FLOAT(args[5]));
+      break;
+    }
+    case glProgramLocalParameter4fvARB_func:
+    {
+      GET_EXT_PTR(void, glProgramLocalParameter4fvARB, (GLenum arg_0, GLuint arg_1, const GLfloat * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), (float*)args[2]);
+      break;
+    }
+    case glIsProgramARB_func:
+    {
+      GET_EXT_PTR(GLboolean, glIsProgramARB, (GLuint arg_0));
+      *pret_char = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glBindBufferARB_func:
+    {
+      GET_EXT_PTR(void, glBindBufferARB, (GLenum arg_0, GLuint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glIsBufferARB_func:
+    {
+      GET_EXT_PTR(GLboolean, glIsBufferARB, (GLuint arg_0));
+      *pret_char = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glUnmapBufferARB_func:
+    {
+      GET_EXT_PTR(GLboolean, glUnmapBufferARB, (GLenum arg_0));
+      *pret_char = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glIsQueryARB_func:
+    {
+      GET_EXT_PTR(GLboolean, glIsQueryARB, (GLuint arg_0));
+      *pret_char = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glBeginQueryARB_func:
+    {
+      GET_EXT_PTR(void, glBeginQueryARB, (GLenum arg_0, GLuint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glEndQueryARB_func:
+    {
+      GET_EXT_PTR(void, glEndQueryARB, (GLenum arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glDeleteObjectARB_func:
+    {
+      GET_EXT_PTR(void, glDeleteObjectARB, (GLhandleARB arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glGetHandleARB_func:
+    {
+      GET_EXT_PTR(GLhandleARB, glGetHandleARB, (GLenum arg_0));
+      *pret_int = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glDetachObjectARB_func:
+    {
+      GET_EXT_PTR(void, glDetachObjectARB, (GLhandleARB arg_0, GLhandleARB arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glCreateShaderObjectARB_func:
+    {
+      GET_EXT_PTR(GLhandleARB, glCreateShaderObjectARB, (GLenum arg_0));
+      *pret_int = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glCompileShaderARB_func:
+    {
+      GET_EXT_PTR(void, glCompileShaderARB, (GLhandleARB arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glCreateProgramObjectARB_func:
+    {
+      GET_EXT_PTR(GLhandleARB, glCreateProgramObjectARB, ());
+      *pret_int = ptr_func();
+      break;
+    }
+    case glAttachObjectARB_func:
+    {
+      GET_EXT_PTR(void, glAttachObjectARB, (GLhandleARB arg_0, GLhandleARB arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glLinkProgramARB_func:
+    {
+      GET_EXT_PTR(void, glLinkProgramARB, (GLhandleARB arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glUseProgramObjectARB_func:
+    {
+      GET_EXT_PTR(void, glUseProgramObjectARB, (GLhandleARB arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glValidateProgramARB_func:
+    {
+      GET_EXT_PTR(void, glValidateProgramARB, (GLhandleARB arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glUniform1fARB_func:
+    {
+      GET_EXT_PTR(void, glUniform1fARB, (GLint arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glUniform2fARB_func:
+    {
+      GET_EXT_PTR(void, glUniform2fARB, (GLint arg_0, GLfloat arg_1, GLfloat arg_2));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glUniform3fARB_func:
+    {
+      GET_EXT_PTR(void, glUniform3fARB, (GLint arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glUniform4fARB_func:
+    {
+      GET_EXT_PTR(void, glUniform4fARB, (GLint arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]), ARG_TO_FLOAT(args[4]));
+      break;
+    }
+    case glUniform1iARB_func:
+    {
+      GET_EXT_PTR(void, glUniform1iARB, (GLint arg_0, GLint arg_1));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glUniform2iARB_func:
+    {
+      GET_EXT_PTR(void, glUniform2iARB, (GLint arg_0, GLint arg_1, GLint arg_2));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glUniform3iARB_func:
+    {
+      GET_EXT_PTR(void, glUniform3iARB, (GLint arg_0, GLint arg_1, GLint arg_2, GLint arg_3));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]));
+      break;
+    }
+    case glUniform4iARB_func:
+    {
+      GET_EXT_PTR(void, glUniform4iARB, (GLint arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]));
+      break;
+    }
+    case glUniform1fvARB_func:
+    {
+      GET_EXT_PTR(void, glUniform1fvARB, (GLint arg_0, GLsizei arg_1, const GLfloat * arg_2));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), (float*)args[2]);
+      break;
+    }
+    case glUniform2fvARB_func:
+    {
+      GET_EXT_PTR(void, glUniform2fvARB, (GLint arg_0, GLsizei arg_1, const GLfloat * arg_2));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), (float*)args[2]);
+      break;
+    }
+    case glUniform3fvARB_func:
+    {
+      GET_EXT_PTR(void, glUniform3fvARB, (GLint arg_0, GLsizei arg_1, const GLfloat * arg_2));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), (float*)args[2]);
+      break;
+    }
+    case glUniform4fvARB_func:
+    {
+      GET_EXT_PTR(void, glUniform4fvARB, (GLint arg_0, GLsizei arg_1, const GLfloat * arg_2));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), (float*)args[2]);
+      break;
+    }
+    case glUniform1ivARB_func:
+    {
+      GET_EXT_PTR(void, glUniform1ivARB, (GLint arg_0, GLsizei arg_1, const GLint * arg_2));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), (int*)args[2]);
+      break;
+    }
+    case glUniform2ivARB_func:
+    {
+      GET_EXT_PTR(void, glUniform2ivARB, (GLint arg_0, GLsizei arg_1, const GLint * arg_2));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), (int*)args[2]);
+      break;
+    }
+    case glUniform3ivARB_func:
+    {
+      GET_EXT_PTR(void, glUniform3ivARB, (GLint arg_0, GLsizei arg_1, const GLint * arg_2));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), (int*)args[2]);
+      break;
+    }
+    case glUniform4ivARB_func:
+    {
+      GET_EXT_PTR(void, glUniform4ivARB, (GLint arg_0, GLsizei arg_1, const GLint * arg_2));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), (int*)args[2]);
+      break;
+    }
+    case glUniformMatrix2fvARB_func:
+    {
+      GET_EXT_PTR(void, glUniformMatrix2fvARB, (GLint arg_0, GLsizei arg_1, GLboolean arg_2, const GLfloat * arg_3));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_UNSIGNED_CHAR(args[2]), (float*)args[3]);
+      break;
+    }
+    case glUniformMatrix3fvARB_func:
+    {
+      GET_EXT_PTR(void, glUniformMatrix3fvARB, (GLint arg_0, GLsizei arg_1, GLboolean arg_2, const GLfloat * arg_3));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_UNSIGNED_CHAR(args[2]), (float*)args[3]);
+      break;
+    }
+    case glUniformMatrix4fvARB_func:
+    {
+      GET_EXT_PTR(void, glUniformMatrix4fvARB, (GLint arg_0, GLsizei arg_1, GLboolean arg_2, const GLfloat * arg_3));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_UNSIGNED_CHAR(args[2]), (float*)args[3]);
+      break;
+    }
+    case glClampColorARB_func:
+    {
+      GET_EXT_PTR(void, glClampColorARB, (GLenum arg_0, GLenum arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glBlendColorEXT_func:
+    {
+      GET_EXT_PTR(void, glBlendColorEXT, (GLclampf arg_0, GLclampf arg_1, GLclampf arg_2, GLclampf arg_3));
+      ptr_func(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glPolygonOffsetEXT_func:
+    {
+      GET_EXT_PTR(void, glPolygonOffsetEXT, (GLfloat arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glCopyTexImage1DEXT_func:
+    {
+      GET_EXT_PTR(void, glCopyTexImage1DEXT, (GLenum arg_0, GLint arg_1, GLenum arg_2, GLint arg_3, GLint arg_4, GLsizei arg_5, GLint arg_6));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]), ARG_TO_INT(args[5]), ARG_TO_INT(args[6]));
+      break;
+    }
+    case glCopyTexImage2DEXT_func:
+    {
+      GET_EXT_PTR(void, glCopyTexImage2DEXT, (GLenum arg_0, GLint arg_1, GLenum arg_2, GLint arg_3, GLint arg_4, GLsizei arg_5, GLsizei arg_6, GLint arg_7));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]), ARG_TO_INT(args[5]), ARG_TO_INT(args[6]), ARG_TO_INT(args[7]));
+      break;
+    }
+    case glCopyTexSubImage1DEXT_func:
+    {
+      GET_EXT_PTR(void, glCopyTexSubImage1DEXT, (GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4, GLsizei arg_5));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]), ARG_TO_INT(args[5]));
+      break;
+    }
+    case glCopyTexSubImage2DEXT_func:
+    {
+      GET_EXT_PTR(void, glCopyTexSubImage2DEXT, (GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4, GLint arg_5, GLsizei arg_6, GLsizei arg_7));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]), ARG_TO_INT(args[5]), ARG_TO_INT(args[6]), ARG_TO_INT(args[7]));
+      break;
+    }
+    case glCopyTexSubImage3DEXT_func:
+    {
+      GET_EXT_PTR(void, glCopyTexSubImage3DEXT, (GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4, GLint arg_5, GLint arg_6, GLsizei arg_7, GLsizei arg_8));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]), ARG_TO_INT(args[5]), ARG_TO_INT(args[6]), ARG_TO_INT(args[7]), ARG_TO_INT(args[8]));
+      break;
+    }
+    case glHistogramEXT_func:
+    {
+      GET_EXT_PTR(void, glHistogramEXT, (GLenum arg_0, GLsizei arg_1, GLenum arg_2, GLboolean arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_CHAR(args[3]));
+      break;
+    }
+    case glMinmaxEXT_func:
+    {
+      GET_EXT_PTR(void, glMinmaxEXT, (GLenum arg_0, GLenum arg_1, GLboolean arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_CHAR(args[2]));
+      break;
+    }
+    case glResetHistogramEXT_func:
+    {
+      GET_EXT_PTR(void, glResetHistogramEXT, (GLenum arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glResetMinmaxEXT_func:
+    {
+      GET_EXT_PTR(void, glResetMinmaxEXT, (GLenum arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glConvolutionParameterfEXT_func:
+    {
+      GET_EXT_PTR(void, glConvolutionParameterfEXT, (GLenum arg_0, GLenum arg_1, GLfloat arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glConvolutionParameteriEXT_func:
+    {
+      GET_EXT_PTR(void, glConvolutionParameteriEXT, (GLenum arg_0, GLenum arg_1, GLint arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glCopyConvolutionFilter1DEXT_func:
+    {
+      GET_EXT_PTR(void, glCopyConvolutionFilter1DEXT, (GLenum arg_0, GLenum arg_1, GLint arg_2, GLint arg_3, GLsizei arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]));
+      break;
+    }
+    case glCopyConvolutionFilter2DEXT_func:
+    {
+      GET_EXT_PTR(void, glCopyConvolutionFilter2DEXT, (GLenum arg_0, GLenum arg_1, GLint arg_2, GLint arg_3, GLsizei arg_4, GLsizei arg_5));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]), ARG_TO_INT(args[5]));
+      break;
+    }
+    case glCopyColorTableSGI_func:
+    {
+      GET_EXT_PTR(void, glCopyColorTableSGI, (GLenum arg_0, GLenum arg_1, GLint arg_2, GLint arg_3, GLsizei arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]));
+      break;
+    }
+    case glPixelTexGenSGIX_func:
+    {
+      GET_EXT_PTR(void, glPixelTexGenSGIX, (GLenum arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glPixelTexGenParameteriSGIS_func:
+    {
+      GET_EXT_PTR(void, glPixelTexGenParameteriSGIS, (GLenum arg_0, GLint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glPixelTexGenParameterfSGIS_func:
+    {
+      GET_EXT_PTR(void, glPixelTexGenParameterfSGIS, (GLenum arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glBindTextureEXT_func:
+    {
+      GET_EXT_PTR(void, glBindTextureEXT, (GLenum arg_0, GLuint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glIsTextureEXT_func:
+    {
+      GET_EXT_PTR(GLboolean, glIsTextureEXT, (GLuint arg_0));
+      *pret_char = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glSampleMaskSGIS_func:
+    {
+      GET_EXT_PTR(void, glSampleMaskSGIS, (GLclampf arg_0, GLboolean arg_1));
+      ptr_func(ARG_TO_FLOAT(args[0]), ARG_TO_UNSIGNED_CHAR(args[1]));
+      break;
+    }
+    case glSamplePatternSGIS_func:
+    {
+      GET_EXT_PTR(void, glSamplePatternSGIS, (GLenum arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glArrayElementEXT_func:
+    {
+      GET_EXT_PTR(void, glArrayElementEXT, (GLint arg_0));
+      ptr_func(ARG_TO_INT(args[0]));
+      break;
+    }
+    case glBlendEquationEXT_func:
+    {
+      GET_EXT_PTR(void, glBlendEquationEXT, (GLenum arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glSpriteParameterfSGIX_func:
+    {
+      GET_EXT_PTR(void, glSpriteParameterfSGIX, (GLenum arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glSpriteParameteriSGIX_func:
+    {
+      GET_EXT_PTR(void, glSpriteParameteriSGIX, (GLenum arg_0, GLint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glPointParameterfEXT_func:
+    {
+      GET_EXT_PTR(void, glPointParameterfEXT, (GLenum arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glPointParameterfSGIS_func:
+    {
+      GET_EXT_PTR(void, glPointParameterfSGIS, (GLenum arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glGetInstrumentsSGIX_func:
+    {
+      GET_EXT_PTR(GLint, glGetInstrumentsSGIX, ());
+      *pret_int = ptr_func();
+      break;
+    }
+    case glReadInstrumentsSGIX_func:
+    {
+      GET_EXT_PTR(void, glReadInstrumentsSGIX, (GLint arg_0));
+      ptr_func(ARG_TO_INT(args[0]));
+      break;
+    }
+    case glStartInstrumentsSGIX_func:
+    {
+      GET_EXT_PTR(void, glStartInstrumentsSGIX, ());
+      ptr_func();
+      break;
+    }
+    case glStopInstrumentsSGIX_func:
+    {
+      GET_EXT_PTR(void, glStopInstrumentsSGIX, (GLint arg_0));
+      ptr_func(ARG_TO_INT(args[0]));
+      break;
+    }
+    case glFrameZoomSGIX_func:
+    {
+      GET_EXT_PTR(void, glFrameZoomSGIX, (GLint arg_0));
+      ptr_func(ARG_TO_INT(args[0]));
+      break;
+    }
+    case glTagSampleBufferSGIX_func:
+    {
+      GET_EXT_PTR(void, glTagSampleBufferSGIX, ());
+      ptr_func();
+      break;
+    }
+    case glDeformSGIX_func:
+    {
+      GET_EXT_PTR(void, glDeformSGIX, (GLbitfield arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glLoadIdentityDeformationMapSGIX_func:
+    {
+      GET_EXT_PTR(void, glLoadIdentityDeformationMapSGIX, (GLbitfield arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glFlushRasterSGIX_func:
+    {
+      GET_EXT_PTR(void, glFlushRasterSGIX, ());
+      ptr_func();
+      break;
+    }
+    case glCopyColorSubTableEXT_func:
+    {
+      GET_EXT_PTR(void, glCopyColorSubTableEXT, (GLenum arg_0, GLsizei arg_1, GLint arg_2, GLint arg_3, GLsizei arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]));
+      break;
+    }
+    case glListParameterfSGIX_func:
+    {
+      GET_EXT_PTR(void, glListParameterfSGIX, (GLuint arg_0, GLenum arg_1, GLfloat arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glListParameteriSGIX_func:
+    {
+      GET_EXT_PTR(void, glListParameteriSGIX, (GLuint arg_0, GLenum arg_1, GLint arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glIndexMaterialEXT_func:
+    {
+      GET_EXT_PTR(void, glIndexMaterialEXT, (GLenum arg_0, GLenum arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glIndexFuncEXT_func:
+    {
+      GET_EXT_PTR(void, glIndexFuncEXT, (GLenum arg_0, GLclampf arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glLockArraysEXT_func:
+    {
+      GET_EXT_PTR(void, glLockArraysEXT, (GLint arg_0, GLsizei arg_1));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glUnlockArraysEXT_func:
+    {
+      GET_EXT_PTR(void, glUnlockArraysEXT, ());
+      ptr_func();
+      break;
+    }
+    case glFragmentColorMaterialSGIX_func:
+    {
+      GET_EXT_PTR(void, glFragmentColorMaterialSGIX, (GLenum arg_0, GLenum arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glFragmentLightfSGIX_func:
+    {
+      GET_EXT_PTR(void, glFragmentLightfSGIX, (GLenum arg_0, GLenum arg_1, GLfloat arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glFragmentLightiSGIX_func:
+    {
+      GET_EXT_PTR(void, glFragmentLightiSGIX, (GLenum arg_0, GLenum arg_1, GLint arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glFragmentLightModelfSGIX_func:
+    {
+      GET_EXT_PTR(void, glFragmentLightModelfSGIX, (GLenum arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glFragmentLightModeliSGIX_func:
+    {
+      GET_EXT_PTR(void, glFragmentLightModeliSGIX, (GLenum arg_0, GLint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glFragmentMaterialfSGIX_func:
+    {
+      GET_EXT_PTR(void, glFragmentMaterialfSGIX, (GLenum arg_0, GLenum arg_1, GLfloat arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glFragmentMaterialiSGIX_func:
+    {
+      GET_EXT_PTR(void, glFragmentMaterialiSGIX, (GLenum arg_0, GLenum arg_1, GLint arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glLightEnviSGIX_func:
+    {
+      GET_EXT_PTR(void, glLightEnviSGIX, (GLenum arg_0, GLint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glApplyTextureEXT_func:
+    {
+      GET_EXT_PTR(void, glApplyTextureEXT, (GLenum arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glTextureLightEXT_func:
+    {
+      GET_EXT_PTR(void, glTextureLightEXT, (GLenum arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glTextureMaterialEXT_func:
+    {
+      GET_EXT_PTR(void, glTextureMaterialEXT, (GLenum arg_0, GLenum arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glAsyncMarkerSGIX_func:
+    {
+      GET_EXT_PTR(void, glAsyncMarkerSGIX, (GLuint arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glGenAsyncMarkersSGIX_func:
+    {
+      GET_EXT_PTR(GLuint, glGenAsyncMarkersSGIX, (GLsizei arg_0));
+      *pret_int = ptr_func(ARG_TO_INT(args[0]));
+      break;
+    }
+    case glDeleteAsyncMarkersSGIX_func:
+    {
+      GET_EXT_PTR(void, glDeleteAsyncMarkersSGIX, (GLuint arg_0, GLsizei arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glIsAsyncMarkerSGIX_func:
+    {
+      GET_EXT_PTR(GLboolean, glIsAsyncMarkerSGIX, (GLuint arg_0));
+      *pret_char = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glPixelTransformParameteriEXT_func:
+    {
+      GET_EXT_PTR(void, glPixelTransformParameteriEXT, (GLenum arg_0, GLenum arg_1, GLint arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glPixelTransformParameterfEXT_func:
+    {
+      GET_EXT_PTR(void, glPixelTransformParameterfEXT, (GLenum arg_0, GLenum arg_1, GLfloat arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glSecondaryColor3bEXT_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3bEXT, (GLbyte arg_0, GLbyte arg_1, GLbyte arg_2));
+      ptr_func(ARG_TO_CHAR(args[0]), ARG_TO_CHAR(args[1]), ARG_TO_CHAR(args[2]));
+      break;
+    }
+    case glSecondaryColor3bvEXT_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3bvEXT, (const GLbyte * arg_0));
+      ptr_func((char*)args[0]);
+      break;
+    }
+    case glSecondaryColor3dEXT_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3dEXT, (GLdouble arg_0, GLdouble arg_1, GLdouble arg_2));
+      ptr_func(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glSecondaryColor3dvEXT_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3dvEXT, (const GLdouble * arg_0));
+      ptr_func((double*)args[0]);
+      break;
+    }
+    case glSecondaryColor3fEXT_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3fEXT, (GLfloat arg_0, GLfloat arg_1, GLfloat arg_2));
+      ptr_func(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glSecondaryColor3fvEXT_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3fvEXT, (const GLfloat * arg_0));
+      ptr_func((float*)args[0]);
+      break;
+    }
+    case glSecondaryColor3iEXT_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3iEXT, (GLint arg_0, GLint arg_1, GLint arg_2));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glSecondaryColor3ivEXT_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3ivEXT, (const GLint * arg_0));
+      ptr_func((int*)args[0]);
+      break;
+    }
+    case glSecondaryColor3sEXT_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3sEXT, (GLshort arg_0, GLshort arg_1, GLshort arg_2));
+      ptr_func(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]));
+      break;
+    }
+    case glSecondaryColor3svEXT_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3svEXT, (const GLshort * arg_0));
+      ptr_func((short*)args[0]);
+      break;
+    }
+    case glSecondaryColor3ubEXT_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3ubEXT, (GLubyte arg_0, GLubyte arg_1, GLubyte arg_2));
+      ptr_func(ARG_TO_UNSIGNED_CHAR(args[0]), ARG_TO_UNSIGNED_CHAR(args[1]), ARG_TO_UNSIGNED_CHAR(args[2]));
+      break;
+    }
+    case glSecondaryColor3ubvEXT_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3ubvEXT, (const GLubyte * arg_0));
+      ptr_func((unsigned char*)args[0]);
+      break;
+    }
+    case glSecondaryColor3uiEXT_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3uiEXT, (GLuint arg_0, GLuint arg_1, GLuint arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]));
+      break;
+    }
+    case glSecondaryColor3uivEXT_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3uivEXT, (const GLuint * arg_0));
+      ptr_func((unsigned int*)args[0]);
+      break;
+    }
+    case glSecondaryColor3usEXT_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3usEXT, (GLushort arg_0, GLushort arg_1, GLushort arg_2));
+      ptr_func(ARG_TO_UNSIGNED_SHORT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]));
+      break;
+    }
+    case glSecondaryColor3usvEXT_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3usvEXT, (const GLushort * arg_0));
+      ptr_func((unsigned short*)args[0]);
+      break;
+    }
+    case glTextureNormalEXT_func:
+    {
+      GET_EXT_PTR(void, glTextureNormalEXT, (GLenum arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glFogCoordfEXT_func:
+    {
+      GET_EXT_PTR(void, glFogCoordfEXT, (GLfloat arg_0));
+      ptr_func(ARG_TO_FLOAT(args[0]));
+      break;
+    }
+    case glFogCoorddEXT_func:
+    {
+      GET_EXT_PTR(void, glFogCoorddEXT, (GLdouble arg_0));
+      ptr_func(ARG_TO_DOUBLE(args[0]));
+      break;
+    }
+    case glTangent3bEXT_func:
+    {
+      GET_EXT_PTR(void, glTangent3bEXT, (GLbyte arg_0, GLbyte arg_1, GLbyte arg_2));
+      ptr_func(ARG_TO_CHAR(args[0]), ARG_TO_CHAR(args[1]), ARG_TO_CHAR(args[2]));
+      break;
+    }
+    case glTangent3bvEXT_func:
+    {
+      GET_EXT_PTR(void, glTangent3bvEXT, (const GLbyte * arg_0));
+      ptr_func((char*)args[0]);
+      break;
+    }
+    case glTangent3dEXT_func:
+    {
+      GET_EXT_PTR(void, glTangent3dEXT, (GLdouble arg_0, GLdouble arg_1, GLdouble arg_2));
+      ptr_func(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glTangent3dvEXT_func:
+    {
+      GET_EXT_PTR(void, glTangent3dvEXT, (const GLdouble * arg_0));
+      ptr_func((double*)args[0]);
+      break;
+    }
+    case glTangent3fEXT_func:
+    {
+      GET_EXT_PTR(void, glTangent3fEXT, (GLfloat arg_0, GLfloat arg_1, GLfloat arg_2));
+      ptr_func(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glTangent3fvEXT_func:
+    {
+      GET_EXT_PTR(void, glTangent3fvEXT, (const GLfloat * arg_0));
+      ptr_func((float*)args[0]);
+      break;
+    }
+    case glTangent3iEXT_func:
+    {
+      GET_EXT_PTR(void, glTangent3iEXT, (GLint arg_0, GLint arg_1, GLint arg_2));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glTangent3ivEXT_func:
+    {
+      GET_EXT_PTR(void, glTangent3ivEXT, (const GLint * arg_0));
+      ptr_func((int*)args[0]);
+      break;
+    }
+    case glTangent3sEXT_func:
+    {
+      GET_EXT_PTR(void, glTangent3sEXT, (GLshort arg_0, GLshort arg_1, GLshort arg_2));
+      ptr_func(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]));
+      break;
+    }
+    case glTangent3svEXT_func:
+    {
+      GET_EXT_PTR(void, glTangent3svEXT, (const GLshort * arg_0));
+      ptr_func((short*)args[0]);
+      break;
+    }
+    case glBinormal3bEXT_func:
+    {
+      GET_EXT_PTR(void, glBinormal3bEXT, (GLbyte arg_0, GLbyte arg_1, GLbyte arg_2));
+      ptr_func(ARG_TO_CHAR(args[0]), ARG_TO_CHAR(args[1]), ARG_TO_CHAR(args[2]));
+      break;
+    }
+    case glBinormal3bvEXT_func:
+    {
+      GET_EXT_PTR(void, glBinormal3bvEXT, (const GLbyte * arg_0));
+      ptr_func((char*)args[0]);
+      break;
+    }
+    case glBinormal3dEXT_func:
+    {
+      GET_EXT_PTR(void, glBinormal3dEXT, (GLdouble arg_0, GLdouble arg_1, GLdouble arg_2));
+      ptr_func(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glBinormal3dvEXT_func:
+    {
+      GET_EXT_PTR(void, glBinormal3dvEXT, (const GLdouble * arg_0));
+      ptr_func((double*)args[0]);
+      break;
+    }
+    case glBinormal3fEXT_func:
+    {
+      GET_EXT_PTR(void, glBinormal3fEXT, (GLfloat arg_0, GLfloat arg_1, GLfloat arg_2));
+      ptr_func(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glBinormal3fvEXT_func:
+    {
+      GET_EXT_PTR(void, glBinormal3fvEXT, (const GLfloat * arg_0));
+      ptr_func((float*)args[0]);
+      break;
+    }
+    case glBinormal3iEXT_func:
+    {
+      GET_EXT_PTR(void, glBinormal3iEXT, (GLint arg_0, GLint arg_1, GLint arg_2));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glBinormal3ivEXT_func:
+    {
+      GET_EXT_PTR(void, glBinormal3ivEXT, (const GLint * arg_0));
+      ptr_func((int*)args[0]);
+      break;
+    }
+    case glBinormal3sEXT_func:
+    {
+      GET_EXT_PTR(void, glBinormal3sEXT, (GLshort arg_0, GLshort arg_1, GLshort arg_2));
+      ptr_func(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]));
+      break;
+    }
+    case glBinormal3svEXT_func:
+    {
+      GET_EXT_PTR(void, glBinormal3svEXT, (const GLshort * arg_0));
+      ptr_func((short*)args[0]);
+      break;
+    }
+    case glBlendFuncSeparateEXT_func:
+    {
+      GET_EXT_PTR(void, glBlendFuncSeparateEXT, (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLenum arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]));
+      break;
+    }
+    case glVertexWeightfEXT_func:
+    {
+      GET_EXT_PTR(void, glVertexWeightfEXT, (GLfloat arg_0));
+      ptr_func(ARG_TO_FLOAT(args[0]));
+      break;
+    }
+    case glFlushVertexArrayRangeNV_func:
+    {
+      GET_EXT_PTR(void, glFlushVertexArrayRangeNV, ());
+      ptr_func();
+      break;
+    }
+    case glCombinerParameterfNV_func:
+    {
+      GET_EXT_PTR(void, glCombinerParameterfNV, (GLenum arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glCombinerParameteriNV_func:
+    {
+      GET_EXT_PTR(void, glCombinerParameteriNV, (GLenum arg_0, GLint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glCombinerInputNV_func:
+    {
+      GET_EXT_PTR(void, glCombinerInputNV, (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLenum arg_3, GLenum arg_4, GLenum arg_5));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]), ARG_TO_UNSIGNED_INT(args[4]), ARG_TO_UNSIGNED_INT(args[5]));
+      break;
+    }
+    case glCombinerOutputNV_func:
+    {
+      GET_EXT_PTR(void, glCombinerOutputNV, (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLenum arg_3, GLenum arg_4, GLenum arg_5, GLenum arg_6, GLboolean arg_7, GLboolean arg_8, GLboolean arg_9));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]), ARG_TO_UNSIGNED_INT(args[4]), ARG_TO_UNSIGNED_INT(args[5]), ARG_TO_UNSIGNED_INT(args[6]), ARG_TO_UNSIGNED_CHAR(args[7]), ARG_TO_UNSIGNED_CHAR(args[8]), ARG_TO_UNSIGNED_CHAR(args[9]));
+      break;
+    }
+    case glFinalCombinerInputNV_func:
+    {
+      GET_EXT_PTR(void, glFinalCombinerInputNV, (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLenum arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]));
+      break;
+    }
+    case glResizeBuffersMESA_func:
+    {
+      GET_EXT_PTR(void, glResizeBuffersMESA, ());
+      ptr_func();
+      break;
+    }
+    case glWindowPos2dMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos2dMESA, (GLdouble arg_0, GLdouble arg_1));
+      ptr_func(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]));
+      break;
+    }
+    case glWindowPos2dvMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos2dvMESA, (const GLdouble * arg_0));
+      ptr_func((double*)args[0]);
+      break;
+    }
+    case glWindowPos2fMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos2fMESA, (GLfloat arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glWindowPos2fvMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos2fvMESA, (const GLfloat * arg_0));
+      ptr_func((float*)args[0]);
+      break;
+    }
+    case glWindowPos2iMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos2iMESA, (GLint arg_0, GLint arg_1));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glWindowPos2ivMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos2ivMESA, (const GLint * arg_0));
+      ptr_func((int*)args[0]);
+      break;
+    }
+    case glWindowPos2sMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos2sMESA, (GLshort arg_0, GLshort arg_1));
+      ptr_func(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]));
+      break;
+    }
+    case glWindowPos2svMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos2svMESA, (const GLshort * arg_0));
+      ptr_func((short*)args[0]);
+      break;
+    }
+    case glWindowPos3dMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos3dMESA, (GLdouble arg_0, GLdouble arg_1, GLdouble arg_2));
+      ptr_func(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glWindowPos3dvMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos3dvMESA, (const GLdouble * arg_0));
+      ptr_func((double*)args[0]);
+      break;
+    }
+    case glWindowPos3fMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos3fMESA, (GLfloat arg_0, GLfloat arg_1, GLfloat arg_2));
+      ptr_func(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glWindowPos3fvMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos3fvMESA, (const GLfloat * arg_0));
+      ptr_func((float*)args[0]);
+      break;
+    }
+    case glWindowPos3iMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos3iMESA, (GLint arg_0, GLint arg_1, GLint arg_2));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glWindowPos3ivMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos3ivMESA, (const GLint * arg_0));
+      ptr_func((int*)args[0]);
+      break;
+    }
+    case glWindowPos3sMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos3sMESA, (GLshort arg_0, GLshort arg_1, GLshort arg_2));
+      ptr_func(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]));
+      break;
+    }
+    case glWindowPos3svMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos3svMESA, (const GLshort * arg_0));
+      ptr_func((short*)args[0]);
+      break;
+    }
+    case glWindowPos4dMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos4dMESA, (GLdouble arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3));
+      ptr_func(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]));
+      break;
+    }
+    case glWindowPos4dvMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos4dvMESA, (const GLdouble * arg_0));
+      ptr_func((double*)args[0]);
+      break;
+    }
+    case glWindowPos4fMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos4fMESA, (GLfloat arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3));
+      ptr_func(ARG_TO_FLOAT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glWindowPos4fvMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos4fvMESA, (const GLfloat * arg_0));
+      ptr_func((float*)args[0]);
+      break;
+    }
+    case glWindowPos4iMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos4iMESA, (GLint arg_0, GLint arg_1, GLint arg_2, GLint arg_3));
+      ptr_func(ARG_TO_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]));
+      break;
+    }
+    case glWindowPos4ivMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos4ivMESA, (const GLint * arg_0));
+      ptr_func((int*)args[0]);
+      break;
+    }
+    case glWindowPos4sMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos4sMESA, (GLshort arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3));
+      ptr_func(ARG_TO_SHORT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]));
+      break;
+    }
+    case glWindowPos4svMESA_func:
+    {
+      GET_EXT_PTR(void, glWindowPos4svMESA, (const GLshort * arg_0));
+      ptr_func((short*)args[0]);
+      break;
+    }
+    case glSampleMaskEXT_func:
+    {
+      GET_EXT_PTR(void, glSampleMaskEXT, (GLclampf arg_0, GLboolean arg_1));
+      ptr_func(ARG_TO_FLOAT(args[0]), ARG_TO_UNSIGNED_CHAR(args[1]));
+      break;
+    }
+    case glSamplePatternEXT_func:
+    {
+      GET_EXT_PTR(void, glSamplePatternEXT, (GLenum arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glTextureColorMaskSGIS_func:
+    {
+      GET_EXT_PTR(void, glTextureColorMaskSGIS, (GLboolean arg_0, GLboolean arg_1, GLboolean arg_2, GLboolean arg_3));
+      ptr_func(ARG_TO_UNSIGNED_CHAR(args[0]), ARG_TO_UNSIGNED_CHAR(args[1]), ARG_TO_UNSIGNED_CHAR(args[2]), ARG_TO_UNSIGNED_CHAR(args[3]));
+      break;
+    }
+    case glIsFenceNV_func:
+    {
+      GET_EXT_PTR(GLboolean, glIsFenceNV, (GLuint arg_0));
+      *pret_char = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glTestFenceNV_func:
+    {
+      GET_EXT_PTR(GLboolean, glTestFenceNV, (GLuint arg_0));
+      *pret_char = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glFinishFenceNV_func:
+    {
+      GET_EXT_PTR(void, glFinishFenceNV, (GLuint arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glSetFenceNV_func:
+    {
+      GET_EXT_PTR(void, glSetFenceNV, (GLuint arg_0, GLenum arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glEvalMapsNV_func:
+    {
+      GET_EXT_PTR(void, glEvalMapsNV, (GLenum arg_0, GLenum arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glBindProgramNV_func:
+    {
+      GET_EXT_PTR(void, glBindProgramNV, (GLenum arg_0, GLuint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glIsProgramNV_func:
+    {
+      GET_EXT_PTR(GLboolean, glIsProgramNV, (GLuint arg_0));
+      *pret_char = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glProgramParameter4dNV_func:
+    {
+      GET_EXT_PTR(void, glProgramParameter4dNV, (GLenum arg_0, GLuint arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4, GLdouble arg_5));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]), ARG_TO_DOUBLE(args[4]), ARG_TO_DOUBLE(args[5]));
+      break;
+    }
+    case glProgramParameter4dvNV_func:
+    {
+      GET_EXT_PTR(void, glProgramParameter4dvNV, (GLenum arg_0, GLuint arg_1, const GLdouble * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), (double*)args[2]);
+      break;
+    }
+    case glProgramParameter4fNV_func:
+    {
+      GET_EXT_PTR(void, glProgramParameter4fNV, (GLenum arg_0, GLuint arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4, GLfloat arg_5));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]), ARG_TO_FLOAT(args[4]), ARG_TO_FLOAT(args[5]));
+      break;
+    }
+    case glProgramParameter4fvNV_func:
+    {
+      GET_EXT_PTR(void, glProgramParameter4fvNV, (GLenum arg_0, GLuint arg_1, const GLfloat * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), (float*)args[2]);
+      break;
+    }
+    case glProgramParameters4dvNV_func:
+    {
+      GET_EXT_PTR(void, glProgramParameters4dvNV, (GLenum arg_0, GLuint arg_1, GLuint arg_2, const GLdouble * arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), (double*)args[3]);
+      break;
+    }
+    case glProgramParameters4fvNV_func:
+    {
+      GET_EXT_PTR(void, glProgramParameters4fvNV, (GLenum arg_0, GLuint arg_1, GLuint arg_2, const GLfloat * arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), (float*)args[3]);
+      break;
+    }
+    case glTrackMatrixNV_func:
+    {
+      GET_EXT_PTR(void, glTrackMatrixNV, (GLenum arg_0, GLuint arg_1, GLenum arg_2, GLenum arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]));
+      break;
+    }
+    case glVertexAttrib1dNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib1dNV, (GLuint arg_0, GLdouble arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]));
+      break;
+    }
+    case glVertexAttrib1dvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib1dvNV, (GLuint arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glVertexAttrib1fNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib1fNV, (GLuint arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glVertexAttrib1fvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib1fvNV, (GLuint arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glVertexAttrib1sNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib1sNV, (GLuint arg_0, GLshort arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]));
+      break;
+    }
+    case glVertexAttrib1svNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib1svNV, (GLuint arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glVertexAttrib2dNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib2dNV, (GLuint arg_0, GLdouble arg_1, GLdouble arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glVertexAttrib2dvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib2dvNV, (GLuint arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glVertexAttrib2fNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib2fNV, (GLuint arg_0, GLfloat arg_1, GLfloat arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glVertexAttrib2fvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib2fvNV, (GLuint arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glVertexAttrib2sNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib2sNV, (GLuint arg_0, GLshort arg_1, GLshort arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]));
+      break;
+    }
+    case glVertexAttrib2svNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib2svNV, (GLuint arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glVertexAttrib3dNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib3dNV, (GLuint arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]));
+      break;
+    }
+    case glVertexAttrib3dvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib3dvNV, (GLuint arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glVertexAttrib3fNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib3fNV, (GLuint arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glVertexAttrib3fvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib3fvNV, (GLuint arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glVertexAttrib3sNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib3sNV, (GLuint arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]));
+      break;
+    }
+    case glVertexAttrib3svNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib3svNV, (GLuint arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glVertexAttrib4dNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4dNV, (GLuint arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]), ARG_TO_DOUBLE(args[4]));
+      break;
+    }
+    case glVertexAttrib4dvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4dvNV, (GLuint arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glVertexAttrib4fNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4fNV, (GLuint arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]), ARG_TO_FLOAT(args[4]));
+      break;
+    }
+    case glVertexAttrib4fvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4fvNV, (GLuint arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glVertexAttrib4sNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4sNV, (GLuint arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3, GLshort arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]), ARG_TO_SHORT(args[4]));
+      break;
+    }
+    case glVertexAttrib4svNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4svNV, (GLuint arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glVertexAttrib4ubNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4ubNV, (GLuint arg_0, GLubyte arg_1, GLubyte arg_2, GLubyte arg_3, GLubyte arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_CHAR(args[1]), ARG_TO_UNSIGNED_CHAR(args[2]), ARG_TO_UNSIGNED_CHAR(args[3]), ARG_TO_UNSIGNED_CHAR(args[4]));
+      break;
+    }
+    case glVertexAttrib4ubvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4ubvNV, (GLuint arg_0, const GLubyte * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (unsigned char*)args[1]);
+      break;
+    }
+    case glVertexAttribs1dvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttribs1dvNV, (GLuint arg_0, GLsizei arg_1, const GLdouble * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), (double*)args[2]);
+      break;
+    }
+    case glVertexAttribs1fvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttribs1fvNV, (GLuint arg_0, GLsizei arg_1, const GLfloat * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), (float*)args[2]);
+      break;
+    }
+    case glVertexAttribs1svNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttribs1svNV, (GLuint arg_0, GLsizei arg_1, const GLshort * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), (short*)args[2]);
+      break;
+    }
+    case glVertexAttribs2dvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttribs2dvNV, (GLuint arg_0, GLsizei arg_1, const GLdouble * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), (double*)args[2]);
+      break;
+    }
+    case glVertexAttribs2fvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttribs2fvNV, (GLuint arg_0, GLsizei arg_1, const GLfloat * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), (float*)args[2]);
+      break;
+    }
+    case glVertexAttribs2svNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttribs2svNV, (GLuint arg_0, GLsizei arg_1, const GLshort * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), (short*)args[2]);
+      break;
+    }
+    case glVertexAttribs3dvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttribs3dvNV, (GLuint arg_0, GLsizei arg_1, const GLdouble * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), (double*)args[2]);
+      break;
+    }
+    case glVertexAttribs3fvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttribs3fvNV, (GLuint arg_0, GLsizei arg_1, const GLfloat * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), (float*)args[2]);
+      break;
+    }
+    case glVertexAttribs3svNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttribs3svNV, (GLuint arg_0, GLsizei arg_1, const GLshort * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), (short*)args[2]);
+      break;
+    }
+    case glVertexAttribs4dvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttribs4dvNV, (GLuint arg_0, GLsizei arg_1, const GLdouble * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), (double*)args[2]);
+      break;
+    }
+    case glVertexAttribs4fvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttribs4fvNV, (GLuint arg_0, GLsizei arg_1, const GLfloat * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), (float*)args[2]);
+      break;
+    }
+    case glVertexAttribs4svNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttribs4svNV, (GLuint arg_0, GLsizei arg_1, const GLshort * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), (short*)args[2]);
+      break;
+    }
+    case glVertexAttribs4ubvNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttribs4ubvNV, (GLuint arg_0, GLsizei arg_1, const GLubyte * arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), (unsigned char*)args[2]);
+      break;
+    }
+    case glGenFragmentShadersATI_func:
+    {
+      GET_EXT_PTR(GLuint, glGenFragmentShadersATI, (GLuint arg_0));
+      *pret_int = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glBindFragmentShaderATI_func:
+    {
+      GET_EXT_PTR(void, glBindFragmentShaderATI, (GLuint arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glDeleteFragmentShaderATI_func:
+    {
+      GET_EXT_PTR(void, glDeleteFragmentShaderATI, (GLuint arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glBeginFragmentShaderATI_func:
+    {
+      GET_EXT_PTR(void, glBeginFragmentShaderATI, ());
+      ptr_func();
+      break;
+    }
+    case glEndFragmentShaderATI_func:
+    {
+      GET_EXT_PTR(void, glEndFragmentShaderATI, ());
+      ptr_func();
+      break;
+    }
+    case glPassTexCoordATI_func:
+    {
+      GET_EXT_PTR(void, glPassTexCoordATI, (GLuint arg_0, GLuint arg_1, GLenum arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]));
+      break;
+    }
+    case glSampleMapATI_func:
+    {
+      GET_EXT_PTR(void, glSampleMapATI, (GLuint arg_0, GLuint arg_1, GLenum arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]));
+      break;
+    }
+    case glColorFragmentOp1ATI_func:
+    {
+      GET_EXT_PTR(void, glColorFragmentOp1ATI, (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3, GLuint arg_4, GLuint arg_5, GLuint arg_6));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]), ARG_TO_UNSIGNED_INT(args[4]), ARG_TO_UNSIGNED_INT(args[5]), ARG_TO_UNSIGNED_INT(args[6]));
+      break;
+    }
+    case glColorFragmentOp2ATI_func:
+    {
+      GET_EXT_PTR(void, glColorFragmentOp2ATI, (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3, GLuint arg_4, GLuint arg_5, GLuint arg_6, GLuint arg_7, GLuint arg_8, GLuint arg_9));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]), ARG_TO_UNSIGNED_INT(args[4]), ARG_TO_UNSIGNED_INT(args[5]), ARG_TO_UNSIGNED_INT(args[6]), ARG_TO_UNSIGNED_INT(args[7]), ARG_TO_UNSIGNED_INT(args[8]), ARG_TO_UNSIGNED_INT(args[9]));
+      break;
+    }
+    case glColorFragmentOp3ATI_func:
+    {
+      GET_EXT_PTR(void, glColorFragmentOp3ATI, (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3, GLuint arg_4, GLuint arg_5, GLuint arg_6, GLuint arg_7, GLuint arg_8, GLuint arg_9, GLuint arg_10, GLuint arg_11, GLuint arg_12));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]), ARG_TO_UNSIGNED_INT(args[4]), ARG_TO_UNSIGNED_INT(args[5]), ARG_TO_UNSIGNED_INT(args[6]), ARG_TO_UNSIGNED_INT(args[7]), ARG_TO_UNSIGNED_INT(args[8]), ARG_TO_UNSIGNED_INT(args[9]), ARG_TO_UNSIGNED_INT(args[10]), ARG_TO_UNSIGNED_INT(args[11]), ARG_TO_UNSIGNED_INT(args[12]));
+      break;
+    }
+    case glAlphaFragmentOp1ATI_func:
+    {
+      GET_EXT_PTR(void, glAlphaFragmentOp1ATI, (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3, GLuint arg_4, GLuint arg_5));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]), ARG_TO_UNSIGNED_INT(args[4]), ARG_TO_UNSIGNED_INT(args[5]));
+      break;
+    }
+    case glAlphaFragmentOp2ATI_func:
+    {
+      GET_EXT_PTR(void, glAlphaFragmentOp2ATI, (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3, GLuint arg_4, GLuint arg_5, GLuint arg_6, GLuint arg_7, GLuint arg_8));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]), ARG_TO_UNSIGNED_INT(args[4]), ARG_TO_UNSIGNED_INT(args[5]), ARG_TO_UNSIGNED_INT(args[6]), ARG_TO_UNSIGNED_INT(args[7]), ARG_TO_UNSIGNED_INT(args[8]));
+      break;
+    }
+    case glAlphaFragmentOp3ATI_func:
+    {
+      GET_EXT_PTR(void, glAlphaFragmentOp3ATI, (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3, GLuint arg_4, GLuint arg_5, GLuint arg_6, GLuint arg_7, GLuint arg_8, GLuint arg_9, GLuint arg_10, GLuint arg_11));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]), ARG_TO_UNSIGNED_INT(args[4]), ARG_TO_UNSIGNED_INT(args[5]), ARG_TO_UNSIGNED_INT(args[6]), ARG_TO_UNSIGNED_INT(args[7]), ARG_TO_UNSIGNED_INT(args[8]), ARG_TO_UNSIGNED_INT(args[9]), ARG_TO_UNSIGNED_INT(args[10]), ARG_TO_UNSIGNED_INT(args[11]));
+      break;
+    }
+    case glPNTrianglesiATI_func:
+    {
+      GET_EXT_PTR(void, glPNTrianglesiATI, (GLenum arg_0, GLint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glPNTrianglesfATI_func:
+    {
+      GET_EXT_PTR(void, glPNTrianglesfATI, (GLenum arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glIsObjectBufferATI_func:
+    {
+      GET_EXT_PTR(GLboolean, glIsObjectBufferATI, (GLuint arg_0));
+      *pret_char = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glFreeObjectBufferATI_func:
+    {
+      GET_EXT_PTR(void, glFreeObjectBufferATI, (GLuint arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glArrayObjectATI_func:
+    {
+      GET_EXT_PTR(void, glArrayObjectATI, (GLenum arg_0, GLint arg_1, GLenum arg_2, GLsizei arg_3, GLuint arg_4, GLuint arg_5));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_UNSIGNED_INT(args[4]), ARG_TO_UNSIGNED_INT(args[5]));
+      break;
+    }
+    case glVariantArrayObjectATI_func:
+    {
+      GET_EXT_PTR(void, glVariantArrayObjectATI, (GLuint arg_0, GLenum arg_1, GLsizei arg_2, GLuint arg_3, GLuint arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]), ARG_TO_UNSIGNED_INT(args[4]));
+      break;
+    }
+    case glBeginVertexShaderEXT_func:
+    {
+      GET_EXT_PTR(void, glBeginVertexShaderEXT, ());
+      ptr_func();
+      break;
+    }
+    case glEndVertexShaderEXT_func:
+    {
+      GET_EXT_PTR(void, glEndVertexShaderEXT, ());
+      ptr_func();
+      break;
+    }
+    case glBindVertexShaderEXT_func:
+    {
+      GET_EXT_PTR(void, glBindVertexShaderEXT, (GLuint arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glGenVertexShadersEXT_func:
+    {
+      GET_EXT_PTR(GLuint, glGenVertexShadersEXT, (GLuint arg_0));
+      *pret_int = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glDeleteVertexShaderEXT_func:
+    {
+      GET_EXT_PTR(void, glDeleteVertexShaderEXT, (GLuint arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glShaderOp1EXT_func:
+    {
+      GET_EXT_PTR(void, glShaderOp1EXT, (GLenum arg_0, GLuint arg_1, GLuint arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]));
+      break;
+    }
+    case glShaderOp2EXT_func:
+    {
+      GET_EXT_PTR(void, glShaderOp2EXT, (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]));
+      break;
+    }
+    case glShaderOp3EXT_func:
+    {
+      GET_EXT_PTR(void, glShaderOp3EXT, (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLuint arg_3, GLuint arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]), ARG_TO_UNSIGNED_INT(args[4]));
+      break;
+    }
+    case glSwizzleEXT_func:
+    {
+      GET_EXT_PTR(void, glSwizzleEXT, (GLuint arg_0, GLuint arg_1, GLenum arg_2, GLenum arg_3, GLenum arg_4, GLenum arg_5));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]), ARG_TO_UNSIGNED_INT(args[4]), ARG_TO_UNSIGNED_INT(args[5]));
+      break;
+    }
+    case glWriteMaskEXT_func:
+    {
+      GET_EXT_PTR(void, glWriteMaskEXT, (GLuint arg_0, GLuint arg_1, GLenum arg_2, GLenum arg_3, GLenum arg_4, GLenum arg_5));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]), ARG_TO_UNSIGNED_INT(args[4]), ARG_TO_UNSIGNED_INT(args[5]));
+      break;
+    }
+    case glInsertComponentEXT_func:
+    {
+      GET_EXT_PTR(void, glInsertComponentEXT, (GLuint arg_0, GLuint arg_1, GLuint arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]));
+      break;
+    }
+    case glExtractComponentEXT_func:
+    {
+      GET_EXT_PTR(void, glExtractComponentEXT, (GLuint arg_0, GLuint arg_1, GLuint arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]));
+      break;
+    }
+    case glGenSymbolsEXT_func:
+    {
+      GET_EXT_PTR(GLuint, glGenSymbolsEXT, (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLuint arg_3));
+      *pret_int = ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]));
+      break;
+    }
+    case glEnableVariantClientStateEXT_func:
+    {
+      GET_EXT_PTR(void, glEnableVariantClientStateEXT, (GLuint arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glDisableVariantClientStateEXT_func:
+    {
+      GET_EXT_PTR(void, glDisableVariantClientStateEXT, (GLuint arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glBindLightParameterEXT_func:
+    {
+      GET_EXT_PTR(GLuint, glBindLightParameterEXT, (GLenum arg_0, GLenum arg_1));
+      *pret_int = ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glBindMaterialParameterEXT_func:
+    {
+      GET_EXT_PTR(GLuint, glBindMaterialParameterEXT, (GLenum arg_0, GLenum arg_1));
+      *pret_int = ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glBindTexGenParameterEXT_func:
+    {
+      GET_EXT_PTR(GLuint, glBindTexGenParameterEXT, (GLenum arg_0, GLenum arg_1, GLenum arg_2));
+      *pret_int = ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]));
+      break;
+    }
+    case glBindTextureUnitParameterEXT_func:
+    {
+      GET_EXT_PTR(GLuint, glBindTextureUnitParameterEXT, (GLenum arg_0, GLenum arg_1));
+      *pret_int = ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glBindParameterEXT_func:
+    {
+      GET_EXT_PTR(GLuint, glBindParameterEXT, (GLenum arg_0));
+      *pret_int = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glIsVariantEnabledEXT_func:
+    {
+      GET_EXT_PTR(GLboolean, glIsVariantEnabledEXT, (GLuint arg_0, GLenum arg_1));
+      *pret_char = ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glVertexStream1sATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream1sATI, (GLenum arg_0, GLshort arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]));
+      break;
+    }
+    case glVertexStream1svATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream1svATI, (GLenum arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glVertexStream1iATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream1iATI, (GLenum arg_0, GLint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glVertexStream1ivATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream1ivATI, (GLenum arg_0, const GLint * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (int*)args[1]);
+      break;
+    }
+    case glVertexStream1fATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream1fATI, (GLenum arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glVertexStream1fvATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream1fvATI, (GLenum arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glVertexStream1dATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream1dATI, (GLenum arg_0, GLdouble arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]));
+      break;
+    }
+    case glVertexStream1dvATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream1dvATI, (GLenum arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glVertexStream2sATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream2sATI, (GLenum arg_0, GLshort arg_1, GLshort arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]));
+      break;
+    }
+    case glVertexStream2svATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream2svATI, (GLenum arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glVertexStream2iATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream2iATI, (GLenum arg_0, GLint arg_1, GLint arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]));
+      break;
+    }
+    case glVertexStream2ivATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream2ivATI, (GLenum arg_0, const GLint * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (int*)args[1]);
+      break;
+    }
+    case glVertexStream2fATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream2fATI, (GLenum arg_0, GLfloat arg_1, GLfloat arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]));
+      break;
+    }
+    case glVertexStream2fvATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream2fvATI, (GLenum arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glVertexStream2dATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream2dATI, (GLenum arg_0, GLdouble arg_1, GLdouble arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]));
+      break;
+    }
+    case glVertexStream2dvATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream2dvATI, (GLenum arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glVertexStream3sATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream3sATI, (GLenum arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]));
+      break;
+    }
+    case glVertexStream3svATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream3svATI, (GLenum arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glVertexStream3iATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream3iATI, (GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]));
+      break;
+    }
+    case glVertexStream3ivATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream3ivATI, (GLenum arg_0, const GLint * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (int*)args[1]);
+      break;
+    }
+    case glVertexStream3fATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream3fATI, (GLenum arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glVertexStream3fvATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream3fvATI, (GLenum arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glVertexStream3dATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream3dATI, (GLenum arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]));
+      break;
+    }
+    case glVertexStream3dvATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream3dvATI, (GLenum arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glVertexStream4sATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream4sATI, (GLenum arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3, GLshort arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]), ARG_TO_SHORT(args[4]));
+      break;
+    }
+    case glVertexStream4svATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream4svATI, (GLenum arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glVertexStream4iATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream4iATI, (GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3, GLint arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]), ARG_TO_INT(args[4]));
+      break;
+    }
+    case glVertexStream4ivATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream4ivATI, (GLenum arg_0, const GLint * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (int*)args[1]);
+      break;
+    }
+    case glVertexStream4fATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream4fATI, (GLenum arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3, GLfloat arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]), ARG_TO_FLOAT(args[4]));
+      break;
+    }
+    case glVertexStream4fvATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream4fvATI, (GLenum arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glVertexStream4dATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream4dATI, (GLenum arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3, GLdouble arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]), ARG_TO_DOUBLE(args[4]));
+      break;
+    }
+    case glVertexStream4dvATI_func:
+    {
+      GET_EXT_PTR(void, glVertexStream4dvATI, (GLenum arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glNormalStream3bATI_func:
+    {
+      GET_EXT_PTR(void, glNormalStream3bATI, (GLenum arg_0, GLbyte arg_1, GLbyte arg_2, GLbyte arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_CHAR(args[1]), ARG_TO_CHAR(args[2]), ARG_TO_CHAR(args[3]));
+      break;
+    }
+    case glNormalStream3bvATI_func:
+    {
+      GET_EXT_PTR(void, glNormalStream3bvATI, (GLenum arg_0, const GLbyte * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (char*)args[1]);
+      break;
+    }
+    case glNormalStream3sATI_func:
+    {
+      GET_EXT_PTR(void, glNormalStream3sATI, (GLenum arg_0, GLshort arg_1, GLshort arg_2, GLshort arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_SHORT(args[1]), ARG_TO_SHORT(args[2]), ARG_TO_SHORT(args[3]));
+      break;
+    }
+    case glNormalStream3svATI_func:
+    {
+      GET_EXT_PTR(void, glNormalStream3svATI, (GLenum arg_0, const GLshort * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (short*)args[1]);
+      break;
+    }
+    case glNormalStream3iATI_func:
+    {
+      GET_EXT_PTR(void, glNormalStream3iATI, (GLenum arg_0, GLint arg_1, GLint arg_2, GLint arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]));
+      break;
+    }
+    case glNormalStream3ivATI_func:
+    {
+      GET_EXT_PTR(void, glNormalStream3ivATI, (GLenum arg_0, const GLint * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (int*)args[1]);
+      break;
+    }
+    case glNormalStream3fATI_func:
+    {
+      GET_EXT_PTR(void, glNormalStream3fATI, (GLenum arg_0, GLfloat arg_1, GLfloat arg_2, GLfloat arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]), ARG_TO_FLOAT(args[2]), ARG_TO_FLOAT(args[3]));
+      break;
+    }
+    case glNormalStream3fvATI_func:
+    {
+      GET_EXT_PTR(void, glNormalStream3fvATI, (GLenum arg_0, const GLfloat * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (float*)args[1]);
+      break;
+    }
+    case glNormalStream3dATI_func:
+    {
+      GET_EXT_PTR(void, glNormalStream3dATI, (GLenum arg_0, GLdouble arg_1, GLdouble arg_2, GLdouble arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_DOUBLE(args[1]), ARG_TO_DOUBLE(args[2]), ARG_TO_DOUBLE(args[3]));
+      break;
+    }
+    case glNormalStream3dvATI_func:
+    {
+      GET_EXT_PTR(void, glNormalStream3dvATI, (GLenum arg_0, const GLdouble * arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), (double*)args[1]);
+      break;
+    }
+    case glClientActiveVertexStreamATI_func:
+    {
+      GET_EXT_PTR(void, glClientActiveVertexStreamATI, (GLenum arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glVertexBlendEnviATI_func:
+    {
+      GET_EXT_PTR(void, glVertexBlendEnviATI, (GLenum arg_0, GLint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glVertexBlendEnvfATI_func:
+    {
+      GET_EXT_PTR(void, glVertexBlendEnvfATI, (GLenum arg_0, GLfloat arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_FLOAT(args[1]));
+      break;
+    }
+    case glDrawElementArrayATI_func:
+    {
+      GET_EXT_PTR(void, glDrawElementArrayATI, (GLenum arg_0, GLsizei arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glDrawRangeElementArrayATI_func:
+    {
+      GET_EXT_PTR(void, glDrawRangeElementArrayATI, (GLenum arg_0, GLuint arg_1, GLuint arg_2, GLsizei arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_INT(args[3]));
+      break;
+    }
+    case glIsOcclusionQueryNV_func:
+    {
+      GET_EXT_PTR(GLboolean, glIsOcclusionQueryNV, (GLuint arg_0));
+      *pret_char = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glBeginOcclusionQueryNV_func:
+    {
+      GET_EXT_PTR(void, glBeginOcclusionQueryNV, (GLuint arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glEndOcclusionQueryNV_func:
+    {
+      GET_EXT_PTR(void, glEndOcclusionQueryNV, ());
+      ptr_func();
+      break;
+    }
+    case glPointParameteriNV_func:
+    {
+      GET_EXT_PTR(void, glPointParameteriNV, (GLenum arg_0, GLint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]));
+      break;
+    }
+    case glActiveStencilFaceEXT_func:
+    {
+      GET_EXT_PTR(void, glActiveStencilFaceEXT, (GLenum arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glVertex2hNV_func:
+    {
+      GET_EXT_PTR(void, glVertex2hNV, (GLhalfNV arg_0, GLhalfNV arg_1));
+      ptr_func(ARG_TO_UNSIGNED_SHORT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]));
+      break;
+    }
+    case glVertex3hNV_func:
+    {
+      GET_EXT_PTR(void, glVertex3hNV, (GLhalfNV arg_0, GLhalfNV arg_1, GLhalfNV arg_2));
+      ptr_func(ARG_TO_UNSIGNED_SHORT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]));
+      break;
+    }
+    case glVertex4hNV_func:
+    {
+      GET_EXT_PTR(void, glVertex4hNV, (GLhalfNV arg_0, GLhalfNV arg_1, GLhalfNV arg_2, GLhalfNV arg_3));
+      ptr_func(ARG_TO_UNSIGNED_SHORT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]), ARG_TO_UNSIGNED_SHORT(args[3]));
+      break;
+    }
+    case glNormal3hNV_func:
+    {
+      GET_EXT_PTR(void, glNormal3hNV, (GLhalfNV arg_0, GLhalfNV arg_1, GLhalfNV arg_2));
+      ptr_func(ARG_TO_UNSIGNED_SHORT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]));
+      break;
+    }
+    case glColor3hNV_func:
+    {
+      GET_EXT_PTR(void, glColor3hNV, (GLhalfNV arg_0, GLhalfNV arg_1, GLhalfNV arg_2));
+      ptr_func(ARG_TO_UNSIGNED_SHORT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]));
+      break;
+    }
+    case glColor4hNV_func:
+    {
+      GET_EXT_PTR(void, glColor4hNV, (GLhalfNV arg_0, GLhalfNV arg_1, GLhalfNV arg_2, GLhalfNV arg_3));
+      ptr_func(ARG_TO_UNSIGNED_SHORT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]), ARG_TO_UNSIGNED_SHORT(args[3]));
+      break;
+    }
+    case glTexCoord1hNV_func:
+    {
+      GET_EXT_PTR(void, glTexCoord1hNV, (GLhalfNV arg_0));
+      ptr_func(ARG_TO_UNSIGNED_SHORT(args[0]));
+      break;
+    }
+    case glTexCoord2hNV_func:
+    {
+      GET_EXT_PTR(void, glTexCoord2hNV, (GLhalfNV arg_0, GLhalfNV arg_1));
+      ptr_func(ARG_TO_UNSIGNED_SHORT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]));
+      break;
+    }
+    case glTexCoord3hNV_func:
+    {
+      GET_EXT_PTR(void, glTexCoord3hNV, (GLhalfNV arg_0, GLhalfNV arg_1, GLhalfNV arg_2));
+      ptr_func(ARG_TO_UNSIGNED_SHORT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]));
+      break;
+    }
+    case glTexCoord4hNV_func:
+    {
+      GET_EXT_PTR(void, glTexCoord4hNV, (GLhalfNV arg_0, GLhalfNV arg_1, GLhalfNV arg_2, GLhalfNV arg_3));
+      ptr_func(ARG_TO_UNSIGNED_SHORT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]), ARG_TO_UNSIGNED_SHORT(args[3]));
+      break;
+    }
+    case glMultiTexCoord1hNV_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord1hNV, (GLenum arg_0, GLhalfNV arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]));
+      break;
+    }
+    case glMultiTexCoord2hNV_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord2hNV, (GLenum arg_0, GLhalfNV arg_1, GLhalfNV arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]));
+      break;
+    }
+    case glMultiTexCoord3hNV_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord3hNV, (GLenum arg_0, GLhalfNV arg_1, GLhalfNV arg_2, GLhalfNV arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]), ARG_TO_UNSIGNED_SHORT(args[3]));
+      break;
+    }
+    case glMultiTexCoord4hNV_func:
+    {
+      GET_EXT_PTR(void, glMultiTexCoord4hNV, (GLenum arg_0, GLhalfNV arg_1, GLhalfNV arg_2, GLhalfNV arg_3, GLhalfNV arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]), ARG_TO_UNSIGNED_SHORT(args[3]), ARG_TO_UNSIGNED_SHORT(args[4]));
+      break;
+    }
+    case glFogCoordhNV_func:
+    {
+      GET_EXT_PTR(void, glFogCoordhNV, (GLhalfNV arg_0));
+      ptr_func(ARG_TO_UNSIGNED_SHORT(args[0]));
+      break;
+    }
+    case glSecondaryColor3hNV_func:
+    {
+      GET_EXT_PTR(void, glSecondaryColor3hNV, (GLhalfNV arg_0, GLhalfNV arg_1, GLhalfNV arg_2));
+      ptr_func(ARG_TO_UNSIGNED_SHORT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]));
+      break;
+    }
+    case glVertexWeighthNV_func:
+    {
+      GET_EXT_PTR(void, glVertexWeighthNV, (GLhalfNV arg_0));
+      ptr_func(ARG_TO_UNSIGNED_SHORT(args[0]));
+      break;
+    }
+    case glVertexAttrib1hNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib1hNV, (GLuint arg_0, GLhalfNV arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]));
+      break;
+    }
+    case glVertexAttrib2hNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib2hNV, (GLuint arg_0, GLhalfNV arg_1, GLhalfNV arg_2));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]));
+      break;
+    }
+    case glVertexAttrib3hNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib3hNV, (GLuint arg_0, GLhalfNV arg_1, GLhalfNV arg_2, GLhalfNV arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]), ARG_TO_UNSIGNED_SHORT(args[3]));
+      break;
+    }
+    case glVertexAttrib4hNV_func:
+    {
+      GET_EXT_PTR(void, glVertexAttrib4hNV, (GLuint arg_0, GLhalfNV arg_1, GLhalfNV arg_2, GLhalfNV arg_3, GLhalfNV arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_SHORT(args[1]), ARG_TO_UNSIGNED_SHORT(args[2]), ARG_TO_UNSIGNED_SHORT(args[3]), ARG_TO_UNSIGNED_SHORT(args[4]));
+      break;
+    }
+    case glFlushPixelDataRangeNV_func:
+    {
+      GET_EXT_PTR(void, glFlushPixelDataRangeNV, (GLenum arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glPrimitiveRestartNV_func:
+    {
+      GET_EXT_PTR(void, glPrimitiveRestartNV, ());
+      ptr_func();
+      break;
+    }
+    case glPrimitiveRestartIndexNV_func:
+    {
+      GET_EXT_PTR(void, glPrimitiveRestartIndexNV, (GLuint arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glUnmapObjectBufferATI_func:
+    {
+      GET_EXT_PTR(void, glUnmapObjectBufferATI, (GLuint arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glStencilOpSeparateATI_func:
+    {
+      GET_EXT_PTR(void, glStencilOpSeparateATI, (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLenum arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]));
+      break;
+    }
+    case glStencilFuncSeparateATI_func:
+    {
+      GET_EXT_PTR(void, glStencilFuncSeparateATI, (GLenum arg_0, GLenum arg_1, GLint arg_2, GLuint arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]));
+      break;
+    }
+    case glVertexAttribArrayObjectATI_func:
+    {
+      GET_EXT_PTR(void, glVertexAttribArrayObjectATI, (GLuint arg_0, GLint arg_1, GLenum arg_2, GLboolean arg_3, GLsizei arg_4, GLuint arg_5, GLuint arg_6));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_CHAR(args[3]), ARG_TO_INT(args[4]), ARG_TO_UNSIGNED_INT(args[5]), ARG_TO_UNSIGNED_INT(args[6]));
+      break;
+    }
+    case glDepthBoundsEXT_func:
+    {
+      GET_EXT_PTR(void, glDepthBoundsEXT, (GLclampd arg_0, GLclampd arg_1));
+      ptr_func(ARG_TO_DOUBLE(args[0]), ARG_TO_DOUBLE(args[1]));
+      break;
+    }
+    case glBlendEquationSeparateEXT_func:
+    {
+      GET_EXT_PTR(void, glBlendEquationSeparateEXT, (GLenum arg_0, GLenum arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glIsRenderbufferEXT_func:
+    {
+      GET_EXT_PTR(GLboolean, glIsRenderbufferEXT, (GLuint arg_0));
+      *pret_char = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glBindRenderbufferEXT_func:
+    {
+      GET_EXT_PTR(void, glBindRenderbufferEXT, (GLenum arg_0, GLuint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glRenderbufferStorageEXT_func:
+    {
+      GET_EXT_PTR(void, glRenderbufferStorageEXT, (GLenum arg_0, GLenum arg_1, GLsizei arg_2, GLsizei arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_INT(args[2]), ARG_TO_INT(args[3]));
+      break;
+    }
+    case glIsFramebufferEXT_func:
+    {
+      GET_EXT_PTR(GLboolean, glIsFramebufferEXT, (GLuint arg_0));
+      *pret_char = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glBindFramebufferEXT_func:
+    {
+      GET_EXT_PTR(void, glBindFramebufferEXT, (GLenum arg_0, GLuint arg_1));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]));
+      break;
+    }
+    case glCheckFramebufferStatusEXT_func:
+    {
+      GET_EXT_PTR(GLenum, glCheckFramebufferStatusEXT, (GLenum arg_0));
+      *pret_int = ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    case glFramebufferTexture1DEXT_func:
+    {
+      GET_EXT_PTR(void, glFramebufferTexture1DEXT, (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLuint arg_3, GLint arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]), ARG_TO_INT(args[4]));
+      break;
+    }
+    case glFramebufferTexture2DEXT_func:
+    {
+      GET_EXT_PTR(void, glFramebufferTexture2DEXT, (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLuint arg_3, GLint arg_4));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]), ARG_TO_INT(args[4]));
+      break;
+    }
+    case glFramebufferTexture3DEXT_func:
+    {
+      GET_EXT_PTR(void, glFramebufferTexture3DEXT, (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLuint arg_3, GLint arg_4, GLint arg_5));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]), ARG_TO_INT(args[4]), ARG_TO_INT(args[5]));
+      break;
+    }
+    case glFramebufferRenderbufferEXT_func:
+    {
+      GET_EXT_PTR(void, glFramebufferRenderbufferEXT, (GLenum arg_0, GLenum arg_1, GLenum arg_2, GLuint arg_3));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]), ARG_TO_UNSIGNED_INT(args[1]), ARG_TO_UNSIGNED_INT(args[2]), ARG_TO_UNSIGNED_INT(args[3]));
+      break;
+    }
+    case glGenerateMipmapEXT_func:
+    {
+      GET_EXT_PTR(void, glGenerateMipmapEXT, (GLenum arg_0));
+      ptr_func(ARG_TO_UNSIGNED_INT(args[0]));
+      break;
+    }
+    default:
+      fprintf(stderr, "unknown=%d", func_number);
+      break;
+  }
+}
diff -Nrup --exclude=CVS --exclude='*~' --exclude='config-host*' --exclude=Makefile --exclude=config.mak --exclude=config.h qemu.ori/target-i386/translate.c qemu/target-i386/translate.c
--- qemu.ori/target-i386/translate.c	2006-11-14 00:18:10.000000000 +0100
+++ qemu/target-i386/translate.c	2006-11-14 21:46:24.000000000 +0100
@@ -2244,16 +2244,25 @@ static void gen_exception(DisasContext *
     s->is_jmp = 3;
 }
 
+extern int enable_gl;
+
 /* an interrupt is different from an exception because of the
    priviledge checks */
 static void gen_interrupt(DisasContext *s, int intno, 
                           target_ulong cur_eip, target_ulong next_eip)
 {
+  if (enable_gl && intno == 0x99)
+  {
+    gen_op_int99();
+  }
+  else
+  {
     if (s->cc_op != CC_OP_DYNAMIC)
         gen_op_set_cc_op(s->cc_op);
     gen_jmp_im(cur_eip);
     gen_op_raise_interrupt(intno, (int)(next_eip - cur_eip));
     s->is_jmp = 3;
+  }
 }
 
 static void gen_debug(DisasContext *s, target_ulong cur_eip)
diff -Nrup --exclude=CVS --exclude='*~' --exclude='config-host*' --exclude=Makefile --exclude=config.mak --exclude=config.h qemu.ori/vl.c qemu/vl.c
--- qemu.ori/vl.c	2006-11-14 00:18:09.000000000 +0100
+++ qemu/vl.c	2006-11-14 21:46:24.000000000 +0100
@@ -162,6 +162,7 @@ int vnc_display = -1;
 int acpi_enabled = 1;
 int fd_bootchk = 1;
 int no_reboot = 0;
+int enable_gl = 0;
 
 /***********************************************************/
 /* x86 ISA bus support */
@@ -842,6 +843,8 @@ static int timer_load(QEMUFile *f, void 
     return 0;
 }
 
+extern int doing_opengl;
+
 #ifdef _WIN32
 void CALLBACK host_alarm_handler(UINT uTimerID, UINT uMsg, 
                                  DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2)
@@ -886,8 +889,9 @@ static void host_alarm_handler(int host_
         SetEvent(host_alarm);
 #endif
         CPUState *env = cpu_single_env;
-        if (env) {
-            /* stop the currently executing cpu because a timer occured */
+        if (env && !doing_opengl) {
+          //printf("alarm handler\n");
+          /* stop the currently executing cpu because a timer occured */
             cpu_interrupt(env, CPU_INTERRUPT_EXIT);
 #ifdef USE_KQEMU
             if (env->kqemu_enabled) {
@@ -5792,7 +5796,7 @@ int main_loop(void)
                 }
             }
             cur_cpu = env;
-
+            
             if (shutdown_requested) {
                 ret = EXCP_INTERRUPT;
                 break;
@@ -5934,6 +5938,7 @@ void help(void)
            "-std-vga        simulate a standard VGA card with VESA Bochs Extensions\n"
            "                (default is CL-GD5446 PCI VGA)\n"
            "-no-acpi        disable ACPI\n"
+           "-enable-gl      (Experimental !) Enable accelerated OpenGL\n"
 #endif
            "-no-reboot      exit instead of rebooting\n"
            "-loadvm file    start right away with a saved state (loadvm in monitor)\n"
@@ -6017,6 +6022,10 @@ enum {
     QEMU_OPTION_vnc,
     QEMU_OPTION_no_acpi,
     QEMU_OPTION_no_reboot,
+    
+#ifdef TARGET_I386
+    QEMU_OPTION_enable_gl,
+#endif
 };
 
 typedef struct QEMUOption {
@@ -6094,6 +6103,10 @@ const QEMUOption qemu_options[] = {
     { "cirrusvga", 0, QEMU_OPTION_cirrusvga },
     { "no-acpi", 0, QEMU_OPTION_no_acpi },
     { "no-reboot", 0, QEMU_OPTION_no_reboot },
+    
+#ifdef TARGET_I386
+    { "enable-gl", 0, QEMU_OPTION_enable_gl },
+#endif
     { NULL },
 };
 
@@ -6741,6 +6754,11 @@ int main(int argc, char **argv)
             case QEMU_OPTION_no_reboot:
                 no_reboot = 1;
                 break;
+#ifdef TARGET_I386
+              case QEMU_OPTION_enable_gl:
+                enable_gl = 1;
+                break;
+#endif
             }
         }
     }

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-11-14 21:47 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-11-14 21:47 [Qemu-devel] [PATCH] (Experimental) Initial patch providing accelerated OpenGL for Linux i386 Even Rouault

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).