Added support for OpenGL.

diff --git a/Make.rules.in b/Make.rules.in
index e296a44..c70ea51 100644
--- a/Make.rules.in
+++ b/Make.rules.in
@@ -86,6 +86,7 @@
 
 X_DLLS = \
 	ddraw \
+	opengl32 \
 	x11drv
 
 DLLS = \
diff --git a/configure b/configure
index 4e27b0a..cbc2d62 100755
--- a/configure
+++ b/configure
@@ -2916,6 +2916,8 @@
 
 XFILES=""
 
+OPENGLFILES=""
+
 DGA_SRCS=""
 
 DGA2_SRCS=""
@@ -2931,17 +2933,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2935: checking for $ac_hdr" >&5
+echo "configure:2937: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2940 "configure"
+#line 2942 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2947: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2970,7 +2972,7 @@
     if test "$ac_cv_header_X11_xpm_h" = "yes"
     then 
         echo $ac_n "checking for XpmCreatePixmapFromData in -lXpm""... $ac_c" 1>&6
-echo "configure:2974: checking for XpmCreatePixmapFromData in -lXpm" >&5
+echo "configure:2976: checking for XpmCreatePixmapFromData in -lXpm" >&5
 ac_lib_var=`echo Xpm'_'XpmCreatePixmapFromData | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2978,7 +2980,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXpm $X_LIBS -lXext -lX11 $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2982 "configure"
+#line 2984 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2989,7 +2991,7 @@
 XpmCreatePixmapFromData()
 ; return 0; }
 EOF
-if { (eval echo configure:2993: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3032,17 +3034,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3036: checking for $ac_hdr" >&5
+echo "configure:3038: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3041 "configure"
+#line 3043 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3046: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3048: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3071,7 +3073,7 @@
     if test "$ac_cv_header_X11_Xlib_h" = "yes" -a "$ac_cv_header_X11_extensions_XShm_h" = "yes"
     then 
         echo $ac_n "checking for XShmQueryExtension in -lXext""... $ac_c" 1>&6
-echo "configure:3075: checking for XShmQueryExtension in -lXext" >&5
+echo "configure:3077: checking for XShmQueryExtension in -lXext" >&5
 ac_lib_var=`echo Xext'_'XShmQueryExtension | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3079,7 +3081,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXext $X_LIBS -lXext -lX11 $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3083 "configure"
+#line 3085 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3090,7 +3092,7 @@
 XShmQueryExtension()
 ; return 0; }
 EOF
-if { (eval echo configure:3094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3118,17 +3120,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3122: checking for $ac_hdr" >&5
+echo "configure:3124: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3127 "configure"
+#line 3129 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3132: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3134: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3157,7 +3159,7 @@
     if test "$ac_cv_header_X11_Xlib_h" = "yes" -a "$ac_cv_header_X11_extensions_xf86dga_h" = "yes"
     then 
          echo $ac_n "checking for XDGAQueryExtension in -lXxf86dga""... $ac_c" 1>&6
-echo "configure:3161: checking for XDGAQueryExtension in -lXxf86dga" >&5
+echo "configure:3163: checking for XDGAQueryExtension in -lXxf86dga" >&5
 ac_lib_var=`echo Xxf86dga'_'XDGAQueryExtension | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3166,7 +3168,7 @@
 LIBS="-lXxf86dga $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
 	  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3170 "configure"
+#line 3172 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3177,7 +3179,7 @@
 XDGAQueryExtension()
 ; return 0; }
 EOF
-if { (eval echo configure:3181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3211,7 +3213,7 @@
 	 if test "$ac_cv_lib_Xxf86dga_XDGAQueryExtension" = "no"
 	 then
            echo $ac_n "checking for XF86DGAQueryExtension in -lXxf86dga""... $ac_c" 1>&6
-echo "configure:3215: checking for XF86DGAQueryExtension in -lXxf86dga" >&5
+echo "configure:3217: checking for XF86DGAQueryExtension in -lXxf86dga" >&5
 ac_lib_var=`echo Xxf86dga'_'XF86DGAQueryExtension | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3219,7 +3221,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXxf86dga $X_LIBS -lXext -lX11 $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3223 "configure"
+#line 3225 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3230,7 +3232,7 @@
 XF86DGAQueryExtension()
 ; return 0; }
 EOF
-if { (eval echo configure:3234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3263,17 +3265,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3267: checking for $ac_hdr" >&5
+echo "configure:3269: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3272 "configure"
+#line 3274 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3277: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3279: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3302,7 +3304,7 @@
     if test "$ac_cv_header_X11_Xlib_h" = "yes" -a "$ac_cv_header_X11_extensions_xf86vmode_h" = "yes"
     then 
         echo $ac_n "checking for XF86VidModeQueryExtension in -lXxf86vm""... $ac_c" 1>&6
-echo "configure:3306: checking for XF86VidModeQueryExtension in -lXxf86vm" >&5
+echo "configure:3308: checking for XF86VidModeQueryExtension in -lXxf86vm" >&5
 ac_lib_var=`echo Xxf86vm'_'XF86VidModeQueryExtension | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3310,7 +3312,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXxf86vm $X_LIBS -lXext -lX11 $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3314 "configure"
+#line 3316 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3321,7 +3323,7 @@
 XF86VidModeQueryExtension()
 ; return 0; }
 EOF
-if { (eval echo configure:3325: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3348,21 +3350,21 @@
 
         if test $OPENGL = "yes" -o $OPENGL = "normal"
     then
-	for ac_hdr in GL/gl.h GL/glx.h
+	for ac_hdr in GL/gl.h GL/glx.h GL/glext.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3356: checking for $ac_hdr" >&5
+echo "configure:3358: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3361 "configure"
+#line 3363 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3366: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3368: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3388,72 +3390,72 @@
 fi
 done
 
-	if test "$ac_cv_header_GL_gl_h" = "yes" -a "$ac_cv_header_GL_glx_h" = "yes"
+	if test "$ac_cv_header_GL_gl_h" = "yes" -a "$ac_cv_header_GL_glx_h" = "yes" -a "$ac_cv_header_GL_glext_h" = "yes"
 	then
 	    	    echo $ac_n "checking "for up-to-date OpenGL version"""... $ac_c" 1>&6
-echo "configure:3395: checking "for up-to-date OpenGL version"" >&5
-if eval "test \"`echo '$''{'wine_cv_mesa_version_OK'+set}'`\" = set"; then
+echo "configure:3397: checking "for up-to-date OpenGL version"" >&5
+if eval "test \"`echo '$''{'wine_cv_opengl_version_OK'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3400 "configure"
+#line 3402 "configure"
 #include "confdefs.h"
 #include <GL/gl.h>
 int main() {
 GLenum test = GL_UNSIGNED_SHORT_5_6_5;
 ; return 0; }
 EOF
-if { (eval echo configure:3407: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3409: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
-  wine_cv_mesa_version_OK="yes"
+  wine_cv_opengl_version_OK="yes"
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  wine_cv_mesa_version_OK="no"
+  wine_cv_opengl_version_OK="no"
 	      
 fi
 rm -f conftest*
             
 fi
 
-echo "$ac_t""$wine_cv_mesa_version_OK" 1>&6
+echo "$ac_t""$wine_cv_opengl_version_OK" 1>&6
 
 	    	    echo $ac_n "checking "for thread-safe OpenGL version"""... $ac_c" 1>&6
-echo "configure:3424: checking "for thread-safe OpenGL version"" >&5
-if eval "test \"`echo '$''{'wine_cv_mesa_version_threadsafe'+set}'`\" = set"; then
+echo "configure:3426: checking "for thread-safe OpenGL version"" >&5
+if eval "test \"`echo '$''{'wine_cv_opengl_version_threadsafe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   saved_libs=$LIBS
 	       LIBS="$X_LIBS -lGL"
 	       cat > conftest.$ac_ext <<EOF
-#line 3431 "configure"
+#line 3433 "configure"
 #include "confdefs.h"
 
 int main() {
 pthread_getspecific();
 ; return 0; }
 EOF
-if { (eval echo configure:3438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3440: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
-  wine_cv_mesa_version_threadsafe="yes"
+  wine_cv_opengl_version_threadsafe="yes"
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
   rm -rf conftest*
-  wine_cv_mesa_version_threadsafe="no"
+  wine_cv_opengl_version_threadsafe="no"
 fi
 rm -f conftest*
 	       LIBS=$saved_libs
 	    
 fi
 
-echo "$ac_t""$wine_cv_mesa_version_threadsafe" 1>&6
+echo "$ac_t""$wine_cv_opengl_version_threadsafe" 1>&6
 
-	    if test "$wine_cv_mesa_version_OK" = "yes" -a \( "$wine_cv_mesa_version_threadsafe" = "no" -o $OPENGL = "yes" \)
+	    if test "$wine_cv_opengl_version_OK" = "yes" -a \( "$wine_cv_opengl_version_threadsafe" = "no" -o $OPENGL = "yes" \)
             then
 				echo $ac_n "checking for glXCreateContext in -lGL""... $ac_c" 1>&6
-echo "configure:3457: checking for glXCreateContext in -lGL" >&5
+echo "configure:3459: checking for glXCreateContext in -lGL" >&5
 ac_lib_var=`echo GL'_'glXCreateContext | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3461,7 +3463,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lGL $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3465 "configure"
+#line 3467 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3472,7 +3474,7 @@
 glXCreateContext()
 ; return 0; }
 EOF
-if { (eval echo configure:3476: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3487,11 +3489,7 @@
 fi
 if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_LIBMESAGL 1
-EOF
-
-			     X_PRE_LIBS="$X_PRE_LIBS -lGL"
+  X_PRE_LIBS="$X_PRE_LIBS -lGL"
 			     MESA_SRCS='$(MESA_SRCS)'
 			     
 else
@@ -3499,70 +3497,22 @@
 fi
 
 
-		if test "$ac_cv_lib_GL_glXCreateContext" = "no"
+		if test $ac_cv_lib_GL_glXCreateContext = "yes"
 		then
-			echo $ac_n "checking for glXCreateContext in -lMesaGL""... $ac_c" 1>&6
-echo "configure:3506: checking for glXCreateContext in -lMesaGL" >&5
-ac_lib_var=`echo MesaGL'_'glXCreateContext | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lMesaGL $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3514 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char glXCreateContext();
-
-int main() {
-glXCreateContext()
-; return 0; }
-EOF
-if { (eval echo configure:3525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_LIBMESAGL 1
-EOF
-
-				     X_PRE_LIBS="$X_PRE_LIBS -lMesaGL"
-				     MESA_SRCS='$(MESA_SRCS)'
-				     
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-	        fi
-
-				echo $ac_n "checking "for the OpenGL Color Index extension"""... $ac_c" 1>&6
-echo "configure:3554: checking "for the OpenGL Color Index extension"" >&5
+						echo $ac_n "checking "for the OpenGL Color Index extension"""... $ac_c" 1>&6
+echo "configure:3504: checking "for the OpenGL Color Index extension"" >&5
 if eval "test \"`echo '$''{'dummy'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3559 "configure"
+#line 3509 "configure"
 #include "confdefs.h"
 #include <GL/gl.h>
 int main() {
 GLenum test = GL_COLOR_INDEX8_EXT;
 ; return 0; }
 EOF
-if { (eval echo configure:3566: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3516: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cat >> confdefs.h <<\EOF
 #define HAVE_GL_COLOR_TABLE 1
@@ -3577,54 +3527,8 @@
 
 echo "$ac_t""$dummy" 1>&6
 
-    	        if test "$ac_cv_lib_GL_glXCreateContext" = "no"
-		then
-			echo $ac_n "checking for glColorTableEXT in -lMesaGL""... $ac_c" 1>&6
-echo "configure:3584: checking for glColorTableEXT in -lMesaGL" >&5
-ac_lib_var=`echo MesaGL'_'glColorTableEXT | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lMesaGL $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3592 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char glColorTableEXT();
-
-int main() {
-glColorTableEXT()
-; return 0; }
-EOF
-if { (eval echo configure:3603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_GL_PALETTED_TEXTURE 1
-EOF
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-		else
-			echo $ac_n "checking for glColorTableEXT in -lGL""... $ac_c" 1>&6
-echo "configure:3628: checking for glColorTableEXT in -lGL" >&5
+		        echo $ac_n "checking for glColorTableEXT in -lGL""... $ac_c" 1>&6
+echo "configure:3532: checking for glColorTableEXT in -lGL" >&5
 ac_lib_var=`echo GL'_'glColorTableEXT | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3632,7 +3536,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lGL $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3636 "configure"
+#line 3540 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3643,7 +3547,7 @@
 glColorTableEXT()
 ; return 0; }
 EOF
-if { (eval echo configure:3647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3666,6 +3570,58 @@
   echo "$ac_t""no" 1>&6
 fi
 
+			echo $ac_n "checking for glXGetProcAddressARB in -lGL""... $ac_c" 1>&6
+echo "configure:3575: checking for glXGetProcAddressARB in -lGL" >&5
+ac_lib_var=`echo GL'_'glXGetProcAddressARB | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lGL $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 3583 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char glXGetProcAddressARB();
+
+int main() {
+glXGetProcAddressARB()
+; return 0; }
+EOF
+if { (eval echo configure:3594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  cat >> confdefs.h <<\EOF
+#define HAVE_GLX_GETPROCADDRESS 1
+EOF
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+			if test $ac_cv_lib_GL_glXGetProcAddressARB = "yes"
+			then
+				cat >> confdefs.h <<\EOF
+#define HAVE_OPENGL 1
+EOF
+
+				OPENGLFILES='$(OPENGLFILES)'
+			fi
 		fi
 	     fi
 	 fi
@@ -3686,17 +3642,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3690: checking for $ac_hdr" >&5
+echo "configure:3646: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3695 "configure"
+#line 3651 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3700: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3656: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3725,7 +3681,7 @@
     if test "$ac_cv_header_ncurses_h" = "yes"
     then 
         echo $ac_n "checking for waddch in -lncurses""... $ac_c" 1>&6
-echo "configure:3729: checking for waddch in -lncurses" >&5
+echo "configure:3685: checking for waddch in -lncurses" >&5
 ac_lib_var=`echo ncurses'_'waddch | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3733,7 +3689,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lncurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3737 "configure"
+#line 3693 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3744,7 +3700,7 @@
 waddch()
 ; return 0; }
 EOF
-if { (eval echo configure:3748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3704: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3775,7 +3731,7 @@
     if test "$ac_cv_lib_ncurses_waddch" = "yes"
     then
         echo $ac_n "checking for resizeterm in -lncurses""... $ac_c" 1>&6
-echo "configure:3779: checking for resizeterm in -lncurses" >&5
+echo "configure:3735: checking for resizeterm in -lncurses" >&5
 ac_lib_var=`echo ncurses'_'resizeterm | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3783,7 +3739,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lncurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3787 "configure"
+#line 3743 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3794,7 +3750,7 @@
 resizeterm()
 ; return 0; }
 EOF
-if { (eval echo configure:3798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3754: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3818,7 +3774,7 @@
 fi
 
         echo $ac_n "checking for getbkgd in -lncurses""... $ac_c" 1>&6
-echo "configure:3822: checking for getbkgd in -lncurses" >&5
+echo "configure:3778: checking for getbkgd in -lncurses" >&5
 ac_lib_var=`echo ncurses'_'getbkgd | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3826,7 +3782,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lncurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3830 "configure"
+#line 3786 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3837,7 +3793,7 @@
 getbkgd()
 ; return 0; }
 EOF
-if { (eval echo configure:3841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3865,17 +3821,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3869: checking for $ac_hdr" >&5
+echo "configure:3825: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3874 "configure"
+#line 3830 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3879: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3835: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3904,7 +3860,7 @@
         if test "$ac_cv_header_curses_h" = "yes"
         then    
             echo $ac_n "checking for waddch in -lcurses""... $ac_c" 1>&6
-echo "configure:3908: checking for waddch in -lcurses" >&5
+echo "configure:3864: checking for waddch in -lcurses" >&5
 ac_lib_var=`echo curses'_'waddch | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3912,7 +3868,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lcurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3916 "configure"
+#line 3872 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3923,7 +3879,7 @@
 waddch()
 ; return 0; }
 EOF
-if { (eval echo configure:3927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3953,7 +3909,7 @@
             if test "$ac_cv_lib_curses_waddch" = "yes"
             then
                 echo $ac_n "checking for resizeterm in -lcurses""... $ac_c" 1>&6
-echo "configure:3957: checking for resizeterm in -lcurses" >&5
+echo "configure:3913: checking for resizeterm in -lcurses" >&5
 ac_lib_var=`echo curses'_'resizeterm | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3961,7 +3917,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lcurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3965 "configure"
+#line 3921 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3972,7 +3928,7 @@
 resizeterm()
 ; return 0; }
 EOF
-if { (eval echo configure:3976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3932: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3996,7 +3952,7 @@
 fi
 
                 echo $ac_n "checking for getbkgd in -lcurses""... $ac_c" 1>&6
-echo "configure:4000: checking for getbkgd in -lcurses" >&5
+echo "configure:3956: checking for getbkgd in -lcurses" >&5
 ac_lib_var=`echo curses'_'getbkgd | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -4004,7 +3960,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lcurses  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4008 "configure"
+#line 3964 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4015,7 +3971,7 @@
 getbkgd()
 ; return 0; }
 EOF
-if { (eval echo configure:4019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4044,12 +4000,12 @@
 fi
 
 echo $ac_n "checking "for GNU style IPX support"""... $ac_c" 1>&6
-echo "configure:4048: checking "for GNU style IPX support"" >&5
+echo "configure:4004: checking "for GNU style IPX support"" >&5
 if eval "test \"`echo '$''{'ac_cv_c_ipx_gnu'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4053 "configure"
+#line 4009 "configure"
 #include "confdefs.h"
 #include <sys/socket.h>
     #include <netipx/ipx.h>
@@ -4057,7 +4013,7 @@
 ((struct sockaddr_ipx *)0)->sipx_family == AF_IPX
 ; return 0; }
 EOF
-if { (eval echo configure:4061: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4017: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_ipx_gnu="yes"
 else
@@ -4082,12 +4038,12 @@
 if test "$ac_cv_c_ipx_gnu" = "no"
 then
  echo $ac_n "checking "for linux style IPX support"""... $ac_c" 1>&6
-echo "configure:4086: checking "for linux style IPX support"" >&5
+echo "configure:4042: checking "for linux style IPX support"" >&5
 if eval "test \"`echo '$''{'ac_cv_c_ipx_linux'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4091 "configure"
+#line 4047 "configure"
 #include "confdefs.h"
 #include <sys/socket.h>
      #include <asm/types.h>
@@ -4096,7 +4052,7 @@
 ((struct sockaddr_ipx *)0)->sipx_family == AF_IPX
 ; return 0; }
 EOF
-if { (eval echo configure:4100: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4056: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_ipx_linux="yes"
 else
@@ -4123,17 +4079,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4127: checking for $ac_hdr" >&5
+echo "configure:4083: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4132 "configure"
+#line 4088 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4137: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4093: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4161,12 +4117,12 @@
 
 
 echo $ac_n "checking "for Open Sound System"""... $ac_c" 1>&6
-echo "configure:4165: checking "for Open Sound System"" >&5
+echo "configure:4121: checking "for Open Sound System"" >&5
 if eval "test \"`echo '$''{'ac_cv_c_opensoundsystem'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4170 "configure"
+#line 4126 "configure"
 #include "confdefs.h"
 
 	#if defined(HAVE_SYS_SOUNDCARD_H)
@@ -4187,7 +4143,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:4191: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4147: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_opensoundsystem="yes"
 else
@@ -4210,12 +4166,12 @@
 fi
 
 echo $ac_n "checking "for Open Sound System/MIDI interface"""... $ac_c" 1>&6
-echo "configure:4214: checking "for Open Sound System/MIDI interface"" >&5
+echo "configure:4170: checking "for Open Sound System/MIDI interface"" >&5
 if eval "test \"`echo '$''{'ac_cv_c_opensoundsystem_midi'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4219 "configure"
+#line 4175 "configure"
 #include "confdefs.h"
 
 	#if defined(HAVE_SYS_SOUNDCARD_H)
@@ -4236,7 +4192,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:4240: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4196: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_opensoundsystem_midi="yes"
 else
@@ -4265,7 +4221,7 @@
 then
   CFLAGS="$CFLAGS -Wall"
   echo $ac_n "checking "for gcc strength-reduce bug"""... $ac_c" 1>&6
-echo "configure:4269: checking "for gcc strength-reduce bug"" >&5
+echo "configure:4225: checking "for gcc strength-reduce bug"" >&5
 if eval "test \"`echo '$''{'ac_cv_c_gcc_strength_bug'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4273,7 +4229,7 @@
   ac_cv_c_gcc_strength_bug="yes"
 else
   cat > conftest.$ac_ext <<EOF
-#line 4277 "configure"
+#line 4233 "configure"
 #include "confdefs.h"
 
 int main(void) {
@@ -4284,7 +4240,7 @@
   exit( Array[1] != -2 );
 }
 EOF
-if { (eval echo configure:4288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_c_gcc_strength_bug="no"
 else
@@ -4307,7 +4263,7 @@
 
 
 echo $ac_n "checking "whether external symbols need an underscore prefix"""... $ac_c" 1>&6
-echo "configure:4311: checking "whether external symbols need an underscore prefix"" >&5
+echo "configure:4267: checking "whether external symbols need an underscore prefix"" >&5
 if eval "test \"`echo '$''{'ac_cv_c_extern_prefix'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4319,14 +4275,14 @@
 	.long 0
 EOF
 cat > conftest.$ac_ext <<EOF
-#line 4323 "configure"
+#line 4279 "configure"
 #include "confdefs.h"
 extern int ac_test;
 int main() {
 if (ac_test) return 1
 ; return 0; }
 EOF
-if { (eval echo configure:4330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_c_extern_prefix="yes"
 else
@@ -4350,7 +4306,7 @@
 
 
 echo $ac_n "checking "whether assembler accepts .string"""... $ac_c" 1>&6
-echo "configure:4354: checking "whether assembler accepts .string"" >&5
+echo "configure:4310: checking "whether assembler accepts .string"" >&5
 if eval "test \"`echo '$''{'ac_cv_c_asm_string'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4360,14 +4316,14 @@
 	.string "test"
 EOF
 cat > conftest.$ac_ext <<EOF
-#line 4364 "configure"
+#line 4320 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_c_asm_string="yes"
 else
@@ -4394,21 +4350,21 @@
 if test "$LIBEXT" = "so"
 then
   echo $ac_n "checking "whether we can build a Linux dll"""... $ac_c" 1>&6
-echo "configure:4398: checking "whether we can build a Linux dll"" >&5
+echo "configure:4354: checking "whether we can build a Linux dll"" >&5
 if eval "test \"`echo '$''{'ac_cv_c_dll_linux'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   saved_cflags=$CFLAGS
   CFLAGS="$CFLAGS -fPIC -shared -Wl,-soname,conftest.so.1.0"
   cat > conftest.$ac_ext <<EOF
-#line 4405 "configure"
+#line 4361 "configure"
 #include "confdefs.h"
 
 int main() {
 return 1
 ; return 0; }
 EOF
-if { (eval echo configure:4412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_c_dll_linux="yes"
 else
@@ -4428,21 +4384,21 @@
     LDSHARED="\$(CC) -shared -Wl,-soname,\$(SONAME),-rpath,\$(libdir)"
   else
     echo $ac_n "checking whether we can build a UnixWare (Solaris) dll""... $ac_c" 1>&6
-echo "configure:4432: checking whether we can build a UnixWare (Solaris) dll" >&5
+echo "configure:4388: checking whether we can build a UnixWare (Solaris) dll" >&5
 if eval "test \"`echo '$''{'ac_cv_c_dll_unixware'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   saved_cflags=$CFLAGS
     CFLAGS="$CFLAGS -fPIC -Wl,-G,-h,conftest.so.1.0"
     cat > conftest.$ac_ext <<EOF
-#line 4439 "configure"
+#line 4395 "configure"
 #include "confdefs.h"
 
 int main() {
 return 1
 ; return 0; }
 EOF
-if { (eval echo configure:4446: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_c_dll_unixware="yes"
 else
@@ -4462,21 +4418,21 @@
       LDSHARED="\$(CC) -Wl,-G,-h,\$(libdir)/\$(SONAME)"
     else
       echo $ac_n "checking "whether we can build a NetBSD dll"""... $ac_c" 1>&6
-echo "configure:4466: checking "whether we can build a NetBSD dll"" >&5
+echo "configure:4422: checking "whether we can build a NetBSD dll"" >&5
 if eval "test \"`echo '$''{'ac_cv_c_dll_netbsd'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   saved_cflags=$CFLAGS
       CFLAGS="$CFLAGS -fPIC -Bshareable -Bforcearchive"
       cat > conftest.$ac_ext <<EOF
-#line 4473 "configure"
+#line 4429 "configure"
 #include "confdefs.h"
 
 int main() {
 return 1
 ; return 0; }
 EOF
-if { (eval echo configure:4480: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_c_dll_netbsd="yes"
 else
@@ -4513,21 +4469,21 @@
 else
     DLL_LINK="-L\$(DLLDIR) \$(DLLS:%=-l%) -L\$(TOPOBJDIR) -lwine \$(X_LIBS) \$(XLIB)"
     echo $ac_n "checking whether the linker supports --[no]-whole-archive (Linux)""... $ac_c" 1>&6
-echo "configure:4517: checking whether the linker supports --[no]-whole-archive (Linux)" >&5
+echo "configure:4473: checking whether the linker supports --[no]-whole-archive (Linux)" >&5
 if eval "test \"`echo '$''{'ac_cv_c_whole_archive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   saved_cflags=$CFLAGS
             CFLAGS="$CFLAGS -Wl,--whole-archive -Wl,--no-whole-archive"
             cat > conftest.$ac_ext <<EOF
-#line 4524 "configure"
+#line 4480 "configure"
 #include "confdefs.h"
 
 int main() {
 return 1
 ; return 0; }
 EOF
-if { (eval echo configure:4531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_c_whole_archive="yes"
 else
@@ -4547,21 +4503,21 @@
         DLL_LINK="-Wl,--whole-archive $DLL_LINK -Wl,--no-whole-archive"
     else
         echo $ac_n "checking whether the linker supports -z {all,default}extract (Linux)""... $ac_c" 1>&6
-echo "configure:4551: checking whether the linker supports -z {all,default}extract (Linux)" >&5
+echo "configure:4507: checking whether the linker supports -z {all,default}extract (Linux)" >&5
 if eval "test \"`echo '$''{'ac_cv_c_allextract'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   saved_cflags=$CFLAGS
 		CFLAGS="$CFLAGS -Wl,-z,allextract -Wl,-z,defaultextract"
 		cat > conftest.$ac_ext <<EOF
-#line 4558 "configure"
+#line 4514 "configure"
 #include "confdefs.h"
 
 int main() {
 return 1
 ; return 0; }
 EOF
-if { (eval echo configure:4565: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_c_allextract="yes"
 else
@@ -4592,7 +4548,7 @@
 
 wine_cv_libc_reentrant=no 
 echo $ac_n "checking "for reentrant libc: __errno_location"""... $ac_c" 1>&6
-echo "configure:4596: checking "for reentrant libc: __errno_location"" >&5
+echo "configure:4552: checking "for reentrant libc: __errno_location"" >&5
 if eval "test \"`echo '$''{'wine_cv_libc_r__errno_location'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4600,14 +4556,14 @@
   wine_cv_libc_r__errno_location=yes 
 else
   cat > conftest.$ac_ext <<EOF
-#line 4604 "configure"
+#line 4560 "configure"
 #include "confdefs.h"
 int myerrno = 0;
 char buf[256];
 int *__errno_location(){return &myerrno;}
 main(){connect(0,buf,255); exit(!myerrno);}
 EOF
-if { (eval echo configure:4611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   wine_cv_libc_r__errno_location=yes
 else
@@ -4632,7 +4588,7 @@
     wine_cv_libc_reentrant=__errno_location 
 fi
 echo $ac_n "checking "for reentrant libc: __error"""... $ac_c" 1>&6
-echo "configure:4636: checking "for reentrant libc: __error"" >&5
+echo "configure:4592: checking "for reentrant libc: __error"" >&5
 if eval "test \"`echo '$''{'wine_cv_libc_r__error'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4640,14 +4596,14 @@
   wine_cv_libc_r__error=yes 
 else
   cat > conftest.$ac_ext <<EOF
-#line 4644 "configure"
+#line 4600 "configure"
 #include "confdefs.h"
 int myerrno = 0;
 char buf[256];
 int *__error(){return &myerrno;}
 main(){connect(0,buf,255); exit(!myerrno);}
 EOF
-if { (eval echo configure:4651: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4607: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   wine_cv_libc_r__error=yes
 else
@@ -4672,7 +4628,7 @@
     wine_cv_libc_reentrant=__error 
 fi
 echo $ac_n "checking "for reentrant libc: ___errno"""... $ac_c" 1>&6
-echo "configure:4676: checking "for reentrant libc: ___errno"" >&5
+echo "configure:4632: checking "for reentrant libc: ___errno"" >&5
 if eval "test \"`echo '$''{'wine_cv_libc_r___errno'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4680,14 +4636,14 @@
   wine_cv_libc_r___errno=yes 
 else
   cat > conftest.$ac_ext <<EOF
-#line 4684 "configure"
+#line 4640 "configure"
 #include "confdefs.h"
 int myerrno = 0;
 char buf[256];
 int *___errno(){return &myerrno;}
 main(){connect(0,buf,255); exit(!myerrno);}
 EOF
-if { (eval echo configure:4691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   wine_cv_libc_r___errno=yes
 else
@@ -4712,7 +4668,7 @@
     wine_cv_libc_reentrant=___errno 
 fi
 echo $ac_n "checking "for reentrant libc: __thr_errno"""... $ac_c" 1>&6
-echo "configure:4716: checking "for reentrant libc: __thr_errno"" >&5
+echo "configure:4672: checking "for reentrant libc: __thr_errno"" >&5
 if eval "test \"`echo '$''{'wine_cv_libc_r__thr_errno'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4720,14 +4676,14 @@
   wine_cv_libc_r__thr_errno=yes 
 else
   cat > conftest.$ac_ext <<EOF
-#line 4724 "configure"
+#line 4680 "configure"
 #include "confdefs.h"
 int myerrno = 0;
 char buf[256];
 int *__thr_errno(){return &myerrno;}
 main(){connect(0,buf,255); exit(!myerrno);}
 EOF
-if { (eval echo configure:4731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   wine_cv_libc_r__thr_errno=yes
 else
@@ -4763,7 +4719,7 @@
 if test "$have_x" = "yes" -a "$wine_cv_libc_reentrant" != "no"
 then
 echo $ac_n "checking "for reentrant X libraries"""... $ac_c" 1>&6
-echo "configure:4767: checking "for reentrant X libraries"" >&5
+echo "configure:4723: checking "for reentrant X libraries"" >&5
 if eval "test \"`echo '$''{'wine_cv_x_reentrant'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4809,14 +4765,14 @@
 
 
 echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:4813: checking whether byte ordering is bigendian" >&5
+echo "configure:4769: checking whether byte ordering is bigendian" >&5
 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_bigendian=unknown
 # See if sys/param.h defines the BYTE_ORDER macro.
 cat > conftest.$ac_ext <<EOF
-#line 4820 "configure"
+#line 4776 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4827,11 +4783,11 @@
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4831: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4787: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   # It does; now see whether it defined to BIG_ENDIAN or not.
 cat > conftest.$ac_ext <<EOF
-#line 4835 "configure"
+#line 4791 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4842,7 +4798,7 @@
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4846: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4802: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -4862,7 +4818,7 @@
     { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 4866 "configure"
+#line 4822 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -4875,7 +4831,7 @@
   exit (u.c[sizeof (long) - 1] == 1);
 }
 EOF
-if { (eval echo configure:4879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_c_bigendian=no
 else
@@ -4903,19 +4859,19 @@
 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
 # for constant arguments.  Useless!
 echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:4907: checking for working alloca.h" >&5
+echo "configure:4863: checking for working alloca.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4912 "configure"
+#line 4868 "configure"
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
 void *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:4919: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4875: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_header_alloca_h=yes
 else
@@ -4936,12 +4892,12 @@
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:4940: checking for alloca" >&5
+echo "configure:4896: checking for alloca" >&5
 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 4945 "configure"
+#line 4901 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -4969,7 +4925,7 @@
 char *p = (char *) alloca(1);
 ; return 0; }
 EOF
-if { (eval echo configure:4973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_func_alloca_works=yes
 else
@@ -5001,12 +4957,12 @@
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:5005: checking whether alloca needs Cray hooks" >&5
+echo "configure:4961: checking whether alloca needs Cray hooks" >&5
 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5010 "configure"
+#line 4966 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -5031,12 +4987,12 @@
 if test $ac_cv_os_cray = yes; then
 for ac_func in _getb67 GETB67 getb67; do
   echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5035: checking for $ac_func" >&5
+echo "configure:4991: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5040 "configure"
+#line 4996 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5059,7 +5015,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:5063: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5086,7 +5042,7 @@
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:5090: checking stack direction for C alloca" >&5
+echo "configure:5046: checking stack direction for C alloca" >&5
 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5094,7 +5050,7 @@
   ac_cv_c_stack_direction=0
 else
   cat > conftest.$ac_ext <<EOF
-#line 5098 "configure"
+#line 5054 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -5113,7 +5069,7 @@
   exit (find_stack_direction() < 0);
 }
 EOF
-if { (eval echo configure:5117: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_c_stack_direction=1
 else
@@ -5165,12 +5121,12 @@
 
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5169: checking for $ac_func" >&5
+echo "configure:5125: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5174 "configure"
+#line 5130 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -5193,7 +5149,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:5197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -5270,17 +5226,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5274: checking for $ac_hdr" >&5
+echo "configure:5230: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5279 "configure"
+#line 5235 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5240: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5307,12 +5263,12 @@
 done
 
 echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6
-echo "configure:5311: checking whether stat file-mode macros are broken" >&5
+echo "configure:5267: checking whether stat file-mode macros are broken" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5316 "configure"
+#line 5272 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -5365,12 +5321,12 @@
 
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:5369: checking for working const" >&5
+echo "configure:5325: checking for working const" >&5
 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5374 "configure"
+#line 5330 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -5419,7 +5375,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:5423: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5379: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -5440,21 +5396,21 @@
 fi
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:5444: checking for inline" >&5
+echo "configure:5400: checking for inline" >&5
 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 5451 "configure"
+#line 5407 "configure"
 #include "confdefs.h"
 
 int main() {
 } int $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:5458: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5414: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -5480,12 +5436,12 @@
 esac
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:5484: checking for ANSI C header files" >&5
+echo "configure:5440: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5489 "configure"
+#line 5445 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -5493,7 +5449,7 @@
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5497: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5453: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5510,7 +5466,7 @@
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 5514 "configure"
+#line 5470 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -5528,7 +5484,7 @@
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 5532 "configure"
+#line 5488 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -5549,7 +5505,7 @@
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 5553 "configure"
+#line 5509 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -5560,7 +5516,7 @@
 exit (0); }
 
 EOF
-if { (eval echo configure:5564: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5520: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -5584,12 +5540,12 @@
 fi
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:5588: checking for size_t" >&5
+echo "configure:5544: checking for size_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5593 "configure"
+#line 5549 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -5617,7 +5573,7 @@
 fi
 
 echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:5621: checking size of long long" >&5
+echo "configure:5577: checking size of long long" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5625,7 +5581,7 @@
   ac_cv_sizeof_long_long=0
 else
   cat > conftest.$ac_ext <<EOF
-#line 5629 "configure"
+#line 5585 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -5636,7 +5592,7 @@
   exit(0);
 }
 EOF
-if { (eval echo configure:5640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_long_long=`cat conftestval`
 else
@@ -5659,12 +5615,12 @@
 if test "$ac_cv_header_linux_joystick_h" = "yes"
 then
    echo $ac_n "checking "whether linux/joystick.h uses the Linux 2.2+ API"""... $ac_c" 1>&6
-echo "configure:5663: checking "whether linux/joystick.h uses the Linux 2.2+ API"" >&5
+echo "configure:5619: checking "whether linux/joystick.h uses the Linux 2.2+ API"" >&5
 if eval "test \"`echo '$''{'wine_cv_linux_joystick_22_api'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5668 "configure"
+#line 5624 "configure"
 #include "confdefs.h"
 
 	#include <sys/ioctl.h>
@@ -5679,7 +5635,7 @@
 /*empty*/
 ; return 0; }
 EOF
-if { (eval echo configure:5683: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5639: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   wine_cv_linux_joystick_22_api=yes
 else
@@ -5706,12 +5662,12 @@
 if test "$ac_cv_header_sys_vfs_h" = "yes"
 then
     echo $ac_n "checking "whether sys/vfs.h defines statfs"""... $ac_c" 1>&6
-echo "configure:5710: checking "whether sys/vfs.h defines statfs"" >&5
+echo "configure:5666: checking "whether sys/vfs.h defines statfs"" >&5
 if eval "test \"`echo '$''{'wine_cv_sys_vfs_has_statfs'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5715 "configure"
+#line 5671 "configure"
 #include "confdefs.h"
 
 	#include <sys/types.h>
@@ -5728,7 +5684,7 @@
 	
 ; return 0; }
 EOF
-if { (eval echo configure:5732: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5688: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   wine_cv_sys_vfs_has_statfs=yes
 else
@@ -5755,12 +5711,12 @@
 if test "$ac_cv_header_sys_statfs_h" = "yes"
 then
     echo $ac_n "checking "whether sys/statfs.h defines statfs"""... $ac_c" 1>&6
-echo "configure:5759: checking "whether sys/statfs.h defines statfs"" >&5
+echo "configure:5715: checking "whether sys/statfs.h defines statfs"" >&5
 if eval "test \"`echo '$''{'wine_cv_sys_statfs_has_statfs'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5764 "configure"
+#line 5720 "configure"
 #include "confdefs.h"
 
 	#include <sys/types.h>
@@ -5775,7 +5731,7 @@
 	
 ; return 0; }
 EOF
-if { (eval echo configure:5779: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5735: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   wine_cv_sys_statfs_has_statfs=yes
 else
@@ -5802,12 +5758,12 @@
 if test "$ac_cv_header_sys_mount_h" = "yes"
 then
     echo $ac_n "checking "whether sys/mount.h defines statfs"""... $ac_c" 1>&6
-echo "configure:5806: checking "whether sys/mount.h defines statfs"" >&5
+echo "configure:5762: checking "whether sys/mount.h defines statfs"" >&5
 if eval "test \"`echo '$''{'wine_cv_sys_mount_has_statfs'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5811 "configure"
+#line 5767 "configure"
 #include "confdefs.h"
 
 	#include <sys/types.h>
@@ -5822,7 +5778,7 @@
 	
 ; return 0; }
 EOF
-if { (eval echo configure:5826: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5782: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   wine_cv_sys_mount_has_statfs=yes
 else
@@ -5848,7 +5804,7 @@
 
 
 echo $ac_n "checking "for statfs.f_bfree"""... $ac_c" 1>&6
-echo "configure:5852: checking "for statfs.f_bfree"" >&5
+echo "configure:5808: checking "for statfs.f_bfree"" >&5
 if eval "test \"`echo '$''{'wine_cv_statfs_bfree'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5857,7 +5813,7 @@
         wine_cv_statfs_bfree=no
     else
     	cat > conftest.$ac_ext <<EOF
-#line 5861 "configure"
+#line 5817 "configure"
 #include "confdefs.h"
 
 	#include <sys/types.h>
@@ -5884,7 +5840,7 @@
 	
 ; return 0; }
 EOF
-if { (eval echo configure:5888: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5844: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   wine_cv_statfs_bfree=yes
 else
@@ -5908,7 +5864,7 @@
 fi
 
 echo $ac_n "checking "for statfs.f_bavail"""... $ac_c" 1>&6
-echo "configure:5912: checking "for statfs.f_bavail"" >&5
+echo "configure:5868: checking "for statfs.f_bavail"" >&5
 if eval "test \"`echo '$''{'wine_cv_statfs_bavail'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -5917,7 +5873,7 @@
         wine_cv_statfs_bavail=no
     else
     	cat > conftest.$ac_ext <<EOF
-#line 5921 "configure"
+#line 5877 "configure"
 #include "confdefs.h"
 
 	#include <sys/types.h>
@@ -5944,7 +5900,7 @@
 	
 ; return 0; }
 EOF
-if { (eval echo configure:5948: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5904: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   wine_cv_statfs_bavail=yes
 else
@@ -5969,12 +5925,12 @@
 
 
 echo $ac_n "checking "for msg_accrights in struct msghdr"""... $ac_c" 1>&6
-echo "configure:5973: checking "for msg_accrights in struct msghdr"" >&5
+echo "configure:5929: checking "for msg_accrights in struct msghdr"" >&5
 if eval "test \"`echo '$''{'ac_cv_c_msg_accrights'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5978 "configure"
+#line 5934 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -5982,7 +5938,7 @@
 struct msghdr hdr; hdr.msg_accrights=0
 ; return 0; }
 EOF
-if { (eval echo configure:5986: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5942: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_msg_accrights="yes"
 else
@@ -6005,12 +5961,12 @@
 
 
 echo $ac_n "checking "for sun_len in struct sockaddr_un"""... $ac_c" 1>&6
-echo "configure:6009: checking "for sun_len in struct sockaddr_un"" >&5
+echo "configure:5965: checking "for sun_len in struct sockaddr_un"" >&5
 if eval "test \"`echo '$''{'ac_cv_c_sun_len'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6014 "configure"
+#line 5970 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -6019,7 +5975,7 @@
 static struct sockaddr_un addr; addr.sun_len = 1
 ; return 0; }
 EOF
-if { (eval echo configure:6023: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5979: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_sun_len="yes"
 else
@@ -6042,12 +5998,12 @@
 
 
 echo $ac_n "checking "whether we need to define __i386__"""... $ac_c" 1>&6
-echo "configure:6046: checking "whether we need to define __i386__"" >&5
+echo "configure:6002: checking "whether we need to define __i386__"" >&5
 if eval "test \"`echo '$''{'ac_cv_cpp_def_i386'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6051 "configure"
+#line 6007 "configure"
 #include "confdefs.h"
 #if (defined(i386) || defined(__i386)) && !defined(__i386__)
 yes
@@ -6227,6 +6183,7 @@
 dlls/oledlg/Makefile
 dlls/olepro32/Makefile
 dlls/olesvr/Makefile
+dlls/opengl32/Makefile
 dlls/psapi/Makefile
 dlls/rasapi32/Makefile
 dlls/richedit/Makefile
@@ -6366,6 +6323,7 @@
 s%@XLIB@%$XLIB%g
 s%@X_DLLS@%$X_DLLS%g
 s%@XFILES@%$XFILES%g
+s%@OPENGLFILES@%$OPENGLFILES%g
 s%@DGA_SRCS@%$DGA_SRCS%g
 s%@DGA2_SRCS@%$DGA2_SRCS%g
 s%@MESA_SRCS@%$MESA_SRCS%g
@@ -6458,6 +6416,7 @@
 dlls/oledlg/Makefile
 dlls/olepro32/Makefile
 dlls/olesvr/Makefile
+dlls/opengl32/Makefile
 dlls/psapi/Makefile
 dlls/rasapi32/Makefile
 dlls/richedit/Makefile
@@ -6760,14 +6719,14 @@
   echo "*** reentrant version of libc."
 fi
 
-if test "$wine_cv_mesa_version_OK" = "no"
+if test "$wine_cv_opengl_version_OK" = "no"
 then
   echo
   echo "*** Warning: old Mesa headers detected. Wine will be built without Direct3D"
   echo "*** support. Consider upgrading your Mesa libraries (http://www.mesa3d.org/)."
 fi
 
-if test "$wine_cv_mesa_version_threadsafe" = "yes" -a $OPENGL = "normal"
+if test "$wine_cv_opengl_version_threadsafe" = "yes" -a $OPENGL = "normal"
 then
   echo
   echo "*** Warning: the OpenGL version you have installed relies on libpthread for"
@@ -6776,7 +6735,7 @@
   echo "*** start configure with '--enable-opengl' to force OpenGL support."
 fi
 
-if test "$wine_cv_mesa_version_threadsafe" = "yes" -a $OPENGL = "yes"
+if test "$wine_cv_opengl_version_threadsafe" = "yes" -a $OPENGL = "yes"
 then
   echo
   echo "*** Warning: you explicitely linked in a thread-safe OpenGL version. If you"
diff --git a/configure.in b/configure.in
index 7d0f8f9..5ac3f73 100644
--- a/configure.in
+++ b/configure.in
@@ -126,6 +126,8 @@
 X_DLLS=""
 AC_SUBST(XFILES)
 XFILES=""
+AC_SUBST(OPENGLFILES)
+OPENGLFILES=""
 AC_SUBST(DGA_SRCS)
 DGA_SRCS=""
 AC_SUBST(DGA2_SRCS)
@@ -195,64 +197,58 @@
         AC_CHECK_LIB(Xxf86vm,XF86VidModeQueryExtension,AC_DEFINE(HAVE_LIBXXF86VM) X_PRE_LIBS="$X_PRE_LIBS -lXxf86vm",,$X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
     fi
 
-    dnl Check for the presence of Mesa
+    dnl Check for the presence of OpenGL
     if test $OPENGL = "yes" -o $OPENGL = "normal"
     then
-	AC_CHECK_HEADERS(GL/gl.h GL/glx.h)
-	if test "$ac_cv_header_GL_gl_h" = "yes" -a "$ac_cv_header_GL_glx_h" = "yes"
+	AC_CHECK_HEADERS(GL/gl.h GL/glx.h GL/glext.h)
+	if test "$ac_cv_header_GL_gl_h" = "yes" -a "$ac_cv_header_GL_glx_h" = "yes" -a "$ac_cv_header_GL_glext_h" = "yes"
 	then
 	    dnl Check for some problems due to old Mesa versions
-	    AC_CACHE_CHECK("for up-to-date OpenGL version", wine_cv_mesa_version_OK,
+	    AC_CACHE_CHECK("for up-to-date OpenGL version", wine_cv_opengl_version_OK,
 	      AC_TRY_COMPILE(
 		[#include <GL/gl.h>],
 		[GLenum test = GL_UNSIGNED_SHORT_5_6_5;],
-		[wine_cv_mesa_version_OK="yes"],
-		[wine_cv_mesa_version_OK="no"]
+		[wine_cv_opengl_version_OK="yes"],
+		[wine_cv_opengl_version_OK="no"]
 	      )
             )
 
 	    dnl Check for the thread-safety of the OpenGL library
 	    AC_CACHE_CHECK("for thread-safe OpenGL version", 
-			   wine_cv_mesa_version_threadsafe,
+			   wine_cv_opengl_version_threadsafe,
               [saved_libs=$LIBS
 	       LIBS="$X_LIBS -lGL"
 	       AC_TRY_LINK([],[pthread_getspecific();],
-			      [wine_cv_mesa_version_threadsafe="yes"],
-			      [wine_cv_mesa_version_threadsafe="no"])
+			      [wine_cv_opengl_version_threadsafe="yes"],
+			      [wine_cv_opengl_version_threadsafe="no"])
 	       LIBS=$saved_libs]
 	    )
 
-	    if test "$wine_cv_mesa_version_OK" = "yes" -a \( "$wine_cv_mesa_version_threadsafe" = "no" -o $OPENGL = "yes" \)
+	    if test "$wine_cv_opengl_version_OK" = "yes" -a \( "$wine_cv_opengl_version_threadsafe" = "no" -o $OPENGL = "yes" \)
             then
 		dnl Check for the presense of the library
 		AC_CHECK_LIB(GL,glXCreateContext,
-			     AC_DEFINE(HAVE_LIBMESAGL)
 			     X_PRE_LIBS="$X_PRE_LIBS -lGL"
 			     MESA_SRCS='$(MESA_SRCS)'
 			     ,,
 			     $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
 
-		if test "$ac_cv_lib_GL_glXCreateContext" = "no"
+		if test $ac_cv_lib_GL_glXCreateContext = "yes"
 		then
-			AC_CHECK_LIB(MesaGL,glXCreateContext,
-				     AC_DEFINE(HAVE_LIBMESAGL)
-				     X_PRE_LIBS="$X_PRE_LIBS -lMesaGL"
-				     MESA_SRCS='$(MESA_SRCS)'
-				     ,,
-				     $X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
-	        fi
+			dnl Check for the Color Table and Paletted Texture extensions
+			AC_CACHE_CHECK("for the OpenGL Color Index extension",dummy,
+				       AC_TRY_COMPILE([#include <GL/gl.h>],
+			               [GLenum test = GL_COLOR_INDEX8_EXT;],
+				       [AC_DEFINE(HAVE_GL_COLOR_TABLE)],))
 
-		dnl Check for the Color Table and Paletted Texture extensions
-		AC_CACHE_CHECK("for the OpenGL Color Index extension",dummy,
-			       AC_TRY_COMPILE([#include <GL/gl.h>],
-			                      [GLenum test = GL_COLOR_INDEX8_EXT;],
-					      [AC_DEFINE(HAVE_GL_COLOR_TABLE)],))
+		        AC_CHECK_LIB(GL,glColorTableEXT,AC_DEFINE(HAVE_GL_PALETTED_TEXTURE),,$X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
+			AC_CHECK_LIB(GL,glXGetProcAddressARB,AC_DEFINE(HAVE_GLX_GETPROCADDRESS),,$X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
 
-    	        if test "$ac_cv_lib_GL_glXCreateContext" = "no"
-		then
-			AC_CHECK_LIB(MesaGL,glColorTableEXT,AC_DEFINE(HAVE_GL_PALETTED_TEXTURE),,$X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
-		else
-			AC_CHECK_LIB(GL,glColorTableEXT,AC_DEFINE(HAVE_GL_PALETTED_TEXTURE),,$X_LIBS -lXext -lX11 -lm $X_EXTRA_LIBS)
+			if test $ac_cv_lib_GL_glXGetProcAddressARB = "yes"
+			then
+				AC_DEFINE(HAVE_OPENGL)
+				OPENGLFILES='$(OPENGLFILES)'
+			fi
 		fi
 	     fi
 	 fi
@@ -994,6 +990,7 @@
 dlls/oledlg/Makefile
 dlls/olepro32/Makefile
 dlls/olesvr/Makefile
+dlls/opengl32/Makefile
 dlls/psapi/Makefile
 dlls/rasapi32/Makefile
 dlls/richedit/Makefile
@@ -1108,14 +1105,14 @@
   echo "*** reentrant version of libc."
 fi
 
-if test "$wine_cv_mesa_version_OK" = "no"
+if test "$wine_cv_opengl_version_OK" = "no"
 then
   echo
   echo "*** Warning: old Mesa headers detected. Wine will be built without Direct3D"
   echo "*** support. Consider upgrading your Mesa libraries (http://www.mesa3d.org/)."
 fi
 
-if test "$wine_cv_mesa_version_threadsafe" = "yes" -a $OPENGL = "normal"
+if test "$wine_cv_opengl_version_threadsafe" = "yes" -a $OPENGL = "normal"
 then
   echo
   echo "*** Warning: the OpenGL version you have installed relies on libpthread for"
@@ -1124,7 +1121,7 @@
   echo "*** start configure with '--enable-opengl' to force OpenGL support."
 fi
 
-if test "$wine_cv_mesa_version_threadsafe" = "yes" -a $OPENGL = "yes"
+if test "$wine_cv_opengl_version_threadsafe" = "yes" -a $OPENGL = "yes"
 then
   echo
   echo "*** Warning: you explicitely linked in a thread-safe OpenGL version. If you"
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index c9ccbdf..8806449 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -3,8 +3,12 @@
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 
+OPENGLFILES= \
+	opengl32/libopengl32.@LIBEXT@
+
 XFILES = \
 	ddraw/libddraw.@LIBEXT@ \
+	@OPENGLFILES@ \
 	x11drv/libx11drv.@LIBEXT@
 
 DLLFILES = \
@@ -118,6 +122,7 @@
 	oledlg \
 	olepro32 \
 	olesvr \
+	opengl32 \
 	psapi \
 	rasapi32 \
 	richedit \
@@ -246,6 +251,9 @@
 libolesvr32.@LIBEXT@ libolesvr.@LIBEXT@: olesvr/libolesvr32.@LIBEXT@
 	$(RM) $@ && $(LN_S) olesvr/libolesvr32.@LIBEXT@ $@
 
+libopengl32.@LIBEXT@: opengl32/libopengl32.@LIBEXT@
+	$(RM) $@ && $(LN_S) opengl32/libopengl32.@LIBEXT@ $@
+
 libpsapi.@LIBEXT@: psapi/libpsapi.@LIBEXT@
 	$(RM) $@ && $(LN_S) psapi/libpsapi.@LIBEXT@ $@
 
@@ -325,6 +333,7 @@
 oleaut32/liboleaut32.so: libole32.so libcomctl32.so
 olecli/libolecli32.so: libolesvr32.so libole32.so
 olepro32/libolepro32.so: liboleaut32.so libole32.so
+opengl32/libopengl32.so: libx11drv.so libgdi32.so
 shell32/libshell32.so: libole32.so
 urlmon/liburlmon.so: libole32.so
 version/libversion.so: liblz32.so
diff --git a/dlls/ddraw/d3dviewport.c b/dlls/ddraw/d3dviewport.c
index 15c8ee3..df060c05 100644
--- a/dlls/ddraw/d3dviewport.c
+++ b/dlls/ddraw/d3dviewport.c
@@ -14,10 +14,14 @@
 #include "x11drv.h"
 
 #include "d3d_private.h"
+#include "mesa_private.h"
 
 DEFAULT_DEBUG_CHANNEL(ddraw)
 
-#ifdef HAVE_MESAGL
+#ifdef HAVE_OPENGL
+
+#define D3DVPRIVATE(x) mesa_d3dv_private*dvpriv=((mesa_d3dv_private*)x->private)
+#define D3DLPRIVATE(x) mesa_d3dl_private*dlpriv=((mesa_d3dl_private*)x->private)
 
 static ICOM_VTABLE(IDirect3DViewport2) viewport2_vtable;
 
@@ -44,6 +48,7 @@
   IDirect3DViewport2Impl* vp;
   
   vp = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IDirect3DViewport2Impl));
+  vp->private = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(mesa_d3dv_private));
   vp->ref = 1;
   ICOM_VTBL(vp) = &viewport2_vtable;
   vp->d3d.d3d2 = d3d2;
@@ -54,7 +59,7 @@
 
   vp->lights = NULL;
 
-  vp->nextlight = GL_LIGHT0;
+  ((mesa_d3dv_private *) vp->private)->nextlight = GL_LIGHT0;
   
   return (LPDIRECT3DVIEWPORT2)vp;
 }
@@ -64,6 +69,7 @@
   IDirect3DViewport2Impl* vp;
   
   vp = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IDirect3DViewport2Impl));
+  vp->private = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(mesa_d3dv_private));
   vp->ref = 1;
   ICOM_VTBL(vp) = &viewport2_vtable;
   vp->d3d.d3d1 = d3d1;
@@ -74,7 +80,7 @@
 
   vp->lights = NULL;
 
-  vp->nextlight = GL_LIGHT0;
+  ((mesa_d3dv_private *) vp->private)->nextlight = GL_LIGHT0;
   
   return (LPDIRECT3DVIEWPORT) vp;
 }
@@ -83,7 +89,7 @@
  *				IDirect3DViewport2 methods
  */
 
-static HRESULT WINAPI IDirect3DViewport2Impl_QueryInterface(LPDIRECT3DVIEWPORT2 iface,
+HRESULT WINAPI IDirect3DViewport2Impl_QueryInterface(LPDIRECT3DVIEWPORT2 iface,
 							REFIID riid,
 							LPVOID* ppvObj)
 {
@@ -96,7 +102,7 @@
 
 
 
-static ULONG WINAPI IDirect3DViewport2Impl_AddRef(LPDIRECT3DVIEWPORT2 iface)
+ULONG WINAPI IDirect3DViewport2Impl_AddRef(LPDIRECT3DVIEWPORT2 iface)
 {
   ICOM_THIS(IDirect3DViewport2Impl,iface);
   TRACE("(%p)->()incrementing from %lu.\n", This, This->ref );
@@ -106,7 +112,7 @@
 
 
 
-static ULONG WINAPI IDirect3DViewport2Impl_Release(LPDIRECT3DVIEWPORT2 iface)
+ULONG WINAPI IDirect3DViewport2Impl_Release(LPDIRECT3DVIEWPORT2 iface)
 {
   ICOM_THIS(IDirect3DViewport2Impl,iface);
   FIXME("(%p)->() decrementing from %lu.\n", This, This->ref );
@@ -120,7 +126,7 @@
 }
 
 /*** IDirect3DViewport methods ***/
-static HRESULT WINAPI IDirect3DViewport2Impl_Initialize(LPDIRECT3DVIEWPORT2 iface,
+HRESULT WINAPI IDirect3DViewport2Impl_Initialize(LPDIRECT3DVIEWPORT2 iface,
 						    LPDIRECT3D d3d)
 {
   ICOM_THIS(IDirect3DViewport2Impl,iface);
@@ -129,7 +135,7 @@
   return DD_OK;
 }
 
-static HRESULT WINAPI IDirect3DViewport2Impl_GetViewport(LPDIRECT3DVIEWPORT2 iface,
+HRESULT WINAPI IDirect3DViewport2Impl_GetViewport(LPDIRECT3DVIEWPORT2 iface,
 						     LPD3DVIEWPORT lpvp)
 {
   ICOM_THIS(IDirect3DViewport2Impl,iface);
@@ -143,7 +149,7 @@
   return DD_OK;
 }
 
-static HRESULT WINAPI IDirect3DViewport2Impl_SetViewport(LPDIRECT3DVIEWPORT2 iface,
+HRESULT WINAPI IDirect3DViewport2Impl_SetViewport(LPDIRECT3DVIEWPORT2 iface,
 						     LPD3DVIEWPORT lpvp)
 {
   ICOM_THIS(IDirect3DViewport2Impl,iface);
@@ -167,7 +173,7 @@
   return DD_OK;
 }
 
-static HRESULT WINAPI IDirect3DViewport2Impl_TransformVertices(LPDIRECT3DVIEWPORT2 iface,
+HRESULT WINAPI IDirect3DViewport2Impl_TransformVertices(LPDIRECT3DVIEWPORT2 iface,
 							   DWORD dwVertexCount,
 							   LPD3DTRANSFORMDATA lpData,
 							   DWORD dwFlags,
@@ -180,7 +186,7 @@
   return DD_OK;
 }
 
-static HRESULT WINAPI IDirect3DViewport2Impl_LightElements(LPDIRECT3DVIEWPORT2 iface,
+HRESULT WINAPI IDirect3DViewport2Impl_LightElements(LPDIRECT3DVIEWPORT2 iface,
 						       DWORD dwElementCount,
 						       LPD3DLIGHTDATA lpData)
 {
@@ -190,7 +196,7 @@
   return DD_OK;
 }
 
-static HRESULT WINAPI IDirect3DViewport2Impl_SetBackground(LPDIRECT3DVIEWPORT2 iface,
+HRESULT WINAPI IDirect3DViewport2Impl_SetBackground(LPDIRECT3DVIEWPORT2 iface,
 						       D3DMATERIALHANDLE hMat)
 {
   ICOM_THIS(IDirect3DViewport2Impl,iface);
@@ -199,7 +205,7 @@
   return DD_OK;
 }
 
-static HRESULT WINAPI IDirect3DViewport2Impl_GetBackground(LPDIRECT3DVIEWPORT2 iface,
+HRESULT WINAPI IDirect3DViewport2Impl_GetBackground(LPDIRECT3DVIEWPORT2 iface,
 						       LPD3DMATERIALHANDLE lphMat,
 						       LPBOOL lpValid)
 {
@@ -209,7 +215,7 @@
   return DD_OK;
 }
 
-static HRESULT WINAPI IDirect3DViewport2Impl_SetBackgroundDepth(LPDIRECT3DVIEWPORT2 iface,
+HRESULT WINAPI IDirect3DViewport2Impl_SetBackgroundDepth(LPDIRECT3DVIEWPORT2 iface,
 							    LPDIRECTDRAWSURFACE lpDDSurface)
 {
   ICOM_THIS(IDirect3DViewport2Impl,iface);
@@ -218,7 +224,7 @@
   return DD_OK;
 }
 
-static HRESULT WINAPI IDirect3DViewport2Impl_GetBackgroundDepth(LPDIRECT3DVIEWPORT2 iface,
+HRESULT WINAPI IDirect3DViewport2Impl_GetBackgroundDepth(LPDIRECT3DVIEWPORT2 iface,
 							    LPDIRECTDRAWSURFACE* lplpDDSurface,
 							    LPBOOL lpValid)
 {
@@ -228,7 +234,7 @@
   return DD_OK;
 }
 
-static HRESULT WINAPI IDirect3DViewport2Impl_Clear(LPDIRECT3DVIEWPORT2 iface,
+HRESULT WINAPI IDirect3DViewport2Impl_Clear(LPDIRECT3DVIEWPORT2 iface,
 					       DWORD dwCount,
 					       LPD3DRECT lpRects,
 					       DWORD dwFlags)
@@ -257,7 +263,7 @@
   return DD_OK;
 }
 
-static HRESULT WINAPI IDirect3DViewport2Impl_AddLight(LPDIRECT3DVIEWPORT2 iface,
+HRESULT WINAPI IDirect3DViewport2Impl_AddLight(LPDIRECT3DVIEWPORT2 iface,
 						  LPDIRECT3DLIGHT lpLight)
 {
   ICOM_THIS(IDirect3DViewport2Impl,iface);
@@ -270,6 +276,9 @@
 
   /* If active, activate the light */
   if (This->device.active_device1 != NULL) {
+    D3DVPRIVATE(This);
+    D3DLPRIVATE(ilpLight);
+    
     /* Get the rendering context */
     if (This->use_d3d2)
       This->device.active_device2->set_context(This->device.active_device2);
@@ -277,14 +286,14 @@
       This->device.active_device1->set_context(This->device.active_device1);
     
     /* Activate the light */
-    ilpLight->light_num = This->nextlight++;
+    dlpriv->light_num = dvpriv->nextlight++;
     ilpLight->activate(ilpLight);
   }
   
   return DD_OK;
 }
 
-static HRESULT WINAPI IDirect3DViewport2Impl_DeleteLight(LPDIRECT3DVIEWPORT2 iface,
+HRESULT WINAPI IDirect3DViewport2Impl_DeleteLight(LPDIRECT3DVIEWPORT2 iface,
 						     LPDIRECT3DLIGHT lpLight)
 {
   ICOM_THIS(IDirect3DViewport2Impl,iface);
@@ -293,7 +302,7 @@
   return DD_OK;
 }
 
-static HRESULT WINAPI IDirect3DViewport2Impl_NextLight(LPDIRECT3DVIEWPORT2 iface,
+HRESULT WINAPI IDirect3DViewport2Impl_NextLight(LPDIRECT3DVIEWPORT2 iface,
 						   LPDIRECT3DLIGHT lpLight,
 						   LPDIRECT3DLIGHT* lplpLight,
 						   DWORD dwFlags)
@@ -305,7 +314,7 @@
 }
 
 /*** IDirect3DViewport2 methods ***/
-static HRESULT WINAPI IDirect3DViewport2Impl_GetViewport2(LPDIRECT3DVIEWPORT2 iface,
+HRESULT WINAPI IDirect3DViewport2Impl_GetViewport2(LPDIRECT3DVIEWPORT2 iface,
 						      LPD3DVIEWPORT2 lpViewport2)
 {
   ICOM_THIS(IDirect3DViewport2Impl,iface);
@@ -319,7 +328,7 @@
   return DD_OK;
 }
 
-static HRESULT WINAPI IDirect3DViewport2Impl_SetViewport2(LPDIRECT3DVIEWPORT2 iface,
+HRESULT WINAPI IDirect3DViewport2Impl_SetViewport2(LPDIRECT3DVIEWPORT2 iface,
 						      LPD3DVIEWPORT2 lpViewport2)
 {
   ICOM_THIS(IDirect3DViewport2Impl,iface);
@@ -372,7 +381,7 @@
   IDirect3DViewport2Impl_SetViewport2
 };
 
-#else /* HAVE_MESAGL */
+#else /* HAVE_OPENGL */
 
 LPDIRECT3DVIEWPORT d3dviewport_create(IDirect3DImpl* d3d1) {
   ERR("Should not be called...\n");
@@ -384,4 +393,4 @@
   return NULL;
 }
 
-#endif /* HAVE_MESAGL */
+#endif /* HAVE_OPENGL */
diff --git a/dlls/ddraw/ddraw/dga.c b/dlls/ddraw/ddraw/dga.c
index f2866e4..d8dcf41 100644
--- a/dlls/ddraw/ddraw/dga.c
+++ b/dlls/ddraw/ddraw/dga.c
@@ -345,7 +345,7 @@
     DDSCAPS_FRONTBUFFER | DDSCAPS_LOCALVIDMEM | DDSCAPS_NONLOCALVIDMEM | DDSCAPS_OFFSCREENPLAIN |
       /*DDSCAPS_OVERLAY |*/ DDSCAPS_PALETTE | DDSCAPS_PRIMARYSURFACE | DDSCAPS_SYSTEMMEMORY |
 	DDSCAPS_VIDEOMEMORY | DDSCAPS_VISIBLE;
-#ifdef HAVE_MESAGL
+#ifdef HAVE_OPENGL
     caps->dwCaps |= DDCAPS_3D | DDCAPS_ZBLTS;
     caps->dwCaps2 |=  DDCAPS2_NO2DDURING3DSCENE;
     caps->ddsCaps.dwCaps |= DDSCAPS_3DDEVICE | DDSCAPS_MIPMAP | DDSCAPS_TEXTURE | DDSCAPS_ZBUFFER;
diff --git a/dlls/ddraw/ddraw/x11.c b/dlls/ddraw/ddraw/x11.c
index a6c5d2a..0789e99 100644
--- a/dlls/ddraw/ddraw/x11.c
+++ b/dlls/ddraw/ddraw/x11.c
@@ -553,7 +553,7 @@
     DDSCAPS_FRONTBUFFER | DDSCAPS_LOCALVIDMEM | DDSCAPS_NONLOCALVIDMEM | DDSCAPS_OFFSCREENPLAIN |
       /*DDSCAPS_OVERLAY |*/ DDSCAPS_PALETTE | DDSCAPS_PRIMARYSURFACE | DDSCAPS_SYSTEMMEMORY |
 	DDSCAPS_VIDEOMEMORY | DDSCAPS_VISIBLE;
-#ifdef HAVE_MESAGL
+#ifdef HAVE_OPENGL
   caps->dwCaps |= DDCAPS_3D | DDCAPS_ZBLTS;
   caps->dwCaps2 |=  DDCAPS2_NO2DDURING3DSCENE;
   caps->ddsCaps.dwCaps |= DDSCAPS_3DDEVICE | DDSCAPS_MIPMAP | DDSCAPS_TEXTURE | DDSCAPS_ZBUFFER;
@@ -650,7 +650,7 @@
 
 	return S_OK;
     }
-#ifdef HAVE_MESAGL
+#ifdef HAVE_OPENGL
     if ( IsEqualGUID( &IID_IDirect3D, refiid ) )
 	return create_direct3d(obj,This);
     if ( IsEqualGUID( &IID_IDirect3D2, refiid ) )
diff --git a/dlls/ddraw/dsurface/x11.c b/dlls/ddraw/dsurface/x11.c
index 072a3d3..f21e83f 100644
--- a/dlls/ddraw/dsurface/x11.c
+++ b/dlls/ddraw/dsurface/x11.c
@@ -17,7 +17,7 @@
 #include "debugtools.h"
 #include "x11_private.h"
 
-#ifdef HAVE_MESAGL
+#ifdef HAVE_OPENGL
 /* for d3d texture stuff */
 # include "mesa_private.h"
 #endif
@@ -59,7 +59,7 @@
 	    TRACE("  Creating IDirectDrawSurface interface (%p)\n", *obj);
 	    return S_OK;
     }
-#ifdef HAVE_MESAGL
+#ifdef HAVE_OPENGL
     if ( IsEqualGUID( &IID_IDirect3DTexture2, refiid ) ) {
 	/* Texture interface */
 	*obj = d3dtexture2_create(This);
@@ -74,7 +74,7 @@
 	TRACE("  Creating IDirect3DTexture interface (%p)\n", *obj);
 	return S_OK;
     }
-#endif /* HAVE_MESAGL */
+#endif /* HAVE_OPENGL */
     FIXME("(%p):interface for IID %s NOT found!\n",This,debugstr_guid(refiid));
     return OLE_E_ENUM_NOMORE;
 }
diff --git a/dlls/ddraw/mesa_private.h b/dlls/ddraw/mesa_private.h
index 54b542d..c30d673 100644
--- a/dlls/ddraw/mesa_private.h
+++ b/dlls/ddraw/mesa_private.h
@@ -40,14 +40,6 @@
     GLenum                      nextlight;
 } mesa_d3dv_private;
 
-#ifdef USE_OSMESA
-# define LEAVE_GL() ;
-# define ENTER_GL() ;
-#else
-# define LEAVE_GL() LeaveCriticalSection( &X11DRV_CritSection )
-# define ENTER_GL() EnterCriticalSection( &X11DRV_CritSection )
-#endif
-
 /* Matrix copy WITH transposition */
 #define conv_mat2(mat,gl_mat)			\
 {						\
diff --git a/dlls/opengl32/.cvsignore b/dlls/opengl32/.cvsignore
new file mode 100644
index 0000000..bb5bba0
--- /dev/null
+++ b/dlls/opengl32/.cvsignore
@@ -0,0 +1,3 @@
+*.spec.c
+Makefile
+libopengl32.so.1.0
diff --git a/dlls/opengl32/Makefile.in b/dlls/opengl32/Makefile.in
new file mode 100644
index 0000000..9c22e9c
--- /dev/null
+++ b/dlls/opengl32/Makefile.in
@@ -0,0 +1,20 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = opengl32
+SOVERSION = 1.0
+IMPORTS   = \
+	x11drv \
+	gdi32
+
+SPEC_SRCS = opengl32.spec
+
+C_SRCS = \
+	wgl.c \
+	opengl_norm.c \
+	opengl_ext.c
+
+@MAKE_DLL_RULES@
+
+### Dependencies:
diff --git a/dlls/opengl32/make_opengl_ext b/dlls/opengl32/make_opengl_ext
new file mode 100755
index 0000000..16a9548
--- /dev/null
+++ b/dlls/opengl32/make_opengl_ext
@@ -0,0 +1,145 @@
+#!/usr/bin/perl -w
+
+print "
+/* Auto-generated file... Do not edit ! */
+
+#include \"config.h\"
+#include \"wine_gl.h\"
+
+#include \"opengl_ext.h\"
+
+";
+
+#
+# First, create a hash-table with all function defined in opengl32.spec
+#
+%opengl_std = ();
+open(SPEC, "dlls/opengl32/opengl32.spec") || die "Could not open spec file";
+foreach (<SPEC>) {
+    if (($_ =~ /@/) && ($_ !~ /wgl/)) {
+	($name) = ($_ =~ /stdcall (\w*)\(/);
+	$opengl_std{$name} = 1;
+    }
+}
+close(SPEC);
+
+#
+# Now, the functions from the include file
+#
+%opengl_ext = ();
+open(INC, "/home/ulmer/OpenGL/glext_proto.h") || die "Could not open GL/glext.h";
+while ($line = <INC>) {
+    if ($line =~ /extern.*APIENTRY/) {
+	# Start of a function declaration
+	($ret, $name, $args) = ($line =~ /extern (\w*) APIENTRY *(\w*) *\((.*)\)/);
+	
+	# Now, remove all function already defined in opengl32.spec
+	if ($opengl_std{$name}) {
+	    # Do nothing as we already have these functions
+	} else {
+	    # Now, get the typedef name (the line after)
+	    ($typedef_name) = (<INC> =~ /\(APIENTRY *\* *(\w*) *\)/);
+
+	    # After that, parse the arguments
+	    @args = split /,/, $args;
+	    $args_ref = [];
+	    foreach (@args) {
+		push @$args_ref, $_;
+	    }
+	    $opengl_ext{$name} = [ $ret, $typedef_name, $args_ref ];
+	}
+    }
+}
+close(INC);
+
+#
+# After that, generate the file itself....
+#
+print "/* These will be filled during a wglGetProcAddress call */\n";
+$num = 0;
+foreach $name (sort keys(%opengl_ext)) {
+    $ref = $opengl_ext{$name};
+    $arg_ref = $$ref[2];
+    @larg = @$arg_ref;
+
+    print "$$ref[0] (*func_$name)(";
+    $farg = shift @larg;
+    print "$farg";
+    foreach (@larg) {
+	print ", $_";
+    }    
+    print ") = (void *) 0xdeadbeef;\n";
+    $num++;
+}
+print "\n";
+
+print "/* The function prototypes */\n";
+foreach $name (sort keys(%opengl_ext)) {
+    $ref = $opengl_ext{$name};
+    $arg_ref = $$ref[2];
+    @larg = @$arg_ref;
+    print "$$ref[0] WINAPI wine_$name(";
+
+    $farg = shift @larg;
+    print "$farg";
+    foreach (@larg) {
+	print ", $_";
+    }
+    print ") ;\n";
+}
+print "\n";
+
+
+print "/* The table giving the correspondance between names and functions */\n";
+print "int extension_registry_size = $num;\n";
+print "OpenGL_extension extension_registry[] = {\n";
+foreach $name (sort keys(%opengl_ext)) {
+    $num--;
+    print "  { \"$name\", (void *) wine_$name, (void **) (&func_$name) }";
+    if ($num) {
+	print ",";
+    }
+    print "\n";
+}
+print "};\n";
+print "\n";
+
+print "/* Now, the function declarations */\n";
+foreach $name (sort keys(%opengl_ext)) {
+    $ref = $opengl_ext{$name};
+    $arg_ref = $$ref[2];
+    print "$$ref[0] WINAPI wine_$name(";
+
+    $farg = shift @$arg_ref;
+    $num = 0;
+    if ($farg !~ /void/) {
+	print "$farg arg_0";
+	$num++;
+	foreach (@$arg_ref) {
+	    print ", $_ arg_$num";
+	    $num++;
+	}
+    }
+    print ") {\n";
+    if ($$ref[0] !~ /void/) {
+	print "  $$ref[0] ret;\n"
+    }
+    print "  ENTER_GL();\n";
+    print "  ";
+    if ($$ref[0] !~ /void/) {
+	print "  ret = ";
+    }
+    print "func_$name(";
+    if ($num > 0) {
+	print "arg_0";
+	for ($i = 1; $i < $num; $i++) {
+	    print ", arg_$i";
+	}
+    }
+    print ");\n";
+    print "  LEAVE_GL();\n";
+    if ($$ref[0] !~ /void/) {
+	print "  return ret;\n"
+    }
+    print "}\n\n";
+}
diff --git a/dlls/opengl32/make_opengl_norm b/dlls/opengl32/make_opengl_norm
new file mode 100755
index 0000000..322e5c2
--- /dev/null
+++ b/dlls/opengl32/make_opengl_norm
@@ -0,0 +1,91 @@
+#!/usr/bin/perl -w
+
+print "
+/* Auto-generated file... Do not edit ! */
+
+#include \"config.h\"
+#include \"wine_gl.h\"
+
+
+";
+
+#
+# Now, the functions from the include file
+#
+open(INC, "/usr/X11R6/include/GL/gl.h") || die "Could not open GL/gl.h";
+while ($line = <INC>) {
+    if ($line =~ /GLAPI.*GLAPIENTRY/) {
+	# Start of a function declaration
+	($ret, $name, $args) = ($line =~ /GLAPI (.*) GLAPIENTRY *(.*)\((.*)/);
+	
+	# Remove all extensions except the multitexture one (see OpenGL ABI)
+	if (($name !~ /(MESA|PGI|ARB|EXT)/) ||
+	    ($name =~ /MultiTexCoord/) ||
+	    ($name =~ /ActiveTextureARB/)) {
+	    print "$ret WINAPI wine_$name(";
+	    @rargs = ();
+	    @names = ();
+
+	    # Now, get the parameters
+	    while (1) {
+		@args = split /,|\)/, $args;
+
+		foreach (@args) {
+		    if ($_ =~ /[a-z,A-Z]/) {
+			($a) = ($_ =~ /^\s*(.*)\s*$/);
+			if ($a =~ /\*\*/) {
+			    ($var) = ($a =~ /\*\*(\w*)/);
+			} elsif ($a =~ /\*/) {
+			    ($var) = ($a =~ /\*(\w*)/);
+			} else {
+			    ($var) = ($a =~ /\s(\w*)/);
+			}
+			@rargs = (@rargs, $a);
+			if ($var !~ /void/) {
+			    @names = (@names, $var);
+			}
+		    }
+		}
+
+		if ($args !~ /\)/) {
+		    $args = <INC>;
+		} else {
+		    last;
+		}
+	    }
+
+	    print shift @rargs;
+	    foreach (@rargs) {
+		print ", $_";
+	    }
+	    print ") {\n";
+	    if ($ret !~ /void/) {
+		print "  $ret ret;\n";
+	    }
+	    print "  ENTER_GL();\n";
+	    if ($ret !~ /void/) {
+		print "  ret = ";
+	    } else {
+		print "  ";
+	    }
+	    print "$name(";
+
+	    $farg = shift @names;
+	    if ($farg) {
+		print "$farg";
+
+		foreach (@names) {
+		    print ", $_";
+		}
+	    }
+	    print ");\n";
+	    print "  LEAVE_GL();\n";
+	    if ($ret !~ /void/) {
+		print "  return ret;\n";
+	    }
+	    print "}\n\n";
+	}
+    }
+}
+
+close(INC);
diff --git a/dlls/opengl32/make_opengl_spec b/dlls/opengl32/make_opengl_spec
new file mode 100755
index 0000000..5858a99
--- /dev/null
+++ b/dlls/opengl32/make_opengl_spec
@@ -0,0 +1,86 @@
+#!/usr/bin/perl -w
+
+#
+# First, the basics and the wgl functions
+#
+print "
+name opengl32
+type win32
+
+@  stdcall wglCreateContext(long) wglCreateContext
+@  stdcall wglCreateLayerContext(long long) wglCreateLayerContext
+@  stdcall wglCopyContext(long long long) wglCopyContext
+@  stdcall wglDeleteContext(long) wglDeleteContext
+@  stdcall wglDescribeLayerPlane(long long long long ptr) wglDescribeLayerPlane
+@  stdcall wglGetCurrentContext() wglGetCurrentContext
+@  stdcall wglGetCurrentDC() wglGetCurrentDC
+@  stdcall wglGetLayerPaletteEntries(long long long long ptr) wglGetLayerPaletteEntries
+@  stdcall wglGetProcAddress(str) wglGetProcAddress
+@  stdcall wglMakeCurrent(long long) wglMakeCurrent
+@  stdcall wglRealizeLayerPalette(long long long) wglRealizeLayerPalette
+@  stdcall wglSetLayerPaletteEntries(long long long long ptr) wglSetLayerPaletteEntries
+@  stdcall wglShareLists(long long) wglShareLists
+@  stdcall wglSwapLayerBuffers(long long) wglSwapLayerBuffers
+@  stdcall wglUseFontBitmaps(long long long long) wglUseFontBitmaps
+@  stdcall wglUseFontOutlines(long long long long long long long) wglUseFontOutlines
+@  stub    glGetLevelParameterfv
+@  stub    glGetLevelParameteriv
+@  stub    wglUseFontBitmapsA
+@  stub    wglUseFontOutlinesA
+@  forward wglChoosePixelFormat GDI32.ChoosePixelFormat
+@  forward wglDescribePixelFormat GDI32.DescribePixelFormat
+@  forward wglGetPixelFormat GDI32.GetPixelFormat
+@  forward wglSetPixelFormat GDI32.SetPixelFormat
+@  forward wglSwapBuffers GDI32.SwapBuffers
+";
+
+#
+# Now, the functions from the include file
+#
+open(INC, "/usr/X11R6/include/GL/gl.h") || die "Could not open GL/gl.h";
+
+while ($line = <INC>) {
+    if ($line =~ /GLAPI.*GLAPIENTRY/) {
+	# Start of a function declaration
+	($name, $args) = ($line =~ /GLAPIENTRY *(.*)\((.*)/);
+	
+	# Remove all extensions except the multitexture one (see OpenGL ABI)
+	if (($name !~ /(MESA|PGI|ARB|EXT)/) ||
+	    ($name =~ /MultiTexCoord/) ||
+	    ($name =~ /ActiveTextureARB/)) {
+	    print "@  stdcall $name(";
+
+	    # Now, get the parameters
+	    while (1) {
+		@args = split /,/, $args;
+
+		foreach (@args) {
+		    if ($_ =~ /\)/) {
+			($_) = ($_ =~ /(.*)\)/);
+		    }
+
+		    if ($_ =~ /\*/) {
+			print "ptr ";
+		    } elsif ($_ =~ /[a-zA-Z]/) {
+			($type) = ($_ =~ /^ *(.*) +.*/);
+			if ($type =~ /double/) {
+			    print "double ";
+			} elsif ($type !~ /void/) {
+			    print "long ";
+			}
+		    }
+		}
+
+		if ($args !~ /\)/) {
+		    $args = <INC>;
+		} else {
+		    last;
+		}
+	    }
+	    
+	    print ") wine_$name\n";
+	}
+    }
+}
+
+close(INC);
diff --git a/dlls/opengl32/opengl32.spec b/dlls/opengl32/opengl32.spec
new file mode 100644
index 0000000..f28f7bc
--- /dev/null
+++ b/dlls/opengl32/opengl32.spec
@@ -0,0 +1,437 @@
+
+name opengl32
+type win32
+
+@  stdcall wglCreateContext(long) wglCreateContext
+@  stdcall wglCreateLayerContext(long long) wglCreateLayerContext
+@  stdcall wglCopyContext(long long long) wglCopyContext
+@  stdcall wglDeleteContext(long) wglDeleteContext
+@  stdcall wglDescribeLayerPlane(long long long long ptr) wglDescribeLayerPlane
+@  stdcall wglGetCurrentContext() wglGetCurrentContext
+@  stdcall wglGetCurrentDC() wglGetCurrentDC
+@  stdcall wglGetLayerPaletteEntries(long long long long ptr) wglGetLayerPaletteEntries
+@  stdcall wglGetProcAddress(str) wglGetProcAddress
+@  stdcall wglMakeCurrent(long long) wglMakeCurrent
+@  stdcall wglRealizeLayerPalette(long long long) wglRealizeLayerPalette
+@  stdcall wglSetLayerPaletteEntries(long long long long ptr) wglSetLayerPaletteEntries
+@  stdcall wglShareLists(long long) wglShareLists
+@  stdcall wglSwapLayerBuffers(long long) wglSwapLayerBuffers
+@  stdcall wglUseFontBitmaps(long long long long) wglUseFontBitmaps
+@  stdcall wglUseFontOutlines(long long long long long long long) wglUseFontOutlines
+@  stub    glGetLevelParameterfv
+@  stub    glGetLevelParameteriv
+@  stub    wglUseFontBitmapsA
+@  stub    wglUseFontOutlinesA
+@  forward wglChoosePixelFormat GDI32.ChoosePixelFormat
+@  forward wglDescribePixelFormat GDI32.DescribePixelFormat
+@  forward wglGetPixelFormat GDI32.GetPixelFormat
+@  forward wglSetPixelFormat GDI32.SetPixelFormat
+@  forward wglSwapBuffers GDI32.SwapBuffers
+@  stdcall glClearIndex(long ) wine_glClearIndex
+@  stdcall glClearColor(long long long long ) wine_glClearColor
+@  stdcall glClear(long ) wine_glClear
+@  stdcall glIndexMask(long ) wine_glIndexMask
+@  stdcall glColorMask(long long long long ) wine_glColorMask
+@  stdcall glAlphaFunc(long long ) wine_glAlphaFunc
+@  stdcall glBlendFunc(long long ) wine_glBlendFunc
+@  stdcall glLogicOp(long ) wine_glLogicOp
+@  stdcall glCullFace(long ) wine_glCullFace
+@  stdcall glFrontFace(long ) wine_glFrontFace
+@  stdcall glPointSize(long ) wine_glPointSize
+@  stdcall glLineWidth(long ) wine_glLineWidth
+@  stdcall glLineStipple(long long ) wine_glLineStipple
+@  stdcall glPolygonMode(long long ) wine_glPolygonMode
+@  stdcall glPolygonOffset(long long ) wine_glPolygonOffset
+@  stdcall glPolygonStipple(ptr ) wine_glPolygonStipple
+@  stdcall glGetPolygonStipple(ptr ) wine_glGetPolygonStipple
+@  stdcall glEdgeFlag(long ) wine_glEdgeFlag
+@  stdcall glEdgeFlagv(ptr ) wine_glEdgeFlagv
+@  stdcall glScissor(long long long long ) wine_glScissor
+@  stdcall glClipPlane(long ptr ) wine_glClipPlane
+@  stdcall glGetClipPlane(long ptr ) wine_glGetClipPlane
+@  stdcall glDrawBuffer(long ) wine_glDrawBuffer
+@  stdcall glReadBuffer(long ) wine_glReadBuffer
+@  stdcall glEnable(long ) wine_glEnable
+@  stdcall glDisable(long ) wine_glDisable
+@  stdcall glIsEnabled(long ) wine_glIsEnabled
+@  stdcall glEnableClientState(long ) wine_glEnableClientState
+@  stdcall glDisableClientState(long ) wine_glDisableClientState
+@  stdcall glGetBooleanv(long ptr ) wine_glGetBooleanv
+@  stdcall glGetDoublev(long ptr ) wine_glGetDoublev
+@  stdcall glGetFloatv(long ptr ) wine_glGetFloatv
+@  stdcall glGetIntegerv(long ptr ) wine_glGetIntegerv
+@  stdcall glPushAttrib(long ) wine_glPushAttrib
+@  stdcall glPopAttrib() wine_glPopAttrib
+@  stdcall glPushClientAttrib(long ) wine_glPushClientAttrib
+@  stdcall glPopClientAttrib() wine_glPopClientAttrib
+@  stdcall glRenderMode(long ) wine_glRenderMode
+@  stdcall glGetError() wine_glGetError
+@  stdcall glGetString(long ) wine_glGetString
+@  stdcall glFinish() wine_glFinish
+@  stdcall glFlush() wine_glFlush
+@  stdcall glHint(long long ) wine_glHint
+@  stdcall glClearDepth(long ) wine_glClearDepth
+@  stdcall glDepthFunc(long ) wine_glDepthFunc
+@  stdcall glDepthMask(long ) wine_glDepthMask
+@  stdcall glDepthRange(long long ) wine_glDepthRange
+@  stdcall glClearAccum(long long long long ) wine_glClearAccum
+@  stdcall glAccum(long long ) wine_glAccum
+@  stdcall glMatrixMode(long ) wine_glMatrixMode
+@  stdcall glOrtho(double double double double double double ) wine_glOrtho
+@  stdcall glFrustum(double double double double double double ) wine_glFrustum
+@  stdcall glViewport(long long long long ) wine_glViewport
+@  stdcall glPushMatrix() wine_glPushMatrix
+@  stdcall glPopMatrix() wine_glPopMatrix
+@  stdcall glLoadIdentity() wine_glLoadIdentity
+@  stdcall glLoadMatrixd(ptr ) wine_glLoadMatrixd
+@  stdcall glLoadMatrixf(ptr ) wine_glLoadMatrixf
+@  stdcall glMultMatrixd(ptr ) wine_glMultMatrixd
+@  stdcall glMultMatrixf(ptr ) wine_glMultMatrixf
+@  stdcall glRotated(double double double double ) wine_glRotated
+@  stdcall glRotatef(long long long long ) wine_glRotatef
+@  stdcall glScaled(double double double ) wine_glScaled
+@  stdcall glScalef(long long long ) wine_glScalef
+@  stdcall glTranslated(double double double ) wine_glTranslated
+@  stdcall glTranslatef(long long long ) wine_glTranslatef
+@  stdcall glIsList(long ) wine_glIsList
+@  stdcall glDeleteLists(long long ) wine_glDeleteLists
+@  stdcall glGenLists(long ) wine_glGenLists
+@  stdcall glNewList(long long ) wine_glNewList
+@  stdcall glEndList() wine_glEndList
+@  stdcall glCallList(long ) wine_glCallList
+@  stdcall glCallLists(long long ptr ) wine_glCallLists
+@  stdcall glListBase(long ) wine_glListBase
+@  stdcall glBegin(long ) wine_glBegin
+@  stdcall glEnd() wine_glEnd
+@  stdcall glVertex2d(double double ) wine_glVertex2d
+@  stdcall glVertex2f(long long ) wine_glVertex2f
+@  stdcall glVertex2i(long long ) wine_glVertex2i
+@  stdcall glVertex2s(long long ) wine_glVertex2s
+@  stdcall glVertex3d(double double double ) wine_glVertex3d
+@  stdcall glVertex3f(long long long ) wine_glVertex3f
+@  stdcall glVertex3i(long long long ) wine_glVertex3i
+@  stdcall glVertex3s(long long long ) wine_glVertex3s
+@  stdcall glVertex4d(double double double double ) wine_glVertex4d
+@  stdcall glVertex4f(long long long long ) wine_glVertex4f
+@  stdcall glVertex4i(long long long long ) wine_glVertex4i
+@  stdcall glVertex4s(long long long long ) wine_glVertex4s
+@  stdcall glVertex2dv(ptr ) wine_glVertex2dv
+@  stdcall glVertex2fv(ptr ) wine_glVertex2fv
+@  stdcall glVertex2iv(ptr ) wine_glVertex2iv
+@  stdcall glVertex2sv(ptr ) wine_glVertex2sv
+@  stdcall glVertex3dv(ptr ) wine_glVertex3dv
+@  stdcall glVertex3fv(ptr ) wine_glVertex3fv
+@  stdcall glVertex3iv(ptr ) wine_glVertex3iv
+@  stdcall glVertex3sv(ptr ) wine_glVertex3sv
+@  stdcall glVertex4dv(ptr ) wine_glVertex4dv
+@  stdcall glVertex4fv(ptr ) wine_glVertex4fv
+@  stdcall glVertex4iv(ptr ) wine_glVertex4iv
+@  stdcall glVertex4sv(ptr ) wine_glVertex4sv
+@  stdcall glNormal3b(long long long ) wine_glNormal3b
+@  stdcall glNormal3d(double double double ) wine_glNormal3d
+@  stdcall glNormal3f(long long long ) wine_glNormal3f
+@  stdcall glNormal3i(long long long ) wine_glNormal3i
+@  stdcall glNormal3s(long long long ) wine_glNormal3s
+@  stdcall glNormal3bv(ptr ) wine_glNormal3bv
+@  stdcall glNormal3dv(ptr ) wine_glNormal3dv
+@  stdcall glNormal3fv(ptr ) wine_glNormal3fv
+@  stdcall glNormal3iv(ptr ) wine_glNormal3iv
+@  stdcall glNormal3sv(ptr ) wine_glNormal3sv
+@  stdcall glIndexd(double ) wine_glIndexd
+@  stdcall glIndexf(long ) wine_glIndexf
+@  stdcall glIndexi(long ) wine_glIndexi
+@  stdcall glIndexs(long ) wine_glIndexs
+@  stdcall glIndexub(long ) wine_glIndexub
+@  stdcall glIndexdv(ptr ) wine_glIndexdv
+@  stdcall glIndexfv(ptr ) wine_glIndexfv
+@  stdcall glIndexiv(ptr ) wine_glIndexiv
+@  stdcall glIndexsv(ptr ) wine_glIndexsv
+@  stdcall glIndexubv(ptr ) wine_glIndexubv
+@  stdcall glColor3b(long long long ) wine_glColor3b
+@  stdcall glColor3d(double double double ) wine_glColor3d
+@  stdcall glColor3f(long long long ) wine_glColor3f
+@  stdcall glColor3i(long long long ) wine_glColor3i
+@  stdcall glColor3s(long long long ) wine_glColor3s
+@  stdcall glColor3ub(long long long ) wine_glColor3ub
+@  stdcall glColor3ui(long long long ) wine_glColor3ui
+@  stdcall glColor3us(long long long ) wine_glColor3us
+@  stdcall glColor4b(long long long long ) wine_glColor4b
+@  stdcall glColor4d(double double double double ) wine_glColor4d
+@  stdcall glColor4f(long long long long ) wine_glColor4f
+@  stdcall glColor4i(long long long long ) wine_glColor4i
+@  stdcall glColor4s(long long long long ) wine_glColor4s
+@  stdcall glColor4ub(long long long long ) wine_glColor4ub
+@  stdcall glColor4ui(long long long long ) wine_glColor4ui
+@  stdcall glColor4us(long long long long ) wine_glColor4us
+@  stdcall glColor3bv(ptr ) wine_glColor3bv
+@  stdcall glColor3dv(ptr ) wine_glColor3dv
+@  stdcall glColor3fv(ptr ) wine_glColor3fv
+@  stdcall glColor3iv(ptr ) wine_glColor3iv
+@  stdcall glColor3sv(ptr ) wine_glColor3sv
+@  stdcall glColor3ubv(ptr ) wine_glColor3ubv
+@  stdcall glColor3uiv(ptr ) wine_glColor3uiv
+@  stdcall glColor3usv(ptr ) wine_glColor3usv
+@  stdcall glColor4bv(ptr ) wine_glColor4bv
+@  stdcall glColor4dv(ptr ) wine_glColor4dv
+@  stdcall glColor4fv(ptr ) wine_glColor4fv
+@  stdcall glColor4iv(ptr ) wine_glColor4iv
+@  stdcall glColor4sv(ptr ) wine_glColor4sv
+@  stdcall glColor4ubv(ptr ) wine_glColor4ubv
+@  stdcall glColor4uiv(ptr ) wine_glColor4uiv
+@  stdcall glColor4usv(ptr ) wine_glColor4usv
+@  stdcall glTexCoord1d(double ) wine_glTexCoord1d
+@  stdcall glTexCoord1f(long ) wine_glTexCoord1f
+@  stdcall glTexCoord1i(long ) wine_glTexCoord1i
+@  stdcall glTexCoord1s(long ) wine_glTexCoord1s
+@  stdcall glTexCoord2d(double double ) wine_glTexCoord2d
+@  stdcall glTexCoord2f(long long ) wine_glTexCoord2f
+@  stdcall glTexCoord2i(long long ) wine_glTexCoord2i
+@  stdcall glTexCoord2s(long long ) wine_glTexCoord2s
+@  stdcall glTexCoord3d(double double double ) wine_glTexCoord3d
+@  stdcall glTexCoord3f(long long long ) wine_glTexCoord3f
+@  stdcall glTexCoord3i(long long long ) wine_glTexCoord3i
+@  stdcall glTexCoord3s(long long long ) wine_glTexCoord3s
+@  stdcall glTexCoord4d(double double double double ) wine_glTexCoord4d
+@  stdcall glTexCoord4f(long long long long ) wine_glTexCoord4f
+@  stdcall glTexCoord4i(long long long long ) wine_glTexCoord4i
+@  stdcall glTexCoord4s(long long long long ) wine_glTexCoord4s
+@  stdcall glTexCoord1dv(ptr ) wine_glTexCoord1dv
+@  stdcall glTexCoord1fv(ptr ) wine_glTexCoord1fv
+@  stdcall glTexCoord1iv(ptr ) wine_glTexCoord1iv
+@  stdcall glTexCoord1sv(ptr ) wine_glTexCoord1sv
+@  stdcall glTexCoord2dv(ptr ) wine_glTexCoord2dv
+@  stdcall glTexCoord2fv(ptr ) wine_glTexCoord2fv
+@  stdcall glTexCoord2iv(ptr ) wine_glTexCoord2iv
+@  stdcall glTexCoord2sv(ptr ) wine_glTexCoord2sv
+@  stdcall glTexCoord3dv(ptr ) wine_glTexCoord3dv
+@  stdcall glTexCoord3fv(ptr ) wine_glTexCoord3fv
+@  stdcall glTexCoord3iv(ptr ) wine_glTexCoord3iv
+@  stdcall glTexCoord3sv(ptr ) wine_glTexCoord3sv
+@  stdcall glTexCoord4dv(ptr ) wine_glTexCoord4dv
+@  stdcall glTexCoord4fv(ptr ) wine_glTexCoord4fv
+@  stdcall glTexCoord4iv(ptr ) wine_glTexCoord4iv
+@  stdcall glTexCoord4sv(ptr ) wine_glTexCoord4sv
+@  stdcall glRasterPos2d(double double ) wine_glRasterPos2d
+@  stdcall glRasterPos2f(long long ) wine_glRasterPos2f
+@  stdcall glRasterPos2i(long long ) wine_glRasterPos2i
+@  stdcall glRasterPos2s(long long ) wine_glRasterPos2s
+@  stdcall glRasterPos3d(double double double ) wine_glRasterPos3d
+@  stdcall glRasterPos3f(long long long ) wine_glRasterPos3f
+@  stdcall glRasterPos3i(long long long ) wine_glRasterPos3i
+@  stdcall glRasterPos3s(long long long ) wine_glRasterPos3s
+@  stdcall glRasterPos4d(double double double double ) wine_glRasterPos4d
+@  stdcall glRasterPos4f(long long long long ) wine_glRasterPos4f
+@  stdcall glRasterPos4i(long long long long ) wine_glRasterPos4i
+@  stdcall glRasterPos4s(long long long long ) wine_glRasterPos4s
+@  stdcall glRasterPos2dv(ptr ) wine_glRasterPos2dv
+@  stdcall glRasterPos2fv(ptr ) wine_glRasterPos2fv
+@  stdcall glRasterPos2iv(ptr ) wine_glRasterPos2iv
+@  stdcall glRasterPos2sv(ptr ) wine_glRasterPos2sv
+@  stdcall glRasterPos3dv(ptr ) wine_glRasterPos3dv
+@  stdcall glRasterPos3fv(ptr ) wine_glRasterPos3fv
+@  stdcall glRasterPos3iv(ptr ) wine_glRasterPos3iv
+@  stdcall glRasterPos3sv(ptr ) wine_glRasterPos3sv
+@  stdcall glRasterPos4dv(ptr ) wine_glRasterPos4dv
+@  stdcall glRasterPos4fv(ptr ) wine_glRasterPos4fv
+@  stdcall glRasterPos4iv(ptr ) wine_glRasterPos4iv
+@  stdcall glRasterPos4sv(ptr ) wine_glRasterPos4sv
+@  stdcall glRectd(double double double double ) wine_glRectd
+@  stdcall glRectf(long long long long ) wine_glRectf
+@  stdcall glRecti(long long long long ) wine_glRecti
+@  stdcall glRects(long long long long ) wine_glRects
+@  stdcall glRectdv(ptr ptr ) wine_glRectdv
+@  stdcall glRectfv(ptr ptr ) wine_glRectfv
+@  stdcall glRectiv(ptr ptr ) wine_glRectiv
+@  stdcall glRectsv(ptr ptr ) wine_glRectsv
+@  stdcall glVertexPointer(long long long ptr ) wine_glVertexPointer
+@  stdcall glNormalPointer(long long ptr ) wine_glNormalPointer
+@  stdcall glColorPointer(long long long ptr ) wine_glColorPointer
+@  stdcall glIndexPointer(long long ptr ) wine_glIndexPointer
+@  stdcall glTexCoordPointer(long long long ptr ) wine_glTexCoordPointer
+@  stdcall glEdgeFlagPointer(long ptr ) wine_glEdgeFlagPointer
+@  stdcall glGetPointerv(long ptr ) wine_glGetPointerv
+@  stdcall glArrayElement(long ) wine_glArrayElement
+@  stdcall glDrawArrays(long long long ) wine_glDrawArrays
+@  stdcall glDrawElements(long long long ptr ) wine_glDrawElements
+@  stdcall glInterleavedArrays(long long ptr ) wine_glInterleavedArrays
+@  stdcall glShadeModel(long ) wine_glShadeModel
+@  stdcall glLightf(long long long ) wine_glLightf
+@  stdcall glLighti(long long long ) wine_glLighti
+@  stdcall glLightfv(long long ptr ) wine_glLightfv
+@  stdcall glLightiv(long long ptr ) wine_glLightiv
+@  stdcall glGetLightfv(long long ptr ) wine_glGetLightfv
+@  stdcall glGetLightiv(long long ptr ) wine_glGetLightiv
+@  stdcall glLightModelf(long long ) wine_glLightModelf
+@  stdcall glLightModeli(long long ) wine_glLightModeli
+@  stdcall glLightModelfv(long ptr ) wine_glLightModelfv
+@  stdcall glLightModeliv(long ptr ) wine_glLightModeliv
+@  stdcall glMaterialf(long long long ) wine_glMaterialf
+@  stdcall glMateriali(long long long ) wine_glMateriali
+@  stdcall glMaterialfv(long long ptr ) wine_glMaterialfv
+@  stdcall glMaterialiv(long long ptr ) wine_glMaterialiv
+@  stdcall glGetMaterialfv(long long ptr ) wine_glGetMaterialfv
+@  stdcall glGetMaterialiv(long long ptr ) wine_glGetMaterialiv
+@  stdcall glColorMaterial(long long ) wine_glColorMaterial
+@  stdcall glPixelZoom(long long ) wine_glPixelZoom
+@  stdcall glPixelStoref(long long ) wine_glPixelStoref
+@  stdcall glPixelStorei(long long ) wine_glPixelStorei
+@  stdcall glPixelTransferf(long long ) wine_glPixelTransferf
+@  stdcall glPixelTransferi(long long ) wine_glPixelTransferi
+@  stdcall glPixelMapfv(long long ptr ) wine_glPixelMapfv
+@  stdcall glPixelMapuiv(long long ptr ) wine_glPixelMapuiv
+@  stdcall glPixelMapusv(long long ptr ) wine_glPixelMapusv
+@  stdcall glGetPixelMapfv(long ptr ) wine_glGetPixelMapfv
+@  stdcall glGetPixelMapuiv(long ptr ) wine_glGetPixelMapuiv
+@  stdcall glGetPixelMapusv(long ptr ) wine_glGetPixelMapusv
+@  stdcall glBitmap(long long long long long long ptr ) wine_glBitmap
+@  stdcall glReadPixels(long long long long long long ptr ) wine_glReadPixels
+@  stdcall glDrawPixels(long long long long ptr ) wine_glDrawPixels
+@  stdcall glCopyPixels(long long long long long ) wine_glCopyPixels
+@  stdcall glStencilFunc(long long long ) wine_glStencilFunc
+@  stdcall glStencilMask(long ) wine_glStencilMask
+@  stdcall glStencilOp(long long long ) wine_glStencilOp
+@  stdcall glClearStencil(long ) wine_glClearStencil
+@  stdcall glTexGend(long long double ) wine_glTexGend
+@  stdcall glTexGenf(long long long ) wine_glTexGenf
+@  stdcall glTexGeni(long long long ) wine_glTexGeni
+@  stdcall glTexGendv(long long ptr ) wine_glTexGendv
+@  stdcall glTexGenfv(long long ptr ) wine_glTexGenfv
+@  stdcall glTexGeniv(long long ptr ) wine_glTexGeniv
+@  stdcall glGetTexGendv(long long ptr ) wine_glGetTexGendv
+@  stdcall glGetTexGenfv(long long ptr ) wine_glGetTexGenfv
+@  stdcall glGetTexGeniv(long long ptr ) wine_glGetTexGeniv
+@  stdcall glTexEnvf(long long long ) wine_glTexEnvf
+@  stdcall glTexEnvi(long long long ) wine_glTexEnvi
+@  stdcall glTexEnvfv(long long ptr ) wine_glTexEnvfv
+@  stdcall glTexEnviv(long long ptr ) wine_glTexEnviv
+@  stdcall glGetTexEnvfv(long long ptr ) wine_glGetTexEnvfv
+@  stdcall glGetTexEnviv(long long ptr ) wine_glGetTexEnviv
+@  stdcall glTexParameterf(long long long ) wine_glTexParameterf
+@  stdcall glTexParameteri(long long long ) wine_glTexParameteri
+@  stdcall glTexParameterfv(long long ptr ) wine_glTexParameterfv
+@  stdcall glTexParameteriv(long long ptr ) wine_glTexParameteriv
+@  stdcall glGetTexParameterfv(long long ptr ) wine_glGetTexParameterfv
+@  stdcall glGetTexParameteriv(long long ptr ) wine_glGetTexParameteriv
+@  stdcall glGetTexLevelParameterfv(long long long ptr ) wine_glGetTexLevelParameterfv
+@  stdcall glGetTexLevelParameteriv(long long long ptr ) wine_glGetTexLevelParameteriv
+@  stdcall glTexImage1D(long long long long long long long ptr ) wine_glTexImage1D
+@  stdcall glTexImage2D(long long long long long long long long ptr ) wine_glTexImage2D
+@  stdcall glGetTexImage(long long long long ptr ) wine_glGetTexImage
+@  stdcall glGenTextures(long ptr ) wine_glGenTextures
+@  stdcall glDeleteTextures(long ptr ) wine_glDeleteTextures
+@  stdcall glBindTexture(long long ) wine_glBindTexture
+@  stdcall glPrioritizeTextures(long ptr ptr ) wine_glPrioritizeTextures
+@  stdcall glAreTexturesResident(long ptr ptr ) wine_glAreTexturesResident
+@  stdcall glIsTexture(long ) wine_glIsTexture
+@  stdcall glTexSubImage1D(long long long long long long ptr ) wine_glTexSubImage1D
+@  stdcall glTexSubImage2D(long long long long long long long long ptr ) wine_glTexSubImage2D
+@  stdcall glCopyTexImage1D(long long long long long long long ) wine_glCopyTexImage1D
+@  stdcall glCopyTexImage2D(long long long long long long long long ) wine_glCopyTexImage2D
+@  stdcall glCopyTexSubImage1D(long long long long long long ) wine_glCopyTexSubImage1D
+@  stdcall glCopyTexSubImage2D(long long long long long long long long ) wine_glCopyTexSubImage2D
+@  stdcall glMap1d(long double double long long ptr ) wine_glMap1d
+@  stdcall glMap1f(long long long long long ptr ) wine_glMap1f
+@  stdcall glMap2d(long double double long long double double long long ptr ) wine_glMap2d
+@  stdcall glMap2f(long long long long long long long long long ptr ) wine_glMap2f
+@  stdcall glGetMapdv(long long ptr ) wine_glGetMapdv
+@  stdcall glGetMapfv(long long ptr ) wine_glGetMapfv
+@  stdcall glGetMapiv(long long ptr ) wine_glGetMapiv
+@  stdcall glEvalCoord1d(double ) wine_glEvalCoord1d
+@  stdcall glEvalCoord1f(long ) wine_glEvalCoord1f
+@  stdcall glEvalCoord1dv(ptr ) wine_glEvalCoord1dv
+@  stdcall glEvalCoord1fv(ptr ) wine_glEvalCoord1fv
+@  stdcall glEvalCoord2d(double double ) wine_glEvalCoord2d
+@  stdcall glEvalCoord2f(long long ) wine_glEvalCoord2f
+@  stdcall glEvalCoord2dv(ptr ) wine_glEvalCoord2dv
+@  stdcall glEvalCoord2fv(ptr ) wine_glEvalCoord2fv
+@  stdcall glMapGrid1d(long double double ) wine_glMapGrid1d
+@  stdcall glMapGrid1f(long long long ) wine_glMapGrid1f
+@  stdcall glMapGrid2d(long double double long double double ) wine_glMapGrid2d
+@  stdcall glMapGrid2f(long long long long long long ) wine_glMapGrid2f
+@  stdcall glEvalPoint1(long ) wine_glEvalPoint1
+@  stdcall glEvalPoint2(long long ) wine_glEvalPoint2
+@  stdcall glEvalMesh1(long long long ) wine_glEvalMesh1
+@  stdcall glEvalMesh2(long long long long long ) wine_glEvalMesh2
+@  stdcall glFogf(long long ) wine_glFogf
+@  stdcall glFogi(long long ) wine_glFogi
+@  stdcall glFogfv(long ptr ) wine_glFogfv
+@  stdcall glFogiv(long ptr ) wine_glFogiv
+@  stdcall glFeedbackBuffer(long long ptr ) wine_glFeedbackBuffer
+@  stdcall glPassThrough(long ) wine_glPassThrough
+@  stdcall glSelectBuffer(long ptr ) wine_glSelectBuffer
+@  stdcall glInitNames() wine_glInitNames
+@  stdcall glLoadName(long ) wine_glLoadName
+@  stdcall glPushName(long ) wine_glPushName
+@  stdcall glPopName() wine_glPopName
+@  stdcall glDrawRangeElements(long long long long long ptr ) wine_glDrawRangeElements
+@  stdcall glTexImage3D(long long long long long long long long long ptr ) wine_glTexImage3D
+@  stdcall glTexSubImage3D(long long long long long long long long long long ptr ) wine_glTexSubImage3D
+@  stdcall glCopyTexSubImage3D(long long long long long long long long long ) wine_glCopyTexSubImage3D
+@  stdcall glColorTable(long long long long long ptr ) wine_glColorTable
+@  stdcall glColorSubTable(long long long long long ptr ) wine_glColorSubTable
+@  stdcall glColorTableParameteriv(long long ptr ) wine_glColorTableParameteriv
+@  stdcall glColorTableParameterfv(long long ptr ) wine_glColorTableParameterfv
+@  stdcall glCopyColorSubTable(long long long long long ) wine_glCopyColorSubTable
+@  stdcall glCopyColorTable(long long long long long ) wine_glCopyColorTable
+@  stdcall glGetColorTable(long long long ptr ) wine_glGetColorTable
+@  stdcall glGetColorTableParameterfv(long long ptr ) wine_glGetColorTableParameterfv
+@  stdcall glGetColorTableParameteriv(long long ptr ) wine_glGetColorTableParameteriv
+@  stdcall glBlendEquation(long ) wine_glBlendEquation
+@  stdcall glBlendColor(long long long long ) wine_glBlendColor
+@  stdcall glHistogram(long long long long ) wine_glHistogram
+@  stdcall glResetHistogram(long ) wine_glResetHistogram
+@  stdcall glGetHistogram(long long long long ptr ) wine_glGetHistogram
+@  stdcall glGetHistogramParameterfv(long long ptr ) wine_glGetHistogramParameterfv
+@  stdcall glGetHistogramParameteriv(long long ptr ) wine_glGetHistogramParameteriv
+@  stdcall glMinmax(long long long ) wine_glMinmax
+@  stdcall glResetMinmax(long ) wine_glResetMinmax
+@  stdcall glGetMinmax(long long long long ptr ) wine_glGetMinmax
+@  stdcall glGetMinmaxParameterfv(long long ptr ) wine_glGetMinmaxParameterfv
+@  stdcall glGetMinmaxParameteriv(long long ptr ) wine_glGetMinmaxParameteriv
+@  stdcall glConvolutionFilter1D(long long long long long ptr ) wine_glConvolutionFilter1D
+@  stdcall glConvolutionFilter2D(long long long long long long ptr ) wine_glConvolutionFilter2D
+@  stdcall glConvolutionParameterf(long long long ) wine_glConvolutionParameterf
+@  stdcall glConvolutionParameterfv(long long ptr ) wine_glConvolutionParameterfv
+@  stdcall glConvolutionParameteri(long long long ) wine_glConvolutionParameteri
+@  stdcall glConvolutionParameteriv(long long ptr ) wine_glConvolutionParameteriv
+@  stdcall glCopyConvolutionFilter1D(long long long long long ) wine_glCopyConvolutionFilter1D
+@  stdcall glCopyConvolutionFilter2D(long long long long long long ) wine_glCopyConvolutionFilter2D
+@  stdcall glGetConvolutionFilter(long long long ptr ) wine_glGetConvolutionFilter
+@  stdcall glGetConvolutionParameterfv(long long ptr ) wine_glGetConvolutionParameterfv
+@  stdcall glGetConvolutionParameteriv(long long ptr ) wine_glGetConvolutionParameteriv
+@  stdcall glSeparableFilter2D(long long long long long long ptr ptr ) wine_glSeparableFilter2D
+@  stdcall glGetSeparableFilter(long long long ptr ptr ptr ) wine_glGetSeparableFilter
+@  stdcall glActiveTextureARB(long ) wine_glActiveTextureARB
+@  stdcall glClientActiveTextureARB(long ) wine_glClientActiveTextureARB
+@  stdcall glMultiTexCoord1dARB(long double ) wine_glMultiTexCoord1dARB
+@  stdcall glMultiTexCoord1dvARB(long ptr ) wine_glMultiTexCoord1dvARB
+@  stdcall glMultiTexCoord1fARB(long long ) wine_glMultiTexCoord1fARB
+@  stdcall glMultiTexCoord1fvARB(long ptr ) wine_glMultiTexCoord1fvARB
+@  stdcall glMultiTexCoord1iARB(long long ) wine_glMultiTexCoord1iARB
+@  stdcall glMultiTexCoord1ivARB(long ptr ) wine_glMultiTexCoord1ivARB
+@  stdcall glMultiTexCoord1sARB(long long ) wine_glMultiTexCoord1sARB
+@  stdcall glMultiTexCoord1svARB(long ptr ) wine_glMultiTexCoord1svARB
+@  stdcall glMultiTexCoord2dARB(long double double ) wine_glMultiTexCoord2dARB
+@  stdcall glMultiTexCoord2dvARB(long ptr ) wine_glMultiTexCoord2dvARB
+@  stdcall glMultiTexCoord2fARB(long long long ) wine_glMultiTexCoord2fARB
+@  stdcall glMultiTexCoord2fvARB(long ptr ) wine_glMultiTexCoord2fvARB
+@  stdcall glMultiTexCoord2iARB(long long long ) wine_glMultiTexCoord2iARB
+@  stdcall glMultiTexCoord2ivARB(long ptr ) wine_glMultiTexCoord2ivARB
+@  stdcall glMultiTexCoord2sARB(long long long ) wine_glMultiTexCoord2sARB
+@  stdcall glMultiTexCoord2svARB(long ptr ) wine_glMultiTexCoord2svARB
+@  stdcall glMultiTexCoord3dARB(long double double double ) wine_glMultiTexCoord3dARB
+@  stdcall glMultiTexCoord3dvARB(long ptr ) wine_glMultiTexCoord3dvARB
+@  stdcall glMultiTexCoord3fARB(long long long long ) wine_glMultiTexCoord3fARB
+@  stdcall glMultiTexCoord3fvARB(long ptr ) wine_glMultiTexCoord3fvARB
+@  stdcall glMultiTexCoord3iARB(long long long long ) wine_glMultiTexCoord3iARB
+@  stdcall glMultiTexCoord3ivARB(long ptr ) wine_glMultiTexCoord3ivARB
+@  stdcall glMultiTexCoord3sARB(long long long long ) wine_glMultiTexCoord3sARB
+@  stdcall glMultiTexCoord3svARB(long ptr ) wine_glMultiTexCoord3svARB
+@  stdcall glMultiTexCoord4dARB(long double double double double ) wine_glMultiTexCoord4dARB
+@  stdcall glMultiTexCoord4dvARB(long ptr ) wine_glMultiTexCoord4dvARB
+@  stdcall glMultiTexCoord4fARB(long long long long long ) wine_glMultiTexCoord4fARB
+@  stdcall glMultiTexCoord4fvARB(long ptr ) wine_glMultiTexCoord4fvARB
+@  stdcall glMultiTexCoord4iARB(long long long long long ) wine_glMultiTexCoord4iARB
+@  stdcall glMultiTexCoord4ivARB(long ptr ) wine_glMultiTexCoord4ivARB
+@  stdcall glMultiTexCoord4sARB(long long long long long ) wine_glMultiTexCoord4sARB
+@  stdcall glMultiTexCoord4svARB(long ptr ) wine_glMultiTexCoord4svARB
diff --git a/dlls/opengl32/opengl_ext.c b/dlls/opengl32/opengl_ext.c
new file mode 100644
index 0000000..ac1ee7f
--- /dev/null
+++ b/dlls/opengl32/opengl_ext.c
@@ -0,0 +1,2924 @@
+
+/* Auto-generated file... Do not edit ! */
+
+#include "config.h"
+#include "wine_gl.h"
+
+#include "opengl_ext.h"
+
+/* These will be filled during a wglGetProcAddress call */
+void (*func_glApplyTextureEXT)(GLenum) = (void *) 0xdeadbeef;
+GLboolean (*func_glAreTexturesResidentEXT)(GLsizei,  const GLuint *,  GLboolean *) = (void *) 0xdeadbeef;
+void (*func_glArrayElementEXT)(GLint) = (void *) 0xdeadbeef;
+void (*func_glBindTextureEXT)(GLenum,  GLuint) = (void *) 0xdeadbeef;
+void (*func_glBinormal3b)(GLbyte,  GLbyte,  GLbyte) = (void *) 0xdeadbeef;
+void (*func_glBinormal3bv)(const GLbyte *) = (void *) 0xdeadbeef;
+void (*func_glBinormal3d)(GLdouble,  GLdouble,  GLdouble) = (void *) 0xdeadbeef;
+void (*func_glBinormal3dv)(const GLdouble *) = (void *) 0xdeadbeef;
+void (*func_glBinormal3f)(GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glBinormal3fv)(const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glBinormal3i)(GLint,  GLint,  GLint) = (void *) 0xdeadbeef;
+void (*func_glBinormal3iv)(const GLint *) = (void *) 0xdeadbeef;
+void (*func_glBinormal3s)(GLshort,  GLshort,  GLshort) = (void *) 0xdeadbeef;
+void (*func_glBinormal3sv)(const GLshort *) = (void *) 0xdeadbeef;
+void (*func_glBinormalPointerEXT)(GLenum,  GLsizei,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glBlendColorEXT)(GLclampf,  GLclampf,  GLclampf,  GLclampf) = (void *) 0xdeadbeef;
+void (*func_glBlendEquationEXT)(GLenum) = (void *) 0xdeadbeef;
+void (*func_glBlendFuncSeparateEXT)(GLenum,  GLenum,  GLenum,  GLenum) = (void *) 0xdeadbeef;
+void (*func_glColor3fVertex3fSUN)(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glColor3fVertex3fvSUN)(const GLfloat *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glColor4fNormal3fVertex3fSUN)(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glColor4fNormal3fVertex3fvSUN)(const GLfloat *,  const GLfloat *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glColor4ubVertex2fSUN)(GLubyte,  GLubyte,  GLubyte,  GLubyte,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glColor4ubVertex2fvSUN)(const GLubyte *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glColor4ubVertex3fSUN)(GLubyte,  GLubyte,  GLubyte,  GLubyte,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glColor4ubVertex3fvSUN)(const GLubyte *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glColorPointerEXT)(GLint,  GLenum,  GLsizei,  GLsizei,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glColorPointerListIBM)(GLint,  GLenum,  GLint,  const GLvoid* *,  GLint) = (void *) 0xdeadbeef;
+void (*func_glColorPointervINTEL)(GLint,  GLenum,  const GLvoid* *) = (void *) 0xdeadbeef;
+void (*func_glColorSubTableEXT)(GLenum,  GLsizei,  GLsizei,  GLenum,  GLenum,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glColorTableEXT)(GLenum,  GLenum,  GLsizei,  GLenum,  GLenum,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glColorTableParameterfvSGI)(GLenum,  GLenum,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glColorTableParameterivSGI)(GLenum,  GLenum,  const GLint *) = (void *) 0xdeadbeef;
+void (*func_glColorTableSGI)(GLenum,  GLenum,  GLsizei,  GLenum,  GLenum,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glCombinerInputNV)(GLenum,  GLenum,  GLenum,  GLenum,  GLenum,  GLenum) = (void *) 0xdeadbeef;
+void (*func_glCombinerOutputNV)(GLenum,  GLenum,  GLenum,  GLenum,  GLenum,  GLenum,  GLenum,  GLboolean,  GLboolean,  GLboolean) = (void *) 0xdeadbeef;
+void (*func_glCombinerParameterfNV)(GLenum,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glCombinerParameterfvNV)(GLenum,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glCombinerParameteriNV)(GLenum,  GLint) = (void *) 0xdeadbeef;
+void (*func_glCombinerParameterivNV)(GLenum,  const GLint *) = (void *) 0xdeadbeef;
+void (*func_glCompressedTexImage1DARB)(GLenum,  GLint,  GLenum,  GLsizei,  GLint,  GLsizei,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glCompressedTexImage2DARB)(GLenum,  GLint,  GLenum,  GLsizei,  GLsizei,  GLint,  GLsizei,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glCompressedTexImage3DARB)(GLenum,  GLint,  GLenum,  GLsizei,  GLsizei,  GLsizei,  GLint,  GLsizei,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glCompressedTexSubImage1DARB)(GLenum,  GLint,  GLint,  GLsizei,  GLenum,  GLsizei,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glCompressedTexSubImage2DARB)(GLenum,  GLint,  GLint,  GLint,  GLsizei,  GLsizei,  GLenum,  GLsizei,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glCompressedTexSubImage3DARB)(GLenum,  GLint,  GLint,  GLint,  GLint,  GLsizei,  GLsizei,  GLsizei,  GLenum,  GLsizei,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glConvolutionFilter1DEXT)(GLenum,  GLenum,  GLsizei,  GLenum,  GLenum,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glConvolutionFilter2DEXT)(GLenum,  GLenum,  GLsizei,  GLsizei,  GLenum,  GLenum,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glConvolutionParameterfEXT)(GLenum,  GLenum,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glConvolutionParameterfvEXT)(GLenum,  GLenum,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glConvolutionParameteriEXT)(GLenum,  GLenum,  GLint) = (void *) 0xdeadbeef;
+void (*func_glConvolutionParameterivEXT)(GLenum,  GLenum,  const GLint *) = (void *) 0xdeadbeef;
+void (*func_glCopyColorSubTableEXT)(GLenum,  GLsizei,  GLint,  GLint,  GLsizei) = (void *) 0xdeadbeef;
+void (*func_glCopyColorTableSGI)(GLenum,  GLenum,  GLint,  GLint,  GLsizei) = (void *) 0xdeadbeef;
+void (*func_glCopyConvolutionFilter1DEXT)(GLenum,  GLenum,  GLint,  GLint,  GLsizei) = (void *) 0xdeadbeef;
+void (*func_glCopyConvolutionFilter2DEXT)(GLenum,  GLenum,  GLint,  GLint,  GLsizei,  GLsizei) = (void *) 0xdeadbeef;
+void (*func_glCopyTexImage1DEXT)(GLenum,  GLint,  GLenum,  GLint,  GLint,  GLsizei,  GLint) = (void *) 0xdeadbeef;
+void (*func_glCopyTexImage2DEXT)(GLenum,  GLint,  GLenum,  GLint,  GLint,  GLsizei,  GLsizei,  GLint) = (void *) 0xdeadbeef;
+void (*func_glCopyTexSubImage1DEXT)(GLenum,  GLint,  GLint,  GLint,  GLint,  GLsizei) = (void *) 0xdeadbeef;
+void (*func_glCopyTexSubImage2DEXT)(GLenum,  GLint,  GLint,  GLint,  GLint,  GLint,  GLsizei,  GLsizei) = (void *) 0xdeadbeef;
+void (*func_glCopyTexSubImage3DEXT)(GLenum,  GLint,  GLint,  GLint,  GLint,  GLint,  GLint,  GLsizei,  GLsizei) = (void *) 0xdeadbeef;
+void (*func_glCullParameterdvEXT)(GLenum,  GLdouble *) = (void *) 0xdeadbeef;
+void (*func_glCullParameterfvEXT)(GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glDeleteTexturesEXT)(GLsizei,  const GLuint *) = (void *) 0xdeadbeef;
+void (*func_glDetailTexFuncSGIS)(GLenum,  GLsizei,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glDrawArraysEXT)(GLenum,  GLint,  GLsizei) = (void *) 0xdeadbeef;
+void (*func_glDrawRangeElementsEXT)(GLenum,  GLuint,  GLuint,  GLsizei,  GLenum,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glEdgeFlagPointerEXT)(GLsizei,  GLsizei,  const GLboolean *) = (void *) 0xdeadbeef;
+void (*func_glEdgeFlagPointerListIBM)(GLint,  const GLboolean* *,  GLint) = (void *) 0xdeadbeef;
+void (*func_glFinalCombinerInputNV)(GLenum,  GLenum,  GLenum,  GLenum) = (void *) 0xdeadbeef;
+void (*func_glFinishTextureSUNX)(void) = (void *) 0xdeadbeef;
+void (*func_glFlushRasterSGIX)(void) = (void *) 0xdeadbeef;
+void (*func_glFlushVertexArrayRangeNV)(void) = (void *) 0xdeadbeef;
+void (*func_glFogCoordPointerEXT)(GLenum,  GLsizei,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glFogCoordPointerListIBM)(GLenum,  GLint,  const GLvoid* *,  GLint) = (void *) 0xdeadbeef;
+void (*func_glFogCoorddEXT)(GLdouble) = (void *) 0xdeadbeef;
+void (*func_glFogCoorddvEXT)(const GLdouble *) = (void *) 0xdeadbeef;
+void (*func_glFogCoordfEXT)(GLfloat) = (void *) 0xdeadbeef;
+void (*func_glFogCoordfvEXT)(const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glFogFuncSGIS)(GLsizei,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glFragmentColorMaterialSGIX)(GLenum,  GLenum) = (void *) 0xdeadbeef;
+void (*func_glFragmentLightModelfSGIX)(GLenum,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glFragmentLightModelfvSGIX)(GLenum,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glFragmentLightModeliSGIX)(GLenum,  GLint) = (void *) 0xdeadbeef;
+void (*func_glFragmentLightModelivSGIX)(GLenum,  const GLint *) = (void *) 0xdeadbeef;
+void (*func_glFragmentLightfSGIX)(GLenum,  GLenum,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glFragmentLightfvSGIX)(GLenum,  GLenum,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glFragmentLightiSGIX)(GLenum,  GLenum,  GLint) = (void *) 0xdeadbeef;
+void (*func_glFragmentLightivSGIX)(GLenum,  GLenum,  const GLint *) = (void *) 0xdeadbeef;
+void (*func_glFragmentMaterialfSGIX)(GLenum,  GLenum,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glFragmentMaterialfvSGIX)(GLenum,  GLenum,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glFragmentMaterialiSGIX)(GLenum,  GLenum,  GLint) = (void *) 0xdeadbeef;
+void (*func_glFragmentMaterialivSGIX)(GLenum,  GLenum,  const GLint *) = (void *) 0xdeadbeef;
+void (*func_glFrameZoomSGIX)(GLint) = (void *) 0xdeadbeef;
+void (*func_glGenTexturesEXT)(GLsizei,  GLuint *) = (void *) 0xdeadbeef;
+void (*func_glGetColorTableEXT)(GLenum,  GLenum,  GLenum,  GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glGetColorTableParameterfvEXT)(GLenum,  GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGetColorTableParameterfvSGI)(GLenum,  GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGetColorTableParameterivEXT)(GLenum,  GLenum,  GLint *) = (void *) 0xdeadbeef;
+void (*func_glGetColorTableParameterivSGI)(GLenum,  GLenum,  GLint *) = (void *) 0xdeadbeef;
+void (*func_glGetColorTableSGI)(GLenum,  GLenum,  GLenum,  GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glGetCombinerInputParameterfvNV)(GLenum,  GLenum,  GLenum,  GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGetCombinerInputParameterivNV)(GLenum,  GLenum,  GLenum,  GLenum,  GLint *) = (void *) 0xdeadbeef;
+void (*func_glGetCombinerOutputParameterfvNV)(GLenum,  GLenum,  GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGetCombinerOutputParameterivNV)(GLenum,  GLenum,  GLenum,  GLint *) = (void *) 0xdeadbeef;
+void (*func_glGetCompressedTexImageARB)(GLenum,  GLint,  void *) = (void *) 0xdeadbeef;
+void (*func_glGetConvolutionFilterEXT)(GLenum,  GLenum,  GLenum,  GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glGetConvolutionParameterfvEXT)(GLenum,  GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGetConvolutionParameterivEXT)(GLenum,  GLenum,  GLint *) = (void *) 0xdeadbeef;
+void (*func_glGetDetailTexFuncSGIS)(GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGetFinalCombinerInputParameterfvNV)(GLenum,  GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGetFinalCombinerInputParameterivNV)(GLenum,  GLenum,  GLint *) = (void *) 0xdeadbeef;
+void (*func_glGetFogFuncSGIS)(const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGetFragmentLightfvSGIX)(GLenum,  GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGetFragmentLightivSGIX)(GLenum,  GLenum,  GLint *) = (void *) 0xdeadbeef;
+void (*func_glGetFragmentMaterialfvSGIX)(GLenum,  GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGetFragmentMaterialivSGIX)(GLenum,  GLenum,  GLint *) = (void *) 0xdeadbeef;
+void (*func_glGetHistogramEXT)(GLenum,  GLboolean,  GLenum,  GLenum,  GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glGetHistogramParameterfvEXT)(GLenum,  GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGetHistogramParameterivEXT)(GLenum,  GLenum,  GLint *) = (void *) 0xdeadbeef;
+void (*func_glGetImageTransformParameterfvHP)(GLenum,  GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGetImageTransformParameterivHP)(GLenum,  GLenum,  GLint *) = (void *) 0xdeadbeef;
+GLint (*func_glGetInstrumentsSGIX)(void) = (void *) 0xdeadbeef;
+void (*func_glGetListParameterfvSGIX)(GLuint,  GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGetListParameterivSGIX)(GLuint,  GLenum,  GLint *) = (void *) 0xdeadbeef;
+void (*func_glGetMinmaxEXT)(GLenum,  GLboolean,  GLenum,  GLenum,  GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glGetMinmaxParameterfvEXT)(GLenum,  GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGetMinmaxParameterivEXT)(GLenum,  GLenum,  GLint *) = (void *) 0xdeadbeef;
+void (*func_glGetPixelTexGenParameterfvSGIS)(GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGetPixelTexGenParameterivSGIS)(GLenum,  GLint *) = (void *) 0xdeadbeef;
+void (*func_glGetPointervEXT)(GLenum,  GLvoid* *) = (void *) 0xdeadbeef;
+void (*func_glGetSeparableFilterEXT)(GLenum,  GLenum,  GLenum,  GLvoid *,  GLvoid *,  GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glGetSharpenTexFuncSGIS)(GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGetTexFilterFuncSGIS)(GLenum,  GLenum,  GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glGlobalAlphaFactorbSUN)(GLbyte) = (void *) 0xdeadbeef;
+void (*func_glGlobalAlphaFactordSUN)(GLdouble) = (void *) 0xdeadbeef;
+void (*func_glGlobalAlphaFactorfSUN)(GLfloat) = (void *) 0xdeadbeef;
+void (*func_glGlobalAlphaFactoriSUN)(GLint) = (void *) 0xdeadbeef;
+void (*func_glGlobalAlphaFactorsSUN)(GLshort) = (void *) 0xdeadbeef;
+void (*func_glGlobalAlphaFactorubSUN)(GLubyte) = (void *) 0xdeadbeef;
+void (*func_glGlobalAlphaFactoruiSUN)(GLuint) = (void *) 0xdeadbeef;
+void (*func_glGlobalAlphaFactorusSUN)(GLushort) = (void *) 0xdeadbeef;
+void (*func_glHintPGI)(GLenum,  GLint) = (void *) 0xdeadbeef;
+void (*func_glHistogramEXT)(GLenum,  GLsizei,  GLenum,  GLboolean) = (void *) 0xdeadbeef;
+void (*func_glImageTransformParameterfHP)(GLenum,  GLenum,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glImageTransformParameterfvHP)(GLenum,  GLenum,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glImageTransformParameteriHP)(GLenum,  GLenum,  GLint) = (void *) 0xdeadbeef;
+void (*func_glImageTransformParameterivHP)(GLenum,  GLenum,  const GLint *) = (void *) 0xdeadbeef;
+void (*func_glIndexFuncEXT)(GLenum,  GLclampf) = (void *) 0xdeadbeef;
+void (*func_glIndexMaterialEXT)(GLenum,  GLenum) = (void *) 0xdeadbeef;
+void (*func_glIndexPointerEXT)(GLenum,  GLsizei,  GLsizei,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glIndexPointerListIBM)(GLenum,  GLint,  const GLvoid* *,  GLint) = (void *) 0xdeadbeef;
+void (*func_glInstrumentsBufferSGIX)(GLsizei,  GLint *) = (void *) 0xdeadbeef;
+GLboolean (*func_glIsTextureEXT)(GLuint) = (void *) 0xdeadbeef;
+void (*func_glLightEnviSGIX)(GLenum,  GLint) = (void *) 0xdeadbeef;
+void (*func_glListParameterfSGIX)(GLuint,  GLenum,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glListParameterfvSGIX)(GLuint,  GLenum,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glListParameteriSGIX)(GLuint,  GLenum,  GLint) = (void *) 0xdeadbeef;
+void (*func_glListParameterivSGIX)(GLuint,  GLenum,  const GLint *) = (void *) 0xdeadbeef;
+void (*func_glLoadTransposeMatrixdARB)(const GLdouble *) = (void *) 0xdeadbeef;
+void (*func_glLoadTransposeMatrixfARB)(const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glLockArraysEXT)(GLint,  GLsizei) = (void *) 0xdeadbeef;
+void (*func_glMinmaxEXT)(GLenum,  GLenum,  GLboolean) = (void *) 0xdeadbeef;
+void (*func_glMultTransposeMatrixdARB)(const GLdouble *) = (void *) 0xdeadbeef;
+void (*func_glMultTransposeMatrixfARB)(const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glMultiDrawArraysEXT)(GLenum,  GLint *,  GLsizei *,  GLsizei) = (void *) 0xdeadbeef;
+void (*func_glMultiDrawElementsEXT)(GLenum,  const GLsizei *,  GLenum,  const GLvoid* *,  GLsizei) = (void *) 0xdeadbeef;
+void (*func_glMultiModeDrawArraysIBM)(GLenum,  const GLint *,  const GLsizei *,  GLsizei,  GLint) = (void *) 0xdeadbeef;
+void (*func_glMultiModeDrawElementsIBM)(const GLenum *,  const GLsizei *,  GLenum,  const GLvoid* *,  GLsizei,  GLint) = (void *) 0xdeadbeef;
+void (*func_glNormal3fVertex3fSUN)(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glNormal3fVertex3fvSUN)(const GLfloat *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glNormalPointerEXT)(GLenum,  GLsizei,  GLsizei,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glNormalPointerListIBM)(GLenum,  GLint,  const GLvoid* *,  GLint) = (void *) 0xdeadbeef;
+void (*func_glNormalPointervINTEL)(GLenum,  const GLvoid* *) = (void *) 0xdeadbeef;
+void (*func_glPixelTexGenParameterfSGIS)(GLenum,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glPixelTexGenParameterfvSGIS)(GLenum,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glPixelTexGenParameteriSGIS)(GLenum,  GLint) = (void *) 0xdeadbeef;
+void (*func_glPixelTexGenParameterivSGIS)(GLenum,  const GLint *) = (void *) 0xdeadbeef;
+void (*func_glPixelTexGenSGIX)(GLenum) = (void *) 0xdeadbeef;
+void (*func_glPixelTransformParameterfEXT)(GLenum,  GLenum,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glPixelTransformParameterfvEXT)(GLenum,  GLenum,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glPixelTransformParameteriEXT)(GLenum,  GLenum,  GLint) = (void *) 0xdeadbeef;
+void (*func_glPixelTransformParameterivEXT)(GLenum,  GLenum,  const GLint *) = (void *) 0xdeadbeef;
+void (*func_glPointParameterfEXT)(GLenum,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glPointParameterfSGIS)(GLenum,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glPointParameterfvEXT)(GLenum,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glPointParameterfvSGIS)(GLenum,  const GLfloat *) = (void *) 0xdeadbeef;
+GLint (*func_glPollInstrumentsSGIX)(GLint *) = (void *) 0xdeadbeef;
+void (*func_glPolygonOffsetEXT)(GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glPrioritizeTexturesEXT)(GLsizei,  const GLuint *,  const GLclampf *) = (void *) 0xdeadbeef;
+void (*func_glReadInstrumentsSGIX)(GLint) = (void *) 0xdeadbeef;
+void (*func_glReferencePlaneSGIX)(const GLdouble *) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodePointer)(GLenum,  GLsizei,  const GLvoid* *) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeubSUN)(GLubyte) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeubvSUN)(const GLubyte *) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiColor3fVertex3fSUN)(GLenum,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiColor3fVertex3fvSUN)(const GLenum *,  const GLfloat *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiColor4fNormal3fVertex3fSUN)(GLenum,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiColor4fNormal3fVertex3fvSUN)(const GLenum *,  const GLfloat *,  const GLfloat *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiColor4ubVertex3fSUN)(GLenum,  GLubyte,  GLubyte,  GLubyte,  GLubyte,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiColor4ubVertex3fvSUN)(const GLenum *,  const GLubyte *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiNormal3fVertex3fSUN)(GLenum,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiNormal3fVertex3fvSUN)(const GLenum *,  const GLfloat *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiSUN)(GLuint) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN)(GLenum,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN)(const GLenum *,  const GLfloat *,  const GLfloat *,  const GLfloat *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN)(GLenum,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN)(const GLenum *,  const GLfloat *,  const GLfloat *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiTexCoord2fVertex3fSUN)(GLenum,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiTexCoord2fVertex3fvSUN)(const GLenum *,  const GLfloat *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiVertex3fSUN)(GLenum,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuiVertex3fvSUN)(const GLenum *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeuivSUN)(const GLuint *) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeusSUN)(GLushort) = (void *) 0xdeadbeef;
+void (*func_glReplacementCodeusvSUN)(const GLushort *) = (void *) 0xdeadbeef;
+void (*func_glResetHistogramEXT)(GLenum) = (void *) 0xdeadbeef;
+void (*func_glResetMinmaxEXT)(GLenum) = (void *) 0xdeadbeef;
+void (*func_glResizeBuffersMESA)(void) = (void *) 0xdeadbeef;
+void (*func_glSampleCoverageARB)(GLclampf,  GLboolean) = (void *) 0xdeadbeef;
+void (*func_glSampleMaskEXT)(GLclampf,  GLboolean) = (void *) 0xdeadbeef;
+void (*func_glSampleMaskSGIS)(GLclampf,  GLboolean) = (void *) 0xdeadbeef;
+void (*func_glSamplePassARB)(GLenum) = (void *) 0xdeadbeef;
+void (*func_glSamplePatternEXT)(GLenum) = (void *) 0xdeadbeef;
+void (*func_glSamplePatternSGIS)(GLenum) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColor3bEXT)(GLbyte,  GLbyte,  GLbyte) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColor3bvEXT)(const GLbyte *) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColor3dEXT)(GLdouble,  GLdouble,  GLdouble) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColor3dvEXT)(const GLdouble *) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColor3fEXT)(GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColor3fvEXT)(const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColor3iEXT)(GLint,  GLint,  GLint) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColor3ivEXT)(const GLint *) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColor3sEXT)(GLshort,  GLshort,  GLshort) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColor3svEXT)(const GLshort *) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColor3ubEXT)(GLubyte,  GLubyte,  GLubyte) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColor3ubvEXT)(const GLubyte *) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColor3uiEXT)(GLuint,  GLuint,  GLuint) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColor3uivEXT)(const GLuint *) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColor3usEXT)(GLushort,  GLushort,  GLushort) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColor3usvEXT)(const GLushort *) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColorPointerEXT)(GLint,  GLenum,  GLsizei,  GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glSecondaryColorPointerListIBM)(GLint,  GLenum,  GLint,  const GLvoid* *,  GLint) = (void *) 0xdeadbeef;
+void (*func_glSeparableFilter2DEXT)(GLenum,  GLenum,  GLsizei,  GLsizei,  GLenum,  GLenum,  const GLvoid *,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glSharpenTexFuncSGIS)(GLenum,  GLsizei,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glSpriteParameterfSGIX)(GLenum,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glSpriteParameterfvSGIX)(GLenum,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glSpriteParameteriSGIX)(GLenum,  GLint) = (void *) 0xdeadbeef;
+void (*func_glSpriteParameterivSGIX)(GLenum,  const GLint *) = (void *) 0xdeadbeef;
+void (*func_glStartInstrumentsSGIX)(void) = (void *) 0xdeadbeef;
+void (*func_glStopInstrumentsSGIX)(GLint) = (void *) 0xdeadbeef;
+void (*func_glTagSampleBufferSGIX)(void) = (void *) 0xdeadbeef;
+void (*func_glTangent3b)(GLbyte,  GLbyte,  GLbyte) = (void *) 0xdeadbeef;
+void (*func_glTangent3bv)(const GLbyte *) = (void *) 0xdeadbeef;
+void (*func_glTangent3d)(GLdouble,  GLdouble,  GLdouble) = (void *) 0xdeadbeef;
+void (*func_glTangent3dv)(const GLdouble *) = (void *) 0xdeadbeef;
+void (*func_glTangent3f)(GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glTangent3fv)(const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glTangent3i)(GLint,  GLint,  GLint) = (void *) 0xdeadbeef;
+void (*func_glTangent3iv)(const GLint *) = (void *) 0xdeadbeef;
+void (*func_glTangent3s)(GLshort,  GLshort,  GLshort) = (void *) 0xdeadbeef;
+void (*func_glTangent3sv)(const GLshort *) = (void *) 0xdeadbeef;
+void (*func_glTangentPointerEXT)(GLenum,  GLsizei,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glTbufferMask3DFX)(GLuint) = (void *) 0xdeadbeef;
+void (*func_glTexCoord2fColor3fVertex3fSUN)(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glTexCoord2fColor3fVertex3fvSUN)(const GLfloat *,  const GLfloat *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glTexCoord2fColor4fNormal3fVertex3fSUN)(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glTexCoord2fColor4fNormal3fVertex3fvSUN)(const GLfloat *,  const GLfloat *,  const GLfloat *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glTexCoord2fColor4ubVertex3fSUN)(GLfloat,  GLfloat,  GLubyte,  GLubyte,  GLubyte,  GLubyte,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glTexCoord2fColor4ubVertex3fvSUN)(const GLfloat *,  const GLubyte *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glTexCoord2fNormal3fVertex3fSUN)(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glTexCoord2fNormal3fVertex3fvSUN)(const GLfloat *,  const GLfloat *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glTexCoord2fVertex3fSUN)(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glTexCoord2fVertex3fvSUN)(const GLfloat *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glTexCoord4fColor4fNormal3fVertex4fSUN)(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glTexCoord4fColor4fNormal3fVertex4fvSUN)(const GLfloat *,  const GLfloat *,  const GLfloat *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glTexCoord4fVertex4fSUN)(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glTexCoord4fVertex4fvSUN)(const GLfloat *,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glTexCoordPointerEXT)(GLint,  GLenum,  GLsizei,  GLsizei,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glTexCoordPointerListIBM)(GLint,  GLenum,  GLint,  const GLvoid* *,  GLint) = (void *) 0xdeadbeef;
+void (*func_glTexCoordPointervINTEL)(GLint,  GLenum,  const GLvoid* *) = (void *) 0xdeadbeef;
+void (*func_glTexFilterFuncSGIS)(GLenum,  GLenum,  GLsizei,  const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glTexImage3DEXT)(GLenum,  GLint,  GLenum,  GLsizei,  GLsizei,  GLsizei,  GLint,  GLenum,  GLenum,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glTexImage4DSGIS)(GLenum,  GLint,  GLenum,  GLsizei,  GLsizei,  GLsizei,  GLsizei,  GLint,  GLenum,  GLenum,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glTexSubImage1DEXT)(GLenum,  GLint,  GLint,  GLsizei,  GLenum,  GLenum,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glTexSubImage2DEXT)(GLenum,  GLint,  GLint,  GLint,  GLsizei,  GLsizei,  GLenum,  GLenum,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glTexSubImage3DEXT)(GLenum,  GLint,  GLint,  GLint,  GLint,  GLsizei,  GLsizei,  GLsizei,  GLenum,  GLenum,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glTexSubImage4DSGIS)(GLenum,  GLint,  GLint,  GLint,  GLint,  GLint,  GLsizei,  GLsizei,  GLsizei,  GLsizei,  GLenum,  GLenum,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glTextureLightEXT)(GLenum) = (void *) 0xdeadbeef;
+void (*func_glTextureMaterialEXT)(GLenum,  GLenum) = (void *) 0xdeadbeef;
+void (*func_glTextureNormalEXT)(GLenum) = (void *) 0xdeadbeef;
+void (*func_glUnlockArraysEXT)(void) = (void *) 0xdeadbeef;
+void (*func_glVertexArrayRangeNV)(GLsizei,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glVertexPointerEXT)(GLint,  GLenum,  GLsizei,  GLsizei,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glVertexPointerListIBM)(GLint,  GLenum,  GLint,  const GLvoid* *,  GLint) = (void *) 0xdeadbeef;
+void (*func_glVertexPointervINTEL)(GLint,  GLenum,  const GLvoid* *) = (void *) 0xdeadbeef;
+void (*func_glVertexWeightPointerEXT)(GLsizei,  GLenum,  GLsizei,  const GLvoid *) = (void *) 0xdeadbeef;
+void (*func_glVertexWeightfEXT)(GLfloat) = (void *) 0xdeadbeef;
+void (*func_glVertexWeightfvEXT)(const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glWindowPos2dMESA)(GLdouble,  GLdouble) = (void *) 0xdeadbeef;
+void (*func_glWindowPos2dvMESA)(const GLdouble *) = (void *) 0xdeadbeef;
+void (*func_glWindowPos2fMESA)(GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glWindowPos2fvMESA)(const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glWindowPos2iMESA)(GLint,  GLint) = (void *) 0xdeadbeef;
+void (*func_glWindowPos2ivMESA)(const GLint *) = (void *) 0xdeadbeef;
+void (*func_glWindowPos2sMESA)(GLshort,  GLshort) = (void *) 0xdeadbeef;
+void (*func_glWindowPos2svMESA)(const GLshort *) = (void *) 0xdeadbeef;
+void (*func_glWindowPos3dMESA)(GLdouble,  GLdouble,  GLdouble) = (void *) 0xdeadbeef;
+void (*func_glWindowPos3dvMESA)(const GLdouble *) = (void *) 0xdeadbeef;
+void (*func_glWindowPos3fMESA)(GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glWindowPos3fvMESA)(const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glWindowPos3iMESA)(GLint,  GLint,  GLint) = (void *) 0xdeadbeef;
+void (*func_glWindowPos3ivMESA)(const GLint *) = (void *) 0xdeadbeef;
+void (*func_glWindowPos3sMESA)(GLshort,  GLshort,  GLshort) = (void *) 0xdeadbeef;
+void (*func_glWindowPos3svMESA)(const GLshort *) = (void *) 0xdeadbeef;
+void (*func_glWindowPos4dMESA)(GLdouble,  GLdouble,  GLdouble,  GLdouble) = (void *) 0xdeadbeef;
+void (*func_glWindowPos4dvMESA)(const GLdouble *) = (void *) 0xdeadbeef;
+void (*func_glWindowPos4fMESA)(GLfloat,  GLfloat,  GLfloat,  GLfloat) = (void *) 0xdeadbeef;
+void (*func_glWindowPos4fvMESA)(const GLfloat *) = (void *) 0xdeadbeef;
+void (*func_glWindowPos4iMESA)(GLint,  GLint,  GLint,  GLint) = (void *) 0xdeadbeef;
+void (*func_glWindowPos4ivMESA)(const GLint *) = (void *) 0xdeadbeef;
+void (*func_glWindowPos4sMESA)(GLshort,  GLshort,  GLshort,  GLshort) = (void *) 0xdeadbeef;
+void (*func_glWindowPos4svMESA)(const GLshort *) = (void *) 0xdeadbeef;
+
+/* The function prototypes */
+void WINAPI wine_glApplyTextureEXT(GLenum) ;
+GLboolean WINAPI wine_glAreTexturesResidentEXT(GLsizei,  const GLuint *,  GLboolean *) ;
+void WINAPI wine_glArrayElementEXT(GLint) ;
+void WINAPI wine_glBindTextureEXT(GLenum,  GLuint) ;
+void WINAPI wine_glBinormal3b(GLbyte,  GLbyte,  GLbyte) ;
+void WINAPI wine_glBinormal3bv(const GLbyte *) ;
+void WINAPI wine_glBinormal3d(GLdouble,  GLdouble,  GLdouble) ;
+void WINAPI wine_glBinormal3dv(const GLdouble *) ;
+void WINAPI wine_glBinormal3f(GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glBinormal3fv(const GLfloat *) ;
+void WINAPI wine_glBinormal3i(GLint,  GLint,  GLint) ;
+void WINAPI wine_glBinormal3iv(const GLint *) ;
+void WINAPI wine_glBinormal3s(GLshort,  GLshort,  GLshort) ;
+void WINAPI wine_glBinormal3sv(const GLshort *) ;
+void WINAPI wine_glBinormalPointerEXT(GLenum,  GLsizei,  const GLvoid *) ;
+void WINAPI wine_glBlendColorEXT(GLclampf,  GLclampf,  GLclampf,  GLclampf) ;
+void WINAPI wine_glBlendEquationEXT(GLenum) ;
+void WINAPI wine_glBlendFuncSeparateEXT(GLenum,  GLenum,  GLenum,  GLenum) ;
+void WINAPI wine_glColor3fVertex3fSUN(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glColor3fVertex3fvSUN(const GLfloat *,  const GLfloat *) ;
+void WINAPI wine_glColor4fNormal3fVertex3fSUN(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glColor4fNormal3fVertex3fvSUN(const GLfloat *,  const GLfloat *,  const GLfloat *) ;
+void WINAPI wine_glColor4ubVertex2fSUN(GLubyte,  GLubyte,  GLubyte,  GLubyte,  GLfloat,  GLfloat) ;
+void WINAPI wine_glColor4ubVertex2fvSUN(const GLubyte *,  const GLfloat *) ;
+void WINAPI wine_glColor4ubVertex3fSUN(GLubyte,  GLubyte,  GLubyte,  GLubyte,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glColor4ubVertex3fvSUN(const GLubyte *,  const GLfloat *) ;
+void WINAPI wine_glColorPointerEXT(GLint,  GLenum,  GLsizei,  GLsizei,  const GLvoid *) ;
+void WINAPI wine_glColorPointerListIBM(GLint,  GLenum,  GLint,  const GLvoid* *,  GLint) ;
+void WINAPI wine_glColorPointervINTEL(GLint,  GLenum,  const GLvoid* *) ;
+void WINAPI wine_glColorSubTableEXT(GLenum,  GLsizei,  GLsizei,  GLenum,  GLenum,  const GLvoid *) ;
+void WINAPI wine_glColorTableEXT(GLenum,  GLenum,  GLsizei,  GLenum,  GLenum,  const GLvoid *) ;
+void WINAPI wine_glColorTableParameterfvSGI(GLenum,  GLenum,  const GLfloat *) ;
+void WINAPI wine_glColorTableParameterivSGI(GLenum,  GLenum,  const GLint *) ;
+void WINAPI wine_glColorTableSGI(GLenum,  GLenum,  GLsizei,  GLenum,  GLenum,  const GLvoid *) ;
+void WINAPI wine_glCombinerInputNV(GLenum,  GLenum,  GLenum,  GLenum,  GLenum,  GLenum) ;
+void WINAPI wine_glCombinerOutputNV(GLenum,  GLenum,  GLenum,  GLenum,  GLenum,  GLenum,  GLenum,  GLboolean,  GLboolean,  GLboolean) ;
+void WINAPI wine_glCombinerParameterfNV(GLenum,  GLfloat) ;
+void WINAPI wine_glCombinerParameterfvNV(GLenum,  const GLfloat *) ;
+void WINAPI wine_glCombinerParameteriNV(GLenum,  GLint) ;
+void WINAPI wine_glCombinerParameterivNV(GLenum,  const GLint *) ;
+void WINAPI wine_glCompressedTexImage1DARB(GLenum,  GLint,  GLenum,  GLsizei,  GLint,  GLsizei,  const GLvoid *) ;
+void WINAPI wine_glCompressedTexImage2DARB(GLenum,  GLint,  GLenum,  GLsizei,  GLsizei,  GLint,  GLsizei,  const GLvoid *) ;
+void WINAPI wine_glCompressedTexImage3DARB(GLenum,  GLint,  GLenum,  GLsizei,  GLsizei,  GLsizei,  GLint,  GLsizei,  const GLvoid *) ;
+void WINAPI wine_glCompressedTexSubImage1DARB(GLenum,  GLint,  GLint,  GLsizei,  GLenum,  GLsizei,  const GLvoid *) ;
+void WINAPI wine_glCompressedTexSubImage2DARB(GLenum,  GLint,  GLint,  GLint,  GLsizei,  GLsizei,  GLenum,  GLsizei,  const GLvoid *) ;
+void WINAPI wine_glCompressedTexSubImage3DARB(GLenum,  GLint,  GLint,  GLint,  GLint,  GLsizei,  GLsizei,  GLsizei,  GLenum,  GLsizei,  const GLvoid *) ;
+void WINAPI wine_glConvolutionFilter1DEXT(GLenum,  GLenum,  GLsizei,  GLenum,  GLenum,  const GLvoid *) ;
+void WINAPI wine_glConvolutionFilter2DEXT(GLenum,  GLenum,  GLsizei,  GLsizei,  GLenum,  GLenum,  const GLvoid *) ;
+void WINAPI wine_glConvolutionParameterfEXT(GLenum,  GLenum,  GLfloat) ;
+void WINAPI wine_glConvolutionParameterfvEXT(GLenum,  GLenum,  const GLfloat *) ;
+void WINAPI wine_glConvolutionParameteriEXT(GLenum,  GLenum,  GLint) ;
+void WINAPI wine_glConvolutionParameterivEXT(GLenum,  GLenum,  const GLint *) ;
+void WINAPI wine_glCopyColorSubTableEXT(GLenum,  GLsizei,  GLint,  GLint,  GLsizei) ;
+void WINAPI wine_glCopyColorTableSGI(GLenum,  GLenum,  GLint,  GLint,  GLsizei) ;
+void WINAPI wine_glCopyConvolutionFilter1DEXT(GLenum,  GLenum,  GLint,  GLint,  GLsizei) ;
+void WINAPI wine_glCopyConvolutionFilter2DEXT(GLenum,  GLenum,  GLint,  GLint,  GLsizei,  GLsizei) ;
+void WINAPI wine_glCopyTexImage1DEXT(GLenum,  GLint,  GLenum,  GLint,  GLint,  GLsizei,  GLint) ;
+void WINAPI wine_glCopyTexImage2DEXT(GLenum,  GLint,  GLenum,  GLint,  GLint,  GLsizei,  GLsizei,  GLint) ;
+void WINAPI wine_glCopyTexSubImage1DEXT(GLenum,  GLint,  GLint,  GLint,  GLint,  GLsizei) ;
+void WINAPI wine_glCopyTexSubImage2DEXT(GLenum,  GLint,  GLint,  GLint,  GLint,  GLint,  GLsizei,  GLsizei) ;
+void WINAPI wine_glCopyTexSubImage3DEXT(GLenum,  GLint,  GLint,  GLint,  GLint,  GLint,  GLint,  GLsizei,  GLsizei) ;
+void WINAPI wine_glCullParameterdvEXT(GLenum,  GLdouble *) ;
+void WINAPI wine_glCullParameterfvEXT(GLenum,  GLfloat *) ;
+void WINAPI wine_glDeleteTexturesEXT(GLsizei,  const GLuint *) ;
+void WINAPI wine_glDetailTexFuncSGIS(GLenum,  GLsizei,  const GLfloat *) ;
+void WINAPI wine_glDrawArraysEXT(GLenum,  GLint,  GLsizei) ;
+void WINAPI wine_glDrawRangeElementsEXT(GLenum,  GLuint,  GLuint,  GLsizei,  GLenum,  const GLvoid *) ;
+void WINAPI wine_glEdgeFlagPointerEXT(GLsizei,  GLsizei,  const GLboolean *) ;
+void WINAPI wine_glEdgeFlagPointerListIBM(GLint,  const GLboolean* *,  GLint) ;
+void WINAPI wine_glFinalCombinerInputNV(GLenum,  GLenum,  GLenum,  GLenum) ;
+void WINAPI wine_glFinishTextureSUNX(void) ;
+void WINAPI wine_glFlushRasterSGIX(void) ;
+void WINAPI wine_glFlushVertexArrayRangeNV(void) ;
+void WINAPI wine_glFogCoordPointerEXT(GLenum,  GLsizei,  const GLvoid *) ;
+void WINAPI wine_glFogCoordPointerListIBM(GLenum,  GLint,  const GLvoid* *,  GLint) ;
+void WINAPI wine_glFogCoorddEXT(GLdouble) ;
+void WINAPI wine_glFogCoorddvEXT(const GLdouble *) ;
+void WINAPI wine_glFogCoordfEXT(GLfloat) ;
+void WINAPI wine_glFogCoordfvEXT(const GLfloat *) ;
+void WINAPI wine_glFogFuncSGIS(GLsizei,  const GLfloat *) ;
+void WINAPI wine_glFragmentColorMaterialSGIX(GLenum,  GLenum) ;
+void WINAPI wine_glFragmentLightModelfSGIX(GLenum,  GLfloat) ;
+void WINAPI wine_glFragmentLightModelfvSGIX(GLenum,  const GLfloat *) ;
+void WINAPI wine_glFragmentLightModeliSGIX(GLenum,  GLint) ;
+void WINAPI wine_glFragmentLightModelivSGIX(GLenum,  const GLint *) ;
+void WINAPI wine_glFragmentLightfSGIX(GLenum,  GLenum,  GLfloat) ;
+void WINAPI wine_glFragmentLightfvSGIX(GLenum,  GLenum,  const GLfloat *) ;
+void WINAPI wine_glFragmentLightiSGIX(GLenum,  GLenum,  GLint) ;
+void WINAPI wine_glFragmentLightivSGIX(GLenum,  GLenum,  const GLint *) ;
+void WINAPI wine_glFragmentMaterialfSGIX(GLenum,  GLenum,  GLfloat) ;
+void WINAPI wine_glFragmentMaterialfvSGIX(GLenum,  GLenum,  const GLfloat *) ;
+void WINAPI wine_glFragmentMaterialiSGIX(GLenum,  GLenum,  GLint) ;
+void WINAPI wine_glFragmentMaterialivSGIX(GLenum,  GLenum,  const GLint *) ;
+void WINAPI wine_glFrameZoomSGIX(GLint) ;
+void WINAPI wine_glGenTexturesEXT(GLsizei,  GLuint *) ;
+void WINAPI wine_glGetColorTableEXT(GLenum,  GLenum,  GLenum,  GLvoid *) ;
+void WINAPI wine_glGetColorTableParameterfvEXT(GLenum,  GLenum,  GLfloat *) ;
+void WINAPI wine_glGetColorTableParameterfvSGI(GLenum,  GLenum,  GLfloat *) ;
+void WINAPI wine_glGetColorTableParameterivEXT(GLenum,  GLenum,  GLint *) ;
+void WINAPI wine_glGetColorTableParameterivSGI(GLenum,  GLenum,  GLint *) ;
+void WINAPI wine_glGetColorTableSGI(GLenum,  GLenum,  GLenum,  GLvoid *) ;
+void WINAPI wine_glGetCombinerInputParameterfvNV(GLenum,  GLenum,  GLenum,  GLenum,  GLfloat *) ;
+void WINAPI wine_glGetCombinerInputParameterivNV(GLenum,  GLenum,  GLenum,  GLenum,  GLint *) ;
+void WINAPI wine_glGetCombinerOutputParameterfvNV(GLenum,  GLenum,  GLenum,  GLfloat *) ;
+void WINAPI wine_glGetCombinerOutputParameterivNV(GLenum,  GLenum,  GLenum,  GLint *) ;
+void WINAPI wine_glGetCompressedTexImageARB(GLenum,  GLint,  void *) ;
+void WINAPI wine_glGetConvolutionFilterEXT(GLenum,  GLenum,  GLenum,  GLvoid *) ;
+void WINAPI wine_glGetConvolutionParameterfvEXT(GLenum,  GLenum,  GLfloat *) ;
+void WINAPI wine_glGetConvolutionParameterivEXT(GLenum,  GLenum,  GLint *) ;
+void WINAPI wine_glGetDetailTexFuncSGIS(GLenum,  GLfloat *) ;
+void WINAPI wine_glGetFinalCombinerInputParameterfvNV(GLenum,  GLenum,  GLfloat *) ;
+void WINAPI wine_glGetFinalCombinerInputParameterivNV(GLenum,  GLenum,  GLint *) ;
+void WINAPI wine_glGetFogFuncSGIS(const GLfloat *) ;
+void WINAPI wine_glGetFragmentLightfvSGIX(GLenum,  GLenum,  GLfloat *) ;
+void WINAPI wine_glGetFragmentLightivSGIX(GLenum,  GLenum,  GLint *) ;
+void WINAPI wine_glGetFragmentMaterialfvSGIX(GLenum,  GLenum,  GLfloat *) ;
+void WINAPI wine_glGetFragmentMaterialivSGIX(GLenum,  GLenum,  GLint *) ;
+void WINAPI wine_glGetHistogramEXT(GLenum,  GLboolean,  GLenum,  GLenum,  GLvoid *) ;
+void WINAPI wine_glGetHistogramParameterfvEXT(GLenum,  GLenum,  GLfloat *) ;
+void WINAPI wine_glGetHistogramParameterivEXT(GLenum,  GLenum,  GLint *) ;
+void WINAPI wine_glGetImageTransformParameterfvHP(GLenum,  GLenum,  GLfloat *) ;
+void WINAPI wine_glGetImageTransformParameterivHP(GLenum,  GLenum,  GLint *) ;
+GLint WINAPI wine_glGetInstrumentsSGIX(void) ;
+void WINAPI wine_glGetListParameterfvSGIX(GLuint,  GLenum,  GLfloat *) ;
+void WINAPI wine_glGetListParameterivSGIX(GLuint,  GLenum,  GLint *) ;
+void WINAPI wine_glGetMinmaxEXT(GLenum,  GLboolean,  GLenum,  GLenum,  GLvoid *) ;
+void WINAPI wine_glGetMinmaxParameterfvEXT(GLenum,  GLenum,  GLfloat *) ;
+void WINAPI wine_glGetMinmaxParameterivEXT(GLenum,  GLenum,  GLint *) ;
+void WINAPI wine_glGetPixelTexGenParameterfvSGIS(GLenum,  GLfloat *) ;
+void WINAPI wine_glGetPixelTexGenParameterivSGIS(GLenum,  GLint *) ;
+void WINAPI wine_glGetPointervEXT(GLenum,  GLvoid* *) ;
+void WINAPI wine_glGetSeparableFilterEXT(GLenum,  GLenum,  GLenum,  GLvoid *,  GLvoid *,  GLvoid *) ;
+void WINAPI wine_glGetSharpenTexFuncSGIS(GLenum,  GLfloat *) ;
+void WINAPI wine_glGetTexFilterFuncSGIS(GLenum,  GLenum,  GLfloat *) ;
+void WINAPI wine_glGlobalAlphaFactorbSUN(GLbyte) ;
+void WINAPI wine_glGlobalAlphaFactordSUN(GLdouble) ;
+void WINAPI wine_glGlobalAlphaFactorfSUN(GLfloat) ;
+void WINAPI wine_glGlobalAlphaFactoriSUN(GLint) ;
+void WINAPI wine_glGlobalAlphaFactorsSUN(GLshort) ;
+void WINAPI wine_glGlobalAlphaFactorubSUN(GLubyte) ;
+void WINAPI wine_glGlobalAlphaFactoruiSUN(GLuint) ;
+void WINAPI wine_glGlobalAlphaFactorusSUN(GLushort) ;
+void WINAPI wine_glHintPGI(GLenum,  GLint) ;
+void WINAPI wine_glHistogramEXT(GLenum,  GLsizei,  GLenum,  GLboolean) ;
+void WINAPI wine_glImageTransformParameterfHP(GLenum,  GLenum,  GLfloat) ;
+void WINAPI wine_glImageTransformParameterfvHP(GLenum,  GLenum,  const GLfloat *) ;
+void WINAPI wine_glImageTransformParameteriHP(GLenum,  GLenum,  GLint) ;
+void WINAPI wine_glImageTransformParameterivHP(GLenum,  GLenum,  const GLint *) ;
+void WINAPI wine_glIndexFuncEXT(GLenum,  GLclampf) ;
+void WINAPI wine_glIndexMaterialEXT(GLenum,  GLenum) ;
+void WINAPI wine_glIndexPointerEXT(GLenum,  GLsizei,  GLsizei,  const GLvoid *) ;
+void WINAPI wine_glIndexPointerListIBM(GLenum,  GLint,  const GLvoid* *,  GLint) ;
+void WINAPI wine_glInstrumentsBufferSGIX(GLsizei,  GLint *) ;
+GLboolean WINAPI wine_glIsTextureEXT(GLuint) ;
+void WINAPI wine_glLightEnviSGIX(GLenum,  GLint) ;
+void WINAPI wine_glListParameterfSGIX(GLuint,  GLenum,  GLfloat) ;
+void WINAPI wine_glListParameterfvSGIX(GLuint,  GLenum,  const GLfloat *) ;
+void WINAPI wine_glListParameteriSGIX(GLuint,  GLenum,  GLint) ;
+void WINAPI wine_glListParameterivSGIX(GLuint,  GLenum,  const GLint *) ;
+void WINAPI wine_glLoadTransposeMatrixdARB(const GLdouble *) ;
+void WINAPI wine_glLoadTransposeMatrixfARB(const GLfloat *) ;
+void WINAPI wine_glLockArraysEXT(GLint,  GLsizei) ;
+void WINAPI wine_glMinmaxEXT(GLenum,  GLenum,  GLboolean) ;
+void WINAPI wine_glMultTransposeMatrixdARB(const GLdouble *) ;
+void WINAPI wine_glMultTransposeMatrixfARB(const GLfloat *) ;
+void WINAPI wine_glMultiDrawArraysEXT(GLenum,  GLint *,  GLsizei *,  GLsizei) ;
+void WINAPI wine_glMultiDrawElementsEXT(GLenum,  const GLsizei *,  GLenum,  const GLvoid* *,  GLsizei) ;
+void WINAPI wine_glMultiModeDrawArraysIBM(GLenum,  const GLint *,  const GLsizei *,  GLsizei,  GLint) ;
+void WINAPI wine_glMultiModeDrawElementsIBM(const GLenum *,  const GLsizei *,  GLenum,  const GLvoid* *,  GLsizei,  GLint) ;
+void WINAPI wine_glNormal3fVertex3fSUN(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glNormal3fVertex3fvSUN(const GLfloat *,  const GLfloat *) ;
+void WINAPI wine_glNormalPointerEXT(GLenum,  GLsizei,  GLsizei,  const GLvoid *) ;
+void WINAPI wine_glNormalPointerListIBM(GLenum,  GLint,  const GLvoid* *,  GLint) ;
+void WINAPI wine_glNormalPointervINTEL(GLenum,  const GLvoid* *) ;
+void WINAPI wine_glPixelTexGenParameterfSGIS(GLenum,  GLfloat) ;
+void WINAPI wine_glPixelTexGenParameterfvSGIS(GLenum,  const GLfloat *) ;
+void WINAPI wine_glPixelTexGenParameteriSGIS(GLenum,  GLint) ;
+void WINAPI wine_glPixelTexGenParameterivSGIS(GLenum,  const GLint *) ;
+void WINAPI wine_glPixelTexGenSGIX(GLenum) ;
+void WINAPI wine_glPixelTransformParameterfEXT(GLenum,  GLenum,  GLfloat) ;
+void WINAPI wine_glPixelTransformParameterfvEXT(GLenum,  GLenum,  const GLfloat *) ;
+void WINAPI wine_glPixelTransformParameteriEXT(GLenum,  GLenum,  GLint) ;
+void WINAPI wine_glPixelTransformParameterivEXT(GLenum,  GLenum,  const GLint *) ;
+void WINAPI wine_glPointParameterfEXT(GLenum,  GLfloat) ;
+void WINAPI wine_glPointParameterfSGIS(GLenum,  GLfloat) ;
+void WINAPI wine_glPointParameterfvEXT(GLenum,  const GLfloat *) ;
+void WINAPI wine_glPointParameterfvSGIS(GLenum,  const GLfloat *) ;
+GLint WINAPI wine_glPollInstrumentsSGIX(GLint *) ;
+void WINAPI wine_glPolygonOffsetEXT(GLfloat,  GLfloat) ;
+void WINAPI wine_glPrioritizeTexturesEXT(GLsizei,  const GLuint *,  const GLclampf *) ;
+void WINAPI wine_glReadInstrumentsSGIX(GLint) ;
+void WINAPI wine_glReferencePlaneSGIX(const GLdouble *) ;
+void WINAPI wine_glReplacementCodePointer(GLenum,  GLsizei,  const GLvoid* *) ;
+void WINAPI wine_glReplacementCodeubSUN(GLubyte) ;
+void WINAPI wine_glReplacementCodeubvSUN(const GLubyte *) ;
+void WINAPI wine_glReplacementCodeuiColor3fVertex3fSUN(GLenum,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glReplacementCodeuiColor3fVertex3fvSUN(const GLenum *,  const GLfloat *,  const GLfloat *) ;
+void WINAPI wine_glReplacementCodeuiColor4fNormal3fVertex3fSUN(GLenum,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glReplacementCodeuiColor4fNormal3fVertex3fvSUN(const GLenum *,  const GLfloat *,  const GLfloat *,  const GLfloat *) ;
+void WINAPI wine_glReplacementCodeuiColor4ubVertex3fSUN(GLenum,  GLubyte,  GLubyte,  GLubyte,  GLubyte,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glReplacementCodeuiColor4ubVertex3fvSUN(const GLenum *,  const GLubyte *,  const GLfloat *) ;
+void WINAPI wine_glReplacementCodeuiNormal3fVertex3fSUN(GLenum,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glReplacementCodeuiNormal3fVertex3fvSUN(const GLenum *,  const GLfloat *,  const GLfloat *) ;
+void WINAPI wine_glReplacementCodeuiSUN(GLuint) ;
+void WINAPI wine_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(GLenum,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(const GLenum *,  const GLfloat *,  const GLfloat *,  const GLfloat *,  const GLfloat *) ;
+void WINAPI wine_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(GLenum,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(const GLenum *,  const GLfloat *,  const GLfloat *,  const GLfloat *) ;
+void WINAPI wine_glReplacementCodeuiTexCoord2fVertex3fSUN(GLenum,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glReplacementCodeuiTexCoord2fVertex3fvSUN(const GLenum *,  const GLfloat *,  const GLfloat *) ;
+void WINAPI wine_glReplacementCodeuiVertex3fSUN(GLenum,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glReplacementCodeuiVertex3fvSUN(const GLenum *,  const GLfloat *) ;
+void WINAPI wine_glReplacementCodeuivSUN(const GLuint *) ;
+void WINAPI wine_glReplacementCodeusSUN(GLushort) ;
+void WINAPI wine_glReplacementCodeusvSUN(const GLushort *) ;
+void WINAPI wine_glResetHistogramEXT(GLenum) ;
+void WINAPI wine_glResetMinmaxEXT(GLenum) ;
+void WINAPI wine_glResizeBuffersMESA(void) ;
+void WINAPI wine_glSampleCoverageARB(GLclampf,  GLboolean) ;
+void WINAPI wine_glSampleMaskEXT(GLclampf,  GLboolean) ;
+void WINAPI wine_glSampleMaskSGIS(GLclampf,  GLboolean) ;
+void WINAPI wine_glSamplePassARB(GLenum) ;
+void WINAPI wine_glSamplePatternEXT(GLenum) ;
+void WINAPI wine_glSamplePatternSGIS(GLenum) ;
+void WINAPI wine_glSecondaryColor3bEXT(GLbyte,  GLbyte,  GLbyte) ;
+void WINAPI wine_glSecondaryColor3bvEXT(const GLbyte *) ;
+void WINAPI wine_glSecondaryColor3dEXT(GLdouble,  GLdouble,  GLdouble) ;
+void WINAPI wine_glSecondaryColor3dvEXT(const GLdouble *) ;
+void WINAPI wine_glSecondaryColor3fEXT(GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glSecondaryColor3fvEXT(const GLfloat *) ;
+void WINAPI wine_glSecondaryColor3iEXT(GLint,  GLint,  GLint) ;
+void WINAPI wine_glSecondaryColor3ivEXT(const GLint *) ;
+void WINAPI wine_glSecondaryColor3sEXT(GLshort,  GLshort,  GLshort) ;
+void WINAPI wine_glSecondaryColor3svEXT(const GLshort *) ;
+void WINAPI wine_glSecondaryColor3ubEXT(GLubyte,  GLubyte,  GLubyte) ;
+void WINAPI wine_glSecondaryColor3ubvEXT(const GLubyte *) ;
+void WINAPI wine_glSecondaryColor3uiEXT(GLuint,  GLuint,  GLuint) ;
+void WINAPI wine_glSecondaryColor3uivEXT(const GLuint *) ;
+void WINAPI wine_glSecondaryColor3usEXT(GLushort,  GLushort,  GLushort) ;
+void WINAPI wine_glSecondaryColor3usvEXT(const GLushort *) ;
+void WINAPI wine_glSecondaryColorPointerEXT(GLint,  GLenum,  GLsizei,  GLvoid *) ;
+void WINAPI wine_glSecondaryColorPointerListIBM(GLint,  GLenum,  GLint,  const GLvoid* *,  GLint) ;
+void WINAPI wine_glSeparableFilter2DEXT(GLenum,  GLenum,  GLsizei,  GLsizei,  GLenum,  GLenum,  const GLvoid *,  const GLvoid *) ;
+void WINAPI wine_glSharpenTexFuncSGIS(GLenum,  GLsizei,  const GLfloat *) ;
+void WINAPI wine_glSpriteParameterfSGIX(GLenum,  GLfloat) ;
+void WINAPI wine_glSpriteParameterfvSGIX(GLenum,  const GLfloat *) ;
+void WINAPI wine_glSpriteParameteriSGIX(GLenum,  GLint) ;
+void WINAPI wine_glSpriteParameterivSGIX(GLenum,  const GLint *) ;
+void WINAPI wine_glStartInstrumentsSGIX(void) ;
+void WINAPI wine_glStopInstrumentsSGIX(GLint) ;
+void WINAPI wine_glTagSampleBufferSGIX(void) ;
+void WINAPI wine_glTangent3b(GLbyte,  GLbyte,  GLbyte) ;
+void WINAPI wine_glTangent3bv(const GLbyte *) ;
+void WINAPI wine_glTangent3d(GLdouble,  GLdouble,  GLdouble) ;
+void WINAPI wine_glTangent3dv(const GLdouble *) ;
+void WINAPI wine_glTangent3f(GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glTangent3fv(const GLfloat *) ;
+void WINAPI wine_glTangent3i(GLint,  GLint,  GLint) ;
+void WINAPI wine_glTangent3iv(const GLint *) ;
+void WINAPI wine_glTangent3s(GLshort,  GLshort,  GLshort) ;
+void WINAPI wine_glTangent3sv(const GLshort *) ;
+void WINAPI wine_glTangentPointerEXT(GLenum,  GLsizei,  const GLvoid *) ;
+void WINAPI wine_glTbufferMask3DFX(GLuint) ;
+void WINAPI wine_glTexCoord2fColor3fVertex3fSUN(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glTexCoord2fColor3fVertex3fvSUN(const GLfloat *,  const GLfloat *,  const GLfloat *) ;
+void WINAPI wine_glTexCoord2fColor4fNormal3fVertex3fSUN(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glTexCoord2fColor4fNormal3fVertex3fvSUN(const GLfloat *,  const GLfloat *,  const GLfloat *,  const GLfloat *) ;
+void WINAPI wine_glTexCoord2fColor4ubVertex3fSUN(GLfloat,  GLfloat,  GLubyte,  GLubyte,  GLubyte,  GLubyte,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glTexCoord2fColor4ubVertex3fvSUN(const GLfloat *,  const GLubyte *,  const GLfloat *) ;
+void WINAPI wine_glTexCoord2fNormal3fVertex3fSUN(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glTexCoord2fNormal3fVertex3fvSUN(const GLfloat *,  const GLfloat *,  const GLfloat *) ;
+void WINAPI wine_glTexCoord2fVertex3fSUN(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glTexCoord2fVertex3fvSUN(const GLfloat *,  const GLfloat *) ;
+void WINAPI wine_glTexCoord4fColor4fNormal3fVertex4fSUN(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glTexCoord4fColor4fNormal3fVertex4fvSUN(const GLfloat *,  const GLfloat *,  const GLfloat *,  const GLfloat *) ;
+void WINAPI wine_glTexCoord4fVertex4fSUN(GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glTexCoord4fVertex4fvSUN(const GLfloat *,  const GLfloat *) ;
+void WINAPI wine_glTexCoordPointerEXT(GLint,  GLenum,  GLsizei,  GLsizei,  const GLvoid *) ;
+void WINAPI wine_glTexCoordPointerListIBM(GLint,  GLenum,  GLint,  const GLvoid* *,  GLint) ;
+void WINAPI wine_glTexCoordPointervINTEL(GLint,  GLenum,  const GLvoid* *) ;
+void WINAPI wine_glTexFilterFuncSGIS(GLenum,  GLenum,  GLsizei,  const GLfloat *) ;
+void WINAPI wine_glTexImage3DEXT(GLenum,  GLint,  GLenum,  GLsizei,  GLsizei,  GLsizei,  GLint,  GLenum,  GLenum,  const GLvoid *) ;
+void WINAPI wine_glTexImage4DSGIS(GLenum,  GLint,  GLenum,  GLsizei,  GLsizei,  GLsizei,  GLsizei,  GLint,  GLenum,  GLenum,  const GLvoid *) ;
+void WINAPI wine_glTexSubImage1DEXT(GLenum,  GLint,  GLint,  GLsizei,  GLenum,  GLenum,  const GLvoid *) ;
+void WINAPI wine_glTexSubImage2DEXT(GLenum,  GLint,  GLint,  GLint,  GLsizei,  GLsizei,  GLenum,  GLenum,  const GLvoid *) ;
+void WINAPI wine_glTexSubImage3DEXT(GLenum,  GLint,  GLint,  GLint,  GLint,  GLsizei,  GLsizei,  GLsizei,  GLenum,  GLenum,  const GLvoid *) ;
+void WINAPI wine_glTexSubImage4DSGIS(GLenum,  GLint,  GLint,  GLint,  GLint,  GLint,  GLsizei,  GLsizei,  GLsizei,  GLsizei,  GLenum,  GLenum,  const GLvoid *) ;
+void WINAPI wine_glTextureLightEXT(GLenum) ;
+void WINAPI wine_glTextureMaterialEXT(GLenum,  GLenum) ;
+void WINAPI wine_glTextureNormalEXT(GLenum) ;
+void WINAPI wine_glUnlockArraysEXT(void) ;
+void WINAPI wine_glVertexArrayRangeNV(GLsizei,  const GLvoid *) ;
+void WINAPI wine_glVertexPointerEXT(GLint,  GLenum,  GLsizei,  GLsizei,  const GLvoid *) ;
+void WINAPI wine_glVertexPointerListIBM(GLint,  GLenum,  GLint,  const GLvoid* *,  GLint) ;
+void WINAPI wine_glVertexPointervINTEL(GLint,  GLenum,  const GLvoid* *) ;
+void WINAPI wine_glVertexWeightPointerEXT(GLsizei,  GLenum,  GLsizei,  const GLvoid *) ;
+void WINAPI wine_glVertexWeightfEXT(GLfloat) ;
+void WINAPI wine_glVertexWeightfvEXT(const GLfloat *) ;
+void WINAPI wine_glWindowPos2dMESA(GLdouble,  GLdouble) ;
+void WINAPI wine_glWindowPos2dvMESA(const GLdouble *) ;
+void WINAPI wine_glWindowPos2fMESA(GLfloat,  GLfloat) ;
+void WINAPI wine_glWindowPos2fvMESA(const GLfloat *) ;
+void WINAPI wine_glWindowPos2iMESA(GLint,  GLint) ;
+void WINAPI wine_glWindowPos2ivMESA(const GLint *) ;
+void WINAPI wine_glWindowPos2sMESA(GLshort,  GLshort) ;
+void WINAPI wine_glWindowPos2svMESA(const GLshort *) ;
+void WINAPI wine_glWindowPos3dMESA(GLdouble,  GLdouble,  GLdouble) ;
+void WINAPI wine_glWindowPos3dvMESA(const GLdouble *) ;
+void WINAPI wine_glWindowPos3fMESA(GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glWindowPos3fvMESA(const GLfloat *) ;
+void WINAPI wine_glWindowPos3iMESA(GLint,  GLint,  GLint) ;
+void WINAPI wine_glWindowPos3ivMESA(const GLint *) ;
+void WINAPI wine_glWindowPos3sMESA(GLshort,  GLshort,  GLshort) ;
+void WINAPI wine_glWindowPos3svMESA(const GLshort *) ;
+void WINAPI wine_glWindowPos4dMESA(GLdouble,  GLdouble,  GLdouble,  GLdouble) ;
+void WINAPI wine_glWindowPos4dvMESA(const GLdouble *) ;
+void WINAPI wine_glWindowPos4fMESA(GLfloat,  GLfloat,  GLfloat,  GLfloat) ;
+void WINAPI wine_glWindowPos4fvMESA(const GLfloat *) ;
+void WINAPI wine_glWindowPos4iMESA(GLint,  GLint,  GLint,  GLint) ;
+void WINAPI wine_glWindowPos4ivMESA(const GLint *) ;
+void WINAPI wine_glWindowPos4sMESA(GLshort,  GLshort,  GLshort,  GLshort) ;
+void WINAPI wine_glWindowPos4svMESA(const GLshort *) ;
+
+/* The table giving the correspondance between names and functions */
+int extension_registry_size = 322;
+OpenGL_extension extension_registry[] = {
+  { "glApplyTextureEXT", (void *) wine_glApplyTextureEXT, (void **) (&func_glApplyTextureEXT) },
+  { "glAreTexturesResidentEXT", (void *) wine_glAreTexturesResidentEXT, (void **) (&func_glAreTexturesResidentEXT) },
+  { "glArrayElementEXT", (void *) wine_glArrayElementEXT, (void **) (&func_glArrayElementEXT) },
+  { "glBindTextureEXT", (void *) wine_glBindTextureEXT, (void **) (&func_glBindTextureEXT) },
+  { "glBinormal3b", (void *) wine_glBinormal3b, (void **) (&func_glBinormal3b) },
+  { "glBinormal3bv", (void *) wine_glBinormal3bv, (void **) (&func_glBinormal3bv) },
+  { "glBinormal3d", (void *) wine_glBinormal3d, (void **) (&func_glBinormal3d) },
+  { "glBinormal3dv", (void *) wine_glBinormal3dv, (void **) (&func_glBinormal3dv) },
+  { "glBinormal3f", (void *) wine_glBinormal3f, (void **) (&func_glBinormal3f) },
+  { "glBinormal3fv", (void *) wine_glBinormal3fv, (void **) (&func_glBinormal3fv) },
+  { "glBinormal3i", (void *) wine_glBinormal3i, (void **) (&func_glBinormal3i) },
+  { "glBinormal3iv", (void *) wine_glBinormal3iv, (void **) (&func_glBinormal3iv) },
+  { "glBinormal3s", (void *) wine_glBinormal3s, (void **) (&func_glBinormal3s) },
+  { "glBinormal3sv", (void *) wine_glBinormal3sv, (void **) (&func_glBinormal3sv) },
+  { "glBinormalPointerEXT", (void *) wine_glBinormalPointerEXT, (void **) (&func_glBinormalPointerEXT) },
+  { "glBlendColorEXT", (void *) wine_glBlendColorEXT, (void **) (&func_glBlendColorEXT) },
+  { "glBlendEquationEXT", (void *) wine_glBlendEquationEXT, (void **) (&func_glBlendEquationEXT) },
+  { "glBlendFuncSeparateEXT", (void *) wine_glBlendFuncSeparateEXT, (void **) (&func_glBlendFuncSeparateEXT) },
+  { "glColor3fVertex3fSUN", (void *) wine_glColor3fVertex3fSUN, (void **) (&func_glColor3fVertex3fSUN) },
+  { "glColor3fVertex3fvSUN", (void *) wine_glColor3fVertex3fvSUN, (void **) (&func_glColor3fVertex3fvSUN) },
+  { "glColor4fNormal3fVertex3fSUN", (void *) wine_glColor4fNormal3fVertex3fSUN, (void **) (&func_glColor4fNormal3fVertex3fSUN) },
+  { "glColor4fNormal3fVertex3fvSUN", (void *) wine_glColor4fNormal3fVertex3fvSUN, (void **) (&func_glColor4fNormal3fVertex3fvSUN) },
+  { "glColor4ubVertex2fSUN", (void *) wine_glColor4ubVertex2fSUN, (void **) (&func_glColor4ubVertex2fSUN) },
+  { "glColor4ubVertex2fvSUN", (void *) wine_glColor4ubVertex2fvSUN, (void **) (&func_glColor4ubVertex2fvSUN) },
+  { "glColor4ubVertex3fSUN", (void *) wine_glColor4ubVertex3fSUN, (void **) (&func_glColor4ubVertex3fSUN) },
+  { "glColor4ubVertex3fvSUN", (void *) wine_glColor4ubVertex3fvSUN, (void **) (&func_glColor4ubVertex3fvSUN) },
+  { "glColorPointerEXT", (void *) wine_glColorPointerEXT, (void **) (&func_glColorPointerEXT) },
+  { "glColorPointerListIBM", (void *) wine_glColorPointerListIBM, (void **) (&func_glColorPointerListIBM) },
+  { "glColorPointervINTEL", (void *) wine_glColorPointervINTEL, (void **) (&func_glColorPointervINTEL) },
+  { "glColorSubTableEXT", (void *) wine_glColorSubTableEXT, (void **) (&func_glColorSubTableEXT) },
+  { "glColorTableEXT", (void *) wine_glColorTableEXT, (void **) (&func_glColorTableEXT) },
+  { "glColorTableParameterfvSGI", (void *) wine_glColorTableParameterfvSGI, (void **) (&func_glColorTableParameterfvSGI) },
+  { "glColorTableParameterivSGI", (void *) wine_glColorTableParameterivSGI, (void **) (&func_glColorTableParameterivSGI) },
+  { "glColorTableSGI", (void *) wine_glColorTableSGI, (void **) (&func_glColorTableSGI) },
+  { "glCombinerInputNV", (void *) wine_glCombinerInputNV, (void **) (&func_glCombinerInputNV) },
+  { "glCombinerOutputNV", (void *) wine_glCombinerOutputNV, (void **) (&func_glCombinerOutputNV) },
+  { "glCombinerParameterfNV", (void *) wine_glCombinerParameterfNV, (void **) (&func_glCombinerParameterfNV) },
+  { "glCombinerParameterfvNV", (void *) wine_glCombinerParameterfvNV, (void **) (&func_glCombinerParameterfvNV) },
+  { "glCombinerParameteriNV", (void *) wine_glCombinerParameteriNV, (void **) (&func_glCombinerParameteriNV) },
+  { "glCombinerParameterivNV", (void *) wine_glCombinerParameterivNV, (void **) (&func_glCombinerParameterivNV) },
+  { "glCompressedTexImage1DARB", (void *) wine_glCompressedTexImage1DARB, (void **) (&func_glCompressedTexImage1DARB) },
+  { "glCompressedTexImage2DARB", (void *) wine_glCompressedTexImage2DARB, (void **) (&func_glCompressedTexImage2DARB) },
+  { "glCompressedTexImage3DARB", (void *) wine_glCompressedTexImage3DARB, (void **) (&func_glCompressedTexImage3DARB) },
+  { "glCompressedTexSubImage1DARB", (void *) wine_glCompressedTexSubImage1DARB, (void **) (&func_glCompressedTexSubImage1DARB) },
+  { "glCompressedTexSubImage2DARB", (void *) wine_glCompressedTexSubImage2DARB, (void **) (&func_glCompressedTexSubImage2DARB) },
+  { "glCompressedTexSubImage3DARB", (void *) wine_glCompressedTexSubImage3DARB, (void **) (&func_glCompressedTexSubImage3DARB) },
+  { "glConvolutionFilter1DEXT", (void *) wine_glConvolutionFilter1DEXT, (void **) (&func_glConvolutionFilter1DEXT) },
+  { "glConvolutionFilter2DEXT", (void *) wine_glConvolutionFilter2DEXT, (void **) (&func_glConvolutionFilter2DEXT) },
+  { "glConvolutionParameterfEXT", (void *) wine_glConvolutionParameterfEXT, (void **) (&func_glConvolutionParameterfEXT) },
+  { "glConvolutionParameterfvEXT", (void *) wine_glConvolutionParameterfvEXT, (void **) (&func_glConvolutionParameterfvEXT) },
+  { "glConvolutionParameteriEXT", (void *) wine_glConvolutionParameteriEXT, (void **) (&func_glConvolutionParameteriEXT) },
+  { "glConvolutionParameterivEXT", (void *) wine_glConvolutionParameterivEXT, (void **) (&func_glConvolutionParameterivEXT) },
+  { "glCopyColorSubTableEXT", (void *) wine_glCopyColorSubTableEXT, (void **) (&func_glCopyColorSubTableEXT) },
+  { "glCopyColorTableSGI", (void *) wine_glCopyColorTableSGI, (void **) (&func_glCopyColorTableSGI) },
+  { "glCopyConvolutionFilter1DEXT", (void *) wine_glCopyConvolutionFilter1DEXT, (void **) (&func_glCopyConvolutionFilter1DEXT) },
+  { "glCopyConvolutionFilter2DEXT", (void *) wine_glCopyConvolutionFilter2DEXT, (void **) (&func_glCopyConvolutionFilter2DEXT) },
+  { "glCopyTexImage1DEXT", (void *) wine_glCopyTexImage1DEXT, (void **) (&func_glCopyTexImage1DEXT) },
+  { "glCopyTexImage2DEXT", (void *) wine_glCopyTexImage2DEXT, (void **) (&func_glCopyTexImage2DEXT) },
+  { "glCopyTexSubImage1DEXT", (void *) wine_glCopyTexSubImage1DEXT, (void **) (&func_glCopyTexSubImage1DEXT) },
+  { "glCopyTexSubImage2DEXT", (void *) wine_glCopyTexSubImage2DEXT, (void **) (&func_glCopyTexSubImage2DEXT) },
+  { "glCopyTexSubImage3DEXT", (void *) wine_glCopyTexSubImage3DEXT, (void **) (&func_glCopyTexSubImage3DEXT) },
+  { "glCullParameterdvEXT", (void *) wine_glCullParameterdvEXT, (void **) (&func_glCullParameterdvEXT) },
+  { "glCullParameterfvEXT", (void *) wine_glCullParameterfvEXT, (void **) (&func_glCullParameterfvEXT) },
+  { "glDeleteTexturesEXT", (void *) wine_glDeleteTexturesEXT, (void **) (&func_glDeleteTexturesEXT) },
+  { "glDetailTexFuncSGIS", (void *) wine_glDetailTexFuncSGIS, (void **) (&func_glDetailTexFuncSGIS) },
+  { "glDrawArraysEXT", (void *) wine_glDrawArraysEXT, (void **) (&func_glDrawArraysEXT) },
+  { "glDrawRangeElementsEXT", (void *) wine_glDrawRangeElementsEXT, (void **) (&func_glDrawRangeElementsEXT) },
+  { "glEdgeFlagPointerEXT", (void *) wine_glEdgeFlagPointerEXT, (void **) (&func_glEdgeFlagPointerEXT) },
+  { "glEdgeFlagPointerListIBM", (void *) wine_glEdgeFlagPointerListIBM, (void **) (&func_glEdgeFlagPointerListIBM) },
+  { "glFinalCombinerInputNV", (void *) wine_glFinalCombinerInputNV, (void **) (&func_glFinalCombinerInputNV) },
+  { "glFinishTextureSUNX", (void *) wine_glFinishTextureSUNX, (void **) (&func_glFinishTextureSUNX) },
+  { "glFlushRasterSGIX", (void *) wine_glFlushRasterSGIX, (void **) (&func_glFlushRasterSGIX) },
+  { "glFlushVertexArrayRangeNV", (void *) wine_glFlushVertexArrayRangeNV, (void **) (&func_glFlushVertexArrayRangeNV) },
+  { "glFogCoordPointerEXT", (void *) wine_glFogCoordPointerEXT, (void **) (&func_glFogCoordPointerEXT) },
+  { "glFogCoordPointerListIBM", (void *) wine_glFogCoordPointerListIBM, (void **) (&func_glFogCoordPointerListIBM) },
+  { "glFogCoorddEXT", (void *) wine_glFogCoorddEXT, (void **) (&func_glFogCoorddEXT) },
+  { "glFogCoorddvEXT", (void *) wine_glFogCoorddvEXT, (void **) (&func_glFogCoorddvEXT) },
+  { "glFogCoordfEXT", (void *) wine_glFogCoordfEXT, (void **) (&func_glFogCoordfEXT) },
+  { "glFogCoordfvEXT", (void *) wine_glFogCoordfvEXT, (void **) (&func_glFogCoordfvEXT) },
+  { "glFogFuncSGIS", (void *) wine_glFogFuncSGIS, (void **) (&func_glFogFuncSGIS) },
+  { "glFragmentColorMaterialSGIX", (void *) wine_glFragmentColorMaterialSGIX, (void **) (&func_glFragmentColorMaterialSGIX) },
+  { "glFragmentLightModelfSGIX", (void *) wine_glFragmentLightModelfSGIX, (void **) (&func_glFragmentLightModelfSGIX) },
+  { "glFragmentLightModelfvSGIX", (void *) wine_glFragmentLightModelfvSGIX, (void **) (&func_glFragmentLightModelfvSGIX) },
+  { "glFragmentLightModeliSGIX", (void *) wine_glFragmentLightModeliSGIX, (void **) (&func_glFragmentLightModeliSGIX) },
+  { "glFragmentLightModelivSGIX", (void *) wine_glFragmentLightModelivSGIX, (void **) (&func_glFragmentLightModelivSGIX) },
+  { "glFragmentLightfSGIX", (void *) wine_glFragmentLightfSGIX, (void **) (&func_glFragmentLightfSGIX) },
+  { "glFragmentLightfvSGIX", (void *) wine_glFragmentLightfvSGIX, (void **) (&func_glFragmentLightfvSGIX) },
+  { "glFragmentLightiSGIX", (void *) wine_glFragmentLightiSGIX, (void **) (&func_glFragmentLightiSGIX) },
+  { "glFragmentLightivSGIX", (void *) wine_glFragmentLightivSGIX, (void **) (&func_glFragmentLightivSGIX) },
+  { "glFragmentMaterialfSGIX", (void *) wine_glFragmentMaterialfSGIX, (void **) (&func_glFragmentMaterialfSGIX) },
+  { "glFragmentMaterialfvSGIX", (void *) wine_glFragmentMaterialfvSGIX, (void **) (&func_glFragmentMaterialfvSGIX) },
+  { "glFragmentMaterialiSGIX", (void *) wine_glFragmentMaterialiSGIX, (void **) (&func_glFragmentMaterialiSGIX) },
+  { "glFragmentMaterialivSGIX", (void *) wine_glFragmentMaterialivSGIX, (void **) (&func_glFragmentMaterialivSGIX) },
+  { "glFrameZoomSGIX", (void *) wine_glFrameZoomSGIX, (void **) (&func_glFrameZoomSGIX) },
+  { "glGenTexturesEXT", (void *) wine_glGenTexturesEXT, (void **) (&func_glGenTexturesEXT) },
+  { "glGetColorTableEXT", (void *) wine_glGetColorTableEXT, (void **) (&func_glGetColorTableEXT) },
+  { "glGetColorTableParameterfvEXT", (void *) wine_glGetColorTableParameterfvEXT, (void **) (&func_glGetColorTableParameterfvEXT) },
+  { "glGetColorTableParameterfvSGI", (void *) wine_glGetColorTableParameterfvSGI, (void **) (&func_glGetColorTableParameterfvSGI) },
+  { "glGetColorTableParameterivEXT", (void *) wine_glGetColorTableParameterivEXT, (void **) (&func_glGetColorTableParameterivEXT) },
+  { "glGetColorTableParameterivSGI", (void *) wine_glGetColorTableParameterivSGI, (void **) (&func_glGetColorTableParameterivSGI) },
+  { "glGetColorTableSGI", (void *) wine_glGetColorTableSGI, (void **) (&func_glGetColorTableSGI) },
+  { "glGetCombinerInputParameterfvNV", (void *) wine_glGetCombinerInputParameterfvNV, (void **) (&func_glGetCombinerInputParameterfvNV) },
+  { "glGetCombinerInputParameterivNV", (void *) wine_glGetCombinerInputParameterivNV, (void **) (&func_glGetCombinerInputParameterivNV) },
+  { "glGetCombinerOutputParameterfvNV", (void *) wine_glGetCombinerOutputParameterfvNV, (void **) (&func_glGetCombinerOutputParameterfvNV) },
+  { "glGetCombinerOutputParameterivNV", (void *) wine_glGetCombinerOutputParameterivNV, (void **) (&func_glGetCombinerOutputParameterivNV) },
+  { "glGetCompressedTexImageARB", (void *) wine_glGetCompressedTexImageARB, (void **) (&func_glGetCompressedTexImageARB) },
+  { "glGetConvolutionFilterEXT", (void *) wine_glGetConvolutionFilterEXT, (void **) (&func_glGetConvolutionFilterEXT) },
+  { "glGetConvolutionParameterfvEXT", (void *) wine_glGetConvolutionParameterfvEXT, (void **) (&func_glGetConvolutionParameterfvEXT) },
+  { "glGetConvolutionParameterivEXT", (void *) wine_glGetConvolutionParameterivEXT, (void **) (&func_glGetConvolutionParameterivEXT) },
+  { "glGetDetailTexFuncSGIS", (void *) wine_glGetDetailTexFuncSGIS, (void **) (&func_glGetDetailTexFuncSGIS) },
+  { "glGetFinalCombinerInputParameterfvNV", (void *) wine_glGetFinalCombinerInputParameterfvNV, (void **) (&func_glGetFinalCombinerInputParameterfvNV) },
+  { "glGetFinalCombinerInputParameterivNV", (void *) wine_glGetFinalCombinerInputParameterivNV, (void **) (&func_glGetFinalCombinerInputParameterivNV) },
+  { "glGetFogFuncSGIS", (void *) wine_glGetFogFuncSGIS, (void **) (&func_glGetFogFuncSGIS) },
+  { "glGetFragmentLightfvSGIX", (void *) wine_glGetFragmentLightfvSGIX, (void **) (&func_glGetFragmentLightfvSGIX) },
+  { "glGetFragmentLightivSGIX", (void *) wine_glGetFragmentLightivSGIX, (void **) (&func_glGetFragmentLightivSGIX) },
+  { "glGetFragmentMaterialfvSGIX", (void *) wine_glGetFragmentMaterialfvSGIX, (void **) (&func_glGetFragmentMaterialfvSGIX) },
+  { "glGetFragmentMaterialivSGIX", (void *) wine_glGetFragmentMaterialivSGIX, (void **) (&func_glGetFragmentMaterialivSGIX) },
+  { "glGetHistogramEXT", (void *) wine_glGetHistogramEXT, (void **) (&func_glGetHistogramEXT) },
+  { "glGetHistogramParameterfvEXT", (void *) wine_glGetHistogramParameterfvEXT, (void **) (&func_glGetHistogramParameterfvEXT) },
+  { "glGetHistogramParameterivEXT", (void *) wine_glGetHistogramParameterivEXT, (void **) (&func_glGetHistogramParameterivEXT) },
+  { "glGetImageTransformParameterfvHP", (void *) wine_glGetImageTransformParameterfvHP, (void **) (&func_glGetImageTransformParameterfvHP) },
+  { "glGetImageTransformParameterivHP", (void *) wine_glGetImageTransformParameterivHP, (void **) (&func_glGetImageTransformParameterivHP) },
+  { "glGetInstrumentsSGIX", (void *) wine_glGetInstrumentsSGIX, (void **) (&func_glGetInstrumentsSGIX) },
+  { "glGetListParameterfvSGIX", (void *) wine_glGetListParameterfvSGIX, (void **) (&func_glGetListParameterfvSGIX) },
+  { "glGetListParameterivSGIX", (void *) wine_glGetListParameterivSGIX, (void **) (&func_glGetListParameterivSGIX) },
+  { "glGetMinmaxEXT", (void *) wine_glGetMinmaxEXT, (void **) (&func_glGetMinmaxEXT) },
+  { "glGetMinmaxParameterfvEXT", (void *) wine_glGetMinmaxParameterfvEXT, (void **) (&func_glGetMinmaxParameterfvEXT) },
+  { "glGetMinmaxParameterivEXT", (void *) wine_glGetMinmaxParameterivEXT, (void **) (&func_glGetMinmaxParameterivEXT) },
+  { "glGetPixelTexGenParameterfvSGIS", (void *) wine_glGetPixelTexGenParameterfvSGIS, (void **) (&func_glGetPixelTexGenParameterfvSGIS) },
+  { "glGetPixelTexGenParameterivSGIS", (void *) wine_glGetPixelTexGenParameterivSGIS, (void **) (&func_glGetPixelTexGenParameterivSGIS) },
+  { "glGetPointervEXT", (void *) wine_glGetPointervEXT, (void **) (&func_glGetPointervEXT) },
+  { "glGetSeparableFilterEXT", (void *) wine_glGetSeparableFilterEXT, (void **) (&func_glGetSeparableFilterEXT) },
+  { "glGetSharpenTexFuncSGIS", (void *) wine_glGetSharpenTexFuncSGIS, (void **) (&func_glGetSharpenTexFuncSGIS) },
+  { "glGetTexFilterFuncSGIS", (void *) wine_glGetTexFilterFuncSGIS, (void **) (&func_glGetTexFilterFuncSGIS) },
+  { "glGlobalAlphaFactorbSUN", (void *) wine_glGlobalAlphaFactorbSUN, (void **) (&func_glGlobalAlphaFactorbSUN) },
+  { "glGlobalAlphaFactordSUN", (void *) wine_glGlobalAlphaFactordSUN, (void **) (&func_glGlobalAlphaFactordSUN) },
+  { "glGlobalAlphaFactorfSUN", (void *) wine_glGlobalAlphaFactorfSUN, (void **) (&func_glGlobalAlphaFactorfSUN) },
+  { "glGlobalAlphaFactoriSUN", (void *) wine_glGlobalAlphaFactoriSUN, (void **) (&func_glGlobalAlphaFactoriSUN) },
+  { "glGlobalAlphaFactorsSUN", (void *) wine_glGlobalAlphaFactorsSUN, (void **) (&func_glGlobalAlphaFactorsSUN) },
+  { "glGlobalAlphaFactorubSUN", (void *) wine_glGlobalAlphaFactorubSUN, (void **) (&func_glGlobalAlphaFactorubSUN) },
+  { "glGlobalAlphaFactoruiSUN", (void *) wine_glGlobalAlphaFactoruiSUN, (void **) (&func_glGlobalAlphaFactoruiSUN) },
+  { "glGlobalAlphaFactorusSUN", (void *) wine_glGlobalAlphaFactorusSUN, (void **) (&func_glGlobalAlphaFactorusSUN) },
+  { "glHintPGI", (void *) wine_glHintPGI, (void **) (&func_glHintPGI) },
+  { "glHistogramEXT", (void *) wine_glHistogramEXT, (void **) (&func_glHistogramEXT) },
+  { "glImageTransformParameterfHP", (void *) wine_glImageTransformParameterfHP, (void **) (&func_glImageTransformParameterfHP) },
+  { "glImageTransformParameterfvHP", (void *) wine_glImageTransformParameterfvHP, (void **) (&func_glImageTransformParameterfvHP) },
+  { "glImageTransformParameteriHP", (void *) wine_glImageTransformParameteriHP, (void **) (&func_glImageTransformParameteriHP) },
+  { "glImageTransformParameterivHP", (void *) wine_glImageTransformParameterivHP, (void **) (&func_glImageTransformParameterivHP) },
+  { "glIndexFuncEXT", (void *) wine_glIndexFuncEXT, (void **) (&func_glIndexFuncEXT) },
+  { "glIndexMaterialEXT", (void *) wine_glIndexMaterialEXT, (void **) (&func_glIndexMaterialEXT) },
+  { "glIndexPointerEXT", (void *) wine_glIndexPointerEXT, (void **) (&func_glIndexPointerEXT) },
+  { "glIndexPointerListIBM", (void *) wine_glIndexPointerListIBM, (void **) (&func_glIndexPointerListIBM) },
+  { "glInstrumentsBufferSGIX", (void *) wine_glInstrumentsBufferSGIX, (void **) (&func_glInstrumentsBufferSGIX) },
+  { "glIsTextureEXT", (void *) wine_glIsTextureEXT, (void **) (&func_glIsTextureEXT) },
+  { "glLightEnviSGIX", (void *) wine_glLightEnviSGIX, (void **) (&func_glLightEnviSGIX) },
+  { "glListParameterfSGIX", (void *) wine_glListParameterfSGIX, (void **) (&func_glListParameterfSGIX) },
+  { "glListParameterfvSGIX", (void *) wine_glListParameterfvSGIX, (void **) (&func_glListParameterfvSGIX) },
+  { "glListParameteriSGIX", (void *) wine_glListParameteriSGIX, (void **) (&func_glListParameteriSGIX) },
+  { "glListParameterivSGIX", (void *) wine_glListParameterivSGIX, (void **) (&func_glListParameterivSGIX) },
+  { "glLoadTransposeMatrixdARB", (void *) wine_glLoadTransposeMatrixdARB, (void **) (&func_glLoadTransposeMatrixdARB) },
+  { "glLoadTransposeMatrixfARB", (void *) wine_glLoadTransposeMatrixfARB, (void **) (&func_glLoadTransposeMatrixfARB) },
+  { "glLockArraysEXT", (void *) wine_glLockArraysEXT, (void **) (&func_glLockArraysEXT) },
+  { "glMinmaxEXT", (void *) wine_glMinmaxEXT, (void **) (&func_glMinmaxEXT) },
+  { "glMultTransposeMatrixdARB", (void *) wine_glMultTransposeMatrixdARB, (void **) (&func_glMultTransposeMatrixdARB) },
+  { "glMultTransposeMatrixfARB", (void *) wine_glMultTransposeMatrixfARB, (void **) (&func_glMultTransposeMatrixfARB) },
+  { "glMultiDrawArraysEXT", (void *) wine_glMultiDrawArraysEXT, (void **) (&func_glMultiDrawArraysEXT) },
+  { "glMultiDrawElementsEXT", (void *) wine_glMultiDrawElementsEXT, (void **) (&func_glMultiDrawElementsEXT) },
+  { "glMultiModeDrawArraysIBM", (void *) wine_glMultiModeDrawArraysIBM, (void **) (&func_glMultiModeDrawArraysIBM) },
+  { "glMultiModeDrawElementsIBM", (void *) wine_glMultiModeDrawElementsIBM, (void **) (&func_glMultiModeDrawElementsIBM) },
+  { "glNormal3fVertex3fSUN", (void *) wine_glNormal3fVertex3fSUN, (void **) (&func_glNormal3fVertex3fSUN) },
+  { "glNormal3fVertex3fvSUN", (void *) wine_glNormal3fVertex3fvSUN, (void **) (&func_glNormal3fVertex3fvSUN) },
+  { "glNormalPointerEXT", (void *) wine_glNormalPointerEXT, (void **) (&func_glNormalPointerEXT) },
+  { "glNormalPointerListIBM", (void *) wine_glNormalPointerListIBM, (void **) (&func_glNormalPointerListIBM) },
+  { "glNormalPointervINTEL", (void *) wine_glNormalPointervINTEL, (void **) (&func_glNormalPointervINTEL) },
+  { "glPixelTexGenParameterfSGIS", (void *) wine_glPixelTexGenParameterfSGIS, (void **) (&func_glPixelTexGenParameterfSGIS) },
+  { "glPixelTexGenParameterfvSGIS", (void *) wine_glPixelTexGenParameterfvSGIS, (void **) (&func_glPixelTexGenParameterfvSGIS) },
+  { "glPixelTexGenParameteriSGIS", (void *) wine_glPixelTexGenParameteriSGIS, (void **) (&func_glPixelTexGenParameteriSGIS) },
+  { "glPixelTexGenParameterivSGIS", (void *) wine_glPixelTexGenParameterivSGIS, (void **) (&func_glPixelTexGenParameterivSGIS) },
+  { "glPixelTexGenSGIX", (void *) wine_glPixelTexGenSGIX, (void **) (&func_glPixelTexGenSGIX) },
+  { "glPixelTransformParameterfEXT", (void *) wine_glPixelTransformParameterfEXT, (void **) (&func_glPixelTransformParameterfEXT) },
+  { "glPixelTransformParameterfvEXT", (void *) wine_glPixelTransformParameterfvEXT, (void **) (&func_glPixelTransformParameterfvEXT) },
+  { "glPixelTransformParameteriEXT", (void *) wine_glPixelTransformParameteriEXT, (void **) (&func_glPixelTransformParameteriEXT) },
+  { "glPixelTransformParameterivEXT", (void *) wine_glPixelTransformParameterivEXT, (void **) (&func_glPixelTransformParameterivEXT) },
+  { "glPointParameterfEXT", (void *) wine_glPointParameterfEXT, (void **) (&func_glPointParameterfEXT) },
+  { "glPointParameterfSGIS", (void *) wine_glPointParameterfSGIS, (void **) (&func_glPointParameterfSGIS) },
+  { "glPointParameterfvEXT", (void *) wine_glPointParameterfvEXT, (void **) (&func_glPointParameterfvEXT) },
+  { "glPointParameterfvSGIS", (void *) wine_glPointParameterfvSGIS, (void **) (&func_glPointParameterfvSGIS) },
+  { "glPollInstrumentsSGIX", (void *) wine_glPollInstrumentsSGIX, (void **) (&func_glPollInstrumentsSGIX) },
+  { "glPolygonOffsetEXT", (void *) wine_glPolygonOffsetEXT, (void **) (&func_glPolygonOffsetEXT) },
+  { "glPrioritizeTexturesEXT", (void *) wine_glPrioritizeTexturesEXT, (void **) (&func_glPrioritizeTexturesEXT) },
+  { "glReadInstrumentsSGIX", (void *) wine_glReadInstrumentsSGIX, (void **) (&func_glReadInstrumentsSGIX) },
+  { "glReferencePlaneSGIX", (void *) wine_glReferencePlaneSGIX, (void **) (&func_glReferencePlaneSGIX) },
+  { "glReplacementCodePointer", (void *) wine_glReplacementCodePointer, (void **) (&func_glReplacementCodePointer) },
+  { "glReplacementCodeubSUN", (void *) wine_glReplacementCodeubSUN, (void **) (&func_glReplacementCodeubSUN) },
+  { "glReplacementCodeubvSUN", (void *) wine_glReplacementCodeubvSUN, (void **) (&func_glReplacementCodeubvSUN) },
+  { "glReplacementCodeuiColor3fVertex3fSUN", (void *) wine_glReplacementCodeuiColor3fVertex3fSUN, (void **) (&func_glReplacementCodeuiColor3fVertex3fSUN) },
+  { "glReplacementCodeuiColor3fVertex3fvSUN", (void *) wine_glReplacementCodeuiColor3fVertex3fvSUN, (void **) (&func_glReplacementCodeuiColor3fVertex3fvSUN) },
+  { "glReplacementCodeuiColor4fNormal3fVertex3fSUN", (void *) wine_glReplacementCodeuiColor4fNormal3fVertex3fSUN, (void **) (&func_glReplacementCodeuiColor4fNormal3fVertex3fSUN) },
+  { "glReplacementCodeuiColor4fNormal3fVertex3fvSUN", (void *) wine_glReplacementCodeuiColor4fNormal3fVertex3fvSUN, (void **) (&func_glReplacementCodeuiColor4fNormal3fVertex3fvSUN) },
+  { "glReplacementCodeuiColor4ubVertex3fSUN", (void *) wine_glReplacementCodeuiColor4ubVertex3fSUN, (void **) (&func_glReplacementCodeuiColor4ubVertex3fSUN) },
+  { "glReplacementCodeuiColor4ubVertex3fvSUN", (void *) wine_glReplacementCodeuiColor4ubVertex3fvSUN, (void **) (&func_glReplacementCodeuiColor4ubVertex3fvSUN) },
+  { "glReplacementCodeuiNormal3fVertex3fSUN", (void *) wine_glReplacementCodeuiNormal3fVertex3fSUN, (void **) (&func_glReplacementCodeuiNormal3fVertex3fSUN) },
+  { "glReplacementCodeuiNormal3fVertex3fvSUN", (void *) wine_glReplacementCodeuiNormal3fVertex3fvSUN, (void **) (&func_glReplacementCodeuiNormal3fVertex3fvSUN) },
+  { "glReplacementCodeuiSUN", (void *) wine_glReplacementCodeuiSUN, (void **) (&func_glReplacementCodeuiSUN) },
+  { "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN", (void *) wine_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN, (void **) (&func_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN) },
+  { "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN", (void *) wine_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN, (void **) (&func_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN) },
+  { "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN", (void *) wine_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN, (void **) (&func_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN) },
+  { "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN", (void *) wine_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN, (void **) (&func_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN) },
+  { "glReplacementCodeuiTexCoord2fVertex3fSUN", (void *) wine_glReplacementCodeuiTexCoord2fVertex3fSUN, (void **) (&func_glReplacementCodeuiTexCoord2fVertex3fSUN) },
+  { "glReplacementCodeuiTexCoord2fVertex3fvSUN", (void *) wine_glReplacementCodeuiTexCoord2fVertex3fvSUN, (void **) (&func_glReplacementCodeuiTexCoord2fVertex3fvSUN) },
+  { "glReplacementCodeuiVertex3fSUN", (void *) wine_glReplacementCodeuiVertex3fSUN, (void **) (&func_glReplacementCodeuiVertex3fSUN) },
+  { "glReplacementCodeuiVertex3fvSUN", (void *) wine_glReplacementCodeuiVertex3fvSUN, (void **) (&func_glReplacementCodeuiVertex3fvSUN) },
+  { "glReplacementCodeuivSUN", (void *) wine_glReplacementCodeuivSUN, (void **) (&func_glReplacementCodeuivSUN) },
+  { "glReplacementCodeusSUN", (void *) wine_glReplacementCodeusSUN, (void **) (&func_glReplacementCodeusSUN) },
+  { "glReplacementCodeusvSUN", (void *) wine_glReplacementCodeusvSUN, (void **) (&func_glReplacementCodeusvSUN) },
+  { "glResetHistogramEXT", (void *) wine_glResetHistogramEXT, (void **) (&func_glResetHistogramEXT) },
+  { "glResetMinmaxEXT", (void *) wine_glResetMinmaxEXT, (void **) (&func_glResetMinmaxEXT) },
+  { "glResizeBuffersMESA", (void *) wine_glResizeBuffersMESA, (void **) (&func_glResizeBuffersMESA) },
+  { "glSampleCoverageARB", (void *) wine_glSampleCoverageARB, (void **) (&func_glSampleCoverageARB) },
+  { "glSampleMaskEXT", (void *) wine_glSampleMaskEXT, (void **) (&func_glSampleMaskEXT) },
+  { "glSampleMaskSGIS", (void *) wine_glSampleMaskSGIS, (void **) (&func_glSampleMaskSGIS) },
+  { "glSamplePassARB", (void *) wine_glSamplePassARB, (void **) (&func_glSamplePassARB) },
+  { "glSamplePatternEXT", (void *) wine_glSamplePatternEXT, (void **) (&func_glSamplePatternEXT) },
+  { "glSamplePatternSGIS", (void *) wine_glSamplePatternSGIS, (void **) (&func_glSamplePatternSGIS) },
+  { "glSecondaryColor3bEXT", (void *) wine_glSecondaryColor3bEXT, (void **) (&func_glSecondaryColor3bEXT) },
+  { "glSecondaryColor3bvEXT", (void *) wine_glSecondaryColor3bvEXT, (void **) (&func_glSecondaryColor3bvEXT) },
+  { "glSecondaryColor3dEXT", (void *) wine_glSecondaryColor3dEXT, (void **) (&func_glSecondaryColor3dEXT) },
+  { "glSecondaryColor3dvEXT", (void *) wine_glSecondaryColor3dvEXT, (void **) (&func_glSecondaryColor3dvEXT) },
+  { "glSecondaryColor3fEXT", (void *) wine_glSecondaryColor3fEXT, (void **) (&func_glSecondaryColor3fEXT) },
+  { "glSecondaryColor3fvEXT", (void *) wine_glSecondaryColor3fvEXT, (void **) (&func_glSecondaryColor3fvEXT) },
+  { "glSecondaryColor3iEXT", (void *) wine_glSecondaryColor3iEXT, (void **) (&func_glSecondaryColor3iEXT) },
+  { "glSecondaryColor3ivEXT", (void *) wine_glSecondaryColor3ivEXT, (void **) (&func_glSecondaryColor3ivEXT) },
+  { "glSecondaryColor3sEXT", (void *) wine_glSecondaryColor3sEXT, (void **) (&func_glSecondaryColor3sEXT) },
+  { "glSecondaryColor3svEXT", (void *) wine_glSecondaryColor3svEXT, (void **) (&func_glSecondaryColor3svEXT) },
+  { "glSecondaryColor3ubEXT", (void *) wine_glSecondaryColor3ubEXT, (void **) (&func_glSecondaryColor3ubEXT) },
+  { "glSecondaryColor3ubvEXT", (void *) wine_glSecondaryColor3ubvEXT, (void **) (&func_glSecondaryColor3ubvEXT) },
+  { "glSecondaryColor3uiEXT", (void *) wine_glSecondaryColor3uiEXT, (void **) (&func_glSecondaryColor3uiEXT) },
+  { "glSecondaryColor3uivEXT", (void *) wine_glSecondaryColor3uivEXT, (void **) (&func_glSecondaryColor3uivEXT) },
+  { "glSecondaryColor3usEXT", (void *) wine_glSecondaryColor3usEXT, (void **) (&func_glSecondaryColor3usEXT) },
+  { "glSecondaryColor3usvEXT", (void *) wine_glSecondaryColor3usvEXT, (void **) (&func_glSecondaryColor3usvEXT) },
+  { "glSecondaryColorPointerEXT", (void *) wine_glSecondaryColorPointerEXT, (void **) (&func_glSecondaryColorPointerEXT) },
+  { "glSecondaryColorPointerListIBM", (void *) wine_glSecondaryColorPointerListIBM, (void **) (&func_glSecondaryColorPointerListIBM) },
+  { "glSeparableFilter2DEXT", (void *) wine_glSeparableFilter2DEXT, (void **) (&func_glSeparableFilter2DEXT) },
+  { "glSharpenTexFuncSGIS", (void *) wine_glSharpenTexFuncSGIS, (void **) (&func_glSharpenTexFuncSGIS) },
+  { "glSpriteParameterfSGIX", (void *) wine_glSpriteParameterfSGIX, (void **) (&func_glSpriteParameterfSGIX) },
+  { "glSpriteParameterfvSGIX", (void *) wine_glSpriteParameterfvSGIX, (void **) (&func_glSpriteParameterfvSGIX) },
+  { "glSpriteParameteriSGIX", (void *) wine_glSpriteParameteriSGIX, (void **) (&func_glSpriteParameteriSGIX) },
+  { "glSpriteParameterivSGIX", (void *) wine_glSpriteParameterivSGIX, (void **) (&func_glSpriteParameterivSGIX) },
+  { "glStartInstrumentsSGIX", (void *) wine_glStartInstrumentsSGIX, (void **) (&func_glStartInstrumentsSGIX) },
+  { "glStopInstrumentsSGIX", (void *) wine_glStopInstrumentsSGIX, (void **) (&func_glStopInstrumentsSGIX) },
+  { "glTagSampleBufferSGIX", (void *) wine_glTagSampleBufferSGIX, (void **) (&func_glTagSampleBufferSGIX) },
+  { "glTangent3b", (void *) wine_glTangent3b, (void **) (&func_glTangent3b) },
+  { "glTangent3bv", (void *) wine_glTangent3bv, (void **) (&func_glTangent3bv) },
+  { "glTangent3d", (void *) wine_glTangent3d, (void **) (&func_glTangent3d) },
+  { "glTangent3dv", (void *) wine_glTangent3dv, (void **) (&func_glTangent3dv) },
+  { "glTangent3f", (void *) wine_glTangent3f, (void **) (&func_glTangent3f) },
+  { "glTangent3fv", (void *) wine_glTangent3fv, (void **) (&func_glTangent3fv) },
+  { "glTangent3i", (void *) wine_glTangent3i, (void **) (&func_glTangent3i) },
+  { "glTangent3iv", (void *) wine_glTangent3iv, (void **) (&func_glTangent3iv) },
+  { "glTangent3s", (void *) wine_glTangent3s, (void **) (&func_glTangent3s) },
+  { "glTangent3sv", (void *) wine_glTangent3sv, (void **) (&func_glTangent3sv) },
+  { "glTangentPointerEXT", (void *) wine_glTangentPointerEXT, (void **) (&func_glTangentPointerEXT) },
+  { "glTbufferMask3DFX", (void *) wine_glTbufferMask3DFX, (void **) (&func_glTbufferMask3DFX) },
+  { "glTexCoord2fColor3fVertex3fSUN", (void *) wine_glTexCoord2fColor3fVertex3fSUN, (void **) (&func_glTexCoord2fColor3fVertex3fSUN) },
+  { "glTexCoord2fColor3fVertex3fvSUN", (void *) wine_glTexCoord2fColor3fVertex3fvSUN, (void **) (&func_glTexCoord2fColor3fVertex3fvSUN) },
+  { "glTexCoord2fColor4fNormal3fVertex3fSUN", (void *) wine_glTexCoord2fColor4fNormal3fVertex3fSUN, (void **) (&func_glTexCoord2fColor4fNormal3fVertex3fSUN) },
+  { "glTexCoord2fColor4fNormal3fVertex3fvSUN", (void *) wine_glTexCoord2fColor4fNormal3fVertex3fvSUN, (void **) (&func_glTexCoord2fColor4fNormal3fVertex3fvSUN) },
+  { "glTexCoord2fColor4ubVertex3fSUN", (void *) wine_glTexCoord2fColor4ubVertex3fSUN, (void **) (&func_glTexCoord2fColor4ubVertex3fSUN) },
+  { "glTexCoord2fColor4ubVertex3fvSUN", (void *) wine_glTexCoord2fColor4ubVertex3fvSUN, (void **) (&func_glTexCoord2fColor4ubVertex3fvSUN) },
+  { "glTexCoord2fNormal3fVertex3fSUN", (void *) wine_glTexCoord2fNormal3fVertex3fSUN, (void **) (&func_glTexCoord2fNormal3fVertex3fSUN) },
+  { "glTexCoord2fNormal3fVertex3fvSUN", (void *) wine_glTexCoord2fNormal3fVertex3fvSUN, (void **) (&func_glTexCoord2fNormal3fVertex3fvSUN) },
+  { "glTexCoord2fVertex3fSUN", (void *) wine_glTexCoord2fVertex3fSUN, (void **) (&func_glTexCoord2fVertex3fSUN) },
+  { "glTexCoord2fVertex3fvSUN", (void *) wine_glTexCoord2fVertex3fvSUN, (void **) (&func_glTexCoord2fVertex3fvSUN) },
+  { "glTexCoord4fColor4fNormal3fVertex4fSUN", (void *) wine_glTexCoord4fColor4fNormal3fVertex4fSUN, (void **) (&func_glTexCoord4fColor4fNormal3fVertex4fSUN) },
+  { "glTexCoord4fColor4fNormal3fVertex4fvSUN", (void *) wine_glTexCoord4fColor4fNormal3fVertex4fvSUN, (void **) (&func_glTexCoord4fColor4fNormal3fVertex4fvSUN) },
+  { "glTexCoord4fVertex4fSUN", (void *) wine_glTexCoord4fVertex4fSUN, (void **) (&func_glTexCoord4fVertex4fSUN) },
+  { "glTexCoord4fVertex4fvSUN", (void *) wine_glTexCoord4fVertex4fvSUN, (void **) (&func_glTexCoord4fVertex4fvSUN) },
+  { "glTexCoordPointerEXT", (void *) wine_glTexCoordPointerEXT, (void **) (&func_glTexCoordPointerEXT) },
+  { "glTexCoordPointerListIBM", (void *) wine_glTexCoordPointerListIBM, (void **) (&func_glTexCoordPointerListIBM) },
+  { "glTexCoordPointervINTEL", (void *) wine_glTexCoordPointervINTEL, (void **) (&func_glTexCoordPointervINTEL) },
+  { "glTexFilterFuncSGIS", (void *) wine_glTexFilterFuncSGIS, (void **) (&func_glTexFilterFuncSGIS) },
+  { "glTexImage3DEXT", (void *) wine_glTexImage3DEXT, (void **) (&func_glTexImage3DEXT) },
+  { "glTexImage4DSGIS", (void *) wine_glTexImage4DSGIS, (void **) (&func_glTexImage4DSGIS) },
+  { "glTexSubImage1DEXT", (void *) wine_glTexSubImage1DEXT, (void **) (&func_glTexSubImage1DEXT) },
+  { "glTexSubImage2DEXT", (void *) wine_glTexSubImage2DEXT, (void **) (&func_glTexSubImage2DEXT) },
+  { "glTexSubImage3DEXT", (void *) wine_glTexSubImage3DEXT, (void **) (&func_glTexSubImage3DEXT) },
+  { "glTexSubImage4DSGIS", (void *) wine_glTexSubImage4DSGIS, (void **) (&func_glTexSubImage4DSGIS) },
+  { "glTextureLightEXT", (void *) wine_glTextureLightEXT, (void **) (&func_glTextureLightEXT) },
+  { "glTextureMaterialEXT", (void *) wine_glTextureMaterialEXT, (void **) (&func_glTextureMaterialEXT) },
+  { "glTextureNormalEXT", (void *) wine_glTextureNormalEXT, (void **) (&func_glTextureNormalEXT) },
+  { "glUnlockArraysEXT", (void *) wine_glUnlockArraysEXT, (void **) (&func_glUnlockArraysEXT) },
+  { "glVertexArrayRangeNV", (void *) wine_glVertexArrayRangeNV, (void **) (&func_glVertexArrayRangeNV) },
+  { "glVertexPointerEXT", (void *) wine_glVertexPointerEXT, (void **) (&func_glVertexPointerEXT) },
+  { "glVertexPointerListIBM", (void *) wine_glVertexPointerListIBM, (void **) (&func_glVertexPointerListIBM) },
+  { "glVertexPointervINTEL", (void *) wine_glVertexPointervINTEL, (void **) (&func_glVertexPointervINTEL) },
+  { "glVertexWeightPointerEXT", (void *) wine_glVertexWeightPointerEXT, (void **) (&func_glVertexWeightPointerEXT) },
+  { "glVertexWeightfEXT", (void *) wine_glVertexWeightfEXT, (void **) (&func_glVertexWeightfEXT) },
+  { "glVertexWeightfvEXT", (void *) wine_glVertexWeightfvEXT, (void **) (&func_glVertexWeightfvEXT) },
+  { "glWindowPos2dMESA", (void *) wine_glWindowPos2dMESA, (void **) (&func_glWindowPos2dMESA) },
+  { "glWindowPos2dvMESA", (void *) wine_glWindowPos2dvMESA, (void **) (&func_glWindowPos2dvMESA) },
+  { "glWindowPos2fMESA", (void *) wine_glWindowPos2fMESA, (void **) (&func_glWindowPos2fMESA) },
+  { "glWindowPos2fvMESA", (void *) wine_glWindowPos2fvMESA, (void **) (&func_glWindowPos2fvMESA) },
+  { "glWindowPos2iMESA", (void *) wine_glWindowPos2iMESA, (void **) (&func_glWindowPos2iMESA) },
+  { "glWindowPos2ivMESA", (void *) wine_glWindowPos2ivMESA, (void **) (&func_glWindowPos2ivMESA) },
+  { "glWindowPos2sMESA", (void *) wine_glWindowPos2sMESA, (void **) (&func_glWindowPos2sMESA) },
+  { "glWindowPos2svMESA", (void *) wine_glWindowPos2svMESA, (void **) (&func_glWindowPos2svMESA) },
+  { "glWindowPos3dMESA", (void *) wine_glWindowPos3dMESA, (void **) (&func_glWindowPos3dMESA) },
+  { "glWindowPos3dvMESA", (void *) wine_glWindowPos3dvMESA, (void **) (&func_glWindowPos3dvMESA) },
+  { "glWindowPos3fMESA", (void *) wine_glWindowPos3fMESA, (void **) (&func_glWindowPos3fMESA) },
+  { "glWindowPos3fvMESA", (void *) wine_glWindowPos3fvMESA, (void **) (&func_glWindowPos3fvMESA) },
+  { "glWindowPos3iMESA", (void *) wine_glWindowPos3iMESA, (void **) (&func_glWindowPos3iMESA) },
+  { "glWindowPos3ivMESA", (void *) wine_glWindowPos3ivMESA, (void **) (&func_glWindowPos3ivMESA) },
+  { "glWindowPos3sMESA", (void *) wine_glWindowPos3sMESA, (void **) (&func_glWindowPos3sMESA) },
+  { "glWindowPos3svMESA", (void *) wine_glWindowPos3svMESA, (void **) (&func_glWindowPos3svMESA) },
+  { "glWindowPos4dMESA", (void *) wine_glWindowPos4dMESA, (void **) (&func_glWindowPos4dMESA) },
+  { "glWindowPos4dvMESA", (void *) wine_glWindowPos4dvMESA, (void **) (&func_glWindowPos4dvMESA) },
+  { "glWindowPos4fMESA", (void *) wine_glWindowPos4fMESA, (void **) (&func_glWindowPos4fMESA) },
+  { "glWindowPos4fvMESA", (void *) wine_glWindowPos4fvMESA, (void **) (&func_glWindowPos4fvMESA) },
+  { "glWindowPos4iMESA", (void *) wine_glWindowPos4iMESA, (void **) (&func_glWindowPos4iMESA) },
+  { "glWindowPos4ivMESA", (void *) wine_glWindowPos4ivMESA, (void **) (&func_glWindowPos4ivMESA) },
+  { "glWindowPos4sMESA", (void *) wine_glWindowPos4sMESA, (void **) (&func_glWindowPos4sMESA) },
+  { "glWindowPos4svMESA", (void *) wine_glWindowPos4svMESA, (void **) (&func_glWindowPos4svMESA) }
+};
+
+/* Now, the function declarations */
+void WINAPI wine_glApplyTextureEXT(GLenum arg_0) {
+  ENTER_GL();
+  func_glApplyTextureEXT(arg_0);
+  LEAVE_GL();
+}
+
+GLboolean WINAPI wine_glAreTexturesResidentEXT(GLsizei arg_0,  const GLuint * arg_1,  GLboolean * arg_2) {
+  GLboolean ret;
+  ENTER_GL();
+    ret = func_glAreTexturesResidentEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+  return ret;
+}
+
+void WINAPI wine_glArrayElementEXT(GLint arg_0) {
+  ENTER_GL();
+  func_glArrayElementEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBindTextureEXT(GLenum arg_0,  GLuint arg_1) {
+  ENTER_GL();
+  func_glBindTextureEXT(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBinormal3b(GLbyte arg_0,  GLbyte arg_1,  GLbyte arg_2) {
+  ENTER_GL();
+  func_glBinormal3b(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBinormal3bv(const GLbyte * arg_0) {
+  ENTER_GL();
+  func_glBinormal3bv(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBinormal3d(GLdouble arg_0,  GLdouble arg_1,  GLdouble arg_2) {
+  ENTER_GL();
+  func_glBinormal3d(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBinormal3dv(const GLdouble * arg_0) {
+  ENTER_GL();
+  func_glBinormal3dv(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBinormal3f(GLfloat arg_0,  GLfloat arg_1,  GLfloat arg_2) {
+  ENTER_GL();
+  func_glBinormal3f(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBinormal3fv(const GLfloat * arg_0) {
+  ENTER_GL();
+  func_glBinormal3fv(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBinormal3i(GLint arg_0,  GLint arg_1,  GLint arg_2) {
+  ENTER_GL();
+  func_glBinormal3i(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBinormal3iv(const GLint * arg_0) {
+  ENTER_GL();
+  func_glBinormal3iv(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBinormal3s(GLshort arg_0,  GLshort arg_1,  GLshort arg_2) {
+  ENTER_GL();
+  func_glBinormal3s(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBinormal3sv(const GLshort * arg_0) {
+  ENTER_GL();
+  func_glBinormal3sv(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBinormalPointerEXT(GLenum arg_0,  GLsizei arg_1,  const GLvoid * arg_2) {
+  ENTER_GL();
+  func_glBinormalPointerEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBlendColorEXT(GLclampf arg_0,  GLclampf arg_1,  GLclampf arg_2,  GLclampf arg_3) {
+  ENTER_GL();
+  func_glBlendColorEXT(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBlendEquationEXT(GLenum arg_0) {
+  ENTER_GL();
+  func_glBlendEquationEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBlendFuncSeparateEXT(GLenum arg_0,  GLenum arg_1,  GLenum arg_2,  GLenum arg_3) {
+  ENTER_GL();
+  func_glBlendFuncSeparateEXT(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3fVertex3fSUN(GLfloat arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3,  GLfloat arg_4,  GLfloat arg_5) {
+  ENTER_GL();
+  func_glColor3fVertex3fSUN(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3fVertex3fvSUN(const GLfloat * arg_0,  const GLfloat * arg_1) {
+  ENTER_GL();
+  func_glColor3fVertex3fvSUN(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4fNormal3fVertex3fSUN(GLfloat arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3,  GLfloat arg_4,  GLfloat arg_5,  GLfloat arg_6,  GLfloat arg_7,  GLfloat arg_8,  GLfloat arg_9) {
+  ENTER_GL();
+  func_glColor4fNormal3fVertex3fSUN(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4fNormal3fVertex3fvSUN(const GLfloat * arg_0,  const GLfloat * arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glColor4fNormal3fVertex3fvSUN(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4ubVertex2fSUN(GLubyte arg_0,  GLubyte arg_1,  GLubyte arg_2,  GLubyte arg_3,  GLfloat arg_4,  GLfloat arg_5) {
+  ENTER_GL();
+  func_glColor4ubVertex2fSUN(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4ubVertex2fvSUN(const GLubyte * arg_0,  const GLfloat * arg_1) {
+  ENTER_GL();
+  func_glColor4ubVertex2fvSUN(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4ubVertex3fSUN(GLubyte arg_0,  GLubyte arg_1,  GLubyte arg_2,  GLubyte arg_3,  GLfloat arg_4,  GLfloat arg_5,  GLfloat arg_6) {
+  ENTER_GL();
+  func_glColor4ubVertex3fSUN(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4ubVertex3fvSUN(const GLubyte * arg_0,  const GLfloat * arg_1) {
+  ENTER_GL();
+  func_glColor4ubVertex3fvSUN(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColorPointerEXT(GLint arg_0,  GLenum arg_1,  GLsizei arg_2,  GLsizei arg_3,  const GLvoid * arg_4) {
+  ENTER_GL();
+  func_glColorPointerEXT(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColorPointerListIBM(GLint arg_0,  GLenum arg_1,  GLint arg_2,  const GLvoid* * arg_3,  GLint arg_4) {
+  ENTER_GL();
+  func_glColorPointerListIBM(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColorPointervINTEL(GLint arg_0,  GLenum arg_1,  const GLvoid* * arg_2) {
+  ENTER_GL();
+  func_glColorPointervINTEL(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColorSubTableEXT(GLenum arg_0,  GLsizei arg_1,  GLsizei arg_2,  GLenum arg_3,  GLenum arg_4,  const GLvoid * arg_5) {
+  ENTER_GL();
+  func_glColorSubTableEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColorTableEXT(GLenum arg_0,  GLenum arg_1,  GLsizei arg_2,  GLenum arg_3,  GLenum arg_4,  const GLvoid * arg_5) {
+  ENTER_GL();
+  func_glColorTableEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColorTableParameterfvSGI(GLenum arg_0,  GLenum arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glColorTableParameterfvSGI(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColorTableParameterivSGI(GLenum arg_0,  GLenum arg_1,  const GLint * arg_2) {
+  ENTER_GL();
+  func_glColorTableParameterivSGI(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColorTableSGI(GLenum arg_0,  GLenum arg_1,  GLsizei arg_2,  GLenum arg_3,  GLenum arg_4,  const GLvoid * arg_5) {
+  ENTER_GL();
+  func_glColorTableSGI(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCombinerInputNV(GLenum arg_0,  GLenum arg_1,  GLenum arg_2,  GLenum arg_3,  GLenum arg_4,  GLenum arg_5) {
+  ENTER_GL();
+  func_glCombinerInputNV(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+  LEAVE_GL();
+}
+
+void WINAPI wine_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) {
+  ENTER_GL();
+  func_glCombinerOutputNV(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCombinerParameterfNV(GLenum arg_0,  GLfloat arg_1) {
+  ENTER_GL();
+  func_glCombinerParameterfNV(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCombinerParameterfvNV(GLenum arg_0,  const GLfloat * arg_1) {
+  ENTER_GL();
+  func_glCombinerParameterfvNV(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCombinerParameteriNV(GLenum arg_0,  GLint arg_1) {
+  ENTER_GL();
+  func_glCombinerParameteriNV(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCombinerParameterivNV(GLenum arg_0,  const GLint * arg_1) {
+  ENTER_GL();
+  func_glCombinerParameterivNV(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCompressedTexImage1DARB(GLenum arg_0,  GLint arg_1,  GLenum arg_2,  GLsizei arg_3,  GLint arg_4,  GLsizei arg_5,  const GLvoid * arg_6) {
+  ENTER_GL();
+  func_glCompressedTexImage1DARB(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCompressedTexImage2DARB(GLenum arg_0,  GLint arg_1,  GLenum arg_2,  GLsizei arg_3,  GLsizei arg_4,  GLint arg_5,  GLsizei arg_6,  const GLvoid * arg_7) {
+  ENTER_GL();
+  func_glCompressedTexImage2DARB(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCompressedTexImage3DARB(GLenum arg_0,  GLint arg_1,  GLenum arg_2,  GLsizei arg_3,  GLsizei arg_4,  GLsizei arg_5,  GLint arg_6,  GLsizei arg_7,  const GLvoid * arg_8) {
+  ENTER_GL();
+  func_glCompressedTexImage3DARB(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCompressedTexSubImage1DARB(GLenum arg_0,  GLint arg_1,  GLint arg_2,  GLsizei arg_3,  GLenum arg_4,  GLsizei arg_5,  const GLvoid * arg_6) {
+  ENTER_GL();
+  func_glCompressedTexSubImage1DARB(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCompressedTexSubImage2DARB(GLenum arg_0,  GLint arg_1,  GLint arg_2,  GLint arg_3,  GLsizei arg_4,  GLsizei arg_5,  GLenum arg_6,  GLsizei arg_7,  const GLvoid * arg_8) {
+  ENTER_GL();
+  func_glCompressedTexSubImage2DARB(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCompressedTexSubImage3DARB(GLenum arg_0,  GLint arg_1,  GLint arg_2,  GLint arg_3,  GLint arg_4,  GLsizei arg_5,  GLsizei arg_6,  GLsizei arg_7,  GLenum arg_8,  GLsizei arg_9,  const GLvoid * arg_10) {
+  ENTER_GL();
+  func_glCompressedTexSubImage3DARB(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9, arg_10);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glConvolutionFilter1DEXT(GLenum arg_0,  GLenum arg_1,  GLsizei arg_2,  GLenum arg_3,  GLenum arg_4,  const GLvoid * arg_5) {
+  ENTER_GL();
+  func_glConvolutionFilter1DEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glConvolutionFilter2DEXT(GLenum arg_0,  GLenum arg_1,  GLsizei arg_2,  GLsizei arg_3,  GLenum arg_4,  GLenum arg_5,  const GLvoid * arg_6) {
+  ENTER_GL();
+  func_glConvolutionFilter2DEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glConvolutionParameterfEXT(GLenum arg_0,  GLenum arg_1,  GLfloat arg_2) {
+  ENTER_GL();
+  func_glConvolutionParameterfEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glConvolutionParameterfvEXT(GLenum arg_0,  GLenum arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glConvolutionParameterfvEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glConvolutionParameteriEXT(GLenum arg_0,  GLenum arg_1,  GLint arg_2) {
+  ENTER_GL();
+  func_glConvolutionParameteriEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glConvolutionParameterivEXT(GLenum arg_0,  GLenum arg_1,  const GLint * arg_2) {
+  ENTER_GL();
+  func_glConvolutionParameterivEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCopyColorSubTableEXT(GLenum arg_0,  GLsizei arg_1,  GLint arg_2,  GLint arg_3,  GLsizei arg_4) {
+  ENTER_GL();
+  func_glCopyColorSubTableEXT(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCopyColorTableSGI(GLenum arg_0,  GLenum arg_1,  GLint arg_2,  GLint arg_3,  GLsizei arg_4) {
+  ENTER_GL();
+  func_glCopyColorTableSGI(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCopyConvolutionFilter1DEXT(GLenum arg_0,  GLenum arg_1,  GLint arg_2,  GLint arg_3,  GLsizei arg_4) {
+  ENTER_GL();
+  func_glCopyConvolutionFilter1DEXT(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCopyConvolutionFilter2DEXT(GLenum arg_0,  GLenum arg_1,  GLint arg_2,  GLint arg_3,  GLsizei arg_4,  GLsizei arg_5) {
+  ENTER_GL();
+  func_glCopyConvolutionFilter2DEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCopyTexImage1DEXT(GLenum arg_0,  GLint arg_1,  GLenum arg_2,  GLint arg_3,  GLint arg_4,  GLsizei arg_5,  GLint arg_6) {
+  ENTER_GL();
+  func_glCopyTexImage1DEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6);
+  LEAVE_GL();
+}
+
+void WINAPI wine_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) {
+  ENTER_GL();
+  func_glCopyTexImage2DEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCopyTexSubImage1DEXT(GLenum arg_0,  GLint arg_1,  GLint arg_2,  GLint arg_3,  GLint arg_4,  GLsizei arg_5) {
+  ENTER_GL();
+  func_glCopyTexSubImage1DEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+  LEAVE_GL();
+}
+
+void WINAPI wine_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) {
+  ENTER_GL();
+  func_glCopyTexSubImage2DEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7);
+  LEAVE_GL();
+}
+
+void WINAPI wine_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) {
+  ENTER_GL();
+  func_glCopyTexSubImage3DEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCullParameterdvEXT(GLenum arg_0,  GLdouble * arg_1) {
+  ENTER_GL();
+  func_glCullParameterdvEXT(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCullParameterfvEXT(GLenum arg_0,  GLfloat * arg_1) {
+  ENTER_GL();
+  func_glCullParameterfvEXT(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glDeleteTexturesEXT(GLsizei arg_0,  const GLuint * arg_1) {
+  ENTER_GL();
+  func_glDeleteTexturesEXT(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glDetailTexFuncSGIS(GLenum arg_0,  GLsizei arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glDetailTexFuncSGIS(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glDrawArraysEXT(GLenum arg_0,  GLint arg_1,  GLsizei arg_2) {
+  ENTER_GL();
+  func_glDrawArraysEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glDrawRangeElementsEXT(GLenum arg_0,  GLuint arg_1,  GLuint arg_2,  GLsizei arg_3,  GLenum arg_4,  const GLvoid * arg_5) {
+  ENTER_GL();
+  func_glDrawRangeElementsEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEdgeFlagPointerEXT(GLsizei arg_0,  GLsizei arg_1,  const GLboolean * arg_2) {
+  ENTER_GL();
+  func_glEdgeFlagPointerEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEdgeFlagPointerListIBM(GLint arg_0,  const GLboolean* * arg_1,  GLint arg_2) {
+  ENTER_GL();
+  func_glEdgeFlagPointerListIBM(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFinalCombinerInputNV(GLenum arg_0,  GLenum arg_1,  GLenum arg_2,  GLenum arg_3) {
+  ENTER_GL();
+  func_glFinalCombinerInputNV(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFinishTextureSUNX() {
+  ENTER_GL();
+  func_glFinishTextureSUNX();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFlushRasterSGIX() {
+  ENTER_GL();
+  func_glFlushRasterSGIX();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFlushVertexArrayRangeNV() {
+  ENTER_GL();
+  func_glFlushVertexArrayRangeNV();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFogCoordPointerEXT(GLenum arg_0,  GLsizei arg_1,  const GLvoid * arg_2) {
+  ENTER_GL();
+  func_glFogCoordPointerEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFogCoordPointerListIBM(GLenum arg_0,  GLint arg_1,  const GLvoid* * arg_2,  GLint arg_3) {
+  ENTER_GL();
+  func_glFogCoordPointerListIBM(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFogCoorddEXT(GLdouble arg_0) {
+  ENTER_GL();
+  func_glFogCoorddEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFogCoorddvEXT(const GLdouble * arg_0) {
+  ENTER_GL();
+  func_glFogCoorddvEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFogCoordfEXT(GLfloat arg_0) {
+  ENTER_GL();
+  func_glFogCoordfEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFogCoordfvEXT(const GLfloat * arg_0) {
+  ENTER_GL();
+  func_glFogCoordfvEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFogFuncSGIS(GLsizei arg_0,  const GLfloat * arg_1) {
+  ENTER_GL();
+  func_glFogFuncSGIS(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFragmentColorMaterialSGIX(GLenum arg_0,  GLenum arg_1) {
+  ENTER_GL();
+  func_glFragmentColorMaterialSGIX(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFragmentLightModelfSGIX(GLenum arg_0,  GLfloat arg_1) {
+  ENTER_GL();
+  func_glFragmentLightModelfSGIX(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFragmentLightModelfvSGIX(GLenum arg_0,  const GLfloat * arg_1) {
+  ENTER_GL();
+  func_glFragmentLightModelfvSGIX(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFragmentLightModeliSGIX(GLenum arg_0,  GLint arg_1) {
+  ENTER_GL();
+  func_glFragmentLightModeliSGIX(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFragmentLightModelivSGIX(GLenum arg_0,  const GLint * arg_1) {
+  ENTER_GL();
+  func_glFragmentLightModelivSGIX(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFragmentLightfSGIX(GLenum arg_0,  GLenum arg_1,  GLfloat arg_2) {
+  ENTER_GL();
+  func_glFragmentLightfSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFragmentLightfvSGIX(GLenum arg_0,  GLenum arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glFragmentLightfvSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFragmentLightiSGIX(GLenum arg_0,  GLenum arg_1,  GLint arg_2) {
+  ENTER_GL();
+  func_glFragmentLightiSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFragmentLightivSGIX(GLenum arg_0,  GLenum arg_1,  const GLint * arg_2) {
+  ENTER_GL();
+  func_glFragmentLightivSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFragmentMaterialfSGIX(GLenum arg_0,  GLenum arg_1,  GLfloat arg_2) {
+  ENTER_GL();
+  func_glFragmentMaterialfSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFragmentMaterialfvSGIX(GLenum arg_0,  GLenum arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glFragmentMaterialfvSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFragmentMaterialiSGIX(GLenum arg_0,  GLenum arg_1,  GLint arg_2) {
+  ENTER_GL();
+  func_glFragmentMaterialiSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFragmentMaterialivSGIX(GLenum arg_0,  GLenum arg_1,  const GLint * arg_2) {
+  ENTER_GL();
+  func_glFragmentMaterialivSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFrameZoomSGIX(GLint arg_0) {
+  ENTER_GL();
+  func_glFrameZoomSGIX(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGenTexturesEXT(GLsizei arg_0,  GLuint * arg_1) {
+  ENTER_GL();
+  func_glGenTexturesEXT(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetColorTableEXT(GLenum arg_0,  GLenum arg_1,  GLenum arg_2,  GLvoid * arg_3) {
+  ENTER_GL();
+  func_glGetColorTableEXT(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetColorTableParameterfvEXT(GLenum arg_0,  GLenum arg_1,  GLfloat * arg_2) {
+  ENTER_GL();
+  func_glGetColorTableParameterfvEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetColorTableParameterfvSGI(GLenum arg_0,  GLenum arg_1,  GLfloat * arg_2) {
+  ENTER_GL();
+  func_glGetColorTableParameterfvSGI(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetColorTableParameterivEXT(GLenum arg_0,  GLenum arg_1,  GLint * arg_2) {
+  ENTER_GL();
+  func_glGetColorTableParameterivEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetColorTableParameterivSGI(GLenum arg_0,  GLenum arg_1,  GLint * arg_2) {
+  ENTER_GL();
+  func_glGetColorTableParameterivSGI(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetColorTableSGI(GLenum arg_0,  GLenum arg_1,  GLenum arg_2,  GLvoid * arg_3) {
+  ENTER_GL();
+  func_glGetColorTableSGI(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetCombinerInputParameterfvNV(GLenum arg_0,  GLenum arg_1,  GLenum arg_2,  GLenum arg_3,  GLfloat * arg_4) {
+  ENTER_GL();
+  func_glGetCombinerInputParameterfvNV(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetCombinerInputParameterivNV(GLenum arg_0,  GLenum arg_1,  GLenum arg_2,  GLenum arg_3,  GLint * arg_4) {
+  ENTER_GL();
+  func_glGetCombinerInputParameterivNV(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetCombinerOutputParameterfvNV(GLenum arg_0,  GLenum arg_1,  GLenum arg_2,  GLfloat * arg_3) {
+  ENTER_GL();
+  func_glGetCombinerOutputParameterfvNV(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetCombinerOutputParameterivNV(GLenum arg_0,  GLenum arg_1,  GLenum arg_2,  GLint * arg_3) {
+  ENTER_GL();
+  func_glGetCombinerOutputParameterivNV(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetCompressedTexImageARB(GLenum arg_0,  GLint arg_1,  void * arg_2) {
+  ENTER_GL();
+  func_glGetCompressedTexImageARB(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetConvolutionFilterEXT(GLenum arg_0,  GLenum arg_1,  GLenum arg_2,  GLvoid * arg_3) {
+  ENTER_GL();
+  func_glGetConvolutionFilterEXT(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetConvolutionParameterfvEXT(GLenum arg_0,  GLenum arg_1,  GLfloat * arg_2) {
+  ENTER_GL();
+  func_glGetConvolutionParameterfvEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetConvolutionParameterivEXT(GLenum arg_0,  GLenum arg_1,  GLint * arg_2) {
+  ENTER_GL();
+  func_glGetConvolutionParameterivEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetDetailTexFuncSGIS(GLenum arg_0,  GLfloat * arg_1) {
+  ENTER_GL();
+  func_glGetDetailTexFuncSGIS(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetFinalCombinerInputParameterfvNV(GLenum arg_0,  GLenum arg_1,  GLfloat * arg_2) {
+  ENTER_GL();
+  func_glGetFinalCombinerInputParameterfvNV(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetFinalCombinerInputParameterivNV(GLenum arg_0,  GLenum arg_1,  GLint * arg_2) {
+  ENTER_GL();
+  func_glGetFinalCombinerInputParameterivNV(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetFogFuncSGIS(const GLfloat * arg_0) {
+  ENTER_GL();
+  func_glGetFogFuncSGIS(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetFragmentLightfvSGIX(GLenum arg_0,  GLenum arg_1,  GLfloat * arg_2) {
+  ENTER_GL();
+  func_glGetFragmentLightfvSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetFragmentLightivSGIX(GLenum arg_0,  GLenum arg_1,  GLint * arg_2) {
+  ENTER_GL();
+  func_glGetFragmentLightivSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetFragmentMaterialfvSGIX(GLenum arg_0,  GLenum arg_1,  GLfloat * arg_2) {
+  ENTER_GL();
+  func_glGetFragmentMaterialfvSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetFragmentMaterialivSGIX(GLenum arg_0,  GLenum arg_1,  GLint * arg_2) {
+  ENTER_GL();
+  func_glGetFragmentMaterialivSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetHistogramEXT(GLenum arg_0,  GLboolean arg_1,  GLenum arg_2,  GLenum arg_3,  GLvoid * arg_4) {
+  ENTER_GL();
+  func_glGetHistogramEXT(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetHistogramParameterfvEXT(GLenum arg_0,  GLenum arg_1,  GLfloat * arg_2) {
+  ENTER_GL();
+  func_glGetHistogramParameterfvEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetHistogramParameterivEXT(GLenum arg_0,  GLenum arg_1,  GLint * arg_2) {
+  ENTER_GL();
+  func_glGetHistogramParameterivEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetImageTransformParameterfvHP(GLenum arg_0,  GLenum arg_1,  GLfloat * arg_2) {
+  ENTER_GL();
+  func_glGetImageTransformParameterfvHP(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetImageTransformParameterivHP(GLenum arg_0,  GLenum arg_1,  GLint * arg_2) {
+  ENTER_GL();
+  func_glGetImageTransformParameterivHP(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+GLint WINAPI wine_glGetInstrumentsSGIX() {
+  GLint ret;
+  ENTER_GL();
+    ret = func_glGetInstrumentsSGIX();
+  LEAVE_GL();
+  return ret;
+}
+
+void WINAPI wine_glGetListParameterfvSGIX(GLuint arg_0,  GLenum arg_1,  GLfloat * arg_2) {
+  ENTER_GL();
+  func_glGetListParameterfvSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetListParameterivSGIX(GLuint arg_0,  GLenum arg_1,  GLint * arg_2) {
+  ENTER_GL();
+  func_glGetListParameterivSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetMinmaxEXT(GLenum arg_0,  GLboolean arg_1,  GLenum arg_2,  GLenum arg_3,  GLvoid * arg_4) {
+  ENTER_GL();
+  func_glGetMinmaxEXT(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetMinmaxParameterfvEXT(GLenum arg_0,  GLenum arg_1,  GLfloat * arg_2) {
+  ENTER_GL();
+  func_glGetMinmaxParameterfvEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetMinmaxParameterivEXT(GLenum arg_0,  GLenum arg_1,  GLint * arg_2) {
+  ENTER_GL();
+  func_glGetMinmaxParameterivEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetPixelTexGenParameterfvSGIS(GLenum arg_0,  GLfloat * arg_1) {
+  ENTER_GL();
+  func_glGetPixelTexGenParameterfvSGIS(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetPixelTexGenParameterivSGIS(GLenum arg_0,  GLint * arg_1) {
+  ENTER_GL();
+  func_glGetPixelTexGenParameterivSGIS(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetPointervEXT(GLenum arg_0,  GLvoid* * arg_1) {
+  ENTER_GL();
+  func_glGetPointervEXT(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetSeparableFilterEXT(GLenum arg_0,  GLenum arg_1,  GLenum arg_2,  GLvoid * arg_3,  GLvoid * arg_4,  GLvoid * arg_5) {
+  ENTER_GL();
+  func_glGetSeparableFilterEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetSharpenTexFuncSGIS(GLenum arg_0,  GLfloat * arg_1) {
+  ENTER_GL();
+  func_glGetSharpenTexFuncSGIS(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetTexFilterFuncSGIS(GLenum arg_0,  GLenum arg_1,  GLfloat * arg_2) {
+  ENTER_GL();
+  func_glGetTexFilterFuncSGIS(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGlobalAlphaFactorbSUN(GLbyte arg_0) {
+  ENTER_GL();
+  func_glGlobalAlphaFactorbSUN(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGlobalAlphaFactordSUN(GLdouble arg_0) {
+  ENTER_GL();
+  func_glGlobalAlphaFactordSUN(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGlobalAlphaFactorfSUN(GLfloat arg_0) {
+  ENTER_GL();
+  func_glGlobalAlphaFactorfSUN(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGlobalAlphaFactoriSUN(GLint arg_0) {
+  ENTER_GL();
+  func_glGlobalAlphaFactoriSUN(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGlobalAlphaFactorsSUN(GLshort arg_0) {
+  ENTER_GL();
+  func_glGlobalAlphaFactorsSUN(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGlobalAlphaFactorubSUN(GLubyte arg_0) {
+  ENTER_GL();
+  func_glGlobalAlphaFactorubSUN(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGlobalAlphaFactoruiSUN(GLuint arg_0) {
+  ENTER_GL();
+  func_glGlobalAlphaFactoruiSUN(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGlobalAlphaFactorusSUN(GLushort arg_0) {
+  ENTER_GL();
+  func_glGlobalAlphaFactorusSUN(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glHintPGI(GLenum arg_0,  GLint arg_1) {
+  ENTER_GL();
+  func_glHintPGI(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glHistogramEXT(GLenum arg_0,  GLsizei arg_1,  GLenum arg_2,  GLboolean arg_3) {
+  ENTER_GL();
+  func_glHistogramEXT(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glImageTransformParameterfHP(GLenum arg_0,  GLenum arg_1,  GLfloat arg_2) {
+  ENTER_GL();
+  func_glImageTransformParameterfHP(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glImageTransformParameterfvHP(GLenum arg_0,  GLenum arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glImageTransformParameterfvHP(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glImageTransformParameteriHP(GLenum arg_0,  GLenum arg_1,  GLint arg_2) {
+  ENTER_GL();
+  func_glImageTransformParameteriHP(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glImageTransformParameterivHP(GLenum arg_0,  GLenum arg_1,  const GLint * arg_2) {
+  ENTER_GL();
+  func_glImageTransformParameterivHP(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glIndexFuncEXT(GLenum arg_0,  GLclampf arg_1) {
+  ENTER_GL();
+  func_glIndexFuncEXT(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glIndexMaterialEXT(GLenum arg_0,  GLenum arg_1) {
+  ENTER_GL();
+  func_glIndexMaterialEXT(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glIndexPointerEXT(GLenum arg_0,  GLsizei arg_1,  GLsizei arg_2,  const GLvoid * arg_3) {
+  ENTER_GL();
+  func_glIndexPointerEXT(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glIndexPointerListIBM(GLenum arg_0,  GLint arg_1,  const GLvoid* * arg_2,  GLint arg_3) {
+  ENTER_GL();
+  func_glIndexPointerListIBM(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glInstrumentsBufferSGIX(GLsizei arg_0,  GLint * arg_1) {
+  ENTER_GL();
+  func_glInstrumentsBufferSGIX(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+GLboolean WINAPI wine_glIsTextureEXT(GLuint arg_0) {
+  GLboolean ret;
+  ENTER_GL();
+    ret = func_glIsTextureEXT(arg_0);
+  LEAVE_GL();
+  return ret;
+}
+
+void WINAPI wine_glLightEnviSGIX(GLenum arg_0,  GLint arg_1) {
+  ENTER_GL();
+  func_glLightEnviSGIX(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glListParameterfSGIX(GLuint arg_0,  GLenum arg_1,  GLfloat arg_2) {
+  ENTER_GL();
+  func_glListParameterfSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glListParameterfvSGIX(GLuint arg_0,  GLenum arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glListParameterfvSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glListParameteriSGIX(GLuint arg_0,  GLenum arg_1,  GLint arg_2) {
+  ENTER_GL();
+  func_glListParameteriSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glListParameterivSGIX(GLuint arg_0,  GLenum arg_1,  const GLint * arg_2) {
+  ENTER_GL();
+  func_glListParameterivSGIX(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLoadTransposeMatrixdARB(const GLdouble * arg_0) {
+  ENTER_GL();
+  func_glLoadTransposeMatrixdARB(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLoadTransposeMatrixfARB(const GLfloat * arg_0) {
+  ENTER_GL();
+  func_glLoadTransposeMatrixfARB(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLockArraysEXT(GLint arg_0,  GLsizei arg_1) {
+  ENTER_GL();
+  func_glLockArraysEXT(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMinmaxEXT(GLenum arg_0,  GLenum arg_1,  GLboolean arg_2) {
+  ENTER_GL();
+  func_glMinmaxEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultTransposeMatrixdARB(const GLdouble * arg_0) {
+  ENTER_GL();
+  func_glMultTransposeMatrixdARB(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultTransposeMatrixfARB(const GLfloat * arg_0) {
+  ENTER_GL();
+  func_glMultTransposeMatrixfARB(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiDrawArraysEXT(GLenum arg_0,  GLint * arg_1,  GLsizei * arg_2,  GLsizei arg_3) {
+  ENTER_GL();
+  func_glMultiDrawArraysEXT(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiDrawElementsEXT(GLenum arg_0,  const GLsizei * arg_1,  GLenum arg_2,  const GLvoid* * arg_3,  GLsizei arg_4) {
+  ENTER_GL();
+  func_glMultiDrawElementsEXT(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiModeDrawArraysIBM(GLenum arg_0,  const GLint * arg_1,  const GLsizei * arg_2,  GLsizei arg_3,  GLint arg_4) {
+  ENTER_GL();
+  func_glMultiModeDrawArraysIBM(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiModeDrawElementsIBM(const GLenum * arg_0,  const GLsizei * arg_1,  GLenum arg_2,  const GLvoid* * arg_3,  GLsizei arg_4,  GLint arg_5) {
+  ENTER_GL();
+  func_glMultiModeDrawElementsIBM(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glNormal3fVertex3fSUN(GLfloat arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3,  GLfloat arg_4,  GLfloat arg_5) {
+  ENTER_GL();
+  func_glNormal3fVertex3fSUN(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glNormal3fVertex3fvSUN(const GLfloat * arg_0,  const GLfloat * arg_1) {
+  ENTER_GL();
+  func_glNormal3fVertex3fvSUN(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glNormalPointerEXT(GLenum arg_0,  GLsizei arg_1,  GLsizei arg_2,  const GLvoid * arg_3) {
+  ENTER_GL();
+  func_glNormalPointerEXT(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glNormalPointerListIBM(GLenum arg_0,  GLint arg_1,  const GLvoid* * arg_2,  GLint arg_3) {
+  ENTER_GL();
+  func_glNormalPointerListIBM(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glNormalPointervINTEL(GLenum arg_0,  const GLvoid* * arg_1) {
+  ENTER_GL();
+  func_glNormalPointervINTEL(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelTexGenParameterfSGIS(GLenum arg_0,  GLfloat arg_1) {
+  ENTER_GL();
+  func_glPixelTexGenParameterfSGIS(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelTexGenParameterfvSGIS(GLenum arg_0,  const GLfloat * arg_1) {
+  ENTER_GL();
+  func_glPixelTexGenParameterfvSGIS(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelTexGenParameteriSGIS(GLenum arg_0,  GLint arg_1) {
+  ENTER_GL();
+  func_glPixelTexGenParameteriSGIS(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelTexGenParameterivSGIS(GLenum arg_0,  const GLint * arg_1) {
+  ENTER_GL();
+  func_glPixelTexGenParameterivSGIS(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelTexGenSGIX(GLenum arg_0) {
+  ENTER_GL();
+  func_glPixelTexGenSGIX(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelTransformParameterfEXT(GLenum arg_0,  GLenum arg_1,  GLfloat arg_2) {
+  ENTER_GL();
+  func_glPixelTransformParameterfEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelTransformParameterfvEXT(GLenum arg_0,  GLenum arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glPixelTransformParameterfvEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelTransformParameteriEXT(GLenum arg_0,  GLenum arg_1,  GLint arg_2) {
+  ENTER_GL();
+  func_glPixelTransformParameteriEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelTransformParameterivEXT(GLenum arg_0,  GLenum arg_1,  const GLint * arg_2) {
+  ENTER_GL();
+  func_glPixelTransformParameterivEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPointParameterfEXT(GLenum arg_0,  GLfloat arg_1) {
+  ENTER_GL();
+  func_glPointParameterfEXT(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPointParameterfSGIS(GLenum arg_0,  GLfloat arg_1) {
+  ENTER_GL();
+  func_glPointParameterfSGIS(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPointParameterfvEXT(GLenum arg_0,  const GLfloat * arg_1) {
+  ENTER_GL();
+  func_glPointParameterfvEXT(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPointParameterfvSGIS(GLenum arg_0,  const GLfloat * arg_1) {
+  ENTER_GL();
+  func_glPointParameterfvSGIS(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+GLint WINAPI wine_glPollInstrumentsSGIX(GLint * arg_0) {
+  GLint ret;
+  ENTER_GL();
+    ret = func_glPollInstrumentsSGIX(arg_0);
+  LEAVE_GL();
+  return ret;
+}
+
+void WINAPI wine_glPolygonOffsetEXT(GLfloat arg_0,  GLfloat arg_1) {
+  ENTER_GL();
+  func_glPolygonOffsetEXT(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPrioritizeTexturesEXT(GLsizei arg_0,  const GLuint * arg_1,  const GLclampf * arg_2) {
+  ENTER_GL();
+  func_glPrioritizeTexturesEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReadInstrumentsSGIX(GLint arg_0) {
+  ENTER_GL();
+  func_glReadInstrumentsSGIX(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReferencePlaneSGIX(const GLdouble * arg_0) {
+  ENTER_GL();
+  func_glReferencePlaneSGIX(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodePointer(GLenum arg_0,  GLsizei arg_1,  const GLvoid* * arg_2) {
+  ENTER_GL();
+  func_glReplacementCodePointer(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeubSUN(GLubyte arg_0) {
+  ENTER_GL();
+  func_glReplacementCodeubSUN(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeubvSUN(const GLubyte * arg_0) {
+  ENTER_GL();
+  func_glReplacementCodeubvSUN(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiColor3fVertex3fSUN(GLenum arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3,  GLfloat arg_4,  GLfloat arg_5,  GLfloat arg_6) {
+  ENTER_GL();
+  func_glReplacementCodeuiColor3fVertex3fSUN(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiColor3fVertex3fvSUN(const GLenum * arg_0,  const GLfloat * arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glReplacementCodeuiColor3fVertex3fvSUN(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiColor4fNormal3fVertex3fSUN(GLenum arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3,  GLfloat arg_4,  GLfloat arg_5,  GLfloat arg_6,  GLfloat arg_7,  GLfloat arg_8,  GLfloat arg_9,  GLfloat arg_10) {
+  ENTER_GL();
+  func_glReplacementCodeuiColor4fNormal3fVertex3fSUN(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9, arg_10);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiColor4fNormal3fVertex3fvSUN(const GLenum * arg_0,  const GLfloat * arg_1,  const GLfloat * arg_2,  const GLfloat * arg_3) {
+  ENTER_GL();
+  func_glReplacementCodeuiColor4fNormal3fVertex3fvSUN(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiColor4ubVertex3fSUN(GLenum arg_0,  GLubyte arg_1,  GLubyte arg_2,  GLubyte arg_3,  GLubyte arg_4,  GLfloat arg_5,  GLfloat arg_6,  GLfloat arg_7) {
+  ENTER_GL();
+  func_glReplacementCodeuiColor4ubVertex3fSUN(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiColor4ubVertex3fvSUN(const GLenum * arg_0,  const GLubyte * arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glReplacementCodeuiColor4ubVertex3fvSUN(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiNormal3fVertex3fSUN(GLenum arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3,  GLfloat arg_4,  GLfloat arg_5,  GLfloat arg_6) {
+  ENTER_GL();
+  func_glReplacementCodeuiNormal3fVertex3fSUN(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiNormal3fVertex3fvSUN(const GLenum * arg_0,  const GLfloat * arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glReplacementCodeuiNormal3fVertex3fvSUN(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiSUN(GLuint arg_0) {
+  ENTER_GL();
+  func_glReplacementCodeuiSUN(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(GLenum arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3,  GLfloat arg_4,  GLfloat arg_5,  GLfloat arg_6,  GLfloat arg_7,  GLfloat arg_8,  GLfloat arg_9,  GLfloat arg_10,  GLfloat arg_11,  GLfloat arg_12) {
+  ENTER_GL();
+  func_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(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);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(const GLenum * arg_0,  const GLfloat * arg_1,  const GLfloat * arg_2,  const GLfloat * arg_3,  const GLfloat * arg_4) {
+  ENTER_GL();
+  func_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(GLenum arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3,  GLfloat arg_4,  GLfloat arg_5,  GLfloat arg_6,  GLfloat arg_7,  GLfloat arg_8) {
+  ENTER_GL();
+  func_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(const GLenum * arg_0,  const GLfloat * arg_1,  const GLfloat * arg_2,  const GLfloat * arg_3) {
+  ENTER_GL();
+  func_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiTexCoord2fVertex3fSUN(GLenum arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3,  GLfloat arg_4,  GLfloat arg_5) {
+  ENTER_GL();
+  func_glReplacementCodeuiTexCoord2fVertex3fSUN(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiTexCoord2fVertex3fvSUN(const GLenum * arg_0,  const GLfloat * arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glReplacementCodeuiTexCoord2fVertex3fvSUN(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiVertex3fSUN(GLenum arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3) {
+  ENTER_GL();
+  func_glReplacementCodeuiVertex3fSUN(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuiVertex3fvSUN(const GLenum * arg_0,  const GLfloat * arg_1) {
+  ENTER_GL();
+  func_glReplacementCodeuiVertex3fvSUN(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeuivSUN(const GLuint * arg_0) {
+  ENTER_GL();
+  func_glReplacementCodeuivSUN(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeusSUN(GLushort arg_0) {
+  ENTER_GL();
+  func_glReplacementCodeusSUN(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReplacementCodeusvSUN(const GLushort * arg_0) {
+  ENTER_GL();
+  func_glReplacementCodeusvSUN(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glResetHistogramEXT(GLenum arg_0) {
+  ENTER_GL();
+  func_glResetHistogramEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glResetMinmaxEXT(GLenum arg_0) {
+  ENTER_GL();
+  func_glResetMinmaxEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glResizeBuffersMESA() {
+  ENTER_GL();
+  func_glResizeBuffersMESA();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSampleCoverageARB(GLclampf arg_0,  GLboolean arg_1) {
+  ENTER_GL();
+  func_glSampleCoverageARB(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSampleMaskEXT(GLclampf arg_0,  GLboolean arg_1) {
+  ENTER_GL();
+  func_glSampleMaskEXT(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSampleMaskSGIS(GLclampf arg_0,  GLboolean arg_1) {
+  ENTER_GL();
+  func_glSampleMaskSGIS(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSamplePassARB(GLenum arg_0) {
+  ENTER_GL();
+  func_glSamplePassARB(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSamplePatternEXT(GLenum arg_0) {
+  ENTER_GL();
+  func_glSamplePatternEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSamplePatternSGIS(GLenum arg_0) {
+  ENTER_GL();
+  func_glSamplePatternSGIS(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColor3bEXT(GLbyte arg_0,  GLbyte arg_1,  GLbyte arg_2) {
+  ENTER_GL();
+  func_glSecondaryColor3bEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColor3bvEXT(const GLbyte * arg_0) {
+  ENTER_GL();
+  func_glSecondaryColor3bvEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColor3dEXT(GLdouble arg_0,  GLdouble arg_1,  GLdouble arg_2) {
+  ENTER_GL();
+  func_glSecondaryColor3dEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColor3dvEXT(const GLdouble * arg_0) {
+  ENTER_GL();
+  func_glSecondaryColor3dvEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColor3fEXT(GLfloat arg_0,  GLfloat arg_1,  GLfloat arg_2) {
+  ENTER_GL();
+  func_glSecondaryColor3fEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColor3fvEXT(const GLfloat * arg_0) {
+  ENTER_GL();
+  func_glSecondaryColor3fvEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColor3iEXT(GLint arg_0,  GLint arg_1,  GLint arg_2) {
+  ENTER_GL();
+  func_glSecondaryColor3iEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColor3ivEXT(const GLint * arg_0) {
+  ENTER_GL();
+  func_glSecondaryColor3ivEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColor3sEXT(GLshort arg_0,  GLshort arg_1,  GLshort arg_2) {
+  ENTER_GL();
+  func_glSecondaryColor3sEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColor3svEXT(const GLshort * arg_0) {
+  ENTER_GL();
+  func_glSecondaryColor3svEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColor3ubEXT(GLubyte arg_0,  GLubyte arg_1,  GLubyte arg_2) {
+  ENTER_GL();
+  func_glSecondaryColor3ubEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColor3ubvEXT(const GLubyte * arg_0) {
+  ENTER_GL();
+  func_glSecondaryColor3ubvEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColor3uiEXT(GLuint arg_0,  GLuint arg_1,  GLuint arg_2) {
+  ENTER_GL();
+  func_glSecondaryColor3uiEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColor3uivEXT(const GLuint * arg_0) {
+  ENTER_GL();
+  func_glSecondaryColor3uivEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColor3usEXT(GLushort arg_0,  GLushort arg_1,  GLushort arg_2) {
+  ENTER_GL();
+  func_glSecondaryColor3usEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColor3usvEXT(const GLushort * arg_0) {
+  ENTER_GL();
+  func_glSecondaryColor3usvEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColorPointerEXT(GLint arg_0,  GLenum arg_1,  GLsizei arg_2,  GLvoid * arg_3) {
+  ENTER_GL();
+  func_glSecondaryColorPointerEXT(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSecondaryColorPointerListIBM(GLint arg_0,  GLenum arg_1,  GLint arg_2,  const GLvoid* * arg_3,  GLint arg_4) {
+  ENTER_GL();
+  func_glSecondaryColorPointerListIBM(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSeparableFilter2DEXT(GLenum arg_0,  GLenum arg_1,  GLsizei arg_2,  GLsizei arg_3,  GLenum arg_4,  GLenum arg_5,  const GLvoid * arg_6,  const GLvoid * arg_7) {
+  ENTER_GL();
+  func_glSeparableFilter2DEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSharpenTexFuncSGIS(GLenum arg_0,  GLsizei arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glSharpenTexFuncSGIS(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSpriteParameterfSGIX(GLenum arg_0,  GLfloat arg_1) {
+  ENTER_GL();
+  func_glSpriteParameterfSGIX(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSpriteParameterfvSGIX(GLenum arg_0,  const GLfloat * arg_1) {
+  ENTER_GL();
+  func_glSpriteParameterfvSGIX(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSpriteParameteriSGIX(GLenum arg_0,  GLint arg_1) {
+  ENTER_GL();
+  func_glSpriteParameteriSGIX(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSpriteParameterivSGIX(GLenum arg_0,  const GLint * arg_1) {
+  ENTER_GL();
+  func_glSpriteParameterivSGIX(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glStartInstrumentsSGIX() {
+  ENTER_GL();
+  func_glStartInstrumentsSGIX();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glStopInstrumentsSGIX(GLint arg_0) {
+  ENTER_GL();
+  func_glStopInstrumentsSGIX(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTagSampleBufferSGIX() {
+  ENTER_GL();
+  func_glTagSampleBufferSGIX();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTangent3b(GLbyte arg_0,  GLbyte arg_1,  GLbyte arg_2) {
+  ENTER_GL();
+  func_glTangent3b(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTangent3bv(const GLbyte * arg_0) {
+  ENTER_GL();
+  func_glTangent3bv(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTangent3d(GLdouble arg_0,  GLdouble arg_1,  GLdouble arg_2) {
+  ENTER_GL();
+  func_glTangent3d(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTangent3dv(const GLdouble * arg_0) {
+  ENTER_GL();
+  func_glTangent3dv(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTangent3f(GLfloat arg_0,  GLfloat arg_1,  GLfloat arg_2) {
+  ENTER_GL();
+  func_glTangent3f(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTangent3fv(const GLfloat * arg_0) {
+  ENTER_GL();
+  func_glTangent3fv(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTangent3i(GLint arg_0,  GLint arg_1,  GLint arg_2) {
+  ENTER_GL();
+  func_glTangent3i(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTangent3iv(const GLint * arg_0) {
+  ENTER_GL();
+  func_glTangent3iv(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTangent3s(GLshort arg_0,  GLshort arg_1,  GLshort arg_2) {
+  ENTER_GL();
+  func_glTangent3s(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTangent3sv(const GLshort * arg_0) {
+  ENTER_GL();
+  func_glTangent3sv(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTangentPointerEXT(GLenum arg_0,  GLsizei arg_1,  const GLvoid * arg_2) {
+  ENTER_GL();
+  func_glTangentPointerEXT(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTbufferMask3DFX(GLuint arg_0) {
+  ENTER_GL();
+  func_glTbufferMask3DFX(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2fColor3fVertex3fSUN(GLfloat arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3,  GLfloat arg_4,  GLfloat arg_5,  GLfloat arg_6,  GLfloat arg_7) {
+  ENTER_GL();
+  func_glTexCoord2fColor3fVertex3fSUN(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2fColor3fVertex3fvSUN(const GLfloat * arg_0,  const GLfloat * arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glTexCoord2fColor3fVertex3fvSUN(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2fColor4fNormal3fVertex3fSUN(GLfloat arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3,  GLfloat arg_4,  GLfloat arg_5,  GLfloat arg_6,  GLfloat arg_7,  GLfloat arg_8,  GLfloat arg_9,  GLfloat arg_10,  GLfloat arg_11) {
+  ENTER_GL();
+  func_glTexCoord2fColor4fNormal3fVertex3fSUN(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9, arg_10, arg_11);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2fColor4fNormal3fVertex3fvSUN(const GLfloat * arg_0,  const GLfloat * arg_1,  const GLfloat * arg_2,  const GLfloat * arg_3) {
+  ENTER_GL();
+  func_glTexCoord2fColor4fNormal3fVertex3fvSUN(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2fColor4ubVertex3fSUN(GLfloat arg_0,  GLfloat arg_1,  GLubyte arg_2,  GLubyte arg_3,  GLubyte arg_4,  GLubyte arg_5,  GLfloat arg_6,  GLfloat arg_7,  GLfloat arg_8) {
+  ENTER_GL();
+  func_glTexCoord2fColor4ubVertex3fSUN(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2fColor4ubVertex3fvSUN(const GLfloat * arg_0,  const GLubyte * arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glTexCoord2fColor4ubVertex3fvSUN(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2fNormal3fVertex3fSUN(GLfloat arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3,  GLfloat arg_4,  GLfloat arg_5,  GLfloat arg_6,  GLfloat arg_7) {
+  ENTER_GL();
+  func_glTexCoord2fNormal3fVertex3fSUN(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2fNormal3fVertex3fvSUN(const GLfloat * arg_0,  const GLfloat * arg_1,  const GLfloat * arg_2) {
+  ENTER_GL();
+  func_glTexCoord2fNormal3fVertex3fvSUN(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2fVertex3fSUN(GLfloat arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3,  GLfloat arg_4) {
+  ENTER_GL();
+  func_glTexCoord2fVertex3fSUN(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2fVertex3fvSUN(const GLfloat * arg_0,  const GLfloat * arg_1) {
+  ENTER_GL();
+  func_glTexCoord2fVertex3fvSUN(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord4fColor4fNormal3fVertex4fSUN(GLfloat arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3,  GLfloat arg_4,  GLfloat arg_5,  GLfloat arg_6,  GLfloat arg_7,  GLfloat arg_8,  GLfloat arg_9,  GLfloat arg_10,  GLfloat arg_11,  GLfloat arg_12,  GLfloat arg_13,  GLfloat arg_14) {
+  ENTER_GL();
+  func_glTexCoord4fColor4fNormal3fVertex4fSUN(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, arg_13, arg_14);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord4fColor4fNormal3fVertex4fvSUN(const GLfloat * arg_0,  const GLfloat * arg_1,  const GLfloat * arg_2,  const GLfloat * arg_3) {
+  ENTER_GL();
+  func_glTexCoord4fColor4fNormal3fVertex4fvSUN(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord4fVertex4fSUN(GLfloat arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3,  GLfloat arg_4,  GLfloat arg_5,  GLfloat arg_6,  GLfloat arg_7) {
+  ENTER_GL();
+  func_glTexCoord4fVertex4fSUN(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord4fVertex4fvSUN(const GLfloat * arg_0,  const GLfloat * arg_1) {
+  ENTER_GL();
+  func_glTexCoord4fVertex4fvSUN(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoordPointerEXT(GLint arg_0,  GLenum arg_1,  GLsizei arg_2,  GLsizei arg_3,  const GLvoid * arg_4) {
+  ENTER_GL();
+  func_glTexCoordPointerEXT(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoordPointerListIBM(GLint arg_0,  GLenum arg_1,  GLint arg_2,  const GLvoid* * arg_3,  GLint arg_4) {
+  ENTER_GL();
+  func_glTexCoordPointerListIBM(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoordPointervINTEL(GLint arg_0,  GLenum arg_1,  const GLvoid* * arg_2) {
+  ENTER_GL();
+  func_glTexCoordPointervINTEL(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexFilterFuncSGIS(GLenum arg_0,  GLenum arg_1,  GLsizei arg_2,  const GLfloat * arg_3) {
+  ENTER_GL();
+  func_glTexFilterFuncSGIS(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexImage3DEXT(GLenum arg_0,  GLint arg_1,  GLenum arg_2,  GLsizei arg_3,  GLsizei arg_4,  GLsizei arg_5,  GLint arg_6,  GLenum arg_7,  GLenum arg_8,  const GLvoid * arg_9) {
+  ENTER_GL();
+  func_glTexImage3DEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexImage4DSGIS(GLenum arg_0,  GLint arg_1,  GLenum arg_2,  GLsizei arg_3,  GLsizei arg_4,  GLsizei arg_5,  GLsizei arg_6,  GLint arg_7,  GLenum arg_8,  GLenum arg_9,  const GLvoid * arg_10) {
+  ENTER_GL();
+  func_glTexImage4DSGIS(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9, arg_10);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexSubImage1DEXT(GLenum arg_0,  GLint arg_1,  GLint arg_2,  GLsizei arg_3,  GLenum arg_4,  GLenum arg_5,  const GLvoid * arg_6) {
+  ENTER_GL();
+  func_glTexSubImage1DEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexSubImage2DEXT(GLenum arg_0,  GLint arg_1,  GLint arg_2,  GLint arg_3,  GLsizei arg_4,  GLsizei arg_5,  GLenum arg_6,  GLenum arg_7,  const GLvoid * arg_8) {
+  ENTER_GL();
+  func_glTexSubImage2DEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexSubImage3DEXT(GLenum arg_0,  GLint arg_1,  GLint arg_2,  GLint arg_3,  GLint arg_4,  GLsizei arg_5,  GLsizei arg_6,  GLsizei arg_7,  GLenum arg_8,  GLenum arg_9,  const GLvoid * arg_10) {
+  ENTER_GL();
+  func_glTexSubImage3DEXT(arg_0, arg_1, arg_2, arg_3, arg_4, arg_5, arg_6, arg_7, arg_8, arg_9, arg_10);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexSubImage4DSGIS(GLenum arg_0,  GLint arg_1,  GLint arg_2,  GLint arg_3,  GLint arg_4,  GLint arg_5,  GLsizei arg_6,  GLsizei arg_7,  GLsizei arg_8,  GLsizei arg_9,  GLenum arg_10,  GLenum arg_11,  const GLvoid * arg_12) {
+  ENTER_GL();
+  func_glTexSubImage4DSGIS(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);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTextureLightEXT(GLenum arg_0) {
+  ENTER_GL();
+  func_glTextureLightEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTextureMaterialEXT(GLenum arg_0,  GLenum arg_1) {
+  ENTER_GL();
+  func_glTextureMaterialEXT(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTextureNormalEXT(GLenum arg_0) {
+  ENTER_GL();
+  func_glTextureNormalEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glUnlockArraysEXT() {
+  ENTER_GL();
+  func_glUnlockArraysEXT();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertexArrayRangeNV(GLsizei arg_0,  const GLvoid * arg_1) {
+  ENTER_GL();
+  func_glVertexArrayRangeNV(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertexPointerEXT(GLint arg_0,  GLenum arg_1,  GLsizei arg_2,  GLsizei arg_3,  const GLvoid * arg_4) {
+  ENTER_GL();
+  func_glVertexPointerEXT(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertexPointerListIBM(GLint arg_0,  GLenum arg_1,  GLint arg_2,  const GLvoid* * arg_3,  GLint arg_4) {
+  ENTER_GL();
+  func_glVertexPointerListIBM(arg_0, arg_1, arg_2, arg_3, arg_4);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertexPointervINTEL(GLint arg_0,  GLenum arg_1,  const GLvoid* * arg_2) {
+  ENTER_GL();
+  func_glVertexPointervINTEL(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertexWeightPointerEXT(GLsizei arg_0,  GLenum arg_1,  GLsizei arg_2,  const GLvoid * arg_3) {
+  ENTER_GL();
+  func_glVertexWeightPointerEXT(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertexWeightfEXT(GLfloat arg_0) {
+  ENTER_GL();
+  func_glVertexWeightfEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertexWeightfvEXT(const GLfloat * arg_0) {
+  ENTER_GL();
+  func_glVertexWeightfvEXT(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos2dMESA(GLdouble arg_0,  GLdouble arg_1) {
+  ENTER_GL();
+  func_glWindowPos2dMESA(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos2dvMESA(const GLdouble * arg_0) {
+  ENTER_GL();
+  func_glWindowPos2dvMESA(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos2fMESA(GLfloat arg_0,  GLfloat arg_1) {
+  ENTER_GL();
+  func_glWindowPos2fMESA(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos2fvMESA(const GLfloat * arg_0) {
+  ENTER_GL();
+  func_glWindowPos2fvMESA(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos2iMESA(GLint arg_0,  GLint arg_1) {
+  ENTER_GL();
+  func_glWindowPos2iMESA(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos2ivMESA(const GLint * arg_0) {
+  ENTER_GL();
+  func_glWindowPos2ivMESA(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos2sMESA(GLshort arg_0,  GLshort arg_1) {
+  ENTER_GL();
+  func_glWindowPos2sMESA(arg_0, arg_1);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos2svMESA(const GLshort * arg_0) {
+  ENTER_GL();
+  func_glWindowPos2svMESA(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos3dMESA(GLdouble arg_0,  GLdouble arg_1,  GLdouble arg_2) {
+  ENTER_GL();
+  func_glWindowPos3dMESA(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos3dvMESA(const GLdouble * arg_0) {
+  ENTER_GL();
+  func_glWindowPos3dvMESA(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos3fMESA(GLfloat arg_0,  GLfloat arg_1,  GLfloat arg_2) {
+  ENTER_GL();
+  func_glWindowPos3fMESA(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos3fvMESA(const GLfloat * arg_0) {
+  ENTER_GL();
+  func_glWindowPos3fvMESA(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos3iMESA(GLint arg_0,  GLint arg_1,  GLint arg_2) {
+  ENTER_GL();
+  func_glWindowPos3iMESA(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos3ivMESA(const GLint * arg_0) {
+  ENTER_GL();
+  func_glWindowPos3ivMESA(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos3sMESA(GLshort arg_0,  GLshort arg_1,  GLshort arg_2) {
+  ENTER_GL();
+  func_glWindowPos3sMESA(arg_0, arg_1, arg_2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos3svMESA(const GLshort * arg_0) {
+  ENTER_GL();
+  func_glWindowPos3svMESA(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos4dMESA(GLdouble arg_0,  GLdouble arg_1,  GLdouble arg_2,  GLdouble arg_3) {
+  ENTER_GL();
+  func_glWindowPos4dMESA(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos4dvMESA(const GLdouble * arg_0) {
+  ENTER_GL();
+  func_glWindowPos4dvMESA(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos4fMESA(GLfloat arg_0,  GLfloat arg_1,  GLfloat arg_2,  GLfloat arg_3) {
+  ENTER_GL();
+  func_glWindowPos4fMESA(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos4fvMESA(const GLfloat * arg_0) {
+  ENTER_GL();
+  func_glWindowPos4fvMESA(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos4iMESA(GLint arg_0,  GLint arg_1,  GLint arg_2,  GLint arg_3) {
+  ENTER_GL();
+  func_glWindowPos4iMESA(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos4ivMESA(const GLint * arg_0) {
+  ENTER_GL();
+  func_glWindowPos4ivMESA(arg_0);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos4sMESA(GLshort arg_0,  GLshort arg_1,  GLshort arg_2,  GLshort arg_3) {
+  ENTER_GL();
+  func_glWindowPos4sMESA(arg_0, arg_1, arg_2, arg_3);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glWindowPos4svMESA(const GLshort * arg_0) {
+  ENTER_GL();
+  func_glWindowPos4svMESA(arg_0);
+  LEAVE_GL();
+}
+
diff --git a/dlls/opengl32/opengl_ext.h b/dlls/opengl32/opengl_ext.h
new file mode 100644
index 0000000..b09ce24
--- /dev/null
+++ b/dlls/opengl32/opengl_ext.h
@@ -0,0 +1,17 @@
+/* Typedefs for extensions loading
+
+     Copyright (c) 2000 Lionel Ulmer
+*/
+#ifndef __DLLS_OPENGL32_OPENGL_EXT_H
+#define __DLLS_OPENGL32_OPENGL_EXT_H
+
+typedef struct {
+  char  *name;     /* name of the extension */
+  void  *func;     /* pointer to the Wine function for this extension */
+  void **func_ptr; /* where to store the value of glXGetProcAddressARB */
+} OpenGL_extension;
+
+extern OpenGL_extension extension_registry[];
+extern int extension_registry_size;
+
+#endif /* __DLLS_OPENGL32_OPENGL_EXT_H */
diff --git a/dlls/opengl32/opengl_norm.c b/dlls/opengl32/opengl_norm.c
new file mode 100644
index 0000000..64d3b33
--- /dev/null
+++ b/dlls/opengl32/opengl_norm.c
@@ -0,0 +1,2471 @@
+
+/* Auto-generated file... Do not edit ! */
+
+#include "config.h"
+#include "wine_gl.h"
+
+
+void WINAPI wine_glClearIndex(GLfloat c ) {
+  ENTER_GL();
+  glClearIndex(c);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) {
+  ENTER_GL();
+  glClearColor(red, green, blue, alpha);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glClear(GLbitfield mask ) {
+  ENTER_GL();
+  glClear(mask);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glIndexMask(GLuint mask ) {
+  ENTER_GL();
+  glIndexMask(mask);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) {
+  ENTER_GL();
+  glColorMask(red, green, blue, alpha);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glAlphaFunc(GLenum func, GLclampf ref ) {
+  ENTER_GL();
+  glAlphaFunc(func, ref);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBlendFunc(GLenum sfactor, GLenum dfactor ) {
+  ENTER_GL();
+  glBlendFunc(sfactor, dfactor);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLogicOp(GLenum opcode ) {
+  ENTER_GL();
+  glLogicOp(opcode);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCullFace(GLenum mode ) {
+  ENTER_GL();
+  glCullFace(mode);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFrontFace(GLenum mode ) {
+  ENTER_GL();
+  glFrontFace(mode);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPointSize(GLfloat size ) {
+  ENTER_GL();
+  glPointSize(size);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLineWidth(GLfloat width ) {
+  ENTER_GL();
+  glLineWidth(width);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLineStipple(GLint factor, GLushort pattern ) {
+  ENTER_GL();
+  glLineStipple(factor, pattern);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPolygonMode(GLenum face, GLenum mode ) {
+  ENTER_GL();
+  glPolygonMode(face, mode);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPolygonOffset(GLfloat factor, GLfloat units ) {
+  ENTER_GL();
+  glPolygonOffset(factor, units);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPolygonStipple(const GLubyte *mask ) {
+  ENTER_GL();
+  glPolygonStipple(mask);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetPolygonStipple(GLubyte *mask ) {
+  ENTER_GL();
+  glGetPolygonStipple(mask);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEdgeFlag(GLboolean flag ) {
+  ENTER_GL();
+  glEdgeFlag(flag);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEdgeFlagv(const GLboolean *flag ) {
+  ENTER_GL();
+  glEdgeFlagv(flag);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glScissor(GLint x, GLint y, GLsizei width, GLsizei height) {
+  ENTER_GL();
+  glScissor(x, y, width, height);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glClipPlane(GLenum plane, const GLdouble *equation ) {
+  ENTER_GL();
+  glClipPlane(plane, equation);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetClipPlane(GLenum plane, GLdouble *equation ) {
+  ENTER_GL();
+  glGetClipPlane(plane, equation);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glDrawBuffer(GLenum mode ) {
+  ENTER_GL();
+  glDrawBuffer(mode);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReadBuffer(GLenum mode ) {
+  ENTER_GL();
+  glReadBuffer(mode);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEnable(GLenum cap ) {
+  ENTER_GL();
+  glEnable(cap);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glDisable(GLenum cap ) {
+  ENTER_GL();
+  glDisable(cap);
+  LEAVE_GL();
+}
+
+GLboolean WINAPI wine_glIsEnabled(GLenum cap ) {
+  GLboolean ret;
+  ENTER_GL();
+  ret = glIsEnabled(cap);
+  LEAVE_GL();
+  return ret;
+}
+
+void WINAPI wine_glEnableClientState(GLenum cap ) {
+  ENTER_GL();
+  glEnableClientState(cap);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glDisableClientState(GLenum cap ) {
+  ENTER_GL();
+  glDisableClientState(cap);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetBooleanv(GLenum pname, GLboolean *params ) {
+  ENTER_GL();
+  glGetBooleanv(pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetDoublev(GLenum pname, GLdouble *params ) {
+  ENTER_GL();
+  glGetDoublev(pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetFloatv(GLenum pname, GLfloat *params ) {
+  ENTER_GL();
+  glGetFloatv(pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetIntegerv(GLenum pname, GLint *params ) {
+  ENTER_GL();
+  glGetIntegerv(pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPushAttrib(GLbitfield mask ) {
+  ENTER_GL();
+  glPushAttrib(mask);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPopAttrib(void ) {
+  ENTER_GL();
+  glPopAttrib();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPushClientAttrib(GLbitfield mask ) {
+  ENTER_GL();
+  glPushClientAttrib(mask);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPopClientAttrib(void ) {
+  ENTER_GL();
+  glPopClientAttrib();
+  LEAVE_GL();
+}
+
+GLint WINAPI wine_glRenderMode(GLenum mode ) {
+  GLint ret;
+  ENTER_GL();
+  ret = glRenderMode(mode);
+  LEAVE_GL();
+  return ret;
+}
+
+GLenum WINAPI wine_glGetError(void ) {
+  GLenum ret;
+  ENTER_GL();
+  ret = glGetError();
+  LEAVE_GL();
+  return ret;
+}
+
+const GLubyte* WINAPI wine_glGetString(GLenum name ) {
+  const GLubyte* ret;
+  ENTER_GL();
+  ret = glGetString(name);
+  LEAVE_GL();
+  return ret;
+}
+
+void WINAPI wine_glFinish(void ) {
+  ENTER_GL();
+  glFinish();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFlush(void ) {
+  ENTER_GL();
+  glFlush();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glHint(GLenum target, GLenum mode ) {
+  ENTER_GL();
+  glHint(target, mode);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glClearDepth(GLclampd depth ) {
+  ENTER_GL();
+  glClearDepth(depth);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glDepthFunc(GLenum func ) {
+  ENTER_GL();
+  glDepthFunc(func);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glDepthMask(GLboolean flag ) {
+  ENTER_GL();
+  glDepthMask(flag);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glDepthRange(GLclampd near_val, GLclampd far_val ) {
+  ENTER_GL();
+  glDepthRange(near_val, far_val);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) {
+  ENTER_GL();
+  glClearAccum(red, green, blue, alpha);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glAccum(GLenum op, GLfloat value ) {
+  ENTER_GL();
+  glAccum(op, value);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMatrixMode(GLenum mode ) {
+  ENTER_GL();
+  glMatrixMode(mode);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val ) {
+  ENTER_GL();
+  glOrtho(left, right, bottom, top, near_val, far_val);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val ) {
+  ENTER_GL();
+  glFrustum(left, right, bottom, top, near_val, far_val);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glViewport(GLint x, GLint y, GLsizei width, GLsizei height ) {
+  ENTER_GL();
+  glViewport(x, y, width, height);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPushMatrix(void ) {
+  ENTER_GL();
+  glPushMatrix();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPopMatrix(void ) {
+  ENTER_GL();
+  glPopMatrix();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLoadIdentity(void ) {
+  ENTER_GL();
+  glLoadIdentity();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLoadMatrixd(const GLdouble *m ) {
+  ENTER_GL();
+  glLoadMatrixd(m);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLoadMatrixf(const GLfloat *m ) {
+  ENTER_GL();
+  glLoadMatrixf(m);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultMatrixd(const GLdouble *m ) {
+  ENTER_GL();
+  glMultMatrixd(m);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultMatrixf(const GLfloat *m ) {
+  ENTER_GL();
+  glMultMatrixf(m);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z ) {
+  ENTER_GL();
+  glRotated(angle, x, y, z);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z ) {
+  ENTER_GL();
+  glRotatef(angle, x, y, z);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glScaled(GLdouble x, GLdouble y, GLdouble z ) {
+  ENTER_GL();
+  glScaled(x, y, z);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glScalef(GLfloat x, GLfloat y, GLfloat z ) {
+  ENTER_GL();
+  glScalef(x, y, z);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTranslated(GLdouble x, GLdouble y, GLdouble z ) {
+  ENTER_GL();
+  glTranslated(x, y, z);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTranslatef(GLfloat x, GLfloat y, GLfloat z ) {
+  ENTER_GL();
+  glTranslatef(x, y, z);
+  LEAVE_GL();
+}
+
+GLboolean WINAPI wine_glIsList(GLuint list ) {
+  GLboolean ret;
+  ENTER_GL();
+  ret = glIsList(list);
+  LEAVE_GL();
+  return ret;
+}
+
+void WINAPI wine_glDeleteLists(GLuint list, GLsizei range ) {
+  ENTER_GL();
+  glDeleteLists(list, range);
+  LEAVE_GL();
+}
+
+GLuint WINAPI wine_glGenLists(GLsizei range ) {
+  GLuint ret;
+  ENTER_GL();
+  ret = glGenLists(range);
+  LEAVE_GL();
+  return ret;
+}
+
+void WINAPI wine_glNewList(GLuint list, GLenum mode ) {
+  ENTER_GL();
+  glNewList(list, mode);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEndList(void ) {
+  ENTER_GL();
+  glEndList();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCallList(GLuint list ) {
+  ENTER_GL();
+  glCallList(list);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCallLists(GLsizei n, GLenum type, const GLvoid *lists ) {
+  ENTER_GL();
+  glCallLists(n, type, lists);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glListBase(GLuint base ) {
+  ENTER_GL();
+  glListBase(base);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBegin(GLenum mode ) {
+  ENTER_GL();
+  glBegin(mode);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEnd(void ) {
+  ENTER_GL();
+  glEnd();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex2d(GLdouble x, GLdouble y ) {
+  ENTER_GL();
+  glVertex2d(x, y);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex2f(GLfloat x, GLfloat y ) {
+  ENTER_GL();
+  glVertex2f(x, y);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex2i(GLint x, GLint y ) {
+  ENTER_GL();
+  glVertex2i(x, y);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex2s(GLshort x, GLshort y ) {
+  ENTER_GL();
+  glVertex2s(x, y);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex3d(GLdouble x, GLdouble y, GLdouble z ) {
+  ENTER_GL();
+  glVertex3d(x, y, z);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex3f(GLfloat x, GLfloat y, GLfloat z ) {
+  ENTER_GL();
+  glVertex3f(x, y, z);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex3i(GLint x, GLint y, GLint z ) {
+  ENTER_GL();
+  glVertex3i(x, y, z);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex3s(GLshort x, GLshort y, GLshort z ) {
+  ENTER_GL();
+  glVertex3s(x, y, z);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w ) {
+  ENTER_GL();
+  glVertex4d(x, y, z, w);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w ) {
+  ENTER_GL();
+  glVertex4f(x, y, z, w);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex4i(GLint x, GLint y, GLint z, GLint w ) {
+  ENTER_GL();
+  glVertex4i(x, y, z, w);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w ) {
+  ENTER_GL();
+  glVertex4s(x, y, z, w);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex2dv(const GLdouble *v ) {
+  ENTER_GL();
+  glVertex2dv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex2fv(const GLfloat *v ) {
+  ENTER_GL();
+  glVertex2fv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex2iv(const GLint *v ) {
+  ENTER_GL();
+  glVertex2iv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex2sv(const GLshort *v ) {
+  ENTER_GL();
+  glVertex2sv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex3dv(const GLdouble *v ) {
+  ENTER_GL();
+  glVertex3dv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex3fv(const GLfloat *v ) {
+  ENTER_GL();
+  glVertex3fv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex3iv(const GLint *v ) {
+  ENTER_GL();
+  glVertex3iv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex3sv(const GLshort *v ) {
+  ENTER_GL();
+  glVertex3sv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex4dv(const GLdouble *v ) {
+  ENTER_GL();
+  glVertex4dv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex4fv(const GLfloat *v ) {
+  ENTER_GL();
+  glVertex4fv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex4iv(const GLint *v ) {
+  ENTER_GL();
+  glVertex4iv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertex4sv(const GLshort *v ) {
+  ENTER_GL();
+  glVertex4sv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz ) {
+  ENTER_GL();
+  glNormal3b(nx, ny, nz);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz ) {
+  ENTER_GL();
+  glNormal3d(nx, ny, nz);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz ) {
+  ENTER_GL();
+  glNormal3f(nx, ny, nz);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glNormal3i(GLint nx, GLint ny, GLint nz ) {
+  ENTER_GL();
+  glNormal3i(nx, ny, nz);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glNormal3s(GLshort nx, GLshort ny, GLshort nz ) {
+  ENTER_GL();
+  glNormal3s(nx, ny, nz);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glNormal3bv(const GLbyte *v ) {
+  ENTER_GL();
+  glNormal3bv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glNormal3dv(const GLdouble *v ) {
+  ENTER_GL();
+  glNormal3dv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glNormal3fv(const GLfloat *v ) {
+  ENTER_GL();
+  glNormal3fv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glNormal3iv(const GLint *v ) {
+  ENTER_GL();
+  glNormal3iv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glNormal3sv(const GLshort *v ) {
+  ENTER_GL();
+  glNormal3sv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glIndexd(GLdouble c ) {
+  ENTER_GL();
+  glIndexd(c);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glIndexf(GLfloat c ) {
+  ENTER_GL();
+  glIndexf(c);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glIndexi(GLint c ) {
+  ENTER_GL();
+  glIndexi(c);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glIndexs(GLshort c ) {
+  ENTER_GL();
+  glIndexs(c);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glIndexub(GLubyte c ) {
+  ENTER_GL();
+  glIndexub(c);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glIndexdv(const GLdouble *c ) {
+  ENTER_GL();
+  glIndexdv(c);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glIndexfv(const GLfloat *c ) {
+  ENTER_GL();
+  glIndexfv(c);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glIndexiv(const GLint *c ) {
+  ENTER_GL();
+  glIndexiv(c);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glIndexsv(const GLshort *c ) {
+  ENTER_GL();
+  glIndexsv(c);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glIndexubv(const GLubyte *c ) {
+  ENTER_GL();
+  glIndexubv(c);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3b(GLbyte red, GLbyte green, GLbyte blue ) {
+  ENTER_GL();
+  glColor3b(red, green, blue);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3d(GLdouble red, GLdouble green, GLdouble blue ) {
+  ENTER_GL();
+  glColor3d(red, green, blue);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3f(GLfloat red, GLfloat green, GLfloat blue ) {
+  ENTER_GL();
+  glColor3f(red, green, blue);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3i(GLint red, GLint green, GLint blue ) {
+  ENTER_GL();
+  glColor3i(red, green, blue);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3s(GLshort red, GLshort green, GLshort blue ) {
+  ENTER_GL();
+  glColor3s(red, green, blue);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3ub(GLubyte red, GLubyte green, GLubyte blue ) {
+  ENTER_GL();
+  glColor3ub(red, green, blue);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3ui(GLuint red, GLuint green, GLuint blue ) {
+  ENTER_GL();
+  glColor3ui(red, green, blue);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3us(GLushort red, GLushort green, GLushort blue ) {
+  ENTER_GL();
+  glColor3us(red, green, blue);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha ) {
+  ENTER_GL();
+  glColor4b(red, green, blue, alpha);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha ) {
+  ENTER_GL();
+  glColor4d(red, green, blue, alpha);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) {
+  ENTER_GL();
+  glColor4f(red, green, blue, alpha);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4i(GLint red, GLint green, GLint blue, GLint alpha ) {
+  ENTER_GL();
+  glColor4i(red, green, blue, alpha);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha ) {
+  ENTER_GL();
+  glColor4s(red, green, blue, alpha);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ) {
+  ENTER_GL();
+  glColor4ub(red, green, blue, alpha);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha ) {
+  ENTER_GL();
+  glColor4ui(red, green, blue, alpha);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha ) {
+  ENTER_GL();
+  glColor4us(red, green, blue, alpha);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3bv(const GLbyte *v ) {
+  ENTER_GL();
+  glColor3bv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3dv(const GLdouble *v ) {
+  ENTER_GL();
+  glColor3dv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3fv(const GLfloat *v ) {
+  ENTER_GL();
+  glColor3fv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3iv(const GLint *v ) {
+  ENTER_GL();
+  glColor3iv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3sv(const GLshort *v ) {
+  ENTER_GL();
+  glColor3sv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3ubv(const GLubyte *v ) {
+  ENTER_GL();
+  glColor3ubv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3uiv(const GLuint *v ) {
+  ENTER_GL();
+  glColor3uiv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor3usv(const GLushort *v ) {
+  ENTER_GL();
+  glColor3usv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4bv(const GLbyte *v ) {
+  ENTER_GL();
+  glColor4bv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4dv(const GLdouble *v ) {
+  ENTER_GL();
+  glColor4dv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4fv(const GLfloat *v ) {
+  ENTER_GL();
+  glColor4fv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4iv(const GLint *v ) {
+  ENTER_GL();
+  glColor4iv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4sv(const GLshort *v ) {
+  ENTER_GL();
+  glColor4sv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4ubv(const GLubyte *v ) {
+  ENTER_GL();
+  glColor4ubv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4uiv(const GLuint *v ) {
+  ENTER_GL();
+  glColor4uiv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColor4usv(const GLushort *v ) {
+  ENTER_GL();
+  glColor4usv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord1d(GLdouble s ) {
+  ENTER_GL();
+  glTexCoord1d(s);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord1f(GLfloat s ) {
+  ENTER_GL();
+  glTexCoord1f(s);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord1i(GLint s ) {
+  ENTER_GL();
+  glTexCoord1i(s);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord1s(GLshort s ) {
+  ENTER_GL();
+  glTexCoord1s(s);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2d(GLdouble s, GLdouble t ) {
+  ENTER_GL();
+  glTexCoord2d(s, t);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2f(GLfloat s, GLfloat t ) {
+  ENTER_GL();
+  glTexCoord2f(s, t);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2i(GLint s, GLint t ) {
+  ENTER_GL();
+  glTexCoord2i(s, t);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2s(GLshort s, GLshort t ) {
+  ENTER_GL();
+  glTexCoord2s(s, t);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord3d(GLdouble s, GLdouble t, GLdouble r ) {
+  ENTER_GL();
+  glTexCoord3d(s, t, r);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord3f(GLfloat s, GLfloat t, GLfloat r ) {
+  ENTER_GL();
+  glTexCoord3f(s, t, r);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord3i(GLint s, GLint t, GLint r ) {
+  ENTER_GL();
+  glTexCoord3i(s, t, r);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord3s(GLshort s, GLshort t, GLshort r ) {
+  ENTER_GL();
+  glTexCoord3s(s, t, r);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q ) {
+  ENTER_GL();
+  glTexCoord4d(s, t, r, q);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q ) {
+  ENTER_GL();
+  glTexCoord4f(s, t, r, q);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord4i(GLint s, GLint t, GLint r, GLint q ) {
+  ENTER_GL();
+  glTexCoord4i(s, t, r, q);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q ) {
+  ENTER_GL();
+  glTexCoord4s(s, t, r, q);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord1dv(const GLdouble *v ) {
+  ENTER_GL();
+  glTexCoord1dv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord1fv(const GLfloat *v ) {
+  ENTER_GL();
+  glTexCoord1fv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord1iv(const GLint *v ) {
+  ENTER_GL();
+  glTexCoord1iv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord1sv(const GLshort *v ) {
+  ENTER_GL();
+  glTexCoord1sv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2dv(const GLdouble *v ) {
+  ENTER_GL();
+  glTexCoord2dv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2fv(const GLfloat *v ) {
+  ENTER_GL();
+  glTexCoord2fv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2iv(const GLint *v ) {
+  ENTER_GL();
+  glTexCoord2iv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord2sv(const GLshort *v ) {
+  ENTER_GL();
+  glTexCoord2sv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord3dv(const GLdouble *v ) {
+  ENTER_GL();
+  glTexCoord3dv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord3fv(const GLfloat *v ) {
+  ENTER_GL();
+  glTexCoord3fv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord3iv(const GLint *v ) {
+  ENTER_GL();
+  glTexCoord3iv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord3sv(const GLshort *v ) {
+  ENTER_GL();
+  glTexCoord3sv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord4dv(const GLdouble *v ) {
+  ENTER_GL();
+  glTexCoord4dv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord4fv(const GLfloat *v ) {
+  ENTER_GL();
+  glTexCoord4fv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord4iv(const GLint *v ) {
+  ENTER_GL();
+  glTexCoord4iv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoord4sv(const GLshort *v ) {
+  ENTER_GL();
+  glTexCoord4sv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos2d(GLdouble x, GLdouble y ) {
+  ENTER_GL();
+  glRasterPos2d(x, y);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos2f(GLfloat x, GLfloat y ) {
+  ENTER_GL();
+  glRasterPos2f(x, y);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos2i(GLint x, GLint y ) {
+  ENTER_GL();
+  glRasterPos2i(x, y);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos2s(GLshort x, GLshort y ) {
+  ENTER_GL();
+  glRasterPos2s(x, y);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos3d(GLdouble x, GLdouble y, GLdouble z ) {
+  ENTER_GL();
+  glRasterPos3d(x, y, z);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos3f(GLfloat x, GLfloat y, GLfloat z ) {
+  ENTER_GL();
+  glRasterPos3f(x, y, z);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos3i(GLint x, GLint y, GLint z ) {
+  ENTER_GL();
+  glRasterPos3i(x, y, z);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos3s(GLshort x, GLshort y, GLshort z ) {
+  ENTER_GL();
+  glRasterPos3s(x, y, z);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w ) {
+  ENTER_GL();
+  glRasterPos4d(x, y, z, w);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w ) {
+  ENTER_GL();
+  glRasterPos4f(x, y, z, w);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos4i(GLint x, GLint y, GLint z, GLint w ) {
+  ENTER_GL();
+  glRasterPos4i(x, y, z, w);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w ) {
+  ENTER_GL();
+  glRasterPos4s(x, y, z, w);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos2dv(const GLdouble *v ) {
+  ENTER_GL();
+  glRasterPos2dv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos2fv(const GLfloat *v ) {
+  ENTER_GL();
+  glRasterPos2fv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos2iv(const GLint *v ) {
+  ENTER_GL();
+  glRasterPos2iv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos2sv(const GLshort *v ) {
+  ENTER_GL();
+  glRasterPos2sv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos3dv(const GLdouble *v ) {
+  ENTER_GL();
+  glRasterPos3dv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos3fv(const GLfloat *v ) {
+  ENTER_GL();
+  glRasterPos3fv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos3iv(const GLint *v ) {
+  ENTER_GL();
+  glRasterPos3iv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos3sv(const GLshort *v ) {
+  ENTER_GL();
+  glRasterPos3sv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos4dv(const GLdouble *v ) {
+  ENTER_GL();
+  glRasterPos4dv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos4fv(const GLfloat *v ) {
+  ENTER_GL();
+  glRasterPos4fv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos4iv(const GLint *v ) {
+  ENTER_GL();
+  glRasterPos4iv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRasterPos4sv(const GLshort *v ) {
+  ENTER_GL();
+  glRasterPos4sv(v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 ) {
+  ENTER_GL();
+  glRectd(x1, y1, x2, y2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 ) {
+  ENTER_GL();
+  glRectf(x1, y1, x2, y2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRecti(GLint x1, GLint y1, GLint x2, GLint y2 ) {
+  ENTER_GL();
+  glRecti(x1, y1, x2, y2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2 ) {
+  ENTER_GL();
+  glRects(x1, y1, x2, y2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRectdv(const GLdouble *v1, const GLdouble *v2 ) {
+  ENTER_GL();
+  glRectdv(v1, v2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRectfv(const GLfloat *v1, const GLfloat *v2 ) {
+  ENTER_GL();
+  glRectfv(v1, v2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRectiv(const GLint *v1, const GLint *v2 ) {
+  ENTER_GL();
+  glRectiv(v1, v2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glRectsv(const GLshort *v1, const GLshort *v2 ) {
+  ENTER_GL();
+  glRectsv(v1, v2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ) {
+  ENTER_GL();
+  glVertexPointer(size, type, stride, ptr);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glNormalPointer(GLenum type, GLsizei stride, const GLvoid *ptr ) {
+  ENTER_GL();
+  glNormalPointer(type, stride, ptr);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ) {
+  ENTER_GL();
+  glColorPointer(size, type, stride, ptr);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glIndexPointer(GLenum type, GLsizei stride, const GLvoid *ptr ) {
+  ENTER_GL();
+  glIndexPointer(type, stride, ptr);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ) {
+  ENTER_GL();
+  glTexCoordPointer(size, type, stride, ptr);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEdgeFlagPointer(GLsizei stride, const GLvoid *ptr ) {
+  ENTER_GL();
+  glEdgeFlagPointer(stride, ptr);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetPointerv(GLenum pname, void **params ) {
+  ENTER_GL();
+  glGetPointerv(pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glArrayElement(GLint i ) {
+  ENTER_GL();
+  glArrayElement(i);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glDrawArrays(GLenum mode, GLint first, GLsizei count ) {
+  ENTER_GL();
+  glDrawArrays(mode, first, count);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ) {
+  ENTER_GL();
+  glDrawElements(mode, count, type, indices);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer ) {
+  ENTER_GL();
+  glInterleavedArrays(format, stride, pointer);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glShadeModel(GLenum mode ) {
+  ENTER_GL();
+  glShadeModel(mode);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLightf(GLenum light, GLenum pname, GLfloat param ) {
+  ENTER_GL();
+  glLightf(light, pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLighti(GLenum light, GLenum pname, GLint param ) {
+  ENTER_GL();
+  glLighti(light, pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLightfv(GLenum light, GLenum pname, const GLfloat *params ) {
+  ENTER_GL();
+  glLightfv(light, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLightiv(GLenum light, GLenum pname, const GLint *params ) {
+  ENTER_GL();
+  glLightiv(light, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetLightfv(GLenum light, GLenum pname, GLfloat *params ) {
+  ENTER_GL();
+  glGetLightfv(light, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetLightiv(GLenum light, GLenum pname, GLint *params ) {
+  ENTER_GL();
+  glGetLightiv(light, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLightModelf(GLenum pname, GLfloat param ) {
+  ENTER_GL();
+  glLightModelf(pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLightModeli(GLenum pname, GLint param ) {
+  ENTER_GL();
+  glLightModeli(pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLightModelfv(GLenum pname, const GLfloat *params ) {
+  ENTER_GL();
+  glLightModelfv(pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLightModeliv(GLenum pname, const GLint *params ) {
+  ENTER_GL();
+  glLightModeliv(pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMaterialf(GLenum face, GLenum pname, GLfloat param ) {
+  ENTER_GL();
+  glMaterialf(face, pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMateriali(GLenum face, GLenum pname, GLint param ) {
+  ENTER_GL();
+  glMateriali(face, pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMaterialfv(GLenum face, GLenum pname, const GLfloat *params ) {
+  ENTER_GL();
+  glMaterialfv(face, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMaterialiv(GLenum face, GLenum pname, const GLint *params ) {
+  ENTER_GL();
+  glMaterialiv(face, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params ) {
+  ENTER_GL();
+  glGetMaterialfv(face, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetMaterialiv(GLenum face, GLenum pname, GLint *params ) {
+  ENTER_GL();
+  glGetMaterialiv(face, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColorMaterial(GLenum face, GLenum mode ) {
+  ENTER_GL();
+  glColorMaterial(face, mode);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelZoom(GLfloat xfactor, GLfloat yfactor ) {
+  ENTER_GL();
+  glPixelZoom(xfactor, yfactor);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelStoref(GLenum pname, GLfloat param ) {
+  ENTER_GL();
+  glPixelStoref(pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelStorei(GLenum pname, GLint param ) {
+  ENTER_GL();
+  glPixelStorei(pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelTransferf(GLenum pname, GLfloat param ) {
+  ENTER_GL();
+  glPixelTransferf(pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelTransferi(GLenum pname, GLint param ) {
+  ENTER_GL();
+  glPixelTransferi(pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values ) {
+  ENTER_GL();
+  glPixelMapfv(map, mapsize, values);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelMapuiv(GLenum map, GLint mapsize, const GLuint *values ) {
+  ENTER_GL();
+  glPixelMapuiv(map, mapsize, values);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPixelMapusv(GLenum map, GLint mapsize, const GLushort *values ) {
+  ENTER_GL();
+  glPixelMapusv(map, mapsize, values);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetPixelMapfv(GLenum map, GLfloat *values ) {
+  ENTER_GL();
+  glGetPixelMapfv(map, values);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetPixelMapuiv(GLenum map, GLuint *values ) {
+  ENTER_GL();
+  glGetPixelMapuiv(map, values);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetPixelMapusv(GLenum map, GLushort *values ) {
+  ENTER_GL();
+  glGetPixelMapusv(map, values);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap ) {
+  ENTER_GL();
+  glBitmap(width, height, xorig, yorig, xmove, ymove, bitmap);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) {
+  ENTER_GL();
+  glReadPixels(x, y, width, height, format, type, pixels);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) {
+  ENTER_GL();
+  glDrawPixels(width, height, format, type, pixels);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type ) {
+  ENTER_GL();
+  glCopyPixels(x, y, width, height, type);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glStencilFunc(GLenum func, GLint ref, GLuint mask ) {
+  ENTER_GL();
+  glStencilFunc(func, ref, mask);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glStencilMask(GLuint mask ) {
+  ENTER_GL();
+  glStencilMask(mask);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass ) {
+  ENTER_GL();
+  glStencilOp(fail, zfail, zpass);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glClearStencil(GLint s ) {
+  ENTER_GL();
+  glClearStencil(s);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexGend(GLenum coord, GLenum pname, GLdouble param ) {
+  ENTER_GL();
+  glTexGend(coord, pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexGenf(GLenum coord, GLenum pname, GLfloat param ) {
+  ENTER_GL();
+  glTexGenf(coord, pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexGeni(GLenum coord, GLenum pname, GLint param ) {
+  ENTER_GL();
+  glTexGeni(coord, pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexGendv(GLenum coord, GLenum pname, const GLdouble *params ) {
+  ENTER_GL();
+  glTexGendv(coord, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params ) {
+  ENTER_GL();
+  glTexGenfv(coord, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexGeniv(GLenum coord, GLenum pname, const GLint *params ) {
+  ENTER_GL();
+  glTexGeniv(coord, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params ) {
+  ENTER_GL();
+  glGetTexGendv(coord, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params ) {
+  ENTER_GL();
+  glGetTexGenfv(coord, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetTexGeniv(GLenum coord, GLenum pname, GLint *params ) {
+  ENTER_GL();
+  glGetTexGeniv(coord, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexEnvf(GLenum target, GLenum pname, GLfloat param ) {
+  ENTER_GL();
+  glTexEnvf(target, pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexEnvi(GLenum target, GLenum pname, GLint param ) {
+  ENTER_GL();
+  glTexEnvi(target, pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params ) {
+  ENTER_GL();
+  glTexEnvfv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexEnviv(GLenum target, GLenum pname, const GLint *params ) {
+  ENTER_GL();
+  glTexEnviv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params ) {
+  ENTER_GL();
+  glGetTexEnvfv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetTexEnviv(GLenum target, GLenum pname, GLint *params ) {
+  ENTER_GL();
+  glGetTexEnviv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexParameterf(GLenum target, GLenum pname, GLfloat param ) {
+  ENTER_GL();
+  glTexParameterf(target, pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexParameteri(GLenum target, GLenum pname, GLint param ) {
+  ENTER_GL();
+  glTexParameteri(target, pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params ) {
+  ENTER_GL();
+  glTexParameterfv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexParameteriv(GLenum target, GLenum pname, const GLint *params ) {
+  ENTER_GL();
+  glTexParameteriv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params) {
+  ENTER_GL();
+  glGetTexParameterfv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetTexParameteriv(GLenum target, GLenum pname, GLint *params ) {
+  ENTER_GL();
+  glGetTexParameteriv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params ) {
+  ENTER_GL();
+  glGetTexLevelParameterfv(target, level, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params ) {
+  ENTER_GL();
+  glGetTexLevelParameteriv(target, level, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexImage1D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) {
+  ENTER_GL();
+  glTexImage1D(target, level, internalFormat, width, border, format, type, pixels);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexImage2D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) {
+  ENTER_GL();
+  glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels ) {
+  ENTER_GL();
+  glGetTexImage(target, level, format, type, pixels);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGenTextures(GLsizei n, GLuint *textures ) {
+  ENTER_GL();
+  glGenTextures(n, textures);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glDeleteTextures(GLsizei n, const GLuint *textures) {
+  ENTER_GL();
+  glDeleteTextures(n, textures);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBindTexture(GLenum target, GLuint texture ) {
+  ENTER_GL();
+  glBindTexture(target, texture);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities ) {
+  ENTER_GL();
+  glPrioritizeTextures(n, textures, priorities);
+  LEAVE_GL();
+}
+
+GLboolean WINAPI wine_glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences ) {
+  GLboolean ret;
+  ENTER_GL();
+  ret = glAreTexturesResident(n, textures, residences);
+  LEAVE_GL();
+  return ret;
+}
+
+GLboolean WINAPI wine_glIsTexture(GLuint texture ) {
+  GLboolean ret;
+  ENTER_GL();
+  ret = glIsTexture(texture);
+  LEAVE_GL();
+  return ret;
+}
+
+void WINAPI wine_glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels ) {
+  ENTER_GL();
+  glTexSubImage1D(target, level, xoffset, width, format, type, pixels);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) {
+  ENTER_GL();
+  glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border ) {
+  ENTER_GL();
+  glCopyTexImage1D(target, level, internalformat, x, y, width, border);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) {
+  ENTER_GL();
+  glCopyTexImage2D(target, level, internalformat, x, y, width, height, border);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ) {
+  ENTER_GL();
+  glCopyTexSubImage1D(target, level, xoffset, x, y, width);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) {
+  ENTER_GL();
+  glCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points ) {
+  ENTER_GL();
+  glMap1d(target, u1, u2, stride, order, points);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points ) {
+  ENTER_GL();
+  glMap1f(target, u1, u2, stride, order, points);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points ) {
+  ENTER_GL();
+  glMap2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points ) {
+  ENTER_GL();
+  glMap2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetMapdv(GLenum target, GLenum query, GLdouble *v ) {
+  ENTER_GL();
+  glGetMapdv(target, query, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetMapfv(GLenum target, GLenum query, GLfloat *v ) {
+  ENTER_GL();
+  glGetMapfv(target, query, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetMapiv(GLenum target, GLenum query, GLint *v ) {
+  ENTER_GL();
+  glGetMapiv(target, query, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEvalCoord1d(GLdouble u ) {
+  ENTER_GL();
+  glEvalCoord1d(u);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEvalCoord1f(GLfloat u ) {
+  ENTER_GL();
+  glEvalCoord1f(u);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEvalCoord1dv(const GLdouble *u ) {
+  ENTER_GL();
+  glEvalCoord1dv(u);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEvalCoord1fv(const GLfloat *u ) {
+  ENTER_GL();
+  glEvalCoord1fv(u);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEvalCoord2d(GLdouble u, GLdouble v ) {
+  ENTER_GL();
+  glEvalCoord2d(u, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEvalCoord2f(GLfloat u, GLfloat v ) {
+  ENTER_GL();
+  glEvalCoord2f(u, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEvalCoord2dv(const GLdouble *u ) {
+  ENTER_GL();
+  glEvalCoord2dv(u);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEvalCoord2fv(const GLfloat *u ) {
+  ENTER_GL();
+  glEvalCoord2fv(u);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMapGrid1d(GLint un, GLdouble u1, GLdouble u2 ) {
+  ENTER_GL();
+  glMapGrid1d(un, u1, u2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMapGrid1f(GLint un, GLfloat u1, GLfloat u2 ) {
+  ENTER_GL();
+  glMapGrid1f(un, u1, u2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2 ) {
+  ENTER_GL();
+  glMapGrid2d(un, u1, u2, vn, v1, v2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2 ) {
+  ENTER_GL();
+  glMapGrid2f(un, u1, u2, vn, v1, v2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEvalPoint1(GLint i ) {
+  ENTER_GL();
+  glEvalPoint1(i);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEvalPoint2(GLint i, GLint j ) {
+  ENTER_GL();
+  glEvalPoint2(i, j);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEvalMesh1(GLenum mode, GLint i1, GLint i2 ) {
+  ENTER_GL();
+  glEvalMesh1(mode, i1, i2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 ) {
+  ENTER_GL();
+  glEvalMesh2(mode, i1, i2, j1, j2);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFogf(GLenum pname, GLfloat param ) {
+  ENTER_GL();
+  glFogf(pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFogi(GLenum pname, GLint param ) {
+  ENTER_GL();
+  glFogi(pname, param);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFogfv(GLenum pname, const GLfloat *params ) {
+  ENTER_GL();
+  glFogfv(pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFogiv(GLenum pname, const GLint *params ) {
+  ENTER_GL();
+  glFogiv(pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer ) {
+  ENTER_GL();
+  glFeedbackBuffer(size, type, buffer);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPassThrough(GLfloat token ) {
+  ENTER_GL();
+  glPassThrough(token);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSelectBuffer(GLsizei size, GLuint *buffer ) {
+  ENTER_GL();
+  glSelectBuffer(size, buffer);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glInitNames(void ) {
+  ENTER_GL();
+  glInitNames();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glLoadName(GLuint name ) {
+  ENTER_GL();
+  glLoadName(name);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPushName(GLuint name ) {
+  ENTER_GL();
+  glPushName(name);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glPopName(void ) {
+  ENTER_GL();
+  glPopName();
+  LEAVE_GL();
+}
+
+void WINAPI wine_glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices ) {
+  ENTER_GL();
+  glDrawRangeElements(mode, start, end, count, type, indices);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexImage3D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) {
+  ENTER_GL();
+  glTexImage3D(target, level, internalFormat, width, height, depth, border, format, type, pixels);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) {
+  ENTER_GL();
+  glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) {
+  ENTER_GL();
+  glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table ) {
+  ENTER_GL();
+  glColorTable(target, internalformat, width, format, type, table);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data ) {
+  ENTER_GL();
+  glColorSubTable(target, start, count, format, type, data);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) {
+  ENTER_GL();
+  glColorTableParameteriv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) {
+  ENTER_GL();
+  glColorTableParameterfv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width ) {
+  ENTER_GL();
+  glCopyColorSubTable(target, start, x, y, width);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width ) {
+  ENTER_GL();
+  glCopyColorTable(target, internalformat, x, y, width);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table ) {
+  ENTER_GL();
+  glGetColorTable(target, format, type, table);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params ) {
+  ENTER_GL();
+  glGetColorTableParameterfv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params ) {
+  ENTER_GL();
+  glGetColorTableParameteriv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBlendEquation(GLenum mode ) {
+  ENTER_GL();
+  glBlendEquation(mode);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) {
+  ENTER_GL();
+  glBlendColor(red, green, blue, alpha);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink ) {
+  ENTER_GL();
+  glHistogram(target, width, internalformat, sink);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glResetHistogram(GLenum target ) {
+  ENTER_GL();
+  glResetHistogram(target);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values ) {
+  ENTER_GL();
+  glGetHistogram(target, reset, format, type, values);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params ) {
+  ENTER_GL();
+  glGetHistogramParameterfv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params ) {
+  ENTER_GL();
+  glGetHistogramParameteriv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMinmax(GLenum target, GLenum internalformat, GLboolean sink ) {
+  ENTER_GL();
+  glMinmax(target, internalformat, sink);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glResetMinmax(GLenum target ) {
+  ENTER_GL();
+  glResetMinmax(target);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values ) {
+  ENTER_GL();
+  glGetMinmax(target, reset, format, types, values);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params ) {
+  ENTER_GL();
+  glGetMinmaxParameterfv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params ) {
+  ENTER_GL();
+  glGetMinmaxParameteriv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image ) {
+  ENTER_GL();
+  glConvolutionFilter1D(target, internalformat, width, format, type, image);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image ) {
+  ENTER_GL();
+  glConvolutionFilter2D(target, internalformat, width, height, format, type, image);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params ) {
+  ENTER_GL();
+  glConvolutionParameterf(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params ) {
+  ENTER_GL();
+  glConvolutionParameterfv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glConvolutionParameteri(GLenum target, GLenum pname, GLint params ) {
+  ENTER_GL();
+  glConvolutionParameteri(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params ) {
+  ENTER_GL();
+  glConvolutionParameteriv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width ) {
+  ENTER_GL();
+  glCopyConvolutionFilter1D(target, internalformat, x, y, width);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) {
+  ENTER_GL();
+  glCopyConvolutionFilter2D(target, internalformat, x, y, width, height);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image ) {
+  ENTER_GL();
+  glGetConvolutionFilter(target, format, type, image);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params ) {
+  ENTER_GL();
+  glGetConvolutionParameterfv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params ) {
+  ENTER_GL();
+  glGetConvolutionParameteriv(target, pname, params);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column ) {
+  ENTER_GL();
+  glSeparableFilter2D(target, internalformat, width, height, format, type, row, column);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span ) {
+  ENTER_GL();
+  glGetSeparableFilter(target, format, type, row, column, span);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glActiveTextureARB(GLenum texture) {
+  ENTER_GL();
+  glActiveTextureARB(texture);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glClientActiveTextureARB(GLenum texture) {
+  ENTER_GL();
+  glClientActiveTextureARB(texture);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord1dARB(GLenum target, GLdouble s) {
+  ENTER_GL();
+  glMultiTexCoord1dARB(target, s);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord1dvARB(GLenum target, const GLdouble *v) {
+  ENTER_GL();
+  glMultiTexCoord1dvARB(target, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord1fARB(GLenum target, GLfloat s) {
+  ENTER_GL();
+  glMultiTexCoord1fARB(target, s);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord1fvARB(GLenum target, const GLfloat *v) {
+  ENTER_GL();
+  glMultiTexCoord1fvARB(target, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord1iARB(GLenum target, GLint s) {
+  ENTER_GL();
+  glMultiTexCoord1iARB(target, s);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord1ivARB(GLenum target, const GLint *v) {
+  ENTER_GL();
+  glMultiTexCoord1ivARB(target, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord1sARB(GLenum target, GLshort s) {
+  ENTER_GL();
+  glMultiTexCoord1sARB(target, s);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord1svARB(GLenum target, const GLshort *v) {
+  ENTER_GL();
+  glMultiTexCoord1svARB(target, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t) {
+  ENTER_GL();
+  glMultiTexCoord2dARB(target, s, t);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord2dvARB(GLenum target, const GLdouble *v) {
+  ENTER_GL();
+  glMultiTexCoord2dvARB(target, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t) {
+  ENTER_GL();
+  glMultiTexCoord2fARB(target, s, t);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord2fvARB(GLenum target, const GLfloat *v) {
+  ENTER_GL();
+  glMultiTexCoord2fvARB(target, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord2iARB(GLenum target, GLint s, GLint t) {
+  ENTER_GL();
+  glMultiTexCoord2iARB(target, s, t);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord2ivARB(GLenum target, const GLint *v) {
+  ENTER_GL();
+  glMultiTexCoord2ivARB(target, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t) {
+  ENTER_GL();
+  glMultiTexCoord2sARB(target, s, t);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord2svARB(GLenum target, const GLshort *v) {
+  ENTER_GL();
+  glMultiTexCoord2svARB(target, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r) {
+  ENTER_GL();
+  glMultiTexCoord3dARB(target, s, t, r);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord3dvARB(GLenum target, const GLdouble *v) {
+  ENTER_GL();
+  glMultiTexCoord3dvARB(target, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r) {
+  ENTER_GL();
+  glMultiTexCoord3fARB(target, s, t, r);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord3fvARB(GLenum target, const GLfloat *v) {
+  ENTER_GL();
+  glMultiTexCoord3fvARB(target, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r) {
+  ENTER_GL();
+  glMultiTexCoord3iARB(target, s, t, r);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord3ivARB(GLenum target, const GLint *v) {
+  ENTER_GL();
+  glMultiTexCoord3ivARB(target, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r) {
+  ENTER_GL();
+  glMultiTexCoord3sARB(target, s, t, r);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord3svARB(GLenum target, const GLshort *v) {
+  ENTER_GL();
+  glMultiTexCoord3svARB(target, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) {
+  ENTER_GL();
+  glMultiTexCoord4dARB(target, s, t, r, q);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord4dvARB(GLenum target, const GLdouble *v) {
+  ENTER_GL();
+  glMultiTexCoord4dvARB(target, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) {
+  ENTER_GL();
+  glMultiTexCoord4fARB(target, s, t, r, q);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord4fvARB(GLenum target, const GLfloat *v) {
+  ENTER_GL();
+  glMultiTexCoord4fvARB(target, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q) {
+  ENTER_GL();
+  glMultiTexCoord4iARB(target, s, t, r, q);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord4ivARB(GLenum target, const GLint *v) {
+  ENTER_GL();
+  glMultiTexCoord4ivARB(target, v);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) {
+  ENTER_GL();
+  glMultiTexCoord4sARB(target, s, t, r, q);
+  LEAVE_GL();
+}
+
+void WINAPI wine_glMultiTexCoord4svARB(GLenum target, const GLshort *v) {
+  ENTER_GL();
+  glMultiTexCoord4svARB(target, v);
+  LEAVE_GL();
+}
+
diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c
new file mode 100644
index 0000000..6109eb8
--- /dev/null
+++ b/dlls/opengl32/wgl.c
@@ -0,0 +1,276 @@
+/* Window-specific OpenGL functions implementation.
+
+     Copyright (c) 1999 Lionel Ulmer
+*/
+
+#include <stdlib.h>
+
+#include "config.h"
+#include "debugtools.h"
+#include "gdi.h"
+#include "dc.h"
+#include "windef.h"
+#include "wine_gl.h"
+#include "x11drv.h"
+
+#include "wgl.h"
+#include "opengl_ext.h"
+
+DEFAULT_DEBUG_CHANNEL(opengl)
+
+HGLRC WINAPI wglCreateContext(HDC hdc) {
+  DC * dc = DC_GetDCPtr( hdc );
+  X11DRV_PDEVICE *physDev;
+  XVisualInfo *vis;
+  GLXContext ret;
+
+  TRACE("(%08x)\n", hdc);
+
+  if (dc == NULL) {
+    ERR("Null DC !!!\n");
+    return NULL;
+  }
+  
+  physDev = (X11DRV_PDEVICE *)dc->physDev;
+
+  /* First, get the visual for the choosen pixel format */
+  vis = physDev->visuals[physDev->current_pf - 1];
+
+  if (vis == NULL) {
+    ERR("NULL visual !!!\n");
+    /* Need to set errors here */
+    return NULL;
+  }
+  
+  ENTER_GL();
+  ret = glXCreateContext(display, vis, NULL, True);
+  LEAVE_GL();
+
+  return (HGLRC) ret;
+}
+
+HGLRC WINAPI wglCreateLayerContext(HDC hdc,
+				   int iLayerPlane) {
+  FIXME("(%08x,%d): stub !\n", hdc, iLayerPlane);
+
+  return NULL;
+}
+
+BOOL WINAPI wglCopyContext(HGLRC hglrcSrc,
+			   HGLRC hglrcDst,
+			   UINT mask) {
+  FIXME("(%p,%p,%d)\n", hglrcSrc, hglrcDst, mask);
+
+  return FALSE;
+}
+
+BOOL WINAPI wglDeleteContext(HGLRC hglrc) {
+  FIXME("(%p): stub !\n", hglrc);
+
+  return FALSE;
+}
+
+BOOL WINAPI wglDescribeLayerPlane(HDC hdc,
+				  int iPixelFormat,
+				  int iLayerPlane,
+				  UINT nBytes,
+				  LPLAYERPLANEDESCRIPTOR plpd) {
+  FIXME("(%08x,%d,%d,%d,%p)\n", hdc, iPixelFormat, iLayerPlane, nBytes, plpd);
+
+  return FALSE;
+}
+
+HGLRC WINAPI wglGetCurrentContext(void) {
+  GLXContext ret;
+
+  TRACE("()\n");
+
+  ENTER_GL();
+  ret = glXGetCurrentContext();
+  LEAVE_GL();
+
+  TRACE(" returning %p\n", ret);
+  
+  return ret;
+}
+
+HDC WINAPI wglGetCurrentDC(void) {
+  GLXContext ret;
+
+  ENTER_GL();
+  ret = glXGetCurrentContext();
+  LEAVE_GL();
+
+  if (ret == NULL) {
+    TRACE("() no current context -> returning NULL\n");
+    return 0;
+  } else {
+    FIXME("()\n");
+
+    return 0;
+  }
+}
+
+int WINAPI wglGetLayerPaletteEntries(HDC hdc,
+				     int iLayerPlane,
+				     int iStart,
+				     int cEntries,
+				     const COLORREF *pcr) {
+  FIXME("(): stub !\n");
+
+  return 0;
+}
+
+static int compar(const void *elt_a, const void *elt_b) {
+  return strcmp(((OpenGL_extension *) elt_a)->name,
+		((OpenGL_extension *) elt_b)->name);
+}
+
+void* WINAPI wglGetProcAddress(LPCSTR  lpszProc) {
+  void *local_func;
+  static HMODULE hm = 0;
+
+  TRACE("(%s)\n", lpszProc);
+
+  if (hm == 0)
+      hm = GetModuleHandleA("opengl32");
+
+  /* First, look if it's not already defined in the 'standard' OpenGL functions */
+  if ((local_func = GetProcAddress(hm, lpszProc)) != NULL) {
+    TRACE("Found function in 'standard' OpenGL functions (%p)\n", local_func);
+    return local_func;
+  }
+
+  /* After that, look at the extensions defined in the Linux OpenGL library */
+  if ((local_func = glXGetProcAddressARB(lpszProc)) == NULL) {
+    char buf[256];
+    void *ret = NULL;
+    
+    /* Remove the 3 last letters (EXT, ARB, ...).
+       
+       I know that some extensions have more than 3 letters (MESA, NV,
+       INTEL, ...), but this is only a stop-gap measure to fix buggy
+       OpenGL drivers (moreover, it is only useful for old 1.0 apps
+       that query the glBindTextureEXT extension).
+    */
+    strncpy(buf, lpszProc, strlen(lpszProc) - 3);
+    buf[strlen(lpszProc) - 3] = '\0';
+    TRACE("Extension not found in the Linux OpenGL library, checking against libGL bug with %s..\n", buf);
+    
+    ret = GetProcAddress(hm, buf);
+    if (ret != NULL) {
+      TRACE("Found function in main OpenGL library (%p) !\n", ret);
+    }
+
+    return ret;
+  } else {
+    OpenGL_extension  ext;
+    OpenGL_extension *ret;
+
+    ext.name = (char *) lpszProc;
+    ret = (OpenGL_extension *) bsearch(&ext, extension_registry,
+				       extension_registry_size, sizeof(OpenGL_extension), compar);
+
+    if (ret != NULL) {
+      TRACE("Returning function  (%p)\n", ret->func);
+      *(ret->func_ptr) = local_func;
+
+      return ret->func;
+    } else {
+      ERR("Extension defined in the OpenGL library but NOT in opengl_ext.c... Please report (lionel.ulmer@free.fr) !\n");
+      return NULL;
+    }
+  }
+}
+
+BOOL WINAPI wglMakeCurrent(HDC hdc,
+			   HGLRC hglrc) {
+  DC * dc = DC_GetDCPtr( hdc );
+  X11DRV_PDEVICE *physDev;
+  BOOL ret;
+
+  TRACE("(%08x,%p)\n", hdc, hglrc);
+
+  if (dc == NULL) {
+    ERR("Null DC !!!\n");
+    return FALSE;
+  }
+  
+  physDev =(X11DRV_PDEVICE *)dc->physDev;
+
+  ENTER_GL();
+  ret = glXMakeCurrent(display, physDev->drawable, (GLXContext) hglrc);
+  LEAVE_GL();
+  
+  return ret;
+}
+
+BOOL WINAPI wglRealizeLayerPalette(HDC hdc,
+				   int iLayerPlane,
+				   BOOL bRealize) {
+  FIXME("()\n");
+
+  return FALSE;
+}
+
+int WINAPI wglSetLayerPaletteEntries(HDC hdc,
+				     int iLayerPlane,
+				     int iStart,
+				     int cEntries,
+				     const COLORREF *pcr) {
+  FIXME("(): stub !\n");
+
+  return 0;
+}
+
+BOOL WINAPI wglShareLists(HGLRC hglrc1,
+			  HGLRC hglrc2) {
+  FIXME("(): stub !\n");
+
+  return FALSE;
+}
+
+BOOL WINAPI wglSwapLayerBuffers(HDC hdc,
+				UINT fuPlanes) {
+  FIXME("(): stub !\n");
+
+  return FALSE;
+}
+
+BOOL WINAPI wglUseFontBitmaps(HDC hdc,
+			      DWORD first,
+			      DWORD count,
+			      DWORD listBase) {
+  FIXME("(): stub !\n");
+
+  return FALSE;
+}
+ 
+BOOL WINAPI wglUseFontOutlines(HDC hdc,
+			       DWORD first,
+			       DWORD count,
+			       DWORD listBase,
+			       FLOAT deviation,
+			       FLOAT extrusion,
+			       int format,
+			       LPGLYPHMETRICSFLOAT lpgmf) {
+  FIXME("(): stub !\n");
+
+  return FALSE;
+}
+
+/* This is for brain-dead applications that use OpenGL functions before even
+   creating a rendering context.... */
+DECL_GLOBAL_CONSTRUCTOR(OpenGL_create_default_context) {
+  int num;
+  XVisualInfo template;
+  XVisualInfo *vis;
+  GLXContext cx;
+
+  ENTER_GL();
+  template.visualid = XVisualIDFromVisual(visual);
+  vis = XGetVisualInfo(display, VisualIDMask, &template, &num);
+  cx=glXCreateContext(display, vis, 0, GL_TRUE);
+  glXMakeCurrent(display, X11DRV_GetXRootWindow(), cx);
+  LEAVE_GL();
+}
diff --git a/dlls/opengl32/wgl.h b/dlls/opengl32/wgl.h
new file mode 100644
index 0000000..aa7ae30
--- /dev/null
+++ b/dlls/opengl32/wgl.h
@@ -0,0 +1,103 @@
+/* Window-specific OpenGL functions implementation.
+
+     Copyright (c) 2000 Lionel Ulmer
+*/
+
+#ifndef __DLLS_OPENGL32_WGL_H
+#define __DLLS_OPENGL32_WGL_H
+
+#include "gdi.h"
+
+typedef void *HGLRC;
+
+typedef struct {
+  WORD  nSize; 
+  WORD  nVersion; 
+  DWORD dwFlags; 
+  BYTE  iPixelType; 
+  BYTE  cColorBits; 
+  BYTE  cRedBits; 
+  BYTE  cRedShift; 
+  BYTE  cGreenBits; 
+  BYTE  cGreenShift; 
+  BYTE  cBlueBits; 
+  BYTE  cBlueShift; 
+  BYTE  cAlphaBits; 
+  BYTE  cAlphaShift; 
+  BYTE  cAccumBits; 
+  BYTE  cAccumRedBits; 
+  BYTE  cAccumGreenBits; 
+  BYTE  cAccumBlueBits; 
+  BYTE  cAccumAlphaBits; 
+  BYTE  cDepthBits; 
+  BYTE  cStencilBits; 
+  BYTE  cAuxBuffers; 
+  BYTE  iLayerPlane;
+  BYTE  bReserved; 
+  COLORREF crTransparent; 
+} LAYERPLANEDESCRIPTOR; 
+typedef LAYERPLANEDESCRIPTOR* LPLAYERPLANEDESCRIPTOR;
+
+typedef struct {
+  FLOAT      x; 
+  FLOAT      y; 
+} POINTFLOAT; 
+
+typedef struct {
+  FLOAT      gmfBlackBoxX; 
+  FLOAT      gmfBlackBoxY; 
+  POINTFLOAT gmfptGlyphOrigin; 
+  FLOAT      gmfCellIncX; 
+  FLOAT      gmfCellIncY; 
+} GLYPHMETRICSFLOAT; 
+typedef GLYPHMETRICSFLOAT *LPGLYPHMETRICSFLOAT;
+
+HGLRC WINAPI wglCreateContext(HDC hdc) ;
+HGLRC WINAPI wglCreateLayerContext(HDC hdc,
+				   int iLayerPlane) ;
+BOOL WINAPI wglCopyContext(HGLRC hglrcSrc,
+			   HGLRC hglrcDst,
+			   UINT mask) ;
+BOOL WINAPI wglDeleteContext(HGLRC hglrc) ;
+BOOL WINAPI wglDescribeLayerPlane(HDC hdc,
+				  int iPixelFormat,
+				  int iLayerPlane,
+				  UINT nBytes,
+				  LPLAYERPLANEDESCRIPTOR plpd) ;
+HGLRC WINAPI wglGetCurrentContext(void) ;
+HDC WINAPI wglGetCurrentDC(void) ;
+int WINAPI wglGetLayerPaletteEntries(HDC hdc,
+				     int iLayerPlane,
+				     int iStart,
+				     int cEntries,
+				     const COLORREF *pcr) ;
+void * WINAPI wglGetProcAddress(LPCSTR  lpszProc) ;
+BOOL WINAPI wglMakeCurrent(HDC hdc,
+			   HGLRC hglrc) ;
+BOOL WINAPI wglRealizeLayerPalette(HDC hdc,
+				   int iLayerPlane,
+				   BOOL bRealize) ;
+int WINAPI wglSetLayerPaletteEntries(HDC hdc,
+				     int iLayerPlane,
+				     int iStart,
+				     int cEntries,
+				     const COLORREF *pcr) ;
+BOOL WINAPI wglShareLists(HGLRC hglrc1,
+			  HGLRC hglrc2) ;
+BOOL WINAPI wglSwapLayerBuffers(HDC hdc,
+				UINT fuPlanes);
+BOOL WINAPI wglUseFontBitmaps(HDC hdc,
+			      DWORD first,
+			      DWORD count,
+			      DWORD listBase) ;
+BOOL WINAPI wglUseFontOutlines(HDC hdc,
+			       DWORD first,
+			       DWORD count,
+			       DWORD listBase,
+			       FLOAT deviation,
+			       FLOAT extrusion,
+			       int format,
+			       LPGLYPHMETRICSFLOAT lpgmf) ;
+
+#endif /* __DLLS_OPENGL32_WGL_H */
+
diff --git a/graphics/enhmetafiledrv/init.c b/graphics/enhmetafiledrv/init.c
index 7133c1f..ee8c295 100644
--- a/graphics/enhmetafiledrv/init.c
+++ b/graphics/enhmetafiledrv/init.c
@@ -29,6 +29,7 @@
     EMFDRV_BeginPath,                /* pBeginPath */
     NULL,                            /* pBitBlt */
     NULL,                            /* pBitmapBits */	
+    NULL,                            /* pChoosePixelFormat */
     EMFDRV_Chord,                    /* pChord */
     EMFDRV_CloseFigure,              /* pCloseFigure */
     NULL,                            /* pCreateBitmap */
@@ -37,6 +38,7 @@
     NULL,                            /* pCreateDIBSection16 */
     NULL, /* no implementation */    /* pDeleteDC */
     NULL,                            /* pDeleteObject */
+    NULL,                            /* pDescribePixelFormat */
     NULL,                            /* pDeviceCapabilities */
     EMFDRV_Ellipse,                  /* pEllipse */
     NULL,                            /* pEndDoc */
@@ -55,6 +57,7 @@
     NULL,                            /* pGetCharWidth */
     NULL,                            /* pGetDCOrgEx */
     NULL, /* no implementation */    /* pGetPixel */
+    NULL,                            /* pGetPixelFormat */
     NULL,                            /* pGetTextExtentPoint */
     NULL,                            /* pGetTextMetrics */
     EMFDRV_IntersectClipRect,        /* pIntersectClipRect */
@@ -94,6 +97,7 @@
     EMFDRV_SetMapMode,               /* pSetMapMode */
     EMFDRV_SetMapperFlags,           /* pSetMapperFlags */
     NULL,                            /* pSetPixel */
+    NULL,                            /* pSetPixelFormat */
     EMFDRV_SetPolyFillMode,          /* pSetPolyFillMode */
     EMFDRV_SetROP2,                  /* pSetROP2 */
     NULL,                            /* pSetRelAbs */
@@ -112,6 +116,7 @@
     NULL,                            /* pStretchDIBits */
     EMFDRV_StrokeAndFillPath,        /* pStrokeAndFillPath */
     EMFDRV_StrokePath,               /* pStrokePath */
+    NULL,                            /* pSwapBuffers */
     EMFDRV_WidenPath                 /* pWiddenPath */
 };
 
diff --git a/graphics/metafiledrv/init.c b/graphics/metafiledrv/init.c
index f04aa5c..c78b4e1 100644
--- a/graphics/metafiledrv/init.c
+++ b/graphics/metafiledrv/init.c
@@ -27,6 +27,7 @@
     MFDRV_BeginPath,                 /* pBeginPath */
     MFDRV_BitBlt,                    /* pBitBlt */
     NULL,                            /* pBitmapBits */	
+    NULL,                            /* pChoosePixelFormat */
     MFDRV_Chord,                     /* pChord */
     MFDRV_CloseFigure,               /* pCloseFigure */
     NULL,                            /* pCreateBitmap */
@@ -35,6 +36,7 @@
     NULL,                            /* pCreateDIBSection16 */
     NULL, /* no implementation */    /* pDeleteDC */
     NULL,                            /* pDeleteObject */
+    NULL,                            /* pDescribePixelFormat */
     NULL,                            /* pDeviceCapabilities */
     MFDRV_Ellipse,                   /* pEllipse */
     NULL,                            /* pEndDoc */
@@ -53,6 +55,7 @@
     NULL,                            /* pGetCharWidth */
     NULL,                            /* pGetDCOrgEx */
     NULL, /* no implementation */    /* pGetPixel */
+    NULL,                            /* pGetPixelFormat */
     NULL,                            /* pGetTextExtentPoint */
     NULL,                            /* pGetTextMetrics */
     MFDRV_IntersectClipRect,         /* pIntersectClipRect */
@@ -92,6 +95,7 @@
     MFDRV_SetMapMode,                /* pSetMapMode */
     MFDRV_SetMapperFlags,            /* pSetMapperFlags */
     MFDRV_SetPixel,                  /* pSetPixel */
+    NULL,                            /* pSetPixelFormat */
     MFDRV_SetPolyFillMode,           /* pSetPolyFillMode */
     MFDRV_SetROP2,                   /* pSetROP2 */
     MFDRV_SetRelAbs,                 /* pSetRelAbs */
@@ -110,6 +114,7 @@
     MFDRV_StretchDIBits,             /* pStretchDIBits */
     MFDRV_StrokeAndFillPath,         /* pStrokeAndFillPath */
     MFDRV_StrokePath,                /* pStrokePath */
+    NULL,                            /* pSwapBuffers */
     MFDRV_WidenPath                  /* pWidenPath */
 };
 
diff --git a/graphics/painting.c b/graphics/painting.c
index 3413c58..a507c61 100644
--- a/graphics/painting.c
+++ b/graphics/painting.c
@@ -404,8 +404,17 @@
  */
 INT WINAPI ChoosePixelFormat( HDC hdc, const LPPIXELFORMATDESCRIPTOR ppfd )
 {
-    FIXME("(%d,%p): stub\n",hdc,ppfd);
-    return 1;
+  DC * dc = DC_GetDCPtr( hdc );
+
+  TRACE("(%08x,%p)\n",hdc,ppfd);
+  
+  if (dc == NULL) return 0;
+  if (dc->funcs->pChoosePixelFormat == NULL) {
+    FIXME(" :stub\n");
+    return 0;
+  }
+  
+  return dc->funcs->pChoosePixelFormat(dc,ppfd);
 }
 
 
@@ -423,8 +432,16 @@
 BOOL WINAPI SetPixelFormat( HDC hdc, INT iPixelFormat,
                             const PIXELFORMATDESCRIPTOR *ppfd)
 {
-    FIXME("(%d,%d,%p): stub\n",hdc,iPixelFormat,ppfd);
-    return TRUE;
+  DC * dc = DC_GetDCPtr( hdc );
+
+  TRACE("(%d,%d,%p)\n",hdc,iPixelFormat,ppfd);
+
+  if (dc == NULL) return 0;
+  if (dc->funcs->pSetPixelFormat == NULL) {
+    FIXME(" :stub\n");
+    return 0;
+  }
+  return dc->funcs->pSetPixelFormat(dc,iPixelFormat,ppfd);
 }
 
 
@@ -441,8 +458,16 @@
  */
 INT WINAPI GetPixelFormat( HDC hdc )
 {
-    FIXME("(%d): stub\n",hdc);
-    return 1;
+  DC * dc = DC_GetDCPtr( hdc );
+
+  TRACE("(%08x)\n",hdc);
+
+  if (dc == NULL) return 0;
+  if (dc->funcs->pGetPixelFormat == NULL) {
+    FIXME(" :stub\n");
+    return 0;
+  }
+  return dc->funcs->pGetPixelFormat(dc);
 }
 
 
@@ -463,10 +488,18 @@
 INT WINAPI DescribePixelFormat( HDC hdc, INT iPixelFormat, UINT nBytes,
                                 LPPIXELFORMATDESCRIPTOR ppfd )
 {
-    FIXME("(%d,%d,%d,%p): stub\n",hdc,iPixelFormat,nBytes,ppfd);
+  DC * dc = DC_GetDCPtr( hdc );
+
+  TRACE("(%08x,%d,%d,%p): stub\n",hdc,iPixelFormat,nBytes,ppfd);
+
+  if (dc == NULL) return 0;
+  if (dc->funcs->pDescribePixelFormat == NULL) {
+    FIXME(" :stub\n");
     ppfd->nSize = nBytes;
     ppfd->nVersion = 1;
     return 3;
+  }
+  return dc->funcs->pDescribePixelFormat(dc,iPixelFormat,nBytes,ppfd);
 }
 
 
@@ -481,8 +514,16 @@
  */
 BOOL WINAPI SwapBuffers( HDC hdc )
 {
-    FIXME("(%d): stub\n",hdc);
+  DC * dc = DC_GetDCPtr( hdc );
+
+  TRACE("(%08x)\n",hdc);
+
+  if (dc == NULL) return 0;
+  if (dc->funcs->pSwapBuffers == NULL) {
+    FIXME(" :stub\n");
     return TRUE;
+  }
+  return dc->funcs->pSwapBuffers(dc);
 }
 
 
diff --git a/graphics/psdrv/init.c b/graphics/psdrv/init.c
index 99d81d8..fef7145 100644
--- a/graphics/psdrv/init.c
+++ b/graphics/psdrv/init.c
@@ -31,6 +31,7 @@
     NULL,                            /* pBeginPath */
     NULL,                            /* pBitBlt */
     NULL,                            /* pBitmapBits */
+    NULL,                            /* pChoosePixelFormat */
     PSDRV_Chord,                     /* pChord */
     NULL,                            /* pCloseFigure */
     NULL,                            /* pCreateBitmap */
@@ -39,6 +40,7 @@
     NULL,                            /* pCreateDIBSection16 */
     PSDRV_DeleteDC,                  /* pDeleteDC */
     NULL,                            /* pDeleteObject */
+    NULL,                            /* pDescribePixelFormat */
     PSDRV_DeviceCapabilities,        /* pDeviceCapabilities */
     PSDRV_Ellipse,                   /* pEllipse */
     PSDRV_EndDoc,                    /* pEndDoc */
@@ -57,6 +59,7 @@
     PSDRV_GetCharWidth,              /* pGetCharWidth */
     NULL,                            /* pGetDCOrgEx */
     NULL,                            /* pGetPixel */
+    NULL,                            /* pGetPixelFormat */
     PSDRV_GetTextExtentPoint,        /* pGetTextExtentPoint */
     PSDRV_GetTextMetrics,            /* pGetTextMetrics */
     NULL,                            /* pIntersectClipRect */
@@ -96,6 +99,7 @@
     NULL,                            /* pSetMapMode (optional) */
     NULL,                            /* pSetMapperFlags */
     PSDRV_SetPixel,                  /* pSetPixel */
+    NULL,                            /* pSetPixelFormat */
     NULL,                            /* pSetPolyFillMode */
     NULL,                            /* pSetROP2 */
     NULL,                            /* pSetRelAbs */
@@ -114,6 +118,7 @@
     PSDRV_StretchDIBits,             /* pStretchDIBits */
     NULL,                            /* pStrokeAndFillPath */
     NULL,                            /* pStrokePath */
+    NULL,                            /* pSwapBuffers */
     NULL                             /* pWidenPath */
 };
 
diff --git a/graphics/ttydrv/init.c b/graphics/ttydrv/init.c
index 8b1a005..c3150c3 100644
--- a/graphics/ttydrv/init.c
+++ b/graphics/ttydrv/init.c
@@ -25,6 +25,7 @@
   NULL,                /* pBeginPath */
   TTYDRV_DC_BitBlt,    /* pBitBlt */
   TTYDRV_DC_BitmapBits,/* pBitmapBits */
+  NULL,                /* pChoosePixelFormat */
   TTYDRV_DC_Chord,     /* pChord */
   NULL,                /* pCloseFigure */
   TTYDRV_DC_CreateBitmap, /* pCreateBitmap */
@@ -33,6 +34,7 @@
   NULL,                /* pCreateDIBSection16 */
   TTYDRV_DC_DeleteDC,  /* pDeleteDC */
   TTYDRV_DC_DeleteObject, /* pDeleteObject */
+  NULL,                /* pDescribePixelFormat */
   NULL,                /* pDeviceCapabilities */
   TTYDRV_DC_Ellipse,   /* pEllipse */
   NULL,                /* pEndDoc */
@@ -51,6 +53,7 @@
   TTYDRV_DC_GetCharWidth, /* pGetCharWidth */
   NULL,                /* pGetDCOrgEx */
   TTYDRV_DC_GetPixel,  /* pGetPixel */
+  NULL,                /* pGetPixelFormat */
   TTYDRV_DC_GetTextExtentPoint, /* pGetTextExtentPoint */
   TTYDRV_DC_GetTextMetrics,  /* pGetTextMetrics */
   NULL,                /* pIntersectClipRect */
@@ -90,6 +93,7 @@
   NULL,                /* pSetMapMode (optional) */
   NULL,                /* pSetMapperFlags */
   TTYDRV_DC_SetPixel,  /* pSetPixel */
+  NULL,                /* pSetPixelFormat */
   NULL,                /* pSetPolyFillMode */
   NULL,                /* pSetROP2 */
   NULL,                /* pSetRelAbs */
@@ -108,6 +112,7 @@
   NULL,                /* pStretchDIBits */
   NULL,                /* pStrokeAndFillPath */
   NULL,                /* pStrokePath */
+  NULL,                /* pSwapBuffers */
   NULL                 /* pWidenPath */
 };
 
diff --git a/graphics/win16drv/init.c b/graphics/win16drv/init.c
index 412d535..f368757 100644
--- a/graphics/win16drv/init.c
+++ b/graphics/win16drv/init.c
@@ -53,6 +53,7 @@
     NULL,                            /* pBeginPath */
     NULL,                            /* pBitBlt */
     NULL,                            /* pBitmapBits */
+    NULL,                            /* pChoosePixelFormat */
     NULL,                            /* pChord */
     NULL,                            /* pCloseFigure */
     NULL,                            /* pCreateBitmap */
@@ -61,6 +62,7 @@
     NULL,                            /* pCreateDIBSection16 */
     NULL,                            /* pDeleteDC */
     NULL,                            /* pDeleteObject */
+    NULL,                            /* pDescribePixelFormat */
     WIN16DRV_DeviceCapabilities,     /* pDeviceCapabilities */
     WIN16DRV_Ellipse,                /* pEllipse */
     NULL,                            /* pEndDoc */
@@ -79,6 +81,7 @@
     WIN16DRV_GetCharWidth,           /* pGetCharWidth */
     NULL,                            /* pGetDCOrgEx */
     NULL,                            /* pGetPixel */
+    NULL,                            /* pGetPixelFormat */
     WIN16DRV_GetTextExtentPoint,     /* pGetTextExtentPoint */
     WIN16DRV_GetTextMetrics,         /* pGetTextMetrics */
     NULL,                            /* pIntersectClipRect */
@@ -118,6 +121,7 @@
     NULL,                            /* pSetMapMode */
     NULL,                            /* pSetMapperFlags */
     NULL,                            /* pSetPixel */
+    NULL,                            /* pSetPixelFormat */
     NULL,                            /* pSetPolyFillMode */
     NULL,                            /* pSetROP2 */
     NULL,                            /* pSetRelAbs */
@@ -136,6 +140,7 @@
     NULL,                            /* pStretchDIBits */
     NULL,                            /* pStrokeAndFillPath */
     NULL,                            /* pStrokePath */
+    NULL,                            /* pSwapBuffers */
     NULL                             /* pWidenPath */
 };
 
diff --git a/graphics/x11drv/Makefile.in b/graphics/x11drv/Makefile.in
index 679ad08..f7b8953 100644
--- a/graphics/x11drv/Makefile.in
+++ b/graphics/x11drv/Makefile.in
@@ -15,6 +15,7 @@
 	init.c \
 	objects.c \
 	oembitmap.c \
+	opengl.c \
 	palette.c \
 	pen.c \
 	text.c \
diff --git a/graphics/x11drv/init.c b/graphics/x11drv/init.c
index 13b7b74..d013535 100644
--- a/graphics/x11drv/init.c
+++ b/graphics/x11drv/init.c
@@ -38,6 +38,7 @@
     NULL,                            /* pBeginPath */
     X11DRV_BitBlt,                   /* pBitBlt */
     X11DRV_BitmapBits,               /* pBitmapBits */
+    X11DRV_ChoosePixelFormat,        /* pChoosePixelFormat */
     X11DRV_Chord,                    /* pChord */
     NULL,                            /* pCloseFigure */
     X11DRV_CreateBitmap,             /* pCreateBitmap */
@@ -46,6 +47,7 @@
     X11DRV_DIB_CreateDIBSection16,   /* pCreateDIBSection16 */
     X11DRV_DeleteDC,                 /* pDeleteDC */
     X11DRV_DeleteObject,             /* pDeleteObject */
+    X11DRV_DescribePixelFormat,      /* pDescribePixelFormat */
     NULL,                            /* pDeviceCapabilities */
     X11DRV_Ellipse,                  /* pEllipse */
     NULL,                            /* pEndDoc */
@@ -64,6 +66,7 @@
     X11DRV_GetCharWidth,             /* pGetCharWidth */
     X11DRV_GetDCOrgEx,               /* pGetDCOrgEx */
     X11DRV_GetPixel,                 /* pGetPixel */
+    X11DRV_GetPixelFormat,           /* pGetPixelFormat */
     X11DRV_GetTextExtentPoint,       /* pGetTextExtentPoint */
     X11DRV_GetTextMetrics,           /* pGetTextMetrics */
     NULL,                            /* pIntersectClipRect */
@@ -103,6 +106,7 @@
     NULL,                            /* pSetMapMode (optional) */
     NULL,                            /* pSetMapperFlags */
     X11DRV_SetPixel,                 /* pSetPixel */
+    X11DRV_SetPixelFormat,           /* pSetPixelFormat */
     NULL,                            /* pSetPolyFillMode */
     NULL,                            /* pSetROP2 */
     NULL,                            /* pSetRelAbs */
@@ -121,6 +125,7 @@
     NULL,                            /* pStretchDIBits */
     NULL,                            /* pStrokeAndFillPath */
     NULL,                            /* pStrokePath */
+    X11DRV_SwapBuffers,              /* pSwapBuffers */
     NULL                             /* pWidenPath */
 };
 
@@ -265,6 +270,9 @@
         dc->w.hVisRgn            = CreateRectRgnIndirect( &dc->w.totalExtent );
     }
 
+    physDev->current_pf   = 0;
+    physDev->used_visuals = 0;
+    
     if (!dc->w.hVisRgn)
     {
         TSXFreeGC( display, physDev->gc );
@@ -285,6 +293,8 @@
 {
     X11DRV_PDEVICE *physDev = (X11DRV_PDEVICE *)dc->physDev;
     TSXFreeGC( display, physDev->gc );
+    while (physDev->used_visuals-- > 0)
+      TSXFree(physDev->visuals[physDev->used_visuals]);
     HeapFree( GetProcessHeap(), 0, physDev );
     dc->physDev = NULL;
     return TRUE;
diff --git a/graphics/x11drv/opengl.c b/graphics/x11drv/opengl.c
new file mode 100644
index 0000000..c7ff05e
--- /dev/null
+++ b/graphics/x11drv/opengl.c
@@ -0,0 +1,343 @@
+/* 
+ * X11DRV OpenGL functions
+ *
+ * Copyright 2000 Lionel Ulmer
+ *
+ */
+
+#include "config.h"
+
+#include "ts_xlib.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "debugtools.h"
+#include "gdi.h"
+#include "x11drv.h"
+#include "wine_gl.h"
+
+DEFAULT_DEBUG_CHANNEL(opengl)
+
+#ifdef HAVE_OPENGL
+
+static void dump_PIXELFORMATDESCRIPTOR(PIXELFORMATDESCRIPTOR *ppfd) {
+  DPRINTF("  - size / version : %d / %d\n", ppfd->nSize, ppfd->nVersion);
+  DPRINTF("  - dwFlags : ");
+#define TEST_AND_DUMP(t,tv) if ((t) & (tv)) DPRINTF(#tv " ")
+  TEST_AND_DUMP(ppfd->dwFlags, PFD_DEPTH_DONTCARE);
+  TEST_AND_DUMP(ppfd->dwFlags, PFD_DOUBLEBUFFER);
+  TEST_AND_DUMP(ppfd->dwFlags, PFD_DOUBLEBUFFER_DONTCARE);
+  TEST_AND_DUMP(ppfd->dwFlags, PFD_DRAW_TO_WINDOW);
+  TEST_AND_DUMP(ppfd->dwFlags, PFD_DRAW_TO_BITMAP);
+  TEST_AND_DUMP(ppfd->dwFlags, PFD_GENERIC_ACCELERATED);
+  TEST_AND_DUMP(ppfd->dwFlags, PFD_GENERIC_FORMAT);
+  TEST_AND_DUMP(ppfd->dwFlags, PFD_NEED_PALETTE);
+  TEST_AND_DUMP(ppfd->dwFlags, PFD_NEED_SYSTEM_PALETTE);
+  TEST_AND_DUMP(ppfd->dwFlags, PFD_STEREO);
+  TEST_AND_DUMP(ppfd->dwFlags, PFD_STEREO_DONTCARE);
+  TEST_AND_DUMP(ppfd->dwFlags, PFD_SUPPORT_GDI);
+  TEST_AND_DUMP(ppfd->dwFlags, PFD_SUPPORT_OPENGL);
+  TEST_AND_DUMP(ppfd->dwFlags, PFD_SWAP_COPY);
+  TEST_AND_DUMP(ppfd->dwFlags, PFD_SWAP_EXCHANGE);
+  TEST_AND_DUMP(ppfd->dwFlags, PFD_SWAP_LAYER_BUFFERS);
+#undef TEST_AND_DUMP
+  DPRINTF("\n");
+  
+  DPRINTF("  - iPixelType : ");
+  switch (ppfd->iPixelType) {
+  case PFD_TYPE_RGBA: DPRINTF("PFD_TYPE_RGBA"); break;
+  case PFD_TYPE_COLORINDEX: DPRINTF("PFD_TYPE_COLORINDEX"); break;
+  }
+  DPRINTF("\n");
+  
+  DPRINTF("  - Color   : %d\n", ppfd->cColorBits);
+  DPRINTF("  - Alpha   : %d\n", ppfd->cAlphaBits);
+  DPRINTF("  - Accum   : %d\n", ppfd->cAccumBits);
+  DPRINTF("  - Depth   : %d\n", ppfd->cDepthBits);
+  DPRINTF("  - Stencil : %d\n", ppfd->cStencilBits);
+  DPRINTF("  - Aux     : %d\n", ppfd->cAuxBuffers);
+  
+  DPRINTF("  - iLayerType : ");
+  switch (ppfd->iLayerType) {
+  case PFD_MAIN_PLANE: DPRINTF("PFD_MAIN_PLANE"); break;
+  case PFD_OVERLAY_PLANE: DPRINTF("PFD_OVERLAY_PLANE"); break;
+  case PFD_UNDERLAY_PLANE: DPRINTF("PFD_UNDERLAY_PLANE"); break;
+  }
+  DPRINTF("\n");
+}
+     
+/* X11DRV_ChoosePixelFormat
+
+     Equivalent of glXChooseVisual
+*/
+int X11DRV_ChoosePixelFormat(DC *dc,
+			     const PIXELFORMATDESCRIPTOR *ppfd) {
+#define TEST_AND_ADD1(t,a) if (t) att_list[att_pos++] = a
+#define TEST_AND_ADD2(t,a,b) if (t) { att_list[att_pos++] = a; att_list[att_pos++] = b; }
+#define NULL_TEST_AND_ADD2(tv,a,b) att_list[att_pos++] = a; att_list[att_pos++] = ((tv) == 0 ? 0 : b)
+#define ADD2(a,b) att_list[att_pos++] = a; att_list[att_pos++] = b
+  
+  X11DRV_PDEVICE *physDev = (X11DRV_PDEVICE *)dc->physDev;
+  int att_list[64];
+  int att_pos = 0;
+  XVisualInfo *vis;
+  
+  if (TRACE_ON(opengl)) {
+    TRACE("(%p,%p)\n", dc, ppfd);
+    
+    dump_PIXELFORMATDESCRIPTOR((PIXELFORMATDESCRIPTOR *) ppfd);
+  }
+
+  /* For the moment, we are dumb : we always allocate a new XVisualInfo structure,
+     we do not try to find an already found that could match */
+  if (physDev->used_visuals == MAX_PIXELFORMATS) {
+    ERR("Maximum number of visuals reached !\n");
+    /* Should SetError here... */
+    return 0;
+  }
+
+  if (ppfd->dwFlags & PFD_DRAW_TO_BITMAP) {
+    ERR("Flag not supported !\n");
+    /* Should SetError here... */
+    return 0;
+  }
+
+  /* Now, build the request to GLX */
+  TEST_AND_ADD1(ppfd->dwFlags & PFD_DOUBLEBUFFER, GLX_DOUBLEBUFFER);
+  TEST_AND_ADD1(ppfd->dwFlags & PFD_STEREO, GLX_STEREO);
+  TEST_AND_ADD1(ppfd->iPixelType == PFD_TYPE_RGBA, GLX_RGBA);
+  TEST_AND_ADD2(ppfd->iPixelType == PFD_TYPE_COLORINDEX, GLX_BUFFER_SIZE, ppfd->cColorBits);
+
+  NULL_TEST_AND_ADD2(ppfd->cDepthBits, GLX_DEPTH_SIZE, 8);
+  /* These flags are not supported yet...
+     
+     NULL_TEST_AND_ADD2(ppfd->cAlphaBits, GLX_ALPHA_SIZE, 8);
+     ADD2(GLX_ACCUM_SIZE, ppfd->cAccumBits); 
+     ADD2(GLX_STENCIL_SIZE, ppfd->cStencilBits);
+     ADD2(GLX_AUX_BUFFERS, ppfd->cAuxBuffers); */
+  att_list[att_pos] = None;
+  
+  ENTER_GL(); {
+    /*
+       This command cannot be used as we need to use the default visual...
+       Let's hope it at least contains some OpenGL functionnalities
+       
+       vis = glXChooseVisual(display, DefaultScreen(display), att_list);
+    */
+    int num;
+    XVisualInfo template;
+
+    template.visualid = XVisualIDFromVisual(visual);
+    vis = XGetVisualInfo(display, VisualIDMask, &template, &num);
+
+    TRACE("Found visual : %p - returns %d\n", vis, physDev->used_visuals + 1);
+  }
+  LEAVE_GL();
+  
+  if (vis == NULL) {
+    ERR("No visual found !\n");
+    /* Should SetError here... */
+    return 0;
+  }
+  physDev->visuals[physDev->used_visuals++] = vis;
+  
+  return physDev->used_visuals;
+}
+
+/* X11DRV_DescribePixelFormat
+
+     Get the pixel-format descriptor associated to the given id
+*/
+int X11DRV_DescribePixelFormat(DC *dc,
+			       int iPixelFormat,
+			       UINT nBytes,
+			       PIXELFORMATDESCRIPTOR *ppfd) {
+  X11DRV_PDEVICE *physDev = (X11DRV_PDEVICE *)dc->physDev;
+  XVisualInfo *vis;
+  int value;
+  int rb,gb,bb,ab;
+  
+  TRACE("(%p,%d,%d,%p)\n", dc, iPixelFormat, nBytes, ppfd);
+  
+  if (nBytes < sizeof(PIXELFORMATDESCRIPTOR)) {
+    ERR("Wrong structure size !\n");
+    /* Should set error */
+    return 0;
+  }
+  if ((iPixelFormat > MAX_PIXELFORMATS) ||
+      (iPixelFormat > physDev->used_visuals + 1) ||
+      (iPixelFormat <= 0)) {
+    ERR("Wrong pixel format !\n");
+    /* Should set error */
+    return 0;
+  }
+      
+  if (iPixelFormat == physDev->used_visuals + 1) {
+    int dblBuf[]={GLX_RGBA,GLX_DEPTH_SIZE,16,GLX_DOUBLEBUFFER,None};
+
+    /* Create a 'standard' X Visual */
+    ENTER_GL();
+    vis = glXChooseVisual(display,
+			  DefaultScreen(display),
+			  dblBuf);
+    LEAVE_GL();
+    
+    WARN("Uninitialized Visual. Creating standard (%p) !\n", vis);
+
+    if (vis == NULL) {
+      ERR("Could not create standard visual !\n");
+      /* Should set error */
+      return 0;
+    }
+    
+    physDev->visuals[physDev->used_visuals++] = vis;
+  }
+  vis = physDev->visuals[iPixelFormat - 1];
+
+  memset(ppfd, 0, sizeof(PIXELFORMATDESCRIPTOR));
+  ppfd->nSize = sizeof(PIXELFORMATDESCRIPTOR);
+  ppfd->nVersion = 1;
+  
+  /* These flags are always the same... */
+  ppfd->dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_GENERIC_ACCELERATED;
+  /* Now the flags extraced from the Visual */
+  ENTER_GL();
+  glXGetConfig(display, vis, GLX_DOUBLEBUFFER, &value); if (value) ppfd->dwFlags |= PFD_DOUBLEBUFFER;
+  glXGetConfig(display, vis, GLX_STEREO, &value); if (value) ppfd->dwFlags |= PFD_STEREO;
+
+  /* Pixel type */
+  glXGetConfig(display, vis, GLX_RGBA, &value);
+  if (value)
+    ppfd->iPixelType = PFD_TYPE_RGBA;
+  else
+    ppfd->iPixelType = PFD_TYPE_COLORINDEX;
+
+  /* Color bits */
+  glXGetConfig(display, vis, GLX_BUFFER_SIZE, &value);
+  ppfd->cColorBits = value;
+
+  /* Red, green, blue and alpha bits / shifts */
+  if (ppfd->iPixelType == PFD_TYPE_RGBA) {
+    glXGetConfig(display, vis, GLX_RED_SIZE, &rb);
+    glXGetConfig(display, vis, GLX_GREEN_SIZE, &gb);
+    glXGetConfig(display, vis, GLX_BLUE_SIZE, &bb);
+    glXGetConfig(display, vis, GLX_ALPHA_SIZE, &ab);
+    
+    ppfd->cRedBits = rb;
+    ppfd->cRedShift = gb + bb + ab;
+    ppfd->cBlueBits = bb;
+    ppfd->cBlueShift = ab;
+    ppfd->cGreenBits = gb;
+    ppfd->cGreenShift = bb + ab;
+    ppfd->cAlphaBits = ab;
+    ppfd->cAlphaShift = 0;
+  } else {
+    ppfd->cRedBits = 0;
+    ppfd->cRedShift = 0;
+    ppfd->cBlueBits = 0;
+    ppfd->cBlueShift = 0;
+    ppfd->cGreenBits = 0;
+    ppfd->cGreenShift = 0;
+    ppfd->cAlphaBits = 0;
+    ppfd->cAlphaShift = 0;
+  }
+  /* Accums : to do ... */
+  
+  /* Depth bits */
+  glXGetConfig(display, vis, GLX_DEPTH_SIZE, &value);
+  ppfd->cDepthBits = value;
+  LEAVE_GL();
+
+  /* Aux, stencil : to do ... */
+
+  ppfd->iLayerType = PFD_MAIN_PLANE;
+  
+  dump_PIXELFORMATDESCRIPTOR(ppfd);
+  
+  return MAX_PIXELFORMATS;
+}
+
+/* X11DRV_GetPixelFormat
+
+     Get the pixel-format id used by this DC
+*/
+int X11DRV_GetPixelFormat(DC *dc) {
+  X11DRV_PDEVICE *physDev = (X11DRV_PDEVICE *)dc->physDev;
+  
+  TRACE("(%p): returns %d\n", dc, physDev->current_pf);
+
+  return physDev->current_pf;
+}
+
+/* X11DRV_SetPixelFormat
+
+     Set the pixel-format id used by this DC
+*/
+BOOL X11DRV_SetPixelFormat(DC *dc,
+			   int iPixelFormat,
+			   const PIXELFORMATDESCRIPTOR *ppfd) {
+  X11DRV_PDEVICE *physDev = (X11DRV_PDEVICE *)dc->physDev;
+  
+  TRACE("(%p,%d,%p)\n", dc, iPixelFormat, ppfd);
+
+  physDev->current_pf = iPixelFormat;
+  
+  return TRUE;
+}
+
+/* X11DRV_SwapBuffers
+
+     Swap the buffers of this DC
+*/
+BOOL X11DRV_SwapBuffers(DC *dc) {
+  X11DRV_PDEVICE *physDev = (X11DRV_PDEVICE *)dc->physDev;
+  
+  TRACE("(%p)\n", dc);
+
+  ENTER_GL();
+  glXSwapBuffers(display, physDev->drawable);
+  LEAVE_GL();
+  
+  return TRUE;
+}
+
+#else  /* defined(HAVE_OPENGL) */
+
+int X11DRV_ChoosePixelFormat(DC *dc,
+			     const PIXELFORMATDESCRIPTOR *ppfd) {
+  ERR("No OpenGL support compiled in.\n");
+
+  return 0;
+}
+
+int X11DRV_DescribePixelFormat(DC *dc,
+			       int iPixelFormat,
+			       UINT nBytes,
+			       PIXELFORMATDESCRIPTOR *ppfd) {
+  ERR("No OpenGL support compiled in.\n");
+  
+  return 0;
+}
+
+int X11DRV_GetPixelFormat(DC *dc) {
+  ERR("No OpenGL support compiled in.\n");
+  
+  return 0;
+}
+
+BOOL X11DRV_SetPixelFormat(DC *dc,
+			   int iPixelFormat,
+			   const PIXELFORMATDESCRIPTOR *ppfd) {
+  ERR("No OpenGL support compiled in.\n");
+  
+  return FALSE;
+}
+
+BOOL X11DRV_SwapBuffers(DC *dc) {
+  ERR("No OpenGL support compiled in.\n");
+  
+  return FALSE;
+}
+
+#endif /* defined(HAVE_OPENGL) */
diff --git a/include/acconfig.h b/include/acconfig.h
index 8f1f449..f63980a 100644
--- a/include/acconfig.h
+++ b/include/acconfig.h
@@ -96,8 +96,8 @@
 /* Define if IPX includes are taken from Linux kernel */
 #undef HAVE_IPX_LINUX
 
-/* Define if Mesa is present on the system or not */
-#undef HAVE_LIBMESAGL
+/* Define if OpenGL is present on the system or not */
+#undef HAVE_OPENGL
 
 /* Define if the system has dynamic link library support with the dl* API */
 #undef HAVE_DL_API
@@ -110,3 +110,6 @@
 
 /* Define if the OpenGL implementation supports the GL_EXT_paletted_texture extension */
 #undef HAVE_GL_PALETTED_TEXTURE
+
+/* Define if the OpenGL library supports the glXGetProcAddressARB call */
+#undef HAVE_GLX_GETPROCADDRESS
diff --git a/include/config.h.in b/include/config.h.in
index 32e9fba..c59ee13 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -128,8 +128,8 @@
 /* Define if IPX includes are taken from Linux kernel */
 #undef HAVE_IPX_LINUX
 
-/* Define if Mesa is present on the system or not */
-#undef HAVE_LIBMESAGL
+/* Define if OpenGL is present on the system or not */
+#undef HAVE_OPENGL
 
 /* Define if the system has dynamic link library support with the dl* API */
 #undef HAVE_DL_API
@@ -143,6 +143,9 @@
 /* Define if the OpenGL implementation supports the GL_EXT_paletted_texture extension */
 #undef HAVE_GL_PALETTED_TEXTURE
 
+/* Define if the OpenGL library supports the glXGetProcAddressARB call */
+#undef HAVE_GLX_GETPROCADDRESS
+
 /* The number of bytes in a long long.  */
 #undef SIZEOF_LONG_LONG
 
@@ -242,6 +245,9 @@
 /* Define if you have the <GL/gl.h> header file.  */
 #undef HAVE_GL_GL_H
 
+/* Define if you have the <GL/glext.h> header file.  */
+#undef HAVE_GL_GLEXT_H
+
 /* Define if you have the <GL/glx.h> header file.  */
 #undef HAVE_GL_GLX_H
 
diff --git a/include/debugdefs.h b/include/debugdefs.h
index 6bf4e8b..7b04886 100644
--- a/include/debugdefs.h
+++ b/include/debugdefs.h
@@ -104,6 +104,7 @@
 char dbch_ntdll[] = "\003ntdll";
 char dbch_odbc[] = "\003odbc";
 char dbch_ole[] = "\003ole";
+char dbch_opengl[] = "\003opengl";
 char dbch_pager[] = "\003pager";
 char dbch_palette[] = "\003palette";
 char dbch_pidl[] = "\003pidl";
@@ -171,7 +172,7 @@
 char dbch_x11[] = "\003x11";
 char dbch_x11drv[] = "\003x11drv";
 
-#define DEBUG_CHANNEL_COUNT 164
+#define DEBUG_CHANNEL_COUNT 165
 
 static char * const debug_channels[DEBUG_CHANNEL_COUNT] = {
     dbch_accel,
@@ -272,6 +273,7 @@
     dbch_ntdll,
     dbch_odbc,
     dbch_ole,
+    dbch_opengl,
     dbch_pager,
     dbch_palette,
     dbch_pidl,
diff --git a/include/gdi.h b/include/gdi.h
index f21213f..a475923 100644
--- a/include/gdi.h
+++ b/include/gdi.h
@@ -176,6 +176,7 @@
     BOOL     (*pBeginPath)(DC*);
     BOOL     (*pBitBlt)(DC*,INT,INT,INT,INT,DC*,INT,INT,DWORD);
     LONG     (*pBitmapBits)(HBITMAP,void*,LONG,WORD);
+    INT      (*pChoosePixelFormat)(DC*,const PIXELFORMATDESCRIPTOR *);
     BOOL     (*pChord)(DC*,INT,INT,INT,INT,INT,INT,INT,INT);
     BOOL     (*pCloseFigure)(DC*);
     BOOL     (*pCreateBitmap)(HBITMAP); 
@@ -186,6 +187,7 @@
 				     DWORD,DWORD);
     BOOL     (*pDeleteDC)(DC*);
     BOOL     (*pDeleteObject)(HGDIOBJ);
+    INT      (*pDescribePixelFormat)(DC *,INT,UINT,PIXELFORMATDESCRIPTOR *);
     DWORD    (*pDeviceCapabilities)(LPSTR,LPCSTR,LPCSTR,WORD,LPSTR,LPDEVMODEA);
     BOOL     (*pEllipse)(DC*,INT,INT,INT,INT);
     INT      (*pEndDoc)(DC*);
@@ -206,6 +208,7 @@
     BOOL     (*pGetCharWidth)(DC*,UINT,UINT,LPINT);
     BOOL     (*pGetDCOrgEx)(DC*,LPPOINT);
     COLORREF (*pGetPixel)(DC*,INT,INT);
+    INT      (*pGetPixelFormat)(DC*);
     BOOL     (*pGetTextExtentPoint)(DC*,LPCWSTR,INT,LPSIZE);
     BOOL     (*pGetTextMetrics)(DC*,TEXTMETRICA*);
     INT      (*pIntersectClipRect)(DC*,INT,INT,INT,INT);
@@ -246,6 +249,7 @@
     INT      (*pSetMapMode)(DC*,INT);
     DWORD    (*pSetMapperFlags)(DC*,DWORD);
     COLORREF (*pSetPixel)(DC*,INT,INT,COLORREF);
+    BOOL     (*pSetPixelFormat)(DC*,INT,const PIXELFORMATDESCRIPTOR *);
     INT      (*pSetPolyFillMode)(DC*,INT);
     INT      (*pSetROP2)(DC*,INT);
     INT      (*pSetRelAbs)(DC*,INT);
@@ -265,6 +269,7 @@
 			       const void *,const BITMAPINFO *,UINT,DWORD);
     BOOL     (*pStrokeAndFillPath)(DC*);
     BOOL     (*pStrokePath)(DC*);
+    BOOL     (*pSwapBuffers)(DC*);
     BOOL     (*pWidenPath)(DC*);
 } DC_FUNCTIONS;
 
diff --git a/include/wine_gl.h b/include/wine_gl.h
index ade4242..736d9d3 100644
--- a/include/wine_gl.h
+++ b/include/wine_gl.h
@@ -9,9 +9,13 @@
 
 #include "config.h"
 
-#if defined(HAVE_LIBMESAGL) && defined(HAVE_GL_GLX_H)
+#if defined(HAVE_OPENGL)
 
-#define HAVE_MESAGL
+#include "x11drv.h"
+
+/* As GLX relies on X, this is needed */
+#define ENTER_GL() EnterCriticalSection( &X11DRV_CritSection )
+#define LEAVE_GL() LeaveCriticalSection( &X11DRV_CritSection )
 
 #undef APIENTRY
 #undef CALLBACK
@@ -20,6 +24,7 @@
 #define XMD_H /* This is to prevent the Xmd.h inclusion bug to happen :-/ */
 #include <GL/gl.h>
 #include <GL/glx.h>
+#include <GL/glext.h>
 #undef  XMD_H
 
 #undef APIENTRY
@@ -31,10 +36,6 @@
 #define WINAPI      __stdcall
 #define APIENTRY    WINAPI
 
-#else /* HAVE_LIBMESAGL */
-
-#undef HAVE_MESAGL
-
-#endif /* HAVE_LIBMESAGL */
+#endif /* HAVE_OPENGL */
 
 #endif /* __WINE_WINE_GL_H */
diff --git a/include/x11drv.h b/include/x11drv.h
index 3a2bd49..822bf9a 100644
--- a/include/x11drv.h
+++ b/include/x11drv.h
@@ -19,6 +19,7 @@
 #include "winbase.h"
 #include "windef.h"
 
+#define MAX_PIXELFORMATS 8
 
 struct tagBITMAPOBJ;
 struct tagCLASS;
@@ -67,6 +68,9 @@
     X_PHYSBRUSH   brush;
     int           backgroundPixel;
     int           textPixel;
+    XVisualInfo  *visuals[MAX_PIXELFORMATS];
+    int           used_visuals;
+    int           current_pf;
 } X11DRV_PDEVICE;
 
 
@@ -153,6 +157,13 @@
 				      LPBITMAPINFO info, UINT coloruse );
 extern HANDLE X11DRV_LoadOEMResource( WORD id, WORD type );
 
+/* OpenGL / X11 driver functions */
+extern int X11DRV_ChoosePixelFormat(DC *dc, const PIXELFORMATDESCRIPTOR *pppfd) ;
+extern int X11DRV_DescribePixelFormat(DC *dc, int iPixelFormat, UINT nBytes, PIXELFORMATDESCRIPTOR *ppfd) ;
+extern int X11DRV_GetPixelFormat(DC *dc) ;
+extern BOOL X11DRV_SetPixelFormat(DC *dc, int iPixelFormat, const PIXELFORMATDESCRIPTOR *ppfd) ;
+extern BOOL X11DRV_SwapBuffers(DC *dc) ;
+
 /* X11 driver internal functions */
 
 extern BOOL X11DRV_BITMAP_Init(void);
diff --git a/loader/loadorder.c b/loader/loadorder.c
index fad87e2..2a974f1 100644
--- a/loader/loadorder.c
+++ b/loader/loadorder.c
@@ -59,6 +59,7 @@
 	/* we have to use libglide2x.so instead of glide2x.dll ... */
 	{"glide2x",			"so,native"},
 	{"odbc32",			"builtin"},
+	{"opengl32",                    "builtin,native"},
 	{NULL,NULL},
 };
 
@@ -482,6 +483,8 @@
 	char *name;
 	int len;
 
+	TRACE("looking for %s\n", path);
+	
 	assert(path != NULL);
 
 	/* Strip path information */