vertex program check-in
authorBrian Paul <brian.paul@tungstengraphics.com>
Fri, 14 Dec 2001 02:50:01 +0000 (02:50 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Fri, 14 Dec 2001 02:50:01 +0000 (02:50 +0000)
56 files changed:
src/mesa/Makefile.X11
src/mesa/array_cache/ac_context.c
src/mesa/array_cache/ac_import.c
src/mesa/glapi/glapioffsets.h
src/mesa/glapi/glapitable.h
src/mesa/glapi/glapitemp.h
src/mesa/main/Makefile.X11
src/mesa/main/api_eval.c
src/mesa/main/api_loopback.c
src/mesa/main/api_noop.c
src/mesa/main/api_noop.h
src/mesa/main/attrib.c
src/mesa/main/context.c
src/mesa/main/context.h
src/mesa/main/dd.h
src/mesa/main/dlist.c
src/mesa/main/dlist.h
src/mesa/main/drawpix.c
src/mesa/main/enable.c
src/mesa/main/extensions.c
src/mesa/main/get.c
src/mesa/main/glprocs.h
src/mesa/main/light.c
src/mesa/main/matrix.c
src/mesa/main/mtypes.h
src/mesa/main/rastpos.c
src/mesa/main/state.c
src/mesa/main/vtxfmt.c
src/mesa/main/vtxfmt_tmp.h
src/mesa/sparc/glapi_sparc.S
src/mesa/swrast/s_bitmap.c
src/mesa/swrast/s_copypix.c
src/mesa/tnl/t_array_import.c
src/mesa/tnl/t_context.h
src/mesa/tnl/t_imm_alloc.c
src/mesa/tnl/t_imm_api.c
src/mesa/tnl/t_imm_api.h
src/mesa/tnl/t_imm_debug.c
src/mesa/tnl/t_imm_dlist.c
src/mesa/tnl/t_imm_elt.c
src/mesa/tnl/t_imm_eval.c
src/mesa/tnl/t_imm_exec.c
src/mesa/tnl/t_imm_fixup.c
src/mesa/tnl/t_pipeline.c
src/mesa/tnl/t_pipeline.h
src/mesa/tnl/t_vb_fog.c
src/mesa/tnl/t_vb_light.c
src/mesa/tnl/t_vb_lighttmp.h
src/mesa/tnl/t_vb_normals.c
src/mesa/tnl/t_vb_points.c
src/mesa/tnl/t_vb_program.c [new file with mode: 0644]
src/mesa/tnl/t_vb_render.c
src/mesa/tnl/t_vb_texgen.c
src/mesa/tnl/t_vb_texmat.c
src/mesa/tnl/t_vb_vertex.c
src/mesa/x86/glapi_x86.S

index dc7b2c9..6a2e5d7 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.X11,v 1.59 2001/11/23 20:44:12 brianp Exp $
+# $Id: Makefile.X11,v 1.60 2001/12/14 02:55:08 brianp Exp $
 
 # Mesa 3-D graphics library
 # Version:  4.1
@@ -21,9 +21,9 @@ LIBDIR = ../lib
 
 
 CORE_SOURCES = \
-       swrast_setup/ss_context.c \
-       swrast_setup/ss_triangle.c \
-       swrast_setup/ss_vb.c \
+       vpexec.c \
+       vpparse.c \
+       vpstate.c \
        api_arrayelt.c \
        api_loopback.c \
        api_noop.c \
@@ -121,6 +121,9 @@ CORE_SOURCES = \
        swrast/s_texstore.c \
        swrast/s_triangle.c \
        swrast/s_zoom.c \
+       swrast_setup/ss_context.c \
+       swrast_setup/ss_triangle.c \
+       swrast_setup/ss_vb.c \
        tnl/t_array_api.c \
        tnl/t_array_import.c \
        tnl/t_context.c \
@@ -138,6 +141,7 @@ CORE_SOURCES = \
        tnl/t_vb_light.c \
        tnl/t_vb_normals.c \
        tnl/t_vb_points.c \
+       tnl/t_vb_program.c \
        tnl/t_vb_render.c \
        tnl/t_vb_texgen.c \
        tnl/t_vb_texmat.c \
@@ -337,3 +341,28 @@ dep: $(CORE_SOURCES) $(DRIVER_SOURCES) $(OSMESA_SOURCES)
 
 tags:
        etags `find . -name \*.[ch]` `find ../include`
+
+
+
+# XXX temporary for NV_vertex_program
+VPFILES = \
+       include/GL/glext.h \
+       src/Makefile.X11 \
+       src/vpparse.[ch] \
+       src/vpexec.[ch] \
+       src/vpstate.[ch] \
+       src/attrib.c \
+       src/context.c \
+       src/enable.c \
+       src/extensions.c \
+       src/get.c \
+       src/matrix.c \
+       src/mtypes.h \
+       src/varray.c \
+       src/tnl/t_vb_program.c \
+       tests/vptest1.c \
+       tests/vptest2.c
+       
+vptar:
+       cd .. ; tar cvf vpfiles.tar $(VPFILES) ; gzip vpfiles.tar
+
index 569b62b..f5a9b46 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: ac_context.c,v 1.5 2001/07/19 15:54:35 brianp Exp $ */
+/* $Id: ac_context.c,v 1.6 2001/12/14 02:50:57 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -46,7 +46,7 @@ static void _ac_fallbacks_init( GLcontext *ctx )
    cl->Type = GL_FLOAT;
    cl->Stride = 0;
    cl->StrideB = 0;
-   cl->Ptr = (void *) ctx->Current.Normal;
+   cl->Ptr = (void *) ctx->Current.Attrib[VERT_ATTRIB_NORMAL];
    cl->Enabled = 1;
    cl->Flags = CA_CLIENT_DATA; /* hack */
 
@@ -55,7 +55,7 @@ static void _ac_fallbacks_init( GLcontext *ctx )
    cl->Type = GL_FLOAT;
    cl->Stride = 0;
    cl->StrideB = 0;
-   cl->Ptr = (void *) ctx->Current.Color;
+   cl->Ptr = (void *) ctx->Current.Attrib[VERT_ATTRIB_COLOR0];
    cl->Enabled = 1;
    cl->Flags = CA_CLIENT_DATA; /* hack */
 
@@ -64,7 +64,7 @@ static void _ac_fallbacks_init( GLcontext *ctx )
    cl->Type = GL_FLOAT;
    cl->Stride = 0;
    cl->StrideB = 0;
-   cl->Ptr = (void *) ctx->Current.SecondaryColor;
+   cl->Ptr = (void *) ctx->Current.Attrib[VERT_ATTRIB_COLOR1];
    cl->Enabled = 1;
    cl->Flags = CA_CLIENT_DATA; /* hack */
 
@@ -73,7 +73,7 @@ static void _ac_fallbacks_init( GLcontext *ctx )
    cl->Type = GL_FLOAT;
    cl->Stride = 0;
    cl->StrideB = 0;
-   cl->Ptr = (void *) &ctx->Current.FogCoord;
+   cl->Ptr = (void *) &ctx->Current.Attrib[VERT_ATTRIB_FOG];
    cl->Enabled = 1;
    cl->Flags = CA_CLIENT_DATA; /* hack */
 
@@ -92,7 +92,7 @@ static void _ac_fallbacks_init( GLcontext *ctx )
       cl->Type = GL_FLOAT;
       cl->Stride = 0;
       cl->StrideB = 0;
-      cl->Ptr = (void *) ctx->Current.Texcoord[i];
+      cl->Ptr = (void *) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + i];
       cl->Enabled = 1;
       cl->Flags = CA_CLIENT_DATA;      /* hack */
    }
index a2f3cea..35538e2 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: ac_import.c,v 1.14 2001/04/28 08:39:18 keithw Exp $ */
+/* $Id: ac_import.c,v 1.15 2001/12/14 02:50:57 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -59,9 +59,9 @@ static void reset_texcoord( GLcontext *ctx, GLuint unit )
    else {
       ac->Raw.TexCoord[unit] = ac->Fallback.TexCoord[unit];
 
-      if (ctx->Current.Texcoord[unit][3] != 1.0)
+      if (ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][3] != 1.0)
         ac->Raw.TexCoord[unit].Size = 4;
-      else if (ctx->Current.Texcoord[unit][2] != 0.0)
+      else if (ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][2] != 0.0)
         ac->Raw.TexCoord[unit].Size = 3;
       else
         ac->Raw.TexCoord[unit].Size = 2;
@@ -104,7 +104,7 @@ static void reset_color( GLcontext *ctx )
    ACcontext *ac = AC_CONTEXT(ctx);
 
 
-   if (ctx->Array._Enabled & _NEW_ARRAY_COLOR) {
+   if (ctx->Array._Enabled & _NEW_ARRAY_COLOR0) {
       ac->Raw.Color = ctx->Array.Color;
       STRIDE_ARRAY(ac->Raw.Color, ac->start);
    }
@@ -112,7 +112,7 @@ static void reset_color( GLcontext *ctx )
       ac->Raw.Color = ac->Fallback.Color;
 
    ac->IsCached.Color = GL_FALSE;
-   ac->NewArrayState &= ~_NEW_ARRAY_COLOR;
+   ac->NewArrayState &= ~_NEW_ARRAY_COLOR0;
 }
 
 
@@ -120,7 +120,7 @@ static void reset_secondarycolor( GLcontext *ctx )
 {
    ACcontext *ac = AC_CONTEXT(ctx);
 
-   if (ctx->Array._Enabled & _NEW_ARRAY_SECONDARYCOLOR) {
+   if (ctx->Array._Enabled & _NEW_ARRAY_COLOR1) {
       ac->Raw.SecondaryColor = ctx->Array.SecondaryColor;
       STRIDE_ARRAY(ac->Raw.SecondaryColor, ac->start);
    }
@@ -128,7 +128,7 @@ static void reset_secondarycolor( GLcontext *ctx )
       ac->Raw.SecondaryColor = ac->Fallback.SecondaryColor;
 
    ac->IsCached.SecondaryColor = GL_FALSE;
-   ac->NewArrayState &= ~_NEW_ARRAY_SECONDARYCOLOR;
+   ac->NewArrayState &= ~_NEW_ARRAY_COLOR1;
 }
 
 
@@ -533,7 +533,7 @@ struct gl_client_array *_ac_import_color( GLcontext *ctx,
 
    /* Can we keep the existing version?
     */
-   if (ac->NewArrayState & _NEW_ARRAY_COLOR)
+   if (ac->NewArrayState & _NEW_ARRAY_COLOR0)
       reset_color( ctx );
 
    /* Is the request impossible?
@@ -601,7 +601,7 @@ struct gl_client_array *_ac_import_secondarycolor( GLcontext *ctx,
 
    /* Can we keep the existing version?
     */
-   if (ac->NewArrayState & _NEW_ARRAY_SECONDARYCOLOR)
+   if (ac->NewArrayState & _NEW_ARRAY_COLOR1)
       reset_secondarycolor( ctx );
 
    /* Is the request impossible?
index f3a28fc..34d2a9d 100644 (file)
 #define _gloffset_WindowPos3fvARB 591
 #define _gloffset_WindowPos3ivARB 592
 #define _gloffset_WindowPos3svARB 593
+#define _gloffset_BindProgramNV 594
+#define _gloffset_DeleteProgramsNV 595
+#define _gloffset_ExecuteProgramNV 596
+#define _gloffset_GenProgramsNV 597
+#define _gloffset_AreProgramsResidentNV 598
+#define _gloffset_RequestResidentProgramsNV 599
+#define _gloffset_GetProgramParameterfvNV 600
+#define _gloffset_GetProgramParameterdvNV 601
+#define _gloffset_GetProgramivNV 602
+#define _gloffset_GetProgramStringNV 603
+#define _gloffset_GetTrackMatrixivNV 604
+#define _gloffset_GetVertexAttribdvNV 605
+#define _gloffset_GetVertexAttribfvNV 606
+#define _gloffset_GetVertexAttribivNV 607
+#define _gloffset_GetVertexAttribPointervNV 608
+#define _gloffset_IsProgramNV 609
+#define _gloffset_LoadProgramNV 610
+#define _gloffset_ProgramParameter4fNV 611
+#define _gloffset_ProgramParameter4dNV 612
+#define _gloffset_ProgramParameter4dvNV 613
+#define _gloffset_ProgramParameter4fvNV 614
+#define _gloffset_ProgramParameters4dvNV 615
+#define _gloffset_ProgramParameters4fvNV 616
+#define _gloffset_TrackMatrixNV 617
+#define _gloffset_VertexAttribPointerNV 618
+#define _gloffset_VertexAttrib1sNV 619
+#define _gloffset_VertexAttrib1fNV 620
+#define _gloffset_VertexAttrib1dNV 621
+#define _gloffset_VertexAttrib2sNV 622
+#define _gloffset_VertexAttrib2fNV 623
+#define _gloffset_VertexAttrib2dNV 624
+#define _gloffset_VertexAttrib3sNV 625
+#define _gloffset_VertexAttrib3fNV 626
+#define _gloffset_VertexAttrib3dNV 627
+#define _gloffset_VertexAttrib4sNV 628
+#define _gloffset_VertexAttrib4fNV 629
+#define _gloffset_VertexAttrib4dNV 630
+#define _gloffset_VertexAttrib4ubNV 631
+#define _gloffset_VertexAttrib1svNV 632
+#define _gloffset_VertexAttrib1fvNV 633
+#define _gloffset_VertexAttrib1dvNV 634
+#define _gloffset_VertexAttrib2svNV 635
+#define _gloffset_VertexAttrib2fvNV 636
+#define _gloffset_VertexAttrib2dvNV 637
+#define _gloffset_VertexAttrib3svNV 638
+#define _gloffset_VertexAttrib3fvNV 639
+#define _gloffset_VertexAttrib3dvNV 640
+#define _gloffset_VertexAttrib4svNV 641
+#define _gloffset_VertexAttrib4fvNV 642
+#define _gloffset_VertexAttrib4dvNV 643
+#define _gloffset_VertexAttrib4ubvNV 644
+#define _gloffset_VertexAttribs1svNV 645
+#define _gloffset_VertexAttribs1fvNV 646
+#define _gloffset_VertexAttribs1dvNV 647
+#define _gloffset_VertexAttribs2svNV 648
+#define _gloffset_VertexAttribs2fvNV 649
+#define _gloffset_VertexAttribs2dvNV 650
+#define _gloffset_VertexAttribs3svNV 651
+#define _gloffset_VertexAttribs3fvNV 652
+#define _gloffset_VertexAttribs3dvNV 653
+#define _gloffset_VertexAttribs4svNV 654
+#define _gloffset_VertexAttribs4fvNV 655
+#define _gloffset_VertexAttribs4dvNV 656
+#define _gloffset_VertexAttribs4ubvNV 657
 
 #endif
index c0cde27..8cf465b 100644 (file)
@@ -600,6 +600,70 @@ struct _glapi_table
    void (*WindowPos3fvARB)(const GLfloat * p); /* 591 */
    void (*WindowPos3ivARB)(const GLint * p); /* 592 */
    void (*WindowPos3svARB)(const GLshort * p); /* 593 */
+   void (*BindProgramNV)(GLenum target, GLuint id); /* 594 */
+   void (*DeleteProgramsNV)(GLsizei n, const GLuint * ids); /* 595 */
+   void (*ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params); /* 596 */
+   void (*GenProgramsNV)(GLsizei n, GLuint * ids); /* 597 */
+   GLboolean (*AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences); /* 598 */
+   void (*RequestResidentProgramsNV)(GLsizei n, const GLuint * ids); /* 599 */
+   void (*GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params); /* 600 */
+   void (*GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params); /* 601 */
+   void (*GetProgramivNV)(GLuint id, GLenum pname, GLint * params); /* 602 */
+   void (*GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program); /* 603 */
+   void (*GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params); /* 604 */
+   void (*GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params); /* 605 */
+   void (*GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params); /* 606 */
+   void (*GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params); /* 607 */
+   void (*GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer); /* 608 */
+   GLboolean (*IsProgramNV)(GLuint id); /* 609 */
+   void (*LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program); /* 610 */
+   void (*ProgramParameter4fNV)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 611 */
+   void (*ProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 612 */
+   void (*ProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble * params); /* 613 */
+   void (*ProgramParameter4fvNV)(GLenum target, GLuint index, const GLfloat * params); /* 614 */
+   void (*ProgramParameters4dvNV)(GLenum target, GLuint index, GLuint num, const GLdouble * params); /* 615 */
+   void (*ProgramParameters4fvNV)(GLenum target, GLuint index, GLuint num, const GLfloat * params); /* 616 */
+   void (*TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform); /* 617 */
+   void (*VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 618 */
+   void (*VertexAttrib1sNV)(GLuint index, GLshort x); /* 619 */
+   void (*VertexAttrib1fNV)(GLuint index, GLfloat x); /* 620 */
+   void (*VertexAttrib1dNV)(GLuint index, GLdouble x); /* 621 */
+   void (*VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y); /* 622 */
+   void (*VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y); /* 623 */
+   void (*VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); /* 624 */
+   void (*VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z); /* 625 */
+   void (*VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 626 */
+   void (*VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 627 */
+   void (*VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 628 */
+   void (*VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 629 */
+   void (*VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 630 */
+   void (*VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 631 */
+   void (*VertexAttrib1svNV)(GLuint index, const GLshort * v); /* 632 */
+   void (*VertexAttrib1fvNV)(GLuint index, const GLfloat * v); /* 633 */
+   void (*VertexAttrib1dvNV)(GLuint index, const GLdouble * v); /* 634 */
+   void (*VertexAttrib2svNV)(GLuint index, const GLshort * v); /* 635 */
+   void (*VertexAttrib2fvNV)(GLuint index, const GLfloat * v); /* 636 */
+   void (*VertexAttrib2dvNV)(GLuint index, const GLdouble * v); /* 637 */
+   void (*VertexAttrib3svNV)(GLuint index, const GLshort * v); /* 638 */
+   void (*VertexAttrib3fvNV)(GLuint index, const GLfloat * v); /* 639 */
+   void (*VertexAttrib3dvNV)(GLuint index, const GLdouble * v); /* 640 */
+   void (*VertexAttrib4svNV)(GLuint index, const GLshort * v); /* 641 */
+   void (*VertexAttrib4fvNV)(GLuint index, const GLfloat * v); /* 642 */
+   void (*VertexAttrib4dvNV)(GLuint index, const GLdouble * v); /* 643 */
+   void (*VertexAttrib4ubvNV)(GLuint index, const GLubyte * v); /* 644 */
+   void (*VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v); /* 645 */
+   void (*VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 646 */
+   void (*VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 647 */
+   void (*VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v); /* 648 */
+   void (*VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 649 */
+   void (*VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 650 */
+   void (*VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v); /* 651 */
+   void (*VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 652 */
+   void (*VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 653 */
+   void (*VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v); /* 654 */
+   void (*VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 655 */
+   void (*VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 656 */
+   void (*VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 657 */
 };
 
 #endif
index dbdab5c..b244e12 100644 (file)
 #error RETURN_DISPATCH must be defined
 #endif
 
-extern void gl__unused413(void);  /* silence warning */
 
 KEYWORD1 void KEYWORD2 NAME(NewList)(GLuint list, GLenum mode)
 {
-   DISPATCH(NewList, (list, mode), (F, "glNewList(%d, 0x%x);\n", list, mode));
+   DISPATCH(NewList, (list, mode), (F, "glNewList(%d, 0x%x);", list, mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EndList)(void)
 {
-   DISPATCH(EndList, (), (F, "glEndList();\n"));
+   DISPATCH(EndList, (), (F, "glEndList();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CallList)(GLuint list)
 {
-   DISPATCH(CallList, (list), (F, "glCallList(%d);\n", list));
+   DISPATCH(CallList, (list), (F, "glCallList(%d);", list));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CallLists)(GLsizei n, GLenum type, const GLvoid * lists)
 {
-   DISPATCH(CallLists, (n, type, lists), (F, "glCallLists(%p, 0x%x, %p);\n", (void *) n, type, (void *) lists));
+   DISPATCH(CallLists, (n, type, lists), (F, "glCallLists(%p, 0x%x, %p);", (void *) n, type, (void *) lists));
 }
 
 KEYWORD1 void KEYWORD2 NAME(DeleteLists)(GLuint list, GLsizei range)
 {
-   DISPATCH(DeleteLists, (list, range), (F, "glDeleteLists(%d, %p);\n", list, (void *) range));
+   DISPATCH(DeleteLists, (list, range), (F, "glDeleteLists(%d, %p);", list, (void *) range));
 }
 
 KEYWORD1 GLuint KEYWORD2 NAME(GenLists)(GLsizei range)
 {
-   RETURN_DISPATCH(GenLists, (range), (F, "glGenLists(%p);\n", (void *) range));
+   RETURN_DISPATCH(GenLists, (range), (F, "glGenLists(%p);", (void *) range));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ListBase)(GLuint base)
 {
-   DISPATCH(ListBase, (base), (F, "glListBase(%d);\n", base));
+   DISPATCH(ListBase, (base), (F, "glListBase(%d);", base));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Begin)(GLenum mode)
 {
-   DISPATCH(Begin, (mode), (F, "glBegin(0x%x);\n", mode));
+   DISPATCH(Begin, (mode), (F, "glBegin(0x%x);", mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Bitmap)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap)
 {
-   DISPATCH(Bitmap, (width, height, xorig, yorig, xmove, ymove, bitmap), (F, "glBitmap(%p, %p, %f, %f, %f, %f, %p);\n", (void *) width, (void *) height, xorig, yorig, xmove, ymove, (void *) bitmap));
+   DISPATCH(Bitmap, (width, height, xorig, yorig, xmove, ymove, bitmap), (F, "glBitmap(%p, %p, %f, %f, %f, %f, %p);", (void *) width, (void *) height, xorig, yorig, xmove, ymove, (void *) bitmap));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color3b)(GLbyte red, GLbyte green, GLbyte blue)
 {
-   DISPATCH(Color3b, (red, green, blue), (F, "glColor3b(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(Color3b, (red, green, blue), (F, "glColor3b(%d, %d, %d);", red, green, blue));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color3bv)(const GLbyte * v)
 {
-   DISPATCH(Color3bv, (v), (F, "glColor3bv(%p);\n", (void *) v));
+   DISPATCH(Color3bv, (v), (F, "glColor3bv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color3d)(GLdouble red, GLdouble green, GLdouble blue)
 {
-   DISPATCH(Color3d, (red, green, blue), (F, "glColor3d(%f, %f, %f);\n", red, green, blue));
+   DISPATCH(Color3d, (red, green, blue), (F, "glColor3d(%f, %f, %f);", red, green, blue));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color3dv)(const GLdouble * v)
 {
-   DISPATCH(Color3dv, (v), (F, "glColor3dv(%p);\n", (void *) v));
+   DISPATCH(Color3dv, (v), (F, "glColor3dv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color3f)(GLfloat red, GLfloat green, GLfloat blue)
 {
-   DISPATCH(Color3f, (red, green, blue), (F, "glColor3f(%f, %f, %f);\n", red, green, blue));
+   DISPATCH(Color3f, (red, green, blue), (F, "glColor3f(%f, %f, %f);", red, green, blue));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color3fv)(const GLfloat * v)
 {
-   DISPATCH(Color3fv, (v), (F, "glColor3fv(%p);\n", (void *) v));
+   DISPATCH(Color3fv, (v), (F, "glColor3fv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color3i)(GLint red, GLint green, GLint blue)
 {
-   DISPATCH(Color3i, (red, green, blue), (F, "glColor3i(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(Color3i, (red, green, blue), (F, "glColor3i(%d, %d, %d);", red, green, blue));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color3iv)(const GLint * v)
 {
-   DISPATCH(Color3iv, (v), (F, "glColor3iv(%p);\n", (void *) v));
+   DISPATCH(Color3iv, (v), (F, "glColor3iv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color3s)(GLshort red, GLshort green, GLshort blue)
 {
-   DISPATCH(Color3s, (red, green, blue), (F, "glColor3s(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(Color3s, (red, green, blue), (F, "glColor3s(%d, %d, %d);", red, green, blue));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color3sv)(const GLshort * v)
 {
-   DISPATCH(Color3sv, (v), (F, "glColor3sv(%p);\n", (void *) v));
+   DISPATCH(Color3sv, (v), (F, "glColor3sv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color3ub)(GLubyte red, GLubyte green, GLubyte blue)
 {
-   DISPATCH(Color3ub, (red, green, blue), (F, "glColor3ub(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(Color3ub, (red, green, blue), (F, "glColor3ub(%d, %d, %d);", red, green, blue));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color3ubv)(const GLubyte * v)
 {
-   DISPATCH(Color3ubv, (v), (F, "glColor3ubv(%p);\n", (void *) v));
+   DISPATCH(Color3ubv, (v), (F, "glColor3ubv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color3ui)(GLuint red, GLuint green, GLuint blue)
 {
-   DISPATCH(Color3ui, (red, green, blue), (F, "glColor3ui(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(Color3ui, (red, green, blue), (F, "glColor3ui(%d, %d, %d);", red, green, blue));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color3uiv)(const GLuint * v)
 {
-   DISPATCH(Color3uiv, (v), (F, "glColor3uiv(%p);\n", (void *) v));
+   DISPATCH(Color3uiv, (v), (F, "glColor3uiv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color3us)(GLushort red, GLushort green, GLushort blue)
 {
-   DISPATCH(Color3us, (red, green, blue), (F, "glColor3us(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(Color3us, (red, green, blue), (F, "glColor3us(%d, %d, %d);", red, green, blue));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color3usv)(const GLushort * v)
 {
-   DISPATCH(Color3usv, (v), (F, "glColor3usv(%p);\n", (void *) v));
+   DISPATCH(Color3usv, (v), (F, "glColor3usv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color4b)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha)
 {
-   DISPATCH(Color4b, (red, green, blue, alpha), (F, "glColor4b(%d, %d, %d, %d);\n", red, green, blue, alpha));
+   DISPATCH(Color4b, (red, green, blue, alpha), (F, "glColor4b(%d, %d, %d, %d);", red, green, blue, alpha));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color4bv)(const GLbyte * v)
 {
-   DISPATCH(Color4bv, (v), (F, "glColor4bv(%p);\n", (void *) v));
+   DISPATCH(Color4bv, (v), (F, "glColor4bv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color4d)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)
 {
-   DISPATCH(Color4d, (red, green, blue, alpha), (F, "glColor4d(%f, %f, %f, %f);\n", red, green, blue, alpha));
+   DISPATCH(Color4d, (red, green, blue, alpha), (F, "glColor4d(%f, %f, %f, %f);", red, green, blue, alpha));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color4dv)(const GLdouble * v)
 {
-   DISPATCH(Color4dv, (v), (F, "glColor4dv(%p);\n", (void *) v));
+   DISPATCH(Color4dv, (v), (F, "glColor4dv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
 {
-   DISPATCH(Color4f, (red, green, blue, alpha), (F, "glColor4f(%f, %f, %f, %f);\n", red, green, blue, alpha));
+   DISPATCH(Color4f, (red, green, blue, alpha), (F, "glColor4f(%f, %f, %f, %f);", red, green, blue, alpha));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color4fv)(const GLfloat * v)
 {
-   DISPATCH(Color4fv, (v), (F, "glColor4fv(%p);\n", (void *) v));
+   DISPATCH(Color4fv, (v), (F, "glColor4fv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color4i)(GLint red, GLint green, GLint blue, GLint alpha)
 {
-   DISPATCH(Color4i, (red, green, blue, alpha), (F, "glColor4i(%d, %d, %d, %d);\n", red, green, blue, alpha));
+   DISPATCH(Color4i, (red, green, blue, alpha), (F, "glColor4i(%d, %d, %d, %d);", red, green, blue, alpha));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color4iv)(const GLint * v)
 {
-   DISPATCH(Color4iv, (v), (F, "glColor4iv(%p);\n", (void *) v));
+   DISPATCH(Color4iv, (v), (F, "glColor4iv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color4s)(GLshort red, GLshort green, GLshort blue, GLshort alpha)
 {
-   DISPATCH(Color4s, (red, green, blue, alpha), (F, "glColor4s(%d, %d, %d, %d);\n", red, green, blue, alpha));
+   DISPATCH(Color4s, (red, green, blue, alpha), (F, "glColor4s(%d, %d, %d, %d);", red, green, blue, alpha));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color4sv)(const GLshort * v)
 {
-   DISPATCH(Color4sv, (v), (F, "glColor4sv(%p);\n", (void *) v));
+   DISPATCH(Color4sv, (v), (F, "glColor4sv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
 {
-   DISPATCH(Color4ub, (red, green, blue, alpha), (F, "glColor4ub(%d, %d, %d, %d);\n", red, green, blue, alpha));
+   DISPATCH(Color4ub, (red, green, blue, alpha), (F, "glColor4ub(%d, %d, %d, %d);", red, green, blue, alpha));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color4ubv)(const GLubyte * v)
 {
-   DISPATCH(Color4ubv, (v), (F, "glColor4ubv(%p);\n", (void *) v));
+   DISPATCH(Color4ubv, (v), (F, "glColor4ubv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha)
 {
-   DISPATCH(Color4ui, (red, green, blue, alpha), (F, "glColor4ui(%d, %d, %d, %d);\n", red, green, blue, alpha));
+   DISPATCH(Color4ui, (red, green, blue, alpha), (F, "glColor4ui(%d, %d, %d, %d);", red, green, blue, alpha));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color4uiv)(const GLuint * v)
 {
-   DISPATCH(Color4uiv, (v), (F, "glColor4uiv(%p);\n", (void *) v));
+   DISPATCH(Color4uiv, (v), (F, "glColor4uiv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color4us)(GLushort red, GLushort green, GLushort blue, GLushort alpha)
 {
-   DISPATCH(Color4us, (red, green, blue, alpha), (F, "glColor4us(%d, %d, %d, %d);\n", red, green, blue, alpha));
+   DISPATCH(Color4us, (red, green, blue, alpha), (F, "glColor4us(%d, %d, %d, %d);", red, green, blue, alpha));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Color4usv)(const GLushort * v)
 {
-   DISPATCH(Color4usv, (v), (F, "glColor4usv(%p);\n", (void *) v));
+   DISPATCH(Color4usv, (v), (F, "glColor4usv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EdgeFlag)(GLboolean flag)
 {
-   DISPATCH(EdgeFlag, (flag), (F, "glEdgeFlag(%d);\n", flag));
+   DISPATCH(EdgeFlag, (flag), (F, "glEdgeFlag(%d);", flag));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EdgeFlagv)(const GLboolean * flag)
 {
-   DISPATCH(EdgeFlagv, (flag), (F, "glEdgeFlagv(%p);\n", (void *) flag));
+   DISPATCH(EdgeFlagv, (flag), (F, "glEdgeFlagv(%p);", (void *) flag));
 }
 
 KEYWORD1 void KEYWORD2 NAME(End)(void)
 {
-   DISPATCH(End, (), (F, "glEnd();\n"));
+   DISPATCH(End, (), (F, "glEnd();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Indexd)(GLdouble c)
 {
-   DISPATCH(Indexd, (c), (F, "glIndexd(%f);\n", c));
+   DISPATCH(Indexd, (c), (F, "glIndexd(%f);", c));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Indexdv)(const GLdouble * c)
 {
-   DISPATCH(Indexdv, (c), (F, "glIndexdv(%p);\n", (void *) c));
+   DISPATCH(Indexdv, (c), (F, "glIndexdv(%p);", (void *) c));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Indexf)(GLfloat c)
 {
-   DISPATCH(Indexf, (c), (F, "glIndexf(%f);\n", c));
+   DISPATCH(Indexf, (c), (F, "glIndexf(%f);", c));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Indexfv)(const GLfloat * c)
 {
-   DISPATCH(Indexfv, (c), (F, "glIndexfv(%p);\n", (void *) c));
+   DISPATCH(Indexfv, (c), (F, "glIndexfv(%p);", (void *) c));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Indexi)(GLint c)
 {
-   DISPATCH(Indexi, (c), (F, "glIndexi(%d);\n", c));
+   DISPATCH(Indexi, (c), (F, "glIndexi(%d);", c));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Indexiv)(const GLint * c)
 {
-   DISPATCH(Indexiv, (c), (F, "glIndexiv(%p);\n", (void *) c));
+   DISPATCH(Indexiv, (c), (F, "glIndexiv(%p);", (void *) c));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Indexs)(GLshort c)
 {
-   DISPATCH(Indexs, (c), (F, "glIndexs(%d);\n", c));
+   DISPATCH(Indexs, (c), (F, "glIndexs(%d);", c));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Indexsv)(const GLshort * c)
 {
-   DISPATCH(Indexsv, (c), (F, "glIndexsv(%p);\n", (void *) c));
+   DISPATCH(Indexsv, (c), (F, "glIndexsv(%p);", (void *) c));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Normal3b)(GLbyte nx, GLbyte ny, GLbyte nz)
 {
-   DISPATCH(Normal3b, (nx, ny, nz), (F, "glNormal3b(%d, %d, %d);\n", nx, ny, nz));
+   DISPATCH(Normal3b, (nx, ny, nz), (F, "glNormal3b(%d, %d, %d);", nx, ny, nz));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Normal3bv)(const GLbyte * v)
 {
-   DISPATCH(Normal3bv, (v), (F, "glNormal3bv(%p);\n", (void *) v));
+   DISPATCH(Normal3bv, (v), (F, "glNormal3bv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Normal3d)(GLdouble nx, GLdouble ny, GLdouble nz)
 {
-   DISPATCH(Normal3d, (nx, ny, nz), (F, "glNormal3d(%f, %f, %f);\n", nx, ny, nz));
+   DISPATCH(Normal3d, (nx, ny, nz), (F, "glNormal3d(%f, %f, %f);", nx, ny, nz));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Normal3dv)(const GLdouble * v)
 {
-   DISPATCH(Normal3dv, (v), (F, "glNormal3dv(%p);\n", (void *) v));
+   DISPATCH(Normal3dv, (v), (F, "glNormal3dv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Normal3f)(GLfloat nx, GLfloat ny, GLfloat nz)
 {
-   DISPATCH(Normal3f, (nx, ny, nz), (F, "glNormal3f(%f, %f, %f);\n", nx, ny, nz));
+   DISPATCH(Normal3f, (nx, ny, nz), (F, "glNormal3f(%f, %f, %f);", nx, ny, nz));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Normal3fv)(const GLfloat * v)
 {
-   DISPATCH(Normal3fv, (v), (F, "glNormal3fv(%p);\n", (void *) v));
+   DISPATCH(Normal3fv, (v), (F, "glNormal3fv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Normal3i)(GLint nx, GLint ny, GLint nz)
 {
-   DISPATCH(Normal3i, (nx, ny, nz), (F, "glNormal3i(%d, %d, %d);\n", nx, ny, nz));
+   DISPATCH(Normal3i, (nx, ny, nz), (F, "glNormal3i(%d, %d, %d);", nx, ny, nz));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Normal3iv)(const GLint * v)
 {
-   DISPATCH(Normal3iv, (v), (F, "glNormal3iv(%p);\n", (void *) v));
+   DISPATCH(Normal3iv, (v), (F, "glNormal3iv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Normal3s)(GLshort nx, GLshort ny, GLshort nz)
 {
-   DISPATCH(Normal3s, (nx, ny, nz), (F, "glNormal3s(%d, %d, %d);\n", nx, ny, nz));
+   DISPATCH(Normal3s, (nx, ny, nz), (F, "glNormal3s(%d, %d, %d);", nx, ny, nz));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Normal3sv)(const GLshort * v)
 {
-   DISPATCH(Normal3sv, (v), (F, "glNormal3sv(%p);\n", (void *) v));
+   DISPATCH(Normal3sv, (v), (F, "glNormal3sv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos2d)(GLdouble x, GLdouble y)
 {
-   DISPATCH(RasterPos2d, (x, y), (F, "glRasterPos2d(%f, %f);\n", x, y));
+   DISPATCH(RasterPos2d, (x, y), (F, "glRasterPos2d(%f, %f);", x, y));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos2dv)(const GLdouble * v)
 {
-   DISPATCH(RasterPos2dv, (v), (F, "glRasterPos2dv(%p);\n", (void *) v));
+   DISPATCH(RasterPos2dv, (v), (F, "glRasterPos2dv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos2f)(GLfloat x, GLfloat y)
 {
-   DISPATCH(RasterPos2f, (x, y), (F, "glRasterPos2f(%f, %f);\n", x, y));
+   DISPATCH(RasterPos2f, (x, y), (F, "glRasterPos2f(%f, %f);", x, y));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos2fv)(const GLfloat * v)
 {
-   DISPATCH(RasterPos2fv, (v), (F, "glRasterPos2fv(%p);\n", (void *) v));
+   DISPATCH(RasterPos2fv, (v), (F, "glRasterPos2fv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos2i)(GLint x, GLint y)
 {
-   DISPATCH(RasterPos2i, (x, y), (F, "glRasterPos2i(%d, %d);\n", x, y));
+   DISPATCH(RasterPos2i, (x, y), (F, "glRasterPos2i(%d, %d);", x, y));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos2iv)(const GLint * v)
 {
-   DISPATCH(RasterPos2iv, (v), (F, "glRasterPos2iv(%p);\n", (void *) v));
+   DISPATCH(RasterPos2iv, (v), (F, "glRasterPos2iv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos2s)(GLshort x, GLshort y)
 {
-   DISPATCH(RasterPos2s, (x, y), (F, "glRasterPos2s(%d, %d);\n", x, y));
+   DISPATCH(RasterPos2s, (x, y), (F, "glRasterPos2s(%d, %d);", x, y));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos2sv)(const GLshort * v)
 {
-   DISPATCH(RasterPos2sv, (v), (F, "glRasterPos2sv(%p);\n", (void *) v));
+   DISPATCH(RasterPos2sv, (v), (F, "glRasterPos2sv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos3d)(GLdouble x, GLdouble y, GLdouble z)
 {
-   DISPATCH(RasterPos3d, (x, y, z), (F, "glRasterPos3d(%f, %f, %f);\n", x, y, z));
+   DISPATCH(RasterPos3d, (x, y, z), (F, "glRasterPos3d(%f, %f, %f);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos3dv)(const GLdouble * v)
 {
-   DISPATCH(RasterPos3dv, (v), (F, "glRasterPos3dv(%p);\n", (void *) v));
+   DISPATCH(RasterPos3dv, (v), (F, "glRasterPos3dv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos3f)(GLfloat x, GLfloat y, GLfloat z)
 {
-   DISPATCH(RasterPos3f, (x, y, z), (F, "glRasterPos3f(%f, %f, %f);\n", x, y, z));
+   DISPATCH(RasterPos3f, (x, y, z), (F, "glRasterPos3f(%f, %f, %f);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos3fv)(const GLfloat * v)
 {
-   DISPATCH(RasterPos3fv, (v), (F, "glRasterPos3fv(%p);\n", (void *) v));
+   DISPATCH(RasterPos3fv, (v), (F, "glRasterPos3fv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos3i)(GLint x, GLint y, GLint z)
 {
-   DISPATCH(RasterPos3i, (x, y, z), (F, "glRasterPos3i(%d, %d, %d);\n", x, y, z));
+   DISPATCH(RasterPos3i, (x, y, z), (F, "glRasterPos3i(%d, %d, %d);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos3iv)(const GLint * v)
 {
-   DISPATCH(RasterPos3iv, (v), (F, "glRasterPos3iv(%p);\n", (void *) v));
+   DISPATCH(RasterPos3iv, (v), (F, "glRasterPos3iv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos3s)(GLshort x, GLshort y, GLshort z)
 {
-   DISPATCH(RasterPos3s, (x, y, z), (F, "glRasterPos3s(%d, %d, %d);\n", x, y, z));
+   DISPATCH(RasterPos3s, (x, y, z), (F, "glRasterPos3s(%d, %d, %d);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos3sv)(const GLshort * v)
 {
-   DISPATCH(RasterPos3sv, (v), (F, "glRasterPos3sv(%p);\n", (void *) v));
+   DISPATCH(RasterPos3sv, (v), (F, "glRasterPos3sv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
 {
-   DISPATCH(RasterPos4d, (x, y, z, w), (F, "glRasterPos4d(%f, %f, %f, %f);\n", x, y, z, w));
+   DISPATCH(RasterPos4d, (x, y, z, w), (F, "glRasterPos4d(%f, %f, %f, %f);", x, y, z, w));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos4dv)(const GLdouble * v)
 {
-   DISPATCH(RasterPos4dv, (v), (F, "glRasterPos4dv(%p);\n", (void *) v));
+   DISPATCH(RasterPos4dv, (v), (F, "glRasterPos4dv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
 {
-   DISPATCH(RasterPos4f, (x, y, z, w), (F, "glRasterPos4f(%f, %f, %f, %f);\n", x, y, z, w));
+   DISPATCH(RasterPos4f, (x, y, z, w), (F, "glRasterPos4f(%f, %f, %f, %f);", x, y, z, w));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos4fv)(const GLfloat * v)
 {
-   DISPATCH(RasterPos4fv, (v), (F, "glRasterPos4fv(%p);\n", (void *) v));
+   DISPATCH(RasterPos4fv, (v), (F, "glRasterPos4fv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos4i)(GLint x, GLint y, GLint z, GLint w)
 {
-   DISPATCH(RasterPos4i, (x, y, z, w), (F, "glRasterPos4i(%d, %d, %d, %d);\n", x, y, z, w));
+   DISPATCH(RasterPos4i, (x, y, z, w), (F, "glRasterPos4i(%d, %d, %d, %d);", x, y, z, w));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos4iv)(const GLint * v)
 {
-   DISPATCH(RasterPos4iv, (v), (F, "glRasterPos4iv(%p);\n", (void *) v));
+   DISPATCH(RasterPos4iv, (v), (F, "glRasterPos4iv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos4s)(GLshort x, GLshort y, GLshort z, GLshort w)
 {
-   DISPATCH(RasterPos4s, (x, y, z, w), (F, "glRasterPos4s(%d, %d, %d, %d);\n", x, y, z, w));
+   DISPATCH(RasterPos4s, (x, y, z, w), (F, "glRasterPos4s(%d, %d, %d, %d);", x, y, z, w));
 }
 
 KEYWORD1 void KEYWORD2 NAME(RasterPos4sv)(const GLshort * v)
 {
-   DISPATCH(RasterPos4sv, (v), (F, "glRasterPos4sv(%p);\n", (void *) v));
+   DISPATCH(RasterPos4sv, (v), (F, "glRasterPos4sv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Rectd)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
 {
-   DISPATCH(Rectd, (x1, y1, x2, y2), (F, "glRectd(%f, %f, %f, %f);\n", x1, y1, x2, y2));
+   DISPATCH(Rectd, (x1, y1, x2, y2), (F, "glRectd(%f, %f, %f, %f);", x1, y1, x2, y2));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Rectdv)(const GLdouble * v1, const GLdouble * v2)
 {
-   DISPATCH(Rectdv, (v1, v2), (F, "glRectdv(%p, %p);\n", (void *) v1, (void *) v2));
+   DISPATCH(Rectdv, (v1, v2), (F, "glRectdv(%p, %p);", (void *) v1, (void *) v2));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Rectf)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)
 {
-   DISPATCH(Rectf, (x1, y1, x2, y2), (F, "glRectf(%f, %f, %f, %f);\n", x1, y1, x2, y2));
+   DISPATCH(Rectf, (x1, y1, x2, y2), (F, "glRectf(%f, %f, %f, %f);", x1, y1, x2, y2));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Rectfv)(const GLfloat * v1, const GLfloat * v2)
 {
-   DISPATCH(Rectfv, (v1, v2), (F, "glRectfv(%p, %p);\n", (void *) v1, (void *) v2));
+   DISPATCH(Rectfv, (v1, v2), (F, "glRectfv(%p, %p);", (void *) v1, (void *) v2));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Recti)(GLint x1, GLint y1, GLint x2, GLint y2)
 {
-   DISPATCH(Recti, (x1, y1, x2, y2), (F, "glRecti(%d, %d, %d, %d);\n", x1, y1, x2, y2));
+   DISPATCH(Recti, (x1, y1, x2, y2), (F, "glRecti(%d, %d, %d, %d);", x1, y1, x2, y2));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Rectiv)(const GLint * v1, const GLint * v2)
 {
-   DISPATCH(Rectiv, (v1, v2), (F, "glRectiv(%p, %p);\n", (void *) v1, (void *) v2));
+   DISPATCH(Rectiv, (v1, v2), (F, "glRectiv(%p, %p);", (void *) v1, (void *) v2));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Rects)(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
 {
-   DISPATCH(Rects, (x1, y1, x2, y2), (F, "glRects(%d, %d, %d, %d);\n", x1, y1, x2, y2));
+   DISPATCH(Rects, (x1, y1, x2, y2), (F, "glRects(%d, %d, %d, %d);", x1, y1, x2, y2));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Rectsv)(const GLshort * v1, const GLshort * v2)
 {
-   DISPATCH(Rectsv, (v1, v2), (F, "glRectsv(%p, %p);\n", (void *) v1, (void *) v2));
+   DISPATCH(Rectsv, (v1, v2), (F, "glRectsv(%p, %p);", (void *) v1, (void *) v2));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord1d)(GLdouble s)
 {
-   DISPATCH(TexCoord1d, (s), (F, "glTexCoord1d(%f);\n", s));
+   DISPATCH(TexCoord1d, (s), (F, "glTexCoord1d(%f);", s));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord1dv)(const GLdouble * v)
 {
-   DISPATCH(TexCoord1dv, (v), (F, "glTexCoord1dv(%p);\n", (void *) v));
+   DISPATCH(TexCoord1dv, (v), (F, "glTexCoord1dv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord1f)(GLfloat s)
 {
-   DISPATCH(TexCoord1f, (s), (F, "glTexCoord1f(%f);\n", s));
+   DISPATCH(TexCoord1f, (s), (F, "glTexCoord1f(%f);", s));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord1fv)(const GLfloat * v)
 {
-   DISPATCH(TexCoord1fv, (v), (F, "glTexCoord1fv(%p);\n", (void *) v));
+   DISPATCH(TexCoord1fv, (v), (F, "glTexCoord1fv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord1i)(GLint s)
 {
-   DISPATCH(TexCoord1i, (s), (F, "glTexCoord1i(%d);\n", s));
+   DISPATCH(TexCoord1i, (s), (F, "glTexCoord1i(%d);", s));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord1iv)(const GLint * v)
 {
-   DISPATCH(TexCoord1iv, (v), (F, "glTexCoord1iv(%p);\n", (void *) v));
+   DISPATCH(TexCoord1iv, (v), (F, "glTexCoord1iv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord1s)(GLshort s)
 {
-   DISPATCH(TexCoord1s, (s), (F, "glTexCoord1s(%d);\n", s));
+   DISPATCH(TexCoord1s, (s), (F, "glTexCoord1s(%d);", s));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord1sv)(const GLshort * v)
 {
-   DISPATCH(TexCoord1sv, (v), (F, "glTexCoord1sv(%p);\n", (void *) v));
+   DISPATCH(TexCoord1sv, (v), (F, "glTexCoord1sv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord2d)(GLdouble s, GLdouble t)
 {
-   DISPATCH(TexCoord2d, (s, t), (F, "glTexCoord2d(%f, %f);\n", s, t));
+   DISPATCH(TexCoord2d, (s, t), (F, "glTexCoord2d(%f, %f);", s, t));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord2dv)(const GLdouble * v)
 {
-   DISPATCH(TexCoord2dv, (v), (F, "glTexCoord2dv(%p);\n", (void *) v));
+   DISPATCH(TexCoord2dv, (v), (F, "glTexCoord2dv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord2f)(GLfloat s, GLfloat t)
 {
-   DISPATCH(TexCoord2f, (s, t), (F, "glTexCoord2f(%f, %f);\n", s, t));
+   DISPATCH(TexCoord2f, (s, t), (F, "glTexCoord2f(%f, %f);", s, t));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord2fv)(const GLfloat * v)
 {
-   DISPATCH(TexCoord2fv, (v), (F, "glTexCoord2fv(%p);\n", (void *) v));
+   DISPATCH(TexCoord2fv, (v), (F, "glTexCoord2fv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord2i)(GLint s, GLint t)
 {
-   DISPATCH(TexCoord2i, (s, t), (F, "glTexCoord2i(%d, %d);\n", s, t));
+   DISPATCH(TexCoord2i, (s, t), (F, "glTexCoord2i(%d, %d);", s, t));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord2iv)(const GLint * v)
 {
-   DISPATCH(TexCoord2iv, (v), (F, "glTexCoord2iv(%p);\n", (void *) v));
+   DISPATCH(TexCoord2iv, (v), (F, "glTexCoord2iv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord2s)(GLshort s, GLshort t)
 {
-   DISPATCH(TexCoord2s, (s, t), (F, "glTexCoord2s(%d, %d);\n", s, t));
+   DISPATCH(TexCoord2s, (s, t), (F, "glTexCoord2s(%d, %d);", s, t));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord2sv)(const GLshort * v)
 {
-   DISPATCH(TexCoord2sv, (v), (F, "glTexCoord2sv(%p);\n", (void *) v));
+   DISPATCH(TexCoord2sv, (v), (F, "glTexCoord2sv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord3d)(GLdouble s, GLdouble t, GLdouble r)
 {
-   DISPATCH(TexCoord3d, (s, t, r), (F, "glTexCoord3d(%f, %f, %f);\n", s, t, r));
+   DISPATCH(TexCoord3d, (s, t, r), (F, "glTexCoord3d(%f, %f, %f);", s, t, r));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord3dv)(const GLdouble * v)
 {
-   DISPATCH(TexCoord3dv, (v), (F, "glTexCoord3dv(%p);\n", (void *) v));
+   DISPATCH(TexCoord3dv, (v), (F, "glTexCoord3dv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord3f)(GLfloat s, GLfloat t, GLfloat r)
 {
-   DISPATCH(TexCoord3f, (s, t, r), (F, "glTexCoord3f(%f, %f, %f);\n", s, t, r));
+   DISPATCH(TexCoord3f, (s, t, r), (F, "glTexCoord3f(%f, %f, %f);", s, t, r));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord3fv)(const GLfloat * v)
 {
-   DISPATCH(TexCoord3fv, (v), (F, "glTexCoord3fv(%p);\n", (void *) v));
+   DISPATCH(TexCoord3fv, (v), (F, "glTexCoord3fv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord3i)(GLint s, GLint t, GLint r)
 {
-   DISPATCH(TexCoord3i, (s, t, r), (F, "glTexCoord3i(%d, %d, %d);\n", s, t, r));
+   DISPATCH(TexCoord3i, (s, t, r), (F, "glTexCoord3i(%d, %d, %d);", s, t, r));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord3iv)(const GLint * v)
 {
-   DISPATCH(TexCoord3iv, (v), (F, "glTexCoord3iv(%p);\n", (void *) v));
+   DISPATCH(TexCoord3iv, (v), (F, "glTexCoord3iv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord3s)(GLshort s, GLshort t, GLshort r)
 {
-   DISPATCH(TexCoord3s, (s, t, r), (F, "glTexCoord3s(%d, %d, %d);\n", s, t, r));
+   DISPATCH(TexCoord3s, (s, t, r), (F, "glTexCoord3s(%d, %d, %d);", s, t, r));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord3sv)(const GLshort * v)
 {
-   DISPATCH(TexCoord3sv, (v), (F, "glTexCoord3sv(%p);\n", (void *) v));
+   DISPATCH(TexCoord3sv, (v), (F, "glTexCoord3sv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q)
 {
-   DISPATCH(TexCoord4d, (s, t, r, q), (F, "glTexCoord4d(%f, %f, %f, %f);\n", s, t, r, q));
+   DISPATCH(TexCoord4d, (s, t, r, q), (F, "glTexCoord4d(%f, %f, %f, %f);", s, t, r, q));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord4dv)(const GLdouble * v)
 {
-   DISPATCH(TexCoord4dv, (v), (F, "glTexCoord4dv(%p);\n", (void *) v));
+   DISPATCH(TexCoord4dv, (v), (F, "glTexCoord4dv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q)
 {
-   DISPATCH(TexCoord4f, (s, t, r, q), (F, "glTexCoord4f(%f, %f, %f, %f);\n", s, t, r, q));
+   DISPATCH(TexCoord4f, (s, t, r, q), (F, "glTexCoord4f(%f, %f, %f, %f);", s, t, r, q));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord4fv)(const GLfloat * v)
 {
-   DISPATCH(TexCoord4fv, (v), (F, "glTexCoord4fv(%p);\n", (void *) v));
+   DISPATCH(TexCoord4fv, (v), (F, "glTexCoord4fv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord4i)(GLint s, GLint t, GLint r, GLint q)
 {
-   DISPATCH(TexCoord4i, (s, t, r, q), (F, "glTexCoord4i(%d, %d, %d, %d);\n", s, t, r, q));
+   DISPATCH(TexCoord4i, (s, t, r, q), (F, "glTexCoord4i(%d, %d, %d, %d);", s, t, r, q));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord4iv)(const GLint * v)
 {
-   DISPATCH(TexCoord4iv, (v), (F, "glTexCoord4iv(%p);\n", (void *) v));
+   DISPATCH(TexCoord4iv, (v), (F, "glTexCoord4iv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord4s)(GLshort s, GLshort t, GLshort r, GLshort q)
 {
-   DISPATCH(TexCoord4s, (s, t, r, q), (F, "glTexCoord4s(%d, %d, %d, %d);\n", s, t, r, q));
+   DISPATCH(TexCoord4s, (s, t, r, q), (F, "glTexCoord4s(%d, %d, %d, %d);", s, t, r, q));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoord4sv)(const GLshort * v)
 {
-   DISPATCH(TexCoord4sv, (v), (F, "glTexCoord4sv(%p);\n", (void *) v));
+   DISPATCH(TexCoord4sv, (v), (F, "glTexCoord4sv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex2d)(GLdouble x, GLdouble y)
 {
-   DISPATCH(Vertex2d, (x, y), (F, "glVertex2d(%f, %f);\n", x, y));
+   DISPATCH(Vertex2d, (x, y), (F, "glVertex2d(%f, %f);", x, y));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex2dv)(const GLdouble * v)
 {
-   DISPATCH(Vertex2dv, (v), (F, "glVertex2dv(%p);\n", (void *) v));
+   DISPATCH(Vertex2dv, (v), (F, "glVertex2dv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex2f)(GLfloat x, GLfloat y)
 {
-   DISPATCH(Vertex2f, (x, y), (F, "glVertex2f(%f, %f);\n", x, y));
+   DISPATCH(Vertex2f, (x, y), (F, "glVertex2f(%f, %f);", x, y));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex2fv)(const GLfloat * v)
 {
-   DISPATCH(Vertex2fv, (v), (F, "glVertex2fv(%p);\n", (void *) v));
+   DISPATCH(Vertex2fv, (v), (F, "glVertex2fv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex2i)(GLint x, GLint y)
 {
-   DISPATCH(Vertex2i, (x, y), (F, "glVertex2i(%d, %d);\n", x, y));
+   DISPATCH(Vertex2i, (x, y), (F, "glVertex2i(%d, %d);", x, y));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex2iv)(const GLint * v)
 {
-   DISPATCH(Vertex2iv, (v), (F, "glVertex2iv(%p);\n", (void *) v));
+   DISPATCH(Vertex2iv, (v), (F, "glVertex2iv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex2s)(GLshort x, GLshort y)
 {
-   DISPATCH(Vertex2s, (x, y), (F, "glVertex2s(%d, %d);\n", x, y));
+   DISPATCH(Vertex2s, (x, y), (F, "glVertex2s(%d, %d);", x, y));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex2sv)(const GLshort * v)
 {
-   DISPATCH(Vertex2sv, (v), (F, "glVertex2sv(%p);\n", (void *) v));
+   DISPATCH(Vertex2sv, (v), (F, "glVertex2sv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex3d)(GLdouble x, GLdouble y, GLdouble z)
 {
-   DISPATCH(Vertex3d, (x, y, z), (F, "glVertex3d(%f, %f, %f);\n", x, y, z));
+   DISPATCH(Vertex3d, (x, y, z), (F, "glVertex3d(%f, %f, %f);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex3dv)(const GLdouble * v)
 {
-   DISPATCH(Vertex3dv, (v), (F, "glVertex3dv(%p);\n", (void *) v));
+   DISPATCH(Vertex3dv, (v), (F, "glVertex3dv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex3f)(GLfloat x, GLfloat y, GLfloat z)
 {
-   DISPATCH(Vertex3f, (x, y, z), (F, "glVertex3f(%f, %f, %f);\n", x, y, z));
+   DISPATCH(Vertex3f, (x, y, z), (F, "glVertex3f(%f, %f, %f);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex3fv)(const GLfloat * v)
 {
-   DISPATCH(Vertex3fv, (v), (F, "glVertex3fv(%p);\n", (void *) v));
+   DISPATCH(Vertex3fv, (v), (F, "glVertex3fv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex3i)(GLint x, GLint y, GLint z)
 {
-   DISPATCH(Vertex3i, (x, y, z), (F, "glVertex3i(%d, %d, %d);\n", x, y, z));
+   DISPATCH(Vertex3i, (x, y, z), (F, "glVertex3i(%d, %d, %d);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex3iv)(const GLint * v)
 {
-   DISPATCH(Vertex3iv, (v), (F, "glVertex3iv(%p);\n", (void *) v));
+   DISPATCH(Vertex3iv, (v), (F, "glVertex3iv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex3s)(GLshort x, GLshort y, GLshort z)
 {
-   DISPATCH(Vertex3s, (x, y, z), (F, "glVertex3s(%d, %d, %d);\n", x, y, z));
+   DISPATCH(Vertex3s, (x, y, z), (F, "glVertex3s(%d, %d, %d);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex3sv)(const GLshort * v)
 {
-   DISPATCH(Vertex3sv, (v), (F, "glVertex3sv(%p);\n", (void *) v));
+   DISPATCH(Vertex3sv, (v), (F, "glVertex3sv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
 {
-   DISPATCH(Vertex4d, (x, y, z, w), (F, "glVertex4d(%f, %f, %f, %f);\n", x, y, z, w));
+   DISPATCH(Vertex4d, (x, y, z, w), (F, "glVertex4d(%f, %f, %f, %f);", x, y, z, w));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex4dv)(const GLdouble * v)
 {
-   DISPATCH(Vertex4dv, (v), (F, "glVertex4dv(%p);\n", (void *) v));
+   DISPATCH(Vertex4dv, (v), (F, "glVertex4dv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
 {
-   DISPATCH(Vertex4f, (x, y, z, w), (F, "glVertex4f(%f, %f, %f, %f);\n", x, y, z, w));
+   DISPATCH(Vertex4f, (x, y, z, w), (F, "glVertex4f(%f, %f, %f, %f);", x, y, z, w));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex4fv)(const GLfloat * v)
 {
-   DISPATCH(Vertex4fv, (v), (F, "glVertex4fv(%p);\n", (void *) v));
+   DISPATCH(Vertex4fv, (v), (F, "glVertex4fv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex4i)(GLint x, GLint y, GLint z, GLint w)
 {
-   DISPATCH(Vertex4i, (x, y, z, w), (F, "glVertex4i(%d, %d, %d, %d);\n", x, y, z, w));
+   DISPATCH(Vertex4i, (x, y, z, w), (F, "glVertex4i(%d, %d, %d, %d);", x, y, z, w));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex4iv)(const GLint * v)
 {
-   DISPATCH(Vertex4iv, (v), (F, "glVertex4iv(%p);\n", (void *) v));
+   DISPATCH(Vertex4iv, (v), (F, "glVertex4iv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex4s)(GLshort x, GLshort y, GLshort z, GLshort w)
 {
-   DISPATCH(Vertex4s, (x, y, z, w), (F, "glVertex4s(%d, %d, %d, %d);\n", x, y, z, w));
+   DISPATCH(Vertex4s, (x, y, z, w), (F, "glVertex4s(%d, %d, %d, %d);", x, y, z, w));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Vertex4sv)(const GLshort * v)
 {
-   DISPATCH(Vertex4sv, (v), (F, "glVertex4sv(%p);\n", (void *) v));
+   DISPATCH(Vertex4sv, (v), (F, "glVertex4sv(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ClipPlane)(GLenum plane, const GLdouble * equation)
 {
-   DISPATCH(ClipPlane, (plane, equation), (F, "glClipPlane(0x%x, %p);\n", plane, (void *) equation));
+   DISPATCH(ClipPlane, (plane, equation), (F, "glClipPlane(0x%x, %p);", plane, (void *) equation));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ColorMaterial)(GLenum face, GLenum mode)
 {
-   DISPATCH(ColorMaterial, (face, mode), (F, "glColorMaterial(0x%x, 0x%x);\n", face, mode));
+   DISPATCH(ColorMaterial, (face, mode), (F, "glColorMaterial(0x%x, 0x%x);", face, mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CullFace)(GLenum mode)
 {
-   DISPATCH(CullFace, (mode), (F, "glCullFace(0x%x);\n", mode));
+   DISPATCH(CullFace, (mode), (F, "glCullFace(0x%x);", mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Fogf)(GLenum pname, GLfloat param)
 {
-   DISPATCH(Fogf, (pname, param), (F, "glFogf(0x%x, %f);\n", pname, param));
+   DISPATCH(Fogf, (pname, param), (F, "glFogf(0x%x, %f);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Fogfv)(GLenum pname, const GLfloat * params)
 {
-   DISPATCH(Fogfv, (pname, params), (F, "glFogfv(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(Fogfv, (pname, params), (F, "glFogfv(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Fogi)(GLenum pname, GLint param)
 {
-   DISPATCH(Fogi, (pname, param), (F, "glFogi(0x%x, %d);\n", pname, param));
+   DISPATCH(Fogi, (pname, param), (F, "glFogi(0x%x, %d);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Fogiv)(GLenum pname, const GLint * params)
 {
-   DISPATCH(Fogiv, (pname, params), (F, "glFogiv(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(Fogiv, (pname, params), (F, "glFogiv(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FrontFace)(GLenum mode)
 {
-   DISPATCH(FrontFace, (mode), (F, "glFrontFace(0x%x);\n", mode));
+   DISPATCH(FrontFace, (mode), (F, "glFrontFace(0x%x);", mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Hint)(GLenum target, GLenum mode)
 {
-   DISPATCH(Hint, (target, mode), (F, "glHint(0x%x, 0x%x);\n", target, mode));
+   DISPATCH(Hint, (target, mode), (F, "glHint(0x%x, 0x%x);", target, mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Lightf)(GLenum light, GLenum pname, GLfloat param)
 {
-   DISPATCH(Lightf, (light, pname, param), (F, "glLightf(0x%x, 0x%x, %f);\n", light, pname, param));
+   DISPATCH(Lightf, (light, pname, param), (F, "glLightf(0x%x, 0x%x, %f);", light, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Lightfv)(GLenum light, GLenum pname, const GLfloat * params)
 {
-   DISPATCH(Lightfv, (light, pname, params), (F, "glLightfv(0x%x, 0x%x, %p);\n", light, pname, (void *) params));
+   DISPATCH(Lightfv, (light, pname, params), (F, "glLightfv(0x%x, 0x%x, %p);", light, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Lighti)(GLenum light, GLenum pname, GLint param)
 {
-   DISPATCH(Lighti, (light, pname, param), (F, "glLighti(0x%x, 0x%x, %d);\n", light, pname, param));
+   DISPATCH(Lighti, (light, pname, param), (F, "glLighti(0x%x, 0x%x, %d);", light, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Lightiv)(GLenum light, GLenum pname, const GLint * params)
 {
-   DISPATCH(Lightiv, (light, pname, params), (F, "glLightiv(0x%x, 0x%x, %p);\n", light, pname, (void *) params));
+   DISPATCH(Lightiv, (light, pname, params), (F, "glLightiv(0x%x, 0x%x, %p);", light, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LightModelf)(GLenum pname, GLfloat param)
 {
-   DISPATCH(LightModelf, (pname, param), (F, "glLightModelf(0x%x, %f);\n", pname, param));
+   DISPATCH(LightModelf, (pname, param), (F, "glLightModelf(0x%x, %f);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LightModelfv)(GLenum pname, const GLfloat * params)
 {
-   DISPATCH(LightModelfv, (pname, params), (F, "glLightModelfv(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(LightModelfv, (pname, params), (F, "glLightModelfv(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LightModeli)(GLenum pname, GLint param)
 {
-   DISPATCH(LightModeli, (pname, param), (F, "glLightModeli(0x%x, %d);\n", pname, param));
+   DISPATCH(LightModeli, (pname, param), (F, "glLightModeli(0x%x, %d);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LightModeliv)(GLenum pname, const GLint * params)
 {
-   DISPATCH(LightModeliv, (pname, params), (F, "glLightModeliv(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(LightModeliv, (pname, params), (F, "glLightModeliv(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LineStipple)(GLint factor, GLushort pattern)
 {
-   DISPATCH(LineStipple, (factor, pattern), (F, "glLineStipple(%d, %d);\n", factor, pattern));
+   DISPATCH(LineStipple, (factor, pattern), (F, "glLineStipple(%d, %d);", factor, pattern));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LineWidth)(GLfloat width)
 {
-   DISPATCH(LineWidth, (width), (F, "glLineWidth(%f);\n", width));
+   DISPATCH(LineWidth, (width), (F, "glLineWidth(%f);", width));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Materialf)(GLenum face, GLenum pname, GLfloat param)
 {
-   DISPATCH(Materialf, (face, pname, param), (F, "glMaterialf(0x%x, 0x%x, %f);\n", face, pname, param));
+   DISPATCH(Materialf, (face, pname, param), (F, "glMaterialf(0x%x, 0x%x, %f);", face, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Materialfv)(GLenum face, GLenum pname, const GLfloat * params)
 {
-   DISPATCH(Materialfv, (face, pname, params), (F, "glMaterialfv(0x%x, 0x%x, %p);\n", face, pname, (void *) params));
+   DISPATCH(Materialfv, (face, pname, params), (F, "glMaterialfv(0x%x, 0x%x, %p);", face, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Materiali)(GLenum face, GLenum pname, GLint param)
 {
-   DISPATCH(Materiali, (face, pname, param), (F, "glMateriali(0x%x, 0x%x, %d);\n", face, pname, param));
+   DISPATCH(Materiali, (face, pname, param), (F, "glMateriali(0x%x, 0x%x, %d);", face, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Materialiv)(GLenum face, GLenum pname, const GLint * params)
 {
-   DISPATCH(Materialiv, (face, pname, params), (F, "glMaterialiv(0x%x, 0x%x, %p);\n", face, pname, (void *) params));
+   DISPATCH(Materialiv, (face, pname, params), (F, "glMaterialiv(0x%x, 0x%x, %p);", face, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PointSize)(GLfloat size)
 {
-   DISPATCH(PointSize, (size), (F, "glPointSize(%f);\n", size));
+   DISPATCH(PointSize, (size), (F, "glPointSize(%f);", size));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PolygonMode)(GLenum face, GLenum mode)
 {
-   DISPATCH(PolygonMode, (face, mode), (F, "glPolygonMode(0x%x, 0x%x);\n", face, mode));
+   DISPATCH(PolygonMode, (face, mode), (F, "glPolygonMode(0x%x, 0x%x);", face, mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PolygonStipple)(const GLubyte * mask)
 {
-   DISPATCH(PolygonStipple, (mask), (F, "glPolygonStipple(%p);\n", (void *) mask));
+   DISPATCH(PolygonStipple, (mask), (F, "glPolygonStipple(%p);", (void *) mask));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Scissor)(GLint x, GLint y, GLsizei width, GLsizei height)
 {
-   DISPATCH(Scissor, (x, y, width, height), (F, "glScissor(%d, %d, %p, %p);\n", x, y, (void *) width, (void *) height));
+   DISPATCH(Scissor, (x, y, width, height), (F, "glScissor(%d, %d, %p, %p);", x, y, (void *) width, (void *) height));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ShadeModel)(GLenum mode)
 {
-   DISPATCH(ShadeModel, (mode), (F, "glShadeModel(0x%x);\n", mode));
+   DISPATCH(ShadeModel, (mode), (F, "glShadeModel(0x%x);", mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexParameterf)(GLenum target, GLenum pname, GLfloat param)
 {
-   DISPATCH(TexParameterf, (target, pname, param), (F, "glTexParameterf(0x%x, 0x%x, %f);\n", target, pname, param));
+   DISPATCH(TexParameterf, (target, pname, param), (F, "glTexParameterf(0x%x, 0x%x, %f);", target, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexParameterfv)(GLenum target, GLenum pname, const GLfloat * params)
 {
-   DISPATCH(TexParameterfv, (target, pname, params), (F, "glTexParameterfv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(TexParameterfv, (target, pname, params), (F, "glTexParameterfv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexParameteri)(GLenum target, GLenum pname, GLint param)
 {
-   DISPATCH(TexParameteri, (target, pname, param), (F, "glTexParameteri(0x%x, 0x%x, %d);\n", target, pname, param));
+   DISPATCH(TexParameteri, (target, pname, param), (F, "glTexParameteri(0x%x, 0x%x, %d);", target, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexParameteriv)(GLenum target, GLenum pname, const GLint * params)
 {
-   DISPATCH(TexParameteriv, (target, pname, params), (F, "glTexParameteriv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(TexParameteriv, (target, pname, params), (F, "glTexParameteriv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
 {
-   DISPATCH(TexImage1D, (target, level, internalformat, width, border, format, type, pixels), (F, "glTexImage1D(0x%x, %d, %d, %p, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, (void *) width, border, format, type, (void *) pixels));
+   DISPATCH(TexImage1D, (target, level, internalformat, width, border, format, type, pixels), (F, "glTexImage1D(0x%x, %d, %d, %p, %d, 0x%x, 0x%x, %p);", target, level, internalformat, (void *) width, border, format, type, (void *) pixels));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
 {
-   DISPATCH(TexImage2D, (target, level, internalformat, width, height, border, format, type, pixels), (F, "glTexImage2D(0x%x, %d, %d, %p, %p, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, (void *) width, (void *) height, border, format, type, (void *) pixels));
+   DISPATCH(TexImage2D, (target, level, internalformat, width, height, border, format, type, pixels), (F, "glTexImage2D(0x%x, %d, %d, %p, %p, %d, 0x%x, 0x%x, %p);", target, level, internalformat, (void *) width, (void *) height, border, format, type, (void *) pixels));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexEnvf)(GLenum target, GLenum pname, GLfloat param)
 {
-   DISPATCH(TexEnvf, (target, pname, param), (F, "glTexEnvf(0x%x, 0x%x, %f);\n", target, pname, param));
+   DISPATCH(TexEnvf, (target, pname, param), (F, "glTexEnvf(0x%x, 0x%x, %f);", target, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexEnvfv)(GLenum target, GLenum pname, const GLfloat * params)
 {
-   DISPATCH(TexEnvfv, (target, pname, params), (F, "glTexEnvfv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(TexEnvfv, (target, pname, params), (F, "glTexEnvfv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexEnvi)(GLenum target, GLenum pname, GLint param)
 {
-   DISPATCH(TexEnvi, (target, pname, param), (F, "glTexEnvi(0x%x, 0x%x, %d);\n", target, pname, param));
+   DISPATCH(TexEnvi, (target, pname, param), (F, "glTexEnvi(0x%x, 0x%x, %d);", target, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexEnviv)(GLenum target, GLenum pname, const GLint * params)
 {
-   DISPATCH(TexEnviv, (target, pname, params), (F, "glTexEnviv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(TexEnviv, (target, pname, params), (F, "glTexEnviv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexGend)(GLenum coord, GLenum pname, GLdouble param)
 {
-   DISPATCH(TexGend, (coord, pname, param), (F, "glTexGend(0x%x, 0x%x, %f);\n", coord, pname, param));
+   DISPATCH(TexGend, (coord, pname, param), (F, "glTexGend(0x%x, 0x%x, %f);", coord, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexGendv)(GLenum coord, GLenum pname, const GLdouble * params)
 {
-   DISPATCH(TexGendv, (coord, pname, params), (F, "glTexGendv(0x%x, 0x%x, %p);\n", coord, pname, (void *) params));
+   DISPATCH(TexGendv, (coord, pname, params), (F, "glTexGendv(0x%x, 0x%x, %p);", coord, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexGenf)(GLenum coord, GLenum pname, GLfloat param)
 {
-   DISPATCH(TexGenf, (coord, pname, param), (F, "glTexGenf(0x%x, 0x%x, %f);\n", coord, pname, param));
+   DISPATCH(TexGenf, (coord, pname, param), (F, "glTexGenf(0x%x, 0x%x, %f);", coord, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexGenfv)(GLenum coord, GLenum pname, const GLfloat * params)
 {
-   DISPATCH(TexGenfv, (coord, pname, params), (F, "glTexGenfv(0x%x, 0x%x, %p);\n", coord, pname, (void *) params));
+   DISPATCH(TexGenfv, (coord, pname, params), (F, "glTexGenfv(0x%x, 0x%x, %p);", coord, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexGeni)(GLenum coord, GLenum pname, GLint param)
 {
-   DISPATCH(TexGeni, (coord, pname, param), (F, "glTexGeni(0x%x, 0x%x, %d);\n", coord, pname, param));
+   DISPATCH(TexGeni, (coord, pname, param), (F, "glTexGeni(0x%x, 0x%x, %d);", coord, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexGeniv)(GLenum coord, GLenum pname, const GLint * params)
 {
-   DISPATCH(TexGeniv, (coord, pname, params), (F, "glTexGeniv(0x%x, 0x%x, %p);\n", coord, pname, (void *) params));
+   DISPATCH(TexGeniv, (coord, pname, params), (F, "glTexGeniv(0x%x, 0x%x, %p);", coord, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FeedbackBuffer)(GLsizei size, GLenum type, GLfloat * buffer)
 {
-   DISPATCH(FeedbackBuffer, (size, type, buffer), (F, "glFeedbackBuffer(%p, 0x%x, %p);\n", (void *) size, type, (void *) buffer));
+   DISPATCH(FeedbackBuffer, (size, type, buffer), (F, "glFeedbackBuffer(%p, 0x%x, %p);", (void *) size, type, (void *) buffer));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SelectBuffer)(GLsizei size, GLuint * buffer)
 {
-   DISPATCH(SelectBuffer, (size, buffer), (F, "glSelectBuffer(%p, %p);\n", (void *) size, (void *) buffer));
+   DISPATCH(SelectBuffer, (size, buffer), (F, "glSelectBuffer(%p, %p);", (void *) size, (void *) buffer));
 }
 
 KEYWORD1 GLint KEYWORD2 NAME(RenderMode)(GLenum mode)
 {
-   RETURN_DISPATCH(RenderMode, (mode), (F, "glRenderMode(0x%x);\n", mode));
+   RETURN_DISPATCH(RenderMode, (mode), (F, "glRenderMode(0x%x);", mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(InitNames)(void)
 {
-   DISPATCH(InitNames, (), (F, "glInitNames();\n"));
+   DISPATCH(InitNames, (), (F, "glInitNames();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LoadName)(GLuint name)
 {
-   DISPATCH(LoadName, (name), (F, "glLoadName(%d);\n", name));
+   DISPATCH(LoadName, (name), (F, "glLoadName(%d);", name));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PassThrough)(GLfloat token)
 {
-   DISPATCH(PassThrough, (token), (F, "glPassThrough(%f);\n", token));
+   DISPATCH(PassThrough, (token), (F, "glPassThrough(%f);", token));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PopName)(void)
 {
-   DISPATCH(PopName, (), (F, "glPopName();\n"));
+   DISPATCH(PopName, (), (F, "glPopName();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PushName)(GLuint name)
 {
-   DISPATCH(PushName, (name), (F, "glPushName(%d);\n", name));
+   DISPATCH(PushName, (name), (F, "glPushName(%d);", name));
 }
 
 KEYWORD1 void KEYWORD2 NAME(DrawBuffer)(GLenum mode)
 {
-   DISPATCH(DrawBuffer, (mode), (F, "glDrawBuffer(0x%x);\n", mode));
+   DISPATCH(DrawBuffer, (mode), (F, "glDrawBuffer(0x%x);", mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Clear)(GLbitfield mask)
 {
-   DISPATCH(Clear, (mask), (F, "glClear(%p);\n", (void *) mask));
+   DISPATCH(Clear, (mask), (F, "glClear(%p);", (void *) mask));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ClearAccum)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
 {
-   DISPATCH(ClearAccum, (red, green, blue, alpha), (F, "glClearAccum(%f, %f, %f, %f);\n", red, green, blue, alpha));
+   DISPATCH(ClearAccum, (red, green, blue, alpha), (F, "glClearAccum(%f, %f, %f, %f);", red, green, blue, alpha));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ClearIndex)(GLfloat c)
 {
-   DISPATCH(ClearIndex, (c), (F, "glClearIndex(%f);\n", c));
+   DISPATCH(ClearIndex, (c), (F, "glClearIndex(%f);", c));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
 {
-   DISPATCH(ClearColor, (red, green, blue, alpha), (F, "glClearColor(%f, %f, %f, %f);\n", red, green, blue, alpha));
+   DISPATCH(ClearColor, (red, green, blue, alpha), (F, "glClearColor(%f, %f, %f, %f);", red, green, blue, alpha));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ClearStencil)(GLint s)
 {
-   DISPATCH(ClearStencil, (s), (F, "glClearStencil(%d);\n", s));
+   DISPATCH(ClearStencil, (s), (F, "glClearStencil(%d);", s));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ClearDepth)(GLclampd depth)
 {
-   DISPATCH(ClearDepth, (depth), (F, "glClearDepth(%f);\n", depth));
+   DISPATCH(ClearDepth, (depth), (F, "glClearDepth(%f);", depth));
 }
 
 KEYWORD1 void KEYWORD2 NAME(StencilMask)(GLuint mask)
 {
-   DISPATCH(StencilMask, (mask), (F, "glStencilMask(%d);\n", mask));
+   DISPATCH(StencilMask, (mask), (F, "glStencilMask(%d);", mask));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
 {
-   DISPATCH(ColorMask, (red, green, blue, alpha), (F, "glColorMask(%d, %d, %d, %d);\n", red, green, blue, alpha));
+   DISPATCH(ColorMask, (red, green, blue, alpha), (F, "glColorMask(%d, %d, %d, %d);", red, green, blue, alpha));
 }
 
 KEYWORD1 void KEYWORD2 NAME(DepthMask)(GLboolean flag)
 {
-   DISPATCH(DepthMask, (flag), (F, "glDepthMask(%d);\n", flag));
+   DISPATCH(DepthMask, (flag), (F, "glDepthMask(%d);", flag));
 }
 
 KEYWORD1 void KEYWORD2 NAME(IndexMask)(GLuint mask)
 {
-   DISPATCH(IndexMask, (mask), (F, "glIndexMask(%d);\n", mask));
+   DISPATCH(IndexMask, (mask), (F, "glIndexMask(%d);", mask));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Accum)(GLenum op, GLfloat value)
 {
-   DISPATCH(Accum, (op, value), (F, "glAccum(0x%x, %f);\n", op, value));
+   DISPATCH(Accum, (op, value), (F, "glAccum(0x%x, %f);", op, value));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Disable)(GLenum cap)
 {
-   DISPATCH(Disable, (cap), (F, "glDisable(0x%x);\n", cap));
+   DISPATCH(Disable, (cap), (F, "glDisable(0x%x);", cap));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Enable)(GLenum cap)
 {
-   DISPATCH(Enable, (cap), (F, "glEnable(0x%x);\n", cap));
+   DISPATCH(Enable, (cap), (F, "glEnable(0x%x);", cap));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Finish)(void)
 {
-   DISPATCH(Finish, (), (F, "glFinish();\n"));
+   DISPATCH(Finish, (), (F, "glFinish();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Flush)(void)
 {
-   DISPATCH(Flush, (), (F, "glFlush();\n"));
+   DISPATCH(Flush, (), (F, "glFlush();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PopAttrib)(void)
 {
-   DISPATCH(PopAttrib, (), (F, "glPopAttrib();\n"));
+   DISPATCH(PopAttrib, (), (F, "glPopAttrib();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PushAttrib)(GLbitfield mask)
 {
-   DISPATCH(PushAttrib, (mask), (F, "glPushAttrib(%p);\n", (void *) mask));
+   DISPATCH(PushAttrib, (mask), (F, "glPushAttrib(%p);", (void *) mask));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Map1d)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points)
 {
-   DISPATCH(Map1d, (target, u1, u2, stride, order, points), (F, "glMap1d(0x%x, %f, %f, %d, %d, %p);\n", target, u1, u2, stride, order, (void *) points));
+   DISPATCH(Map1d, (target, u1, u2, stride, order, points), (F, "glMap1d(0x%x, %f, %f, %d, %d, %p);", target, u1, u2, stride, order, (void *) points));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Map1f)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points)
 {
-   DISPATCH(Map1f, (target, u1, u2, stride, order, points), (F, "glMap1f(0x%x, %f, %f, %d, %d, %p);\n", target, u1, u2, stride, order, (void *) points));
+   DISPATCH(Map1f, (target, u1, u2, stride, order, points), (F, "glMap1f(0x%x, %f, %f, %d, %d, %p);", target, u1, u2, stride, order, (void *) points));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Map2d)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points)
 {
-   DISPATCH(Map2d, (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), (F, "glMap2d(0x%x, %f, %f, %d, %d, %f, %f, %d, %d, %p);\n", target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, (void *) points));
+   DISPATCH(Map2d, (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), (F, "glMap2d(0x%x, %f, %f, %d, %d, %f, %f, %d, %d, %p);", target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, (void *) points));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Map2f)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points)
 {
-   DISPATCH(Map2f, (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), (F, "glMap2f(0x%x, %f, %f, %d, %d, %f, %f, %d, %d, %p);\n", target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, (void *) points));
+   DISPATCH(Map2f, (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), (F, "glMap2f(0x%x, %f, %f, %d, %d, %f, %f, %d, %d, %p);", target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, (void *) points));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MapGrid1d)(GLint un, GLdouble u1, GLdouble u2)
 {
-   DISPATCH(MapGrid1d, (un, u1, u2), (F, "glMapGrid1d(%d, %f, %f);\n", un, u1, u2));
+   DISPATCH(MapGrid1d, (un, u1, u2), (F, "glMapGrid1d(%d, %f, %f);", un, u1, u2));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MapGrid1f)(GLint un, GLfloat u1, GLfloat u2)
 {
-   DISPATCH(MapGrid1f, (un, u1, u2), (F, "glMapGrid1f(%d, %f, %f);\n", un, u1, u2));
+   DISPATCH(MapGrid1f, (un, u1, u2), (F, "glMapGrid1f(%d, %f, %f);", un, u1, u2));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MapGrid2d)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)
 {
-   DISPATCH(MapGrid2d, (un, u1, u2, vn, v1, v2), (F, "glMapGrid2d(%d, %f, %f, %d, %f, %f);\n", un, u1, u2, vn, v1, v2));
+   DISPATCH(MapGrid2d, (un, u1, u2, vn, v1, v2), (F, "glMapGrid2d(%d, %f, %f, %d, %f, %f);", un, u1, u2, vn, v1, v2));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MapGrid2f)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)
 {
-   DISPATCH(MapGrid2f, (un, u1, u2, vn, v1, v2), (F, "glMapGrid2f(%d, %f, %f, %d, %f, %f);\n", un, u1, u2, vn, v1, v2));
+   DISPATCH(MapGrid2f, (un, u1, u2, vn, v1, v2), (F, "glMapGrid2f(%d, %f, %f, %d, %f, %f);", un, u1, u2, vn, v1, v2));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EvalCoord1d)(GLdouble u)
 {
-   DISPATCH(EvalCoord1d, (u), (F, "glEvalCoord1d(%f);\n", u));
+   DISPATCH(EvalCoord1d, (u), (F, "glEvalCoord1d(%f);", u));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EvalCoord1dv)(const GLdouble * u)
 {
-   DISPATCH(EvalCoord1dv, (u), (F, "glEvalCoord1dv(%p);\n", (void *) u));
+   DISPATCH(EvalCoord1dv, (u), (F, "glEvalCoord1dv(%p);", (void *) u));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EvalCoord1f)(GLfloat u)
 {
-   DISPATCH(EvalCoord1f, (u), (F, "glEvalCoord1f(%f);\n", u));
+   DISPATCH(EvalCoord1f, (u), (F, "glEvalCoord1f(%f);", u));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EvalCoord1fv)(const GLfloat * u)
 {
-   DISPATCH(EvalCoord1fv, (u), (F, "glEvalCoord1fv(%p);\n", (void *) u));
+   DISPATCH(EvalCoord1fv, (u), (F, "glEvalCoord1fv(%p);", (void *) u));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EvalCoord2d)(GLdouble u, GLdouble v)
 {
-   DISPATCH(EvalCoord2d, (u, v), (F, "glEvalCoord2d(%f, %f);\n", u, v));
+   DISPATCH(EvalCoord2d, (u, v), (F, "glEvalCoord2d(%f, %f);", u, v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EvalCoord2dv)(const GLdouble * u)
 {
-   DISPATCH(EvalCoord2dv, (u), (F, "glEvalCoord2dv(%p);\n", (void *) u));
+   DISPATCH(EvalCoord2dv, (u), (F, "glEvalCoord2dv(%p);", (void *) u));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EvalCoord2f)(GLfloat u, GLfloat v)
 {
-   DISPATCH(EvalCoord2f, (u, v), (F, "glEvalCoord2f(%f, %f);\n", u, v));
+   DISPATCH(EvalCoord2f, (u, v), (F, "glEvalCoord2f(%f, %f);", u, v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EvalCoord2fv)(const GLfloat * u)
 {
-   DISPATCH(EvalCoord2fv, (u), (F, "glEvalCoord2fv(%p);\n", (void *) u));
+   DISPATCH(EvalCoord2fv, (u), (F, "glEvalCoord2fv(%p);", (void *) u));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EvalMesh1)(GLenum mode, GLint i1, GLint i2)
 {
-   DISPATCH(EvalMesh1, (mode, i1, i2), (F, "glEvalMesh1(0x%x, %d, %d);\n", mode, i1, i2));
+   DISPATCH(EvalMesh1, (mode, i1, i2), (F, "glEvalMesh1(0x%x, %d, %d);", mode, i1, i2));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EvalPoint1)(GLint i)
 {
-   DISPATCH(EvalPoint1, (i), (F, "glEvalPoint1(%d);\n", i));
+   DISPATCH(EvalPoint1, (i), (F, "glEvalPoint1(%d);", i));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EvalMesh2)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)
 {
-   DISPATCH(EvalMesh2, (mode, i1, i2, j1, j2), (F, "glEvalMesh2(0x%x, %d, %d, %d, %d);\n", mode, i1, i2, j1, j2));
+   DISPATCH(EvalMesh2, (mode, i1, i2, j1, j2), (F, "glEvalMesh2(0x%x, %d, %d, %d, %d);", mode, i1, i2, j1, j2));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EvalPoint2)(GLint i, GLint j)
 {
-   DISPATCH(EvalPoint2, (i, j), (F, "glEvalPoint2(%d, %d);\n", i, j));
+   DISPATCH(EvalPoint2, (i, j), (F, "glEvalPoint2(%d, %d);", i, j));
 }
 
 KEYWORD1 void KEYWORD2 NAME(AlphaFunc)(GLenum func, GLclampf ref)
 {
-   DISPATCH(AlphaFunc, (func, ref), (F, "glAlphaFunc(0x%x, %f);\n", func, ref));
+   DISPATCH(AlphaFunc, (func, ref), (F, "glAlphaFunc(0x%x, %f);", func, ref));
 }
 
 KEYWORD1 void KEYWORD2 NAME(BlendFunc)(GLenum sfactor, GLenum dfactor)
 {
-   DISPATCH(BlendFunc, (sfactor, dfactor), (F, "glBlendFunc(0x%x, 0x%x);\n", sfactor, dfactor));
+   DISPATCH(BlendFunc, (sfactor, dfactor), (F, "glBlendFunc(0x%x, 0x%x);", sfactor, dfactor));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LogicOp)(GLenum opcode)
 {
-   DISPATCH(LogicOp, (opcode), (F, "glLogicOp(0x%x);\n", opcode));
+   DISPATCH(LogicOp, (opcode), (F, "glLogicOp(0x%x);", opcode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(StencilFunc)(GLenum func, GLint ref, GLuint mask)
 {
-   DISPATCH(StencilFunc, (func, ref, mask), (F, "glStencilFunc(0x%x, %d, %d);\n", func, ref, mask));
+   DISPATCH(StencilFunc, (func, ref, mask), (F, "glStencilFunc(0x%x, %d, %d);", func, ref, mask));
 }
 
 KEYWORD1 void KEYWORD2 NAME(StencilOp)(GLenum fail, GLenum zfail, GLenum zpass)
 {
-   DISPATCH(StencilOp, (fail, zfail, zpass), (F, "glStencilOp(0x%x, 0x%x, 0x%x);\n", fail, zfail, zpass));
+   DISPATCH(StencilOp, (fail, zfail, zpass), (F, "glStencilOp(0x%x, 0x%x, 0x%x);", fail, zfail, zpass));
 }
 
 KEYWORD1 void KEYWORD2 NAME(DepthFunc)(GLenum func)
 {
-   DISPATCH(DepthFunc, (func), (F, "glDepthFunc(0x%x);\n", func));
+   DISPATCH(DepthFunc, (func), (F, "glDepthFunc(0x%x);", func));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PixelZoom)(GLfloat xfactor, GLfloat yfactor)
 {
-   DISPATCH(PixelZoom, (xfactor, yfactor), (F, "glPixelZoom(%f, %f);\n", xfactor, yfactor));
+   DISPATCH(PixelZoom, (xfactor, yfactor), (F, "glPixelZoom(%f, %f);", xfactor, yfactor));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PixelTransferf)(GLenum pname, GLfloat param)
 {
-   DISPATCH(PixelTransferf, (pname, param), (F, "glPixelTransferf(0x%x, %f);\n", pname, param));
+   DISPATCH(PixelTransferf, (pname, param), (F, "glPixelTransferf(0x%x, %f);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PixelTransferi)(GLenum pname, GLint param)
 {
-   DISPATCH(PixelTransferi, (pname, param), (F, "glPixelTransferi(0x%x, %d);\n", pname, param));
+   DISPATCH(PixelTransferi, (pname, param), (F, "glPixelTransferi(0x%x, %d);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PixelStoref)(GLenum pname, GLfloat param)
 {
-   DISPATCH(PixelStoref, (pname, param), (F, "glPixelStoref(0x%x, %f);\n", pname, param));
+   DISPATCH(PixelStoref, (pname, param), (F, "glPixelStoref(0x%x, %f);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PixelStorei)(GLenum pname, GLint param)
 {
-   DISPATCH(PixelStorei, (pname, param), (F, "glPixelStorei(0x%x, %d);\n", pname, param));
+   DISPATCH(PixelStorei, (pname, param), (F, "glPixelStorei(0x%x, %d);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PixelMapfv)(GLenum map, GLint mapsize, const GLfloat * values)
 {
-   DISPATCH(PixelMapfv, (map, mapsize, values), (F, "glPixelMapfv(0x%x, %d, %p);\n", map, mapsize, (void *) values));
+   DISPATCH(PixelMapfv, (map, mapsize, values), (F, "glPixelMapfv(0x%x, %d, %p);", map, mapsize, (void *) values));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PixelMapuiv)(GLenum map, GLint mapsize, const GLuint * values)
 {
-   DISPATCH(PixelMapuiv, (map, mapsize, values), (F, "glPixelMapuiv(0x%x, %d, %p);\n", map, mapsize, (void *) values));
+   DISPATCH(PixelMapuiv, (map, mapsize, values), (F, "glPixelMapuiv(0x%x, %d, %p);", map, mapsize, (void *) values));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PixelMapusv)(GLenum map, GLint mapsize, const GLushort * values)
 {
-   DISPATCH(PixelMapusv, (map, mapsize, values), (F, "glPixelMapusv(0x%x, %d, %p);\n", map, mapsize, (void *) values));
+   DISPATCH(PixelMapusv, (map, mapsize, values), (F, "glPixelMapusv(0x%x, %d, %p);", map, mapsize, (void *) values));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ReadBuffer)(GLenum mode)
 {
-   DISPATCH(ReadBuffer, (mode), (F, "glReadBuffer(0x%x);\n", mode));
+   DISPATCH(ReadBuffer, (mode), (F, "glReadBuffer(0x%x);", mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)
 {
-   DISPATCH(CopyPixels, (x, y, width, height, type), (F, "glCopyPixels(%d, %d, %p, %p, 0x%x);\n", x, y, (void *) width, (void *) height, type));
+   DISPATCH(CopyPixels, (x, y, width, height, type), (F, "glCopyPixels(%d, %d, %p, %p, 0x%x);", x, y, (void *) width, (void *) height, type));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid * pixels)
 {
-   DISPATCH(ReadPixels, (x, y, width, height, format, type, pixels), (F, "glReadPixels(%d, %d, %p, %p, 0x%x, 0x%x, %p);\n", x, y, (void *) width, (void *) height, format, type, (void *) pixels));
+   DISPATCH(ReadPixels, (x, y, width, height, format, type, pixels), (F, "glReadPixels(%d, %d, %p, %p, 0x%x, 0x%x, %p);", x, y, (void *) width, (void *) height, format, type, (void *) pixels));
 }
 
 KEYWORD1 void KEYWORD2 NAME(DrawPixels)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)
 {
-   DISPATCH(DrawPixels, (width, height, format, type, pixels), (F, "glDrawPixels(%p, %p, 0x%x, 0x%x, %p);\n", (void *) width, (void *) height, format, type, (void *) pixels));
+   DISPATCH(DrawPixels, (width, height, format, type, pixels), (F, "glDrawPixels(%p, %p, 0x%x, 0x%x, %p);", (void *) width, (void *) height, format, type, (void *) pixels));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetBooleanv)(GLenum pname, GLboolean * params)
 {
-   DISPATCH(GetBooleanv, (pname, params), (F, "glGetBooleanv(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(GetBooleanv, (pname, params), (F, "glGetBooleanv(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetClipPlane)(GLenum plane, GLdouble * equation)
 {
-   DISPATCH(GetClipPlane, (plane, equation), (F, "glGetClipPlane(0x%x, %p);\n", plane, (void *) equation));
+   DISPATCH(GetClipPlane, (plane, equation), (F, "glGetClipPlane(0x%x, %p);", plane, (void *) equation));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetDoublev)(GLenum pname, GLdouble * params)
 {
-   DISPATCH(GetDoublev, (pname, params), (F, "glGetDoublev(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(GetDoublev, (pname, params), (F, "glGetDoublev(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 GLenum KEYWORD2 NAME(GetError)(void)
 {
-   RETURN_DISPATCH(GetError, (), (F, "glGetError();\n"));
+   RETURN_DISPATCH(GetError, (), (F, "glGetError();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetFloatv)(GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetFloatv, (pname, params), (F, "glGetFloatv(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(GetFloatv, (pname, params), (F, "glGetFloatv(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetIntegerv)(GLenum pname, GLint * params)
 {
-   DISPATCH(GetIntegerv, (pname, params), (F, "glGetIntegerv(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(GetIntegerv, (pname, params), (F, "glGetIntegerv(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetLightfv)(GLenum light, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetLightfv, (light, pname, params), (F, "glGetLightfv(0x%x, 0x%x, %p);\n", light, pname, (void *) params));
+   DISPATCH(GetLightfv, (light, pname, params), (F, "glGetLightfv(0x%x, 0x%x, %p);", light, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetLightiv)(GLenum light, GLenum pname, GLint * params)
 {
-   DISPATCH(GetLightiv, (light, pname, params), (F, "glGetLightiv(0x%x, 0x%x, %p);\n", light, pname, (void *) params));
+   DISPATCH(GetLightiv, (light, pname, params), (F, "glGetLightiv(0x%x, 0x%x, %p);", light, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetMapdv)(GLenum target, GLenum query, GLdouble * v)
 {
-   DISPATCH(GetMapdv, (target, query, v), (F, "glGetMapdv(0x%x, 0x%x, %p);\n", target, query, (void *) v));
+   DISPATCH(GetMapdv, (target, query, v), (F, "glGetMapdv(0x%x, 0x%x, %p);", target, query, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetMapfv)(GLenum target, GLenum query, GLfloat * v)
 {
-   DISPATCH(GetMapfv, (target, query, v), (F, "glGetMapfv(0x%x, 0x%x, %p);\n", target, query, (void *) v));
+   DISPATCH(GetMapfv, (target, query, v), (F, "glGetMapfv(0x%x, 0x%x, %p);", target, query, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetMapiv)(GLenum target, GLenum query, GLint * v)
 {
-   DISPATCH(GetMapiv, (target, query, v), (F, "glGetMapiv(0x%x, 0x%x, %p);\n", target, query, (void *) v));
+   DISPATCH(GetMapiv, (target, query, v), (F, "glGetMapiv(0x%x, 0x%x, %p);", target, query, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetMaterialfv)(GLenum face, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetMaterialfv, (face, pname, params), (F, "glGetMaterialfv(0x%x, 0x%x, %p);\n", face, pname, (void *) params));
+   DISPATCH(GetMaterialfv, (face, pname, params), (F, "glGetMaterialfv(0x%x, 0x%x, %p);", face, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetMaterialiv)(GLenum face, GLenum pname, GLint * params)
 {
-   DISPATCH(GetMaterialiv, (face, pname, params), (F, "glGetMaterialiv(0x%x, 0x%x, %p);\n", face, pname, (void *) params));
+   DISPATCH(GetMaterialiv, (face, pname, params), (F, "glGetMaterialiv(0x%x, 0x%x, %p);", face, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetPixelMapfv)(GLenum map, GLfloat * values)
 {
-   DISPATCH(GetPixelMapfv, (map, values), (F, "glGetPixelMapfv(0x%x, %p);\n", map, (void *) values));
+   DISPATCH(GetPixelMapfv, (map, values), (F, "glGetPixelMapfv(0x%x, %p);", map, (void *) values));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetPixelMapuiv)(GLenum map, GLuint * values)
 {
-   DISPATCH(GetPixelMapuiv, (map, values), (F, "glGetPixelMapuiv(0x%x, %p);\n", map, (void *) values));
+   DISPATCH(GetPixelMapuiv, (map, values), (F, "glGetPixelMapuiv(0x%x, %p);", map, (void *) values));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetPixelMapusv)(GLenum map, GLushort * values)
 {
-   DISPATCH(GetPixelMapusv, (map, values), (F, "glGetPixelMapusv(0x%x, %p);\n", map, (void *) values));
+   DISPATCH(GetPixelMapusv, (map, values), (F, "glGetPixelMapusv(0x%x, %p);", map, (void *) values));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetPolygonStipple)(GLubyte * mask)
 {
-   DISPATCH(GetPolygonStipple, (mask), (F, "glGetPolygonStipple(%p);\n", (void *) mask));
+   DISPATCH(GetPolygonStipple, (mask), (F, "glGetPolygonStipple(%p);", (void *) mask));
 }
 
 KEYWORD1 const GLubyte * KEYWORD2 NAME(GetString)(GLenum name)
 {
-   RETURN_DISPATCH(GetString, (name), (F, "glGetString(0x%x);\n", name));
+   RETURN_DISPATCH(GetString, (name), (F, "glGetString(0x%x);", name));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetTexEnvfv)(GLenum target, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetTexEnvfv, (target, pname, params), (F, "glGetTexEnvfv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetTexEnvfv, (target, pname, params), (F, "glGetTexEnvfv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetTexEnviv)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(GetTexEnviv, (target, pname, params), (F, "glGetTexEnviv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetTexEnviv, (target, pname, params), (F, "glGetTexEnviv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetTexGendv)(GLenum coord, GLenum pname, GLdouble * params)
 {
-   DISPATCH(GetTexGendv, (coord, pname, params), (F, "glGetTexGendv(0x%x, 0x%x, %p);\n", coord, pname, (void *) params));
+   DISPATCH(GetTexGendv, (coord, pname, params), (F, "glGetTexGendv(0x%x, 0x%x, %p);", coord, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetTexGenfv)(GLenum coord, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetTexGenfv, (coord, pname, params), (F, "glGetTexGenfv(0x%x, 0x%x, %p);\n", coord, pname, (void *) params));
+   DISPATCH(GetTexGenfv, (coord, pname, params), (F, "glGetTexGenfv(0x%x, 0x%x, %p);", coord, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetTexGeniv)(GLenum coord, GLenum pname, GLint * params)
 {
-   DISPATCH(GetTexGeniv, (coord, pname, params), (F, "glGetTexGeniv(0x%x, 0x%x, %p);\n", coord, pname, (void *) params));
+   DISPATCH(GetTexGeniv, (coord, pname, params), (F, "glGetTexGeniv(0x%x, 0x%x, %p);", coord, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels)
 {
-   DISPATCH(GetTexImage, (target, level, format, type, pixels), (F, "glGetTexImage(0x%x, %d, 0x%x, 0x%x, %p);\n", target, level, format, type, (void *) pixels));
+   DISPATCH(GetTexImage, (target, level, format, type, pixels), (F, "glGetTexImage(0x%x, %d, 0x%x, 0x%x, %p);", target, level, format, type, (void *) pixels));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetTexParameterfv)(GLenum target, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetTexParameterfv, (target, pname, params), (F, "glGetTexParameterfv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetTexParameterfv, (target, pname, params), (F, "glGetTexParameterfv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetTexParameteriv)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(GetTexParameteriv, (target, pname, params), (F, "glGetTexParameteriv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetTexParameteriv, (target, pname, params), (F, "glGetTexParameteriv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetTexLevelParameterfv, (target, level, pname, params), (F, "glGetTexLevelParameterfv(0x%x, %d, 0x%x, %p);\n", target, level, pname, (void *) params));
+   DISPATCH(GetTexLevelParameterfv, (target, level, pname, params), (F, "glGetTexLevelParameterfv(0x%x, %d, 0x%x, %p);", target, level, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint * params)
 {
-   DISPATCH(GetTexLevelParameteriv, (target, level, pname, params), (F, "glGetTexLevelParameteriv(0x%x, %d, 0x%x, %p);\n", target, level, pname, (void *) params));
+   DISPATCH(GetTexLevelParameteriv, (target, level, pname, params), (F, "glGetTexLevelParameteriv(0x%x, %d, 0x%x, %p);", target, level, pname, (void *) params));
 }
 
 KEYWORD1 GLboolean KEYWORD2 NAME(IsEnabled)(GLenum cap)
 {
-   RETURN_DISPATCH(IsEnabled, (cap), (F, "glIsEnabled(0x%x);\n", cap));
+   RETURN_DISPATCH(IsEnabled, (cap), (F, "glIsEnabled(0x%x);", cap));
 }
 
 KEYWORD1 GLboolean KEYWORD2 NAME(IsList)(GLuint list)
 {
-   RETURN_DISPATCH(IsList, (list), (F, "glIsList(%d);\n", list));
+   RETURN_DISPATCH(IsList, (list), (F, "glIsList(%d);", list));
 }
 
 KEYWORD1 void KEYWORD2 NAME(DepthRange)(GLclampd zNear, GLclampd zFar)
 {
-   DISPATCH(DepthRange, (zNear, zFar), (F, "glDepthRange(%f, %f);\n", zNear, zFar));
+   DISPATCH(DepthRange, (zNear, zFar), (F, "glDepthRange(%f, %f);", zNear, zFar));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Frustum)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
 {
-   DISPATCH(Frustum, (left, right, bottom, top, zNear, zFar), (F, "glFrustum(%f, %f, %f, %f, %f, %f);\n", left, right, bottom, top, zNear, zFar));
+   DISPATCH(Frustum, (left, right, bottom, top, zNear, zFar), (F, "glFrustum(%f, %f, %f, %f, %f, %f);", left, right, bottom, top, zNear, zFar));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LoadIdentity)(void)
 {
-   DISPATCH(LoadIdentity, (), (F, "glLoadIdentity();\n"));
+   DISPATCH(LoadIdentity, (), (F, "glLoadIdentity();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LoadMatrixf)(const GLfloat * m)
 {
-   DISPATCH(LoadMatrixf, (m), (F, "glLoadMatrixf(%p);\n", (void *) m));
+   DISPATCH(LoadMatrixf, (m), (F, "glLoadMatrixf(%p);", (void *) m));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LoadMatrixd)(const GLdouble * m)
 {
-   DISPATCH(LoadMatrixd, (m), (F, "glLoadMatrixd(%p);\n", (void *) m));
+   DISPATCH(LoadMatrixd, (m), (F, "glLoadMatrixd(%p);", (void *) m));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MatrixMode)(GLenum mode)
 {
-   DISPATCH(MatrixMode, (mode), (F, "glMatrixMode(0x%x);\n", mode));
+   DISPATCH(MatrixMode, (mode), (F, "glMatrixMode(0x%x);", mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultMatrixf)(const GLfloat * m)
 {
-   DISPATCH(MultMatrixf, (m), (F, "glMultMatrixf(%p);\n", (void *) m));
+   DISPATCH(MultMatrixf, (m), (F, "glMultMatrixf(%p);", (void *) m));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultMatrixd)(const GLdouble * m)
 {
-   DISPATCH(MultMatrixd, (m), (F, "glMultMatrixd(%p);\n", (void *) m));
+   DISPATCH(MultMatrixd, (m), (F, "glMultMatrixd(%p);", (void *) m));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Ortho)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
 {
-   DISPATCH(Ortho, (left, right, bottom, top, zNear, zFar), (F, "glOrtho(%f, %f, %f, %f, %f, %f);\n", left, right, bottom, top, zNear, zFar));
+   DISPATCH(Ortho, (left, right, bottom, top, zNear, zFar), (F, "glOrtho(%f, %f, %f, %f, %f, %f);", left, right, bottom, top, zNear, zFar));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PopMatrix)(void)
 {
-   DISPATCH(PopMatrix, (), (F, "glPopMatrix();\n"));
+   DISPATCH(PopMatrix, (), (F, "glPopMatrix();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PushMatrix)(void)
 {
-   DISPATCH(PushMatrix, (), (F, "glPushMatrix();\n"));
+   DISPATCH(PushMatrix, (), (F, "glPushMatrix();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Rotated)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)
 {
-   DISPATCH(Rotated, (angle, x, y, z), (F, "glRotated(%f, %f, %f, %f);\n", angle, x, y, z));
+   DISPATCH(Rotated, (angle, x, y, z), (F, "glRotated(%f, %f, %f, %f);", angle, x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Rotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
 {
-   DISPATCH(Rotatef, (angle, x, y, z), (F, "glRotatef(%f, %f, %f, %f);\n", angle, x, y, z));
+   DISPATCH(Rotatef, (angle, x, y, z), (F, "glRotatef(%f, %f, %f, %f);", angle, x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Scaled)(GLdouble x, GLdouble y, GLdouble z)
 {
-   DISPATCH(Scaled, (x, y, z), (F, "glScaled(%f, %f, %f);\n", x, y, z));
+   DISPATCH(Scaled, (x, y, z), (F, "glScaled(%f, %f, %f);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Scalef)(GLfloat x, GLfloat y, GLfloat z)
 {
-   DISPATCH(Scalef, (x, y, z), (F, "glScalef(%f, %f, %f);\n", x, y, z));
+   DISPATCH(Scalef, (x, y, z), (F, "glScalef(%f, %f, %f);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Translated)(GLdouble x, GLdouble y, GLdouble z)
 {
-   DISPATCH(Translated, (x, y, z), (F, "glTranslated(%f, %f, %f);\n", x, y, z));
+   DISPATCH(Translated, (x, y, z), (F, "glTranslated(%f, %f, %f);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Translatef)(GLfloat x, GLfloat y, GLfloat z)
 {
-   DISPATCH(Translatef, (x, y, z), (F, "glTranslatef(%f, %f, %f);\n", x, y, z));
+   DISPATCH(Translatef, (x, y, z), (F, "glTranslatef(%f, %f, %f);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Viewport)(GLint x, GLint y, GLsizei width, GLsizei height)
 {
-   DISPATCH(Viewport, (x, y, width, height), (F, "glViewport(%d, %d, %p, %p);\n", x, y, (void *) width, (void *) height));
+   DISPATCH(Viewport, (x, y, width, height), (F, "glViewport(%d, %d, %p, %p);", x, y, (void *) width, (void *) height));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ArrayElement)(GLint i)
 {
-   DISPATCH(ArrayElement, (i), (F, "glArrayElement(%d);\n", i));
+   DISPATCH(ArrayElement, (i), (F, "glArrayElement(%d);", i));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
 {
-   DISPATCH(ColorPointer, (size, type, stride, pointer), (F, "glColorPointer(%d, 0x%x, %p, %p);\n", size, type, (void *) stride, (void *) pointer));
+   DISPATCH(ColorPointer, (size, type, stride, pointer), (F, "glColorPointer(%d, 0x%x, %p, %p);", size, type, (void *) stride, (void *) pointer));
 }
 
 KEYWORD1 void KEYWORD2 NAME(DisableClientState)(GLenum array)
 {
-   DISPATCH(DisableClientState, (array), (F, "glDisableClientState(0x%x);\n", array));
+   DISPATCH(DisableClientState, (array), (F, "glDisableClientState(0x%x);", array));
 }
 
 KEYWORD1 void KEYWORD2 NAME(DrawArrays)(GLenum mode, GLint first, GLsizei count)
 {
-   DISPATCH(DrawArrays, (mode, first, count), (F, "glDrawArrays(0x%x, %d, %p);\n", mode, first, (void *) count));
+   DISPATCH(DrawArrays, (mode, first, count), (F, "glDrawArrays(0x%x, %d, %p);", mode, first, (void *) count));
 }
 
 KEYWORD1 void KEYWORD2 NAME(DrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices)
 {
-   DISPATCH(DrawElements, (mode, count, type, indices), (F, "glDrawElements(0x%x, %p, 0x%x, %p);\n", mode, (void *) count, type, (void *) indices));
+   DISPATCH(DrawElements, (mode, count, type, indices), (F, "glDrawElements(0x%x, %p, 0x%x, %p);", mode, (void *) count, type, (void *) indices));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EdgeFlagPointer)(GLsizei stride, const GLvoid * pointer)
 {
-   DISPATCH(EdgeFlagPointer, (stride, pointer), (F, "glEdgeFlagPointer(%p, %p);\n", (void *) stride, (void *) pointer));
+   DISPATCH(EdgeFlagPointer, (stride, pointer), (F, "glEdgeFlagPointer(%p, %p);", (void *) stride, (void *) pointer));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EnableClientState)(GLenum array)
 {
-   DISPATCH(EnableClientState, (array), (F, "glEnableClientState(0x%x);\n", array));
+   DISPATCH(EnableClientState, (array), (F, "glEnableClientState(0x%x);", array));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetPointerv)(GLenum pname, GLvoid ** params)
 {
-   DISPATCH(GetPointerv, (pname, params), (F, "glGetPointerv(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(GetPointerv, (pname, params), (F, "glGetPointerv(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(IndexPointer)(GLenum type, GLsizei stride, const GLvoid * pointer)
 {
-   DISPATCH(IndexPointer, (type, stride, pointer), (F, "glIndexPointer(0x%x, %p, %p);\n", type, (void *) stride, (void *) pointer));
+   DISPATCH(IndexPointer, (type, stride, pointer), (F, "glIndexPointer(0x%x, %p, %p);", type, (void *) stride, (void *) pointer));
 }
 
 KEYWORD1 void KEYWORD2 NAME(InterleavedArrays)(GLenum format, GLsizei stride, const GLvoid * pointer)
 {
-   DISPATCH(InterleavedArrays, (format, stride, pointer), (F, "glInterleavedArrays(0x%x, %p, %p);\n", format, (void *) stride, (void *) pointer));
+   DISPATCH(InterleavedArrays, (format, stride, pointer), (F, "glInterleavedArrays(0x%x, %p, %p);", format, (void *) stride, (void *) pointer));
 }
 
 KEYWORD1 void KEYWORD2 NAME(NormalPointer)(GLenum type, GLsizei stride, const GLvoid * pointer)
 {
-   DISPATCH(NormalPointer, (type, stride, pointer), (F, "glNormalPointer(0x%x, %p, %p);\n", type, (void *) stride, (void *) pointer));
+   DISPATCH(NormalPointer, (type, stride, pointer), (F, "glNormalPointer(0x%x, %p, %p);", type, (void *) stride, (void *) pointer));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
 {
-   DISPATCH(TexCoordPointer, (size, type, stride, pointer), (F, "glTexCoordPointer(%d, 0x%x, %p, %p);\n", size, type, (void *) stride, (void *) pointer));
+   DISPATCH(TexCoordPointer, (size, type, stride, pointer), (F, "glTexCoordPointer(%d, 0x%x, %p, %p);", size, type, (void *) stride, (void *) pointer));
 }
 
 KEYWORD1 void KEYWORD2 NAME(VertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
 {
-   DISPATCH(VertexPointer, (size, type, stride, pointer), (F, "glVertexPointer(%d, 0x%x, %p, %p);\n", size, type, (void *) stride, (void *) pointer));
+   DISPATCH(VertexPointer, (size, type, stride, pointer), (F, "glVertexPointer(%d, 0x%x, %p, %p);", size, type, (void *) stride, (void *) pointer));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PolygonOffset)(GLfloat factor, GLfloat units)
 {
-   DISPATCH(PolygonOffset, (factor, units), (F, "glPolygonOffset(%f, %f);\n", factor, units));
+   DISPATCH(PolygonOffset, (factor, units), (F, "glPolygonOffset(%f, %f);", factor, units));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
 {
-   DISPATCH(CopyTexImage1D, (target, level, internalformat, x, y, width, border), (F, "glCopyTexImage1D(0x%x, %d, 0x%x, %d, %d, %p, %d);\n", target, level, internalformat, x, y, (void *) width, border));
+   DISPATCH(CopyTexImage1D, (target, level, internalformat, x, y, width, border), (F, "glCopyTexImage1D(0x%x, %d, 0x%x, %d, %d, %p, %d);", target, level, internalformat, x, y, (void *) width, border));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
 {
-   DISPATCH(CopyTexImage2D, (target, level, internalformat, x, y, width, height, border), (F, "glCopyTexImage2D(0x%x, %d, 0x%x, %d, %d, %p, %p, %d);\n", target, level, internalformat, x, y, (void *) width, (void *) height, border));
+   DISPATCH(CopyTexImage2D, (target, level, internalformat, x, y, width, height, border), (F, "glCopyTexImage2D(0x%x, %d, 0x%x, %d, %d, %p, %p, %d);", target, level, internalformat, x, y, (void *) width, (void *) height, border));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
 {
-   DISPATCH(CopyTexSubImage1D, (target, level, xoffset, x, y, width), (F, "glCopyTexSubImage1D(0x%x, %d, %d, %d, %d, %p);\n", target, level, xoffset, x, y, (void *) width));
+   DISPATCH(CopyTexSubImage1D, (target, level, xoffset, x, y, width), (F, "glCopyTexSubImage1D(0x%x, %d, %d, %d, %d, %p);", target, level, xoffset, x, y, (void *) width));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
 {
-   DISPATCH(CopyTexSubImage2D, (target, level, xoffset, yoffset, x, y, width, height), (F, "glCopyTexSubImage2D(0x%x, %d, %d, %d, %d, %d, %p, %p);\n", target, level, xoffset, yoffset, x, y, (void *) width, (void *) height));
+   DISPATCH(CopyTexSubImage2D, (target, level, xoffset, yoffset, x, y, width, height), (F, "glCopyTexSubImage2D(0x%x, %d, %d, %d, %d, %d, %p, %p);", target, level, xoffset, yoffset, x, y, (void *) width, (void *) height));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels)
 {
-   DISPATCH(TexSubImage1D, (target, level, xoffset, width, format, type, pixels), (F, "glTexSubImage1D(0x%x, %d, %d, %p, 0x%x, 0x%x, %p);\n", target, level, xoffset, (void *) width, format, type, (void *) pixels));
+   DISPATCH(TexSubImage1D, (target, level, xoffset, width, format, type, pixels), (F, "glTexSubImage1D(0x%x, %d, %d, %p, 0x%x, 0x%x, %p);", target, level, xoffset, (void *) width, format, type, (void *) pixels));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)
 {
-   DISPATCH(TexSubImage2D, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, "glTexSubImage2D(0x%x, %d, %d, %d, %p, %p, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, (void *) width, (void *) height, format, type, (void *) pixels));
+   DISPATCH(TexSubImage2D, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, "glTexSubImage2D(0x%x, %d, %d, %d, %p, %p, 0x%x, 0x%x, %p);", target, level, xoffset, yoffset, (void *) width, (void *) height, format, type, (void *) pixels));
 }
 
 KEYWORD1 GLboolean KEYWORD2 NAME(AreTexturesResident)(GLsizei n, const GLuint * textures, GLboolean * residences)
 {
-   RETURN_DISPATCH(AreTexturesResident, (n, textures, residences), (F, "glAreTexturesResident(%p, %p, %p);\n", (void *) n, (void *) textures, (void *) residences));
+   RETURN_DISPATCH(AreTexturesResident, (n, textures, residences), (F, "glAreTexturesResident(%p, %p, %p);", (void *) n, (void *) textures, (void *) residences));
 }
 
 KEYWORD1 void KEYWORD2 NAME(BindTexture)(GLenum target, GLuint texture)
 {
-   DISPATCH(BindTexture, (target, texture), (F, "glBindTexture(0x%x, %d);\n", target, texture));
+   DISPATCH(BindTexture, (target, texture), (F, "glBindTexture(0x%x, %d);", target, texture));
 }
 
 KEYWORD1 void KEYWORD2 NAME(DeleteTextures)(GLsizei n, const GLuint * textures)
 {
-   DISPATCH(DeleteTextures, (n, textures), (F, "glDeleteTextures(%p, %p);\n", (void *) n, (void *) textures));
+   DISPATCH(DeleteTextures, (n, textures), (F, "glDeleteTextures(%p, %p);", (void *) n, (void *) textures));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GenTextures)(GLsizei n, GLuint * textures)
 {
-   DISPATCH(GenTextures, (n, textures), (F, "glGenTextures(%p, %p);\n", (void *) n, (void *) textures));
+   DISPATCH(GenTextures, (n, textures), (F, "glGenTextures(%p, %p);", (void *) n, (void *) textures));
 }
 
 KEYWORD1 GLboolean KEYWORD2 NAME(IsTexture)(GLuint texture)
 {
-   RETURN_DISPATCH(IsTexture, (texture), (F, "glIsTexture(%d);\n", texture));
+   RETURN_DISPATCH(IsTexture, (texture), (F, "glIsTexture(%d);", texture));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PrioritizeTextures)(GLsizei n, const GLuint * textures, const GLclampf * priorities)
 {
-   DISPATCH(PrioritizeTextures, (n, textures, priorities), (F, "glPrioritizeTextures(%p, %p, %p);\n", (void *) n, (void *) textures, (void *) priorities));
+   DISPATCH(PrioritizeTextures, (n, textures, priorities), (F, "glPrioritizeTextures(%p, %p, %p);", (void *) n, (void *) textures, (void *) priorities));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Indexub)(GLubyte c)
 {
-   DISPATCH(Indexub, (c), (F, "glIndexub(%d);\n", c));
+   DISPATCH(Indexub, (c), (F, "glIndexub(%d);", c));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Indexubv)(const GLubyte * c)
 {
-   DISPATCH(Indexubv, (c), (F, "glIndexubv(%p);\n", (void *) c));
+   DISPATCH(Indexubv, (c), (F, "glIndexubv(%p);", (void *) c));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PopClientAttrib)(void)
 {
-   DISPATCH(PopClientAttrib, (), (F, "glPopClientAttrib();\n"));
+   DISPATCH(PopClientAttrib, (), (F, "glPopClientAttrib();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PushClientAttrib)(GLbitfield mask)
 {
-   DISPATCH(PushClientAttrib, (mask), (F, "glPushClientAttrib(%p);\n", (void *) mask));
+   DISPATCH(PushClientAttrib, (mask), (F, "glPushClientAttrib(%p);", (void *) mask));
 }
 
 KEYWORD1 void KEYWORD2 NAME(BlendColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
 {
-   DISPATCH(BlendColor, (red, green, blue, alpha), (F, "glBlendColor(%f, %f, %f, %f);\n", red, green, blue, alpha));
+   DISPATCH(BlendColor, (red, green, blue, alpha), (F, "glBlendColor(%f, %f, %f, %f);", red, green, blue, alpha));
 }
 
 KEYWORD1 void KEYWORD2 NAME(BlendEquation)(GLenum mode)
 {
-   DISPATCH(BlendEquation, (mode), (F, "glBlendEquation(0x%x);\n", mode));
+   DISPATCH(BlendEquation, (mode), (F, "glBlendEquation(0x%x);", mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(DrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)
 {
-   DISPATCH(DrawRangeElements, (mode, start, end, count, type, indices), (F, "glDrawRangeElements(0x%x, %d, %d, %p, 0x%x, %p);\n", mode, start, end, (void *) count, type, (void *) indices));
+   DISPATCH(DrawRangeElements, (mode, start, end, count, type, indices), (F, "glDrawRangeElements(0x%x, %d, %d, %p, 0x%x, %p);", mode, start, end, (void *) count, type, (void *) indices));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ColorTable)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
 {
-   DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTable(0x%x, 0x%x, %p, 0x%x, 0x%x, %p);\n", target, internalformat, (void *) width, format, type, (void *) table));
+   DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTable(0x%x, 0x%x, %p, 0x%x, 0x%x, %p);", target, internalformat, (void *) width, format, type, (void *) table));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ColorTableParameterfv)(GLenum target, GLenum pname, const GLfloat * params)
 {
-   DISPATCH(ColorTableParameterfv, (target, pname, params), (F, "glColorTableParameterfv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(ColorTableParameterfv, (target, pname, params), (F, "glColorTableParameterfv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ColorTableParameteriv)(GLenum target, GLenum pname, const GLint * params)
 {
-   DISPATCH(ColorTableParameteriv, (target, pname, params), (F, "glColorTableParameteriv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(ColorTableParameteriv, (target, pname, params), (F, "glColorTableParameteriv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyColorTable)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
 {
-   DISPATCH(CopyColorTable, (target, internalformat, x, y, width), (F, "glCopyColorTable(0x%x, 0x%x, %d, %d, %p);\n", target, internalformat, x, y, (void *) width));
+   DISPATCH(CopyColorTable, (target, internalformat, x, y, width), (F, "glCopyColorTable(0x%x, 0x%x, %d, %d, %p);", target, internalformat, x, y, (void *) width));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetColorTable)(GLenum target, GLenum format, GLenum type, GLvoid * table)
 {
-   DISPATCH(GetColorTable, (target, format, type, table), (F, "glGetColorTable(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (void *) table));
+   DISPATCH(GetColorTable, (target, format, type, table), (F, "glGetColorTable(0x%x, 0x%x, 0x%x, %p);", target, format, type, (void *) table));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterfv)(GLenum target, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetColorTableParameterfv, (target, pname, params), (F, "glGetColorTableParameterfv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetColorTableParameterfv, (target, pname, params), (F, "glGetColorTableParameterfv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetColorTableParameteriv)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(GetColorTableParameteriv, (target, pname, params), (F, "glGetColorTableParameteriv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetColorTableParameteriv, (target, pname, params), (F, "glGetColorTableParameteriv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ColorSubTable)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data)
 {
-   DISPATCH(ColorSubTable, (target, start, count, format, type, data), (F, "glColorSubTable(0x%x, %p, %p, 0x%x, 0x%x, %p);\n", target, (void *) start, (void *) count, format, type, (void *) data));
+   DISPATCH(ColorSubTable, (target, start, count, format, type, data), (F, "glColorSubTable(0x%x, %p, %p, 0x%x, 0x%x, %p);", target, (void *) start, (void *) count, format, type, (void *) data));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyColorSubTable)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
 {
-   DISPATCH(CopyColorSubTable, (target, start, x, y, width), (F, "glCopyColorSubTable(0x%x, %p, %d, %d, %p);\n", target, (void *) start, x, y, (void *) width));
+   DISPATCH(CopyColorSubTable, (target, start, x, y, width), (F, "glCopyColorSubTable(0x%x, %p, %d, %d, %p);", target, (void *) start, x, y, (void *) width));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter1D)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image)
 {
-   DISPATCH(ConvolutionFilter1D, (target, internalformat, width, format, type, image), (F, "glConvolutionFilter1D(0x%x, 0x%x, %p, 0x%x, 0x%x, %p);\n", target, internalformat, (void *) width, format, type, (void *) image));
+   DISPATCH(ConvolutionFilter1D, (target, internalformat, width, format, type, image), (F, "glConvolutionFilter1D(0x%x, 0x%x, %p, 0x%x, 0x%x, %p);", target, internalformat, (void *) width, format, type, (void *) image));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image)
 {
-   DISPATCH(ConvolutionFilter2D, (target, internalformat, width, height, format, type, image), (F, "glConvolutionFilter2D(0x%x, 0x%x, %p, %p, 0x%x, 0x%x, %p);\n", target, internalformat, (void *) width, (void *) height, format, type, (void *) image));
+   DISPATCH(ConvolutionFilter2D, (target, internalformat, width, height, format, type, image), (F, "glConvolutionFilter2D(0x%x, 0x%x, %p, %p, 0x%x, 0x%x, %p);", target, internalformat, (void *) width, (void *) height, format, type, (void *) image));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterf)(GLenum target, GLenum pname, GLfloat params)
 {
-   DISPATCH(ConvolutionParameterf, (target, pname, params), (F, "glConvolutionParameterf(0x%x, 0x%x, %f);\n", target, pname, params));
+   DISPATCH(ConvolutionParameterf, (target, pname, params), (F, "glConvolutionParameterf(0x%x, 0x%x, %f);", target, pname, params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfv)(GLenum target, GLenum pname, const GLfloat * params)
 {
-   DISPATCH(ConvolutionParameterfv, (target, pname, params), (F, "glConvolutionParameterfv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(ConvolutionParameterfv, (target, pname, params), (F, "glConvolutionParameterfv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ConvolutionParameteri)(GLenum target, GLenum pname, GLint params)
 {
-   DISPATCH(ConvolutionParameteri, (target, pname, params), (F, "glConvolutionParameteri(0x%x, 0x%x, %d);\n", target, pname, params));
+   DISPATCH(ConvolutionParameteri, (target, pname, params), (F, "glConvolutionParameteri(0x%x, 0x%x, %d);", target, pname, params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ConvolutionParameteriv)(GLenum target, GLenum pname, const GLint * params)
 {
-   DISPATCH(ConvolutionParameteriv, (target, pname, params), (F, "glConvolutionParameteriv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(ConvolutionParameteriv, (target, pname, params), (F, "glConvolutionParameteriv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter1D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
 {
-   DISPATCH(CopyConvolutionFilter1D, (target, internalformat, x, y, width), (F, "glCopyConvolutionFilter1D(0x%x, 0x%x, %d, %d, %p);\n", target, internalformat, x, y, (void *) width));
+   DISPATCH(CopyConvolutionFilter1D, (target, internalformat, x, y, width), (F, "glCopyConvolutionFilter1D(0x%x, 0x%x, %d, %d, %p);", target, internalformat, x, y, (void *) width));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter2D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
 {
-   DISPATCH(CopyConvolutionFilter2D, (target, internalformat, x, y, width, height), (F, "glCopyConvolutionFilter2D(0x%x, 0x%x, %d, %d, %p, %p);\n", target, internalformat, x, y, (void *) width, (void *) height));
+   DISPATCH(CopyConvolutionFilter2D, (target, internalformat, x, y, width, height), (F, "glCopyConvolutionFilter2D(0x%x, 0x%x, %d, %d, %p, %p);", target, internalformat, x, y, (void *) width, (void *) height));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetConvolutionFilter)(GLenum target, GLenum format, GLenum type, GLvoid * image)
 {
-   DISPATCH(GetConvolutionFilter, (target, format, type, image), (F, "glGetConvolutionFilter(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (void *) image));
+   DISPATCH(GetConvolutionFilter, (target, format, type, image), (F, "glGetConvolutionFilter(0x%x, 0x%x, 0x%x, %p);", target, format, type, (void *) image));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetConvolutionParameterfv)(GLenum target, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetConvolutionParameterfv, (target, pname, params), (F, "glGetConvolutionParameterfv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetConvolutionParameterfv, (target, pname, params), (F, "glGetConvolutionParameterfv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetConvolutionParameteriv)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(GetConvolutionParameteriv, (target, pname, params), (F, "glGetConvolutionParameteriv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetConvolutionParameteriv, (target, pname, params), (F, "glGetConvolutionParameteriv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetSeparableFilter)(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span)
 {
-   DISPATCH(GetSeparableFilter, (target, format, type, row, column, span), (F, "glGetSeparableFilter(0x%x, 0x%x, 0x%x, %p, %p, %p);\n", target, format, type, (void *) row, (void *) column, (void *) span));
+   DISPATCH(GetSeparableFilter, (target, format, type, row, column, span), (F, "glGetSeparableFilter(0x%x, 0x%x, 0x%x, %p, %p, %p);", target, format, type, (void *) row, (void *) column, (void *) span));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SeparableFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column)
 {
-   DISPATCH(SeparableFilter2D, (target, internalformat, width, height, format, type, row, column), (F, "glSeparableFilter2D(0x%x, 0x%x, %p, %p, 0x%x, 0x%x, %p, %p);\n", target, internalformat, (void *) width, (void *) height, format, type, (void *) row, (void *) column));
+   DISPATCH(SeparableFilter2D, (target, internalformat, width, height, format, type, row, column), (F, "glSeparableFilter2D(0x%x, 0x%x, %p, %p, 0x%x, 0x%x, %p, %p);", target, internalformat, (void *) width, (void *) height, format, type, (void *) row, (void *) column));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetHistogram)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
 {
-   DISPATCH(GetHistogram, (target, reset, format, type, values), (F, "glGetHistogram(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (void *) values));
+   DISPATCH(GetHistogram, (target, reset, format, type, values), (F, "glGetHistogram(0x%x, %d, 0x%x, 0x%x, %p);", target, reset, format, type, (void *) values));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetHistogramParameterfv)(GLenum target, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetHistogramParameterfv, (target, pname, params), (F, "glGetHistogramParameterfv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetHistogramParameterfv, (target, pname, params), (F, "glGetHistogramParameterfv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetHistogramParameteriv)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(GetHistogramParameteriv, (target, pname, params), (F, "glGetHistogramParameteriv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetHistogramParameteriv, (target, pname, params), (F, "glGetHistogramParameteriv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetMinmax)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
 {
-   DISPATCH(GetMinmax, (target, reset, format, type, values), (F, "glGetMinmax(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (void *) values));
+   DISPATCH(GetMinmax, (target, reset, format, type, values), (F, "glGetMinmax(0x%x, %d, 0x%x, 0x%x, %p);", target, reset, format, type, (void *) values));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetMinmaxParameterfv)(GLenum target, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetMinmaxParameterfv, (target, pname, params), (F, "glGetMinmaxParameterfv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetMinmaxParameterfv, (target, pname, params), (F, "glGetMinmaxParameterfv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetMinmaxParameteriv)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(GetMinmaxParameteriv, (target, pname, params), (F, "glGetMinmaxParameteriv(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetMinmaxParameteriv, (target, pname, params), (F, "glGetMinmaxParameteriv(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Histogram)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)
 {
-   DISPATCH(Histogram, (target, width, internalformat, sink), (F, "glHistogram(0x%x, %p, 0x%x, %d);\n", target, (void *) width, internalformat, sink));
+   DISPATCH(Histogram, (target, width, internalformat, sink), (F, "glHistogram(0x%x, %p, 0x%x, %d);", target, (void *) width, internalformat, sink));
 }
 
 KEYWORD1 void KEYWORD2 NAME(Minmax)(GLenum target, GLenum internalformat, GLboolean sink)
 {
-   DISPATCH(Minmax, (target, internalformat, sink), (F, "glMinmax(0x%x, 0x%x, %d);\n", target, internalformat, sink));
+   DISPATCH(Minmax, (target, internalformat, sink), (F, "glMinmax(0x%x, 0x%x, %d);", target, internalformat, sink));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ResetHistogram)(GLenum target)
 {
-   DISPATCH(ResetHistogram, (target), (F, "glResetHistogram(0x%x);\n", target));
+   DISPATCH(ResetHistogram, (target), (F, "glResetHistogram(0x%x);", target));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ResetMinmax)(GLenum target)
 {
-   DISPATCH(ResetMinmax, (target), (F, "glResetMinmax(0x%x);\n", target));
+   DISPATCH(ResetMinmax, (target), (F, "glResetMinmax(0x%x);", target));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
 {
-   DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3D(0x%x, %d, %d, %p, %p, %p, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, (void *) width, (void *) height, (void *) depth, border, format, type, (void *) pixels));
+   DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3D(0x%x, %d, %d, %p, %p, %p, %d, 0x%x, 0x%x, %p);", target, level, internalformat, (void *) width, (void *) height, (void *) depth, border, format, type, (void *) pixels));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels)
 {
-   DISPATCH(TexSubImage3D, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), (F, "glTexSubImage3D(0x%x, %d, %d, %d, %d, %p, %p, %p, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, zoffset, (void *) width, (void *) height, (void *) depth, format, type, (void *) pixels));
+   DISPATCH(TexSubImage3D, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), (F, "glTexSubImage3D(0x%x, %d, %d, %d, %d, %p, %p, %p, 0x%x, 0x%x, %p);", target, level, xoffset, yoffset, zoffset, (void *) width, (void *) height, (void *) depth, format, type, (void *) pixels));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
 {
-   DISPATCH(CopyTexSubImage3D, (target, level, xoffset, yoffset, zoffset, x, y, width, height), (F, "glCopyTexSubImage3D(0x%x, %d, %d, %d, %d, %d, %d, %p, %p);\n", target, level, xoffset, yoffset, zoffset, x, y, (void *) width, (void *) height));
+   DISPATCH(CopyTexSubImage3D, (target, level, xoffset, yoffset, zoffset, x, y, width, height), (F, "glCopyTexSubImage3D(0x%x, %d, %d, %d, %d, %d, %d, %p, %p);", target, level, xoffset, yoffset, zoffset, x, y, (void *) width, (void *) height));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ActiveTextureARB)(GLenum texture)
 {
-   DISPATCH(ActiveTextureARB, (texture), (F, "glActiveTextureARB(0x%x);\n", texture));
+   DISPATCH(ActiveTextureARB, (texture), (F, "glActiveTextureARB(0x%x);", texture));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ClientActiveTextureARB)(GLenum texture)
 {
-   DISPATCH(ClientActiveTextureARB, (texture), (F, "glClientActiveTextureARB(0x%x);\n", texture));
+   DISPATCH(ClientActiveTextureARB, (texture), (F, "glClientActiveTextureARB(0x%x);", texture));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dARB)(GLenum target, GLdouble s)
 {
-   DISPATCH(MultiTexCoord1dARB, (target, s), (F, "glMultiTexCoord1dARB(0x%x, %f);\n", target, s));
+   DISPATCH(MultiTexCoord1dARB, (target, s), (F, "glMultiTexCoord1dARB(0x%x, %f);", target, s));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dvARB)(GLenum target, const GLdouble * v)
 {
-   DISPATCH(MultiTexCoord1dvARB, (target, v), (F, "glMultiTexCoord1dvARB(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord1dvARB, (target, v), (F, "glMultiTexCoord1dvARB(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fARB)(GLenum target, GLfloat s)
 {
-   DISPATCH(MultiTexCoord1fARB, (target, s), (F, "glMultiTexCoord1fARB(0x%x, %f);\n", target, s));
+   DISPATCH(MultiTexCoord1fARB, (target, s), (F, "glMultiTexCoord1fARB(0x%x, %f);", target, s));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fvARB)(GLenum target, const GLfloat * v)
 {
-   DISPATCH(MultiTexCoord1fvARB, (target, v), (F, "glMultiTexCoord1fvARB(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord1fvARB, (target, v), (F, "glMultiTexCoord1fvARB(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1iARB)(GLenum target, GLint s)
 {
-   DISPATCH(MultiTexCoord1iARB, (target, s), (F, "glMultiTexCoord1iARB(0x%x, %d);\n", target, s));
+   DISPATCH(MultiTexCoord1iARB, (target, s), (F, "glMultiTexCoord1iARB(0x%x, %d);", target, s));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1ivARB)(GLenum target, const GLint * v)
 {
-   DISPATCH(MultiTexCoord1ivARB, (target, v), (F, "glMultiTexCoord1ivARB(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord1ivARB, (target, v), (F, "glMultiTexCoord1ivARB(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1sARB)(GLenum target, GLshort s)
 {
-   DISPATCH(MultiTexCoord1sARB, (target, s), (F, "glMultiTexCoord1sARB(0x%x, %d);\n", target, s));
+   DISPATCH(MultiTexCoord1sARB, (target, s), (F, "glMultiTexCoord1sARB(0x%x, %d);", target, s));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1svARB)(GLenum target, const GLshort * v)
 {
-   DISPATCH(MultiTexCoord1svARB, (target, v), (F, "glMultiTexCoord1svARB(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord1svARB, (target, v), (F, "glMultiTexCoord1svARB(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dARB)(GLenum target, GLdouble s, GLdouble t)
 {
-   DISPATCH(MultiTexCoord2dARB, (target, s, t), (F, "glMultiTexCoord2dARB(0x%x, %f, %f);\n", target, s, t));
+   DISPATCH(MultiTexCoord2dARB, (target, s, t), (F, "glMultiTexCoord2dARB(0x%x, %f, %f);", target, s, t));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dvARB)(GLenum target, const GLdouble * v)
 {
-   DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dvARB(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dvARB(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fARB)(GLenum target, GLfloat s, GLfloat t)
 {
-   DISPATCH(MultiTexCoord2fARB, (target, s, t), (F, "glMultiTexCoord2fARB(0x%x, %f, %f);\n", target, s, t));
+   DISPATCH(MultiTexCoord2fARB, (target, s, t), (F, "glMultiTexCoord2fARB(0x%x, %f, %f);", target, s, t));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fvARB)(GLenum target, const GLfloat * v)
 {
-   DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fvARB(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fvARB(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2iARB)(GLenum target, GLint s, GLint t)
 {
-   DISPATCH(MultiTexCoord2iARB, (target, s, t), (F, "glMultiTexCoord2iARB(0x%x, %d, %d);\n", target, s, t));
+   DISPATCH(MultiTexCoord2iARB, (target, s, t), (F, "glMultiTexCoord2iARB(0x%x, %d, %d);", target, s, t));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2ivARB)(GLenum target, const GLint * v)
 {
-   DISPATCH(MultiTexCoord2ivARB, (target, v), (F, "glMultiTexCoord2ivARB(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord2ivARB, (target, v), (F, "glMultiTexCoord2ivARB(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2sARB)(GLenum target, GLshort s, GLshort t)
 {
-   DISPATCH(MultiTexCoord2sARB, (target, s, t), (F, "glMultiTexCoord2sARB(0x%x, %d, %d);\n", target, s, t));
+   DISPATCH(MultiTexCoord2sARB, (target, s, t), (F, "glMultiTexCoord2sARB(0x%x, %d, %d);", target, s, t));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2svARB)(GLenum target, const GLshort * v)
 {
-   DISPATCH(MultiTexCoord2svARB, (target, v), (F, "glMultiTexCoord2svARB(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord2svARB, (target, v), (F, "glMultiTexCoord2svARB(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r)
 {
-   DISPATCH(MultiTexCoord3dARB, (target, s, t, r), (F, "glMultiTexCoord3dARB(0x%x, %f, %f, %f);\n", target, s, t, r));
+   DISPATCH(MultiTexCoord3dARB, (target, s, t, r), (F, "glMultiTexCoord3dARB(0x%x, %f, %f, %f);", target, s, t, r));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dvARB)(GLenum target, const GLdouble * v)
 {
-   DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dvARB(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dvARB(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r)
 {
-   DISPATCH(MultiTexCoord3fARB, (target, s, t, r), (F, "glMultiTexCoord3fARB(0x%x, %f, %f, %f);\n", target, s, t, r));
+   DISPATCH(MultiTexCoord3fARB, (target, s, t, r), (F, "glMultiTexCoord3fARB(0x%x, %f, %f, %f);", target, s, t, r));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fvARB)(GLenum target, const GLfloat * v)
 {
-   DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fvARB(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fvARB(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3iARB)(GLenum target, GLint s, GLint t, GLint r)
 {
-   DISPATCH(MultiTexCoord3iARB, (target, s, t, r), (F, "glMultiTexCoord3iARB(0x%x, %d, %d, %d);\n", target, s, t, r));
+   DISPATCH(MultiTexCoord3iARB, (target, s, t, r), (F, "glMultiTexCoord3iARB(0x%x, %d, %d, %d);", target, s, t, r));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3ivARB)(GLenum target, const GLint * v)
 {
-   DISPATCH(MultiTexCoord3ivARB, (target, v), (F, "glMultiTexCoord3ivARB(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord3ivARB, (target, v), (F, "glMultiTexCoord3ivARB(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3sARB)(GLenum target, GLshort s, GLshort t, GLshort r)
 {
-   DISPATCH(MultiTexCoord3sARB, (target, s, t, r), (F, "glMultiTexCoord3sARB(0x%x, %d, %d, %d);\n", target, s, t, r));
+   DISPATCH(MultiTexCoord3sARB, (target, s, t, r), (F, "glMultiTexCoord3sARB(0x%x, %d, %d, %d);", target, s, t, r));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3svARB)(GLenum target, const GLshort * v)
 {
-   DISPATCH(MultiTexCoord3svARB, (target, v), (F, "glMultiTexCoord3svARB(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord3svARB, (target, v), (F, "glMultiTexCoord3svARB(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
 {
-   DISPATCH(MultiTexCoord4dARB, (target, s, t, r, q), (F, "glMultiTexCoord4dARB(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
+   DISPATCH(MultiTexCoord4dARB, (target, s, t, r, q), (F, "glMultiTexCoord4dARB(0x%x, %f, %f, %f, %f);", target, s, t, r, q));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dvARB)(GLenum target, const GLdouble * v)
 {
-   DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dvARB(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dvARB(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
 {
-   DISPATCH(MultiTexCoord4fARB, (target, s, t, r, q), (F, "glMultiTexCoord4fARB(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
+   DISPATCH(MultiTexCoord4fARB, (target, s, t, r, q), (F, "glMultiTexCoord4fARB(0x%x, %f, %f, %f, %f);", target, s, t, r, q));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fvARB)(GLenum target, const GLfloat * v)
 {
-   DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fvARB(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fvARB(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4iARB)(GLenum target, GLint s, GLint t, GLint r, GLint q)
 {
-   DISPATCH(MultiTexCoord4iARB, (target, s, t, r, q), (F, "glMultiTexCoord4iARB(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
+   DISPATCH(MultiTexCoord4iARB, (target, s, t, r, q), (F, "glMultiTexCoord4iARB(0x%x, %d, %d, %d, %d);", target, s, t, r, q));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4ivARB)(GLenum target, const GLint * v)
 {
-   DISPATCH(MultiTexCoord4ivARB, (target, v), (F, "glMultiTexCoord4ivARB(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord4ivARB, (target, v), (F, "glMultiTexCoord4ivARB(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4sARB)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
 {
-   DISPATCH(MultiTexCoord4sARB, (target, s, t, r, q), (F, "glMultiTexCoord4sARB(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
+   DISPATCH(MultiTexCoord4sARB, (target, s, t, r, q), (F, "glMultiTexCoord4sARB(0x%x, %d, %d, %d, %d);", target, s, t, r, q));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4svARB)(GLenum target, const GLshort * v)
 {
-   DISPATCH(MultiTexCoord4svARB, (target, v), (F, "glMultiTexCoord4svARB(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord4svARB, (target, v), (F, "glMultiTexCoord4svARB(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixfARB)(const GLfloat * m)
 {
-   DISPATCH(LoadTransposeMatrixfARB, (m), (F, "glLoadTransposeMatrixfARB(%p);\n", (void *) m));
+   DISPATCH(LoadTransposeMatrixfARB, (m), (F, "glLoadTransposeMatrixfARB(%p);", (void *) m));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixdARB)(const GLdouble * m)
 {
-   DISPATCH(LoadTransposeMatrixdARB, (m), (F, "glLoadTransposeMatrixdARB(%p);\n", (void *) m));
+   DISPATCH(LoadTransposeMatrixdARB, (m), (F, "glLoadTransposeMatrixdARB(%p);", (void *) m));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixfARB)(const GLfloat * m)
 {
-   DISPATCH(MultTransposeMatrixfARB, (m), (F, "glMultTransposeMatrixfARB(%p);\n", (void *) m));
+   DISPATCH(MultTransposeMatrixfARB, (m), (F, "glMultTransposeMatrixfARB(%p);", (void *) m));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixdARB)(const GLdouble * m)
 {
-   DISPATCH(MultTransposeMatrixdARB, (m), (F, "glMultTransposeMatrixdARB(%p);\n", (void *) m));
+   DISPATCH(MultTransposeMatrixdARB, (m), (F, "glMultTransposeMatrixdARB(%p);", (void *) m));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SampleCoverageARB)(GLclampf value, GLboolean invert)
 {
-   DISPATCH(SampleCoverageARB, (value, invert), (F, "glSampleCoverageARB(%f, %d);\n", value, invert));
+   DISPATCH(SampleCoverageARB, (value, invert), (F, "glSampleCoverageARB(%f, %d);", value, invert));
 }
 
 KEYWORD1 void KEYWORD2 NAME(__unused413)(void)
 {
-   DISPATCH(__unused413, (), (F, "gl__unused413();\n"));
+   DISPATCH(__unused413, (), (F, "gl__unused413();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(CompressedTexImage3DARB, (target, level, internalformat, width, height, depth, border, imageSize, data), (F, "glCompressedTexImage3DARB(0x%x, %d, 0x%x, %p, %p, %p, %d, %p, %p);\n", target, level, internalformat, (void *) width, (void *) height, (void *) depth, border, (void *) imageSize, (void *) data));
+   DISPATCH(CompressedTexImage3DARB, (target, level, internalformat, width, height, depth, border, imageSize, data), (F, "glCompressedTexImage3DARB(0x%x, %d, 0x%x, %p, %p, %p, %d, %p, %p);", target, level, internalformat, (void *) width, (void *) height, (void *) depth, border, (void *) imageSize, (void *) data));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(CompressedTexImage2DARB, (target, level, internalformat, width, height, border, imageSize, data), (F, "glCompressedTexImage2DARB(0x%x, %d, 0x%x, %p, %p, %d, %p, %p);\n", target, level, internalformat, (void *) width, (void *) height, border, (void *) imageSize, (void *) data));
+   DISPATCH(CompressedTexImage2DARB, (target, level, internalformat, width, height, border, imageSize, data), (F, "glCompressedTexImage2DARB(0x%x, %d, 0x%x, %p, %p, %d, %p, %p);", target, level, internalformat, (void *) width, (void *) height, border, (void *) imageSize, (void *) data));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(CompressedTexImage1DARB, (target, level, internalformat, width, border, imageSize, data), (F, "glCompressedTexImage1DARB(0x%x, %d, 0x%x, %p, %d, %p, %p);\n", target, level, internalformat, (void *) width, border, (void *) imageSize, (void *) data));
+   DISPATCH(CompressedTexImage1DARB, (target, level, internalformat, width, border, imageSize, data), (F, "glCompressedTexImage1DARB(0x%x, %d, 0x%x, %p, %d, %p, %p);", target, level, internalformat, (void *) width, border, (void *) imageSize, (void *) data));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(CompressedTexSubImage3DARB, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), (F, "glCompressedTexSubImage3DARB(0x%x, %d, %d, %d, %d, %p, %p, %p, 0x%x, %p, %p);\n", target, level, xoffset, yoffset, zoffset, (void *) width, (void *) height, (void *) depth, format, (void *) imageSize, (void *) data));
+   DISPATCH(CompressedTexSubImage3DARB, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), (F, "glCompressedTexSubImage3DARB(0x%x, %d, %d, %d, %d, %p, %p, %p, 0x%x, %p, %p);", target, level, xoffset, yoffset, zoffset, (void *) width, (void *) height, (void *) depth, format, (void *) imageSize, (void *) data));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(CompressedTexSubImage2DARB, (target, level, xoffset, yoffset, width, height, format, imageSize, data), (F, "glCompressedTexSubImage2DARB(0x%x, %d, %d, %d, %p, %p, 0x%x, %p, %p);\n", target, level, xoffset, yoffset, (void *) width, (void *) height, format, (void *) imageSize, (void *) data));
+   DISPATCH(CompressedTexSubImage2DARB, (target, level, xoffset, yoffset, width, height, format, imageSize, data), (F, "glCompressedTexSubImage2DARB(0x%x, %d, %d, %d, %p, %p, 0x%x, %p, %p);", target, level, xoffset, yoffset, (void *) width, (void *) height, format, (void *) imageSize, (void *) data));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(CompressedTexSubImage1DARB, (target, level, xoffset, width, format, imageSize, data), (F, "glCompressedTexSubImage1DARB(0x%x, %d, %d, %p, 0x%x, %p, %p);\n", target, level, xoffset, (void *) width, format, (void *) imageSize, (void *) data));
+   DISPATCH(CompressedTexSubImage1DARB, (target, level, xoffset, width, format, imageSize, data), (F, "glCompressedTexSubImage1DARB(0x%x, %d, %d, %p, 0x%x, %p, %p);", target, level, xoffset, (void *) width, format, (void *) imageSize, (void *) data));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImageARB)(GLenum target, GLint level, GLvoid * img)
 {
-   DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImageARB(0x%x, %d, %p);\n", target, level, (void *) img));
+   DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImageARB(0x%x, %d, %p);", target, level, (void *) img));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ActiveTexture)(GLenum texture)
 {
-   DISPATCH(ActiveTextureARB, (texture), (F, "glActiveTexture(0x%x);\n", texture));
+   DISPATCH(ActiveTextureARB, (texture), (F, "glActiveTexture(0x%x);", texture));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ClientActiveTexture)(GLenum texture)
 {
-   DISPATCH(ClientActiveTextureARB, (texture), (F, "glClientActiveTexture(0x%x);\n", texture));
+   DISPATCH(ClientActiveTextureARB, (texture), (F, "glClientActiveTexture(0x%x);", texture));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1d)(GLenum target, GLdouble s)
 {
-   DISPATCH(MultiTexCoord1dARB, (target, s), (F, "glMultiTexCoord1d(0x%x, %f);\n", target, s));
+   DISPATCH(MultiTexCoord1dARB, (target, s), (F, "glMultiTexCoord1d(0x%x, %f);", target, s));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dv)(GLenum target, const GLdouble * v)
 {
-   DISPATCH(MultiTexCoord1dvARB, (target, v), (F, "glMultiTexCoord1dv(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord1dvARB, (target, v), (F, "glMultiTexCoord1dv(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1f)(GLenum target, GLfloat s)
 {
-   DISPATCH(MultiTexCoord1fARB, (target, s), (F, "glMultiTexCoord1f(0x%x, %f);\n", target, s));
+   DISPATCH(MultiTexCoord1fARB, (target, s), (F, "glMultiTexCoord1f(0x%x, %f);", target, s));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fv)(GLenum target, const GLfloat * v)
 {
-   DISPATCH(MultiTexCoord1fvARB, (target, v), (F, "glMultiTexCoord1fv(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord1fvARB, (target, v), (F, "glMultiTexCoord1fv(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1i)(GLenum target, GLint s)
 {
-   DISPATCH(MultiTexCoord1iARB, (target, s), (F, "glMultiTexCoord1i(0x%x, %d);\n", target, s));
+   DISPATCH(MultiTexCoord1iARB, (target, s), (F, "glMultiTexCoord1i(0x%x, %d);", target, s));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1iv)(GLenum target, const GLint * v)
 {
-   DISPATCH(MultiTexCoord1ivARB, (target, v), (F, "glMultiTexCoord1iv(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord1ivARB, (target, v), (F, "glMultiTexCoord1iv(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1s)(GLenum target, GLshort s)
 {
-   DISPATCH(MultiTexCoord1sARB, (target, s), (F, "glMultiTexCoord1s(0x%x, %d);\n", target, s));
+   DISPATCH(MultiTexCoord1sARB, (target, s), (F, "glMultiTexCoord1s(0x%x, %d);", target, s));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1sv)(GLenum target, const GLshort * v)
 {
-   DISPATCH(MultiTexCoord1svARB, (target, v), (F, "glMultiTexCoord1sv(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord1svARB, (target, v), (F, "glMultiTexCoord1sv(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t)
 {
-   DISPATCH(MultiTexCoord2dARB, (target, s, t), (F, "glMultiTexCoord2d(0x%x, %f, %f);\n", target, s, t));
+   DISPATCH(MultiTexCoord2dARB, (target, s, t), (F, "glMultiTexCoord2d(0x%x, %f, %f);", target, s, t));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dv)(GLenum target, const GLdouble * v)
 {
-   DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dv(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dv(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2f)(GLenum target, GLfloat s, GLfloat t)
 {
-   DISPATCH(MultiTexCoord2fARB, (target, s, t), (F, "glMultiTexCoord2f(0x%x, %f, %f);\n", target, s, t));
+   DISPATCH(MultiTexCoord2fARB, (target, s, t), (F, "glMultiTexCoord2f(0x%x, %f, %f);", target, s, t));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fv)(GLenum target, const GLfloat * v)
 {
-   DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fv(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fv(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2i)(GLenum target, GLint s, GLint t)
 {
-   DISPATCH(MultiTexCoord2iARB, (target, s, t), (F, "glMultiTexCoord2i(0x%x, %d, %d);\n", target, s, t));
+   DISPATCH(MultiTexCoord2iARB, (target, s, t), (F, "glMultiTexCoord2i(0x%x, %d, %d);", target, s, t));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2iv)(GLenum target, const GLint * v)
 {
-   DISPATCH(MultiTexCoord2ivARB, (target, v), (F, "glMultiTexCoord2iv(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord2ivARB, (target, v), (F, "glMultiTexCoord2iv(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2s)(GLenum target, GLshort s, GLshort t)
 {
-   DISPATCH(MultiTexCoord2sARB, (target, s, t), (F, "glMultiTexCoord2s(0x%x, %d, %d);\n", target, s, t));
+   DISPATCH(MultiTexCoord2sARB, (target, s, t), (F, "glMultiTexCoord2s(0x%x, %d, %d);", target, s, t));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2sv)(GLenum target, const GLshort * v)
 {
-   DISPATCH(MultiTexCoord2svARB, (target, v), (F, "glMultiTexCoord2sv(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord2svARB, (target, v), (F, "glMultiTexCoord2sv(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r)
 {
-   DISPATCH(MultiTexCoord3dARB, (target, s, t, r), (F, "glMultiTexCoord3d(0x%x, %f, %f, %f);\n", target, s, t, r));
+   DISPATCH(MultiTexCoord3dARB, (target, s, t, r), (F, "glMultiTexCoord3d(0x%x, %f, %f, %f);", target, s, t, r));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dv)(GLenum target, const GLdouble * v)
 {
-   DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dv(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dv(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3f)(GLenum target, GLfloat s, GLfloat t, GLfloat r)
 {
-   DISPATCH(MultiTexCoord3fARB, (target, s, t, r), (F, "glMultiTexCoord3f(0x%x, %f, %f, %f);\n", target, s, t, r));
+   DISPATCH(MultiTexCoord3fARB, (target, s, t, r), (F, "glMultiTexCoord3f(0x%x, %f, %f, %f);", target, s, t, r));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fv)(GLenum target, const GLfloat * v)
 {
-   DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fv(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fv(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r)
 {
-   DISPATCH(MultiTexCoord3iARB, (target, s, t, r), (F, "glMultiTexCoord3i(0x%x, %d, %d, %d);\n", target, s, t, r));
+   DISPATCH(MultiTexCoord3iARB, (target, s, t, r), (F, "glMultiTexCoord3i(0x%x, %d, %d, %d);", target, s, t, r));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3iv)(GLenum target, const GLint * v)
 {
-   DISPATCH(MultiTexCoord3ivARB, (target, v), (F, "glMultiTexCoord3iv(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord3ivARB, (target, v), (F, "glMultiTexCoord3iv(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r)
 {
-   DISPATCH(MultiTexCoord3sARB, (target, s, t, r), (F, "glMultiTexCoord3s(0x%x, %d, %d, %d);\n", target, s, t, r));
+   DISPATCH(MultiTexCoord3sARB, (target, s, t, r), (F, "glMultiTexCoord3s(0x%x, %d, %d, %d);", target, s, t, r));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3sv)(GLenum target, const GLshort * v)
 {
-   DISPATCH(MultiTexCoord3svARB, (target, v), (F, "glMultiTexCoord3sv(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord3svARB, (target, v), (F, "glMultiTexCoord3sv(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
 {
-   DISPATCH(MultiTexCoord4dARB, (target, s, t, r, q), (F, "glMultiTexCoord4d(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
+   DISPATCH(MultiTexCoord4dARB, (target, s, t, r, q), (F, "glMultiTexCoord4d(0x%x, %f, %f, %f, %f);", target, s, t, r, q));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dv)(GLenum target, const GLdouble * v)
 {
-   DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dv(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dv(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
 {
-   DISPATCH(MultiTexCoord4fARB, (target, s, t, r, q), (F, "glMultiTexCoord4f(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
+   DISPATCH(MultiTexCoord4fARB, (target, s, t, r, q), (F, "glMultiTexCoord4f(0x%x, %f, %f, %f, %f);", target, s, t, r, q));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fv)(GLenum target, const GLfloat * v)
 {
-   DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fv(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fv(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q)
 {
-   DISPATCH(MultiTexCoord4iARB, (target, s, t, r, q), (F, "glMultiTexCoord4i(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
+   DISPATCH(MultiTexCoord4iARB, (target, s, t, r, q), (F, "glMultiTexCoord4i(0x%x, %d, %d, %d, %d);", target, s, t, r, q));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4iv)(GLenum target, const GLint * v)
 {
-   DISPATCH(MultiTexCoord4ivARB, (target, v), (F, "glMultiTexCoord4iv(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord4ivARB, (target, v), (F, "glMultiTexCoord4iv(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
 {
-   DISPATCH(MultiTexCoord4sARB, (target, s, t, r, q), (F, "glMultiTexCoord4s(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
+   DISPATCH(MultiTexCoord4sARB, (target, s, t, r, q), (F, "glMultiTexCoord4s(0x%x, %d, %d, %d, %d);", target, s, t, r, q));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4sv)(GLenum target, const GLshort * v)
 {
-   DISPATCH(MultiTexCoord4svARB, (target, v), (F, "glMultiTexCoord4sv(0x%x, %p);\n", target, (void *) v));
+   DISPATCH(MultiTexCoord4svARB, (target, v), (F, "glMultiTexCoord4sv(0x%x, %p);", target, (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixf)(const GLfloat * m)
 {
-   DISPATCH(LoadTransposeMatrixfARB, (m), (F, "glLoadTransposeMatrixf(%p);\n", (void *) m));
+   DISPATCH(LoadTransposeMatrixfARB, (m), (F, "glLoadTransposeMatrixf(%p);", (void *) m));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixd)(const GLdouble * m)
 {
-   DISPATCH(LoadTransposeMatrixdARB, (m), (F, "glLoadTransposeMatrixd(%p);\n", (void *) m));
+   DISPATCH(LoadTransposeMatrixdARB, (m), (F, "glLoadTransposeMatrixd(%p);", (void *) m));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixf)(const GLfloat * m)
 {
-   DISPATCH(MultTransposeMatrixfARB, (m), (F, "glMultTransposeMatrixf(%p);\n", (void *) m));
+   DISPATCH(MultTransposeMatrixfARB, (m), (F, "glMultTransposeMatrixf(%p);", (void *) m));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixd)(const GLdouble * m)
 {
-   DISPATCH(MultTransposeMatrixdARB, (m), (F, "glMultTransposeMatrixd(%p);\n", (void *) m));
+   DISPATCH(MultTransposeMatrixdARB, (m), (F, "glMultTransposeMatrixd(%p);", (void *) m));
 }
 
 /* No dispatch for SampleCover() */
 KEYWORD1 void KEYWORD2 NAME(CompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(CompressedTexImage3DARB, (target, level, internalformat, width, height, depth, border, imageSize, data), (F, "glCompressedTexImage3D(0x%x, %d, 0x%x, %p, %p, %p, %d, %p, %p);\n", target, level, internalformat, (void *) width, (void *) height, (void *) depth, border, (void *) imageSize, (void *) data));
+   DISPATCH(CompressedTexImage3DARB, (target, level, internalformat, width, height, depth, border, imageSize, data), (F, "glCompressedTexImage3D(0x%x, %d, 0x%x, %p, %p, %p, %d, %p, %p);", target, level, internalformat, (void *) width, (void *) height, (void *) depth, border, (void *) imageSize, (void *) data));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(CompressedTexImage2DARB, (target, level, internalformat, width, height, border, imageSize, data), (F, "glCompressedTexImage2D(0x%x, %d, 0x%x, %p, %p, %d, %p, %p);\n", target, level, internalformat, (void *) width, (void *) height, border, (void *) imageSize, (void *) data));
+   DISPATCH(CompressedTexImage2DARB, (target, level, internalformat, width, height, border, imageSize, data), (F, "glCompressedTexImage2D(0x%x, %d, 0x%x, %p, %p, %d, %p, %p);", target, level, internalformat, (void *) width, (void *) height, border, (void *) imageSize, (void *) data));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(CompressedTexImage1DARB, (target, level, internalformat, width, border, imageSize, data), (F, "glCompressedTexImage1D(0x%x, %d, 0x%x, %p, %d, %p, %p);\n", target, level, internalformat, (void *) width, border, (void *) imageSize, (void *) data));
+   DISPATCH(CompressedTexImage1DARB, (target, level, internalformat, width, border, imageSize, data), (F, "glCompressedTexImage1D(0x%x, %d, 0x%x, %p, %d, %p, %p);", target, level, internalformat, (void *) width, border, (void *) imageSize, (void *) data));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(CompressedTexSubImage3DARB, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), (F, "glCompressedTexSubImage3D(0x%x, %d, %d, %d, %d, %p, %p, %p, 0x%x, %p, %p);\n", target, level, xoffset, yoffset, zoffset, (void *) width, (void *) height, (void *) depth, format, (void *) imageSize, (void *) data));
+   DISPATCH(CompressedTexSubImage3DARB, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), (F, "glCompressedTexSubImage3D(0x%x, %d, %d, %d, %d, %p, %p, %p, 0x%x, %p, %p);", target, level, xoffset, yoffset, zoffset, (void *) width, (void *) height, (void *) depth, format, (void *) imageSize, (void *) data));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(CompressedTexSubImage2DARB, (target, level, xoffset, yoffset, width, height, format, imageSize, data), (F, "glCompressedTexSubImage2D(0x%x, %d, %d, %d, %p, %p, 0x%x, %p, %p);\n", target, level, xoffset, yoffset, (void *) width, (void *) height, format, (void *) imageSize, (void *) data));
+   DISPATCH(CompressedTexSubImage2DARB, (target, level, xoffset, yoffset, width, height, format, imageSize, data), (F, "glCompressedTexSubImage2D(0x%x, %d, %d, %d, %p, %p, 0x%x, %p, %p);", target, level, xoffset, yoffset, (void *) width, (void *) height, format, (void *) imageSize, (void *) data));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data)
 {
-   DISPATCH(CompressedTexSubImage1DARB, (target, level, xoffset, width, format, imageSize, data), (F, "glCompressedTexSubImage1D(0x%x, %d, %d, %p, 0x%x, %p, %p);\n", target, level, xoffset, (void *) width, format, (void *) imageSize, (void *) data));
+   DISPATCH(CompressedTexSubImage1DARB, (target, level, xoffset, width, format, imageSize, data), (F, "glCompressedTexSubImage1D(0x%x, %d, %d, %p, 0x%x, %p, %p);", target, level, xoffset, (void *) width, format, (void *) imageSize, (void *) data));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImage)(GLenum target, GLint level, GLvoid * img)
 {
-   DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImage(0x%x, %d, %p);\n", target, level, (void *) img));
+   DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImage(0x%x, %d, %p);", target, level, (void *) img));
 }
 
 /* No dispatch for WeightbvARB() */
@@ -2396,462 +2395,462 @@ KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImage)(GLenum target, GLint level, G
 /* No dispatch for MatrixIndexPointerARB() */
 KEYWORD1 void KEYWORD2 NAME(BlendColorEXT)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
 {
-   DISPATCH(BlendColor, (red, green, blue, alpha), (F, "glBlendColorEXT(%f, %f, %f, %f);\n", red, green, blue, alpha));
+   DISPATCH(BlendColor, (red, green, blue, alpha), (F, "glBlendColorEXT(%f, %f, %f, %f);", red, green, blue, alpha));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PolygonOffsetEXT)(GLfloat factor, GLfloat bias)
 {
-   DISPATCH(PolygonOffsetEXT, (factor, bias), (F, "glPolygonOffsetEXT(%f, %f);\n", factor, bias));
+   DISPATCH(PolygonOffsetEXT, (factor, bias), (F, "glPolygonOffsetEXT(%f, %f);", factor, bias));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexImage3DEXT)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
 {
-   DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3DEXT(0x%x, %d, 0x%x, %p, %p, %p, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, (void *) width, (void *) height, (void *) depth, border, format, type, (void *) pixels));
+   DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3DEXT(0x%x, %d, 0x%x, %p, %p, %p, %d, 0x%x, 0x%x, %p);", target, level, internalformat, (void *) width, (void *) height, (void *) depth, border, format, type, (void *) pixels));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels)
 {
-   DISPATCH(TexSubImage3D, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), (F, "glTexSubImage3DEXT(0x%x, %d, %d, %d, %d, %p, %p, %p, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, zoffset, (void *) width, (void *) height, (void *) depth, format, type, (void *) pixels));
+   DISPATCH(TexSubImage3D, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), (F, "glTexSubImage3DEXT(0x%x, %d, %d, %d, %d, %p, %p, %p, 0x%x, 0x%x, %p);", target, level, xoffset, yoffset, zoffset, (void *) width, (void *) height, (void *) depth, format, type, (void *) pixels));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetTexFilterFuncSGIS)(GLenum target, GLenum filter, GLfloat * weights)
 {
-   DISPATCH(GetTexFilterFuncSGIS, (target, filter, weights), (F, "glGetTexFilterFuncSGIS(0x%x, 0x%x, %p);\n", target, filter, (void *) weights));
+   DISPATCH(GetTexFilterFuncSGIS, (target, filter, weights), (F, "glGetTexFilterFuncSGIS(0x%x, 0x%x, %p);", target, filter, (void *) weights));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexFilterFuncSGIS)(GLenum target, GLenum filter, GLsizei n, const GLfloat * weights)
 {
-   DISPATCH(TexFilterFuncSGIS, (target, filter, n, weights), (F, "glTexFilterFuncSGIS(0x%x, 0x%x, %p, %p);\n", target, filter, (void *) n, (void *) weights));
+   DISPATCH(TexFilterFuncSGIS, (target, filter, n, weights), (F, "glTexFilterFuncSGIS(0x%x, 0x%x, %p, %p);", target, filter, (void *) n, (void *) weights));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels)
 {
-   DISPATCH(TexSubImage1D, (target, level, xoffset, width, format, type, pixels), (F, "glTexSubImage1DEXT(0x%x, %d, %d, %p, 0x%x, 0x%x, %p);\n", target, level, xoffset, (void *) width, format, type, (void *) pixels));
+   DISPATCH(TexSubImage1D, (target, level, xoffset, width, format, type, pixels), (F, "glTexSubImage1DEXT(0x%x, %d, %d, %p, 0x%x, 0x%x, %p);", target, level, xoffset, (void *) width, format, type, (void *) pixels));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)
 {
-   DISPATCH(TexSubImage2D, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, "glTexSubImage2DEXT(0x%x, %d, %d, %d, %p, %p, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, (void *) width, (void *) height, format, type, (void *) pixels));
+   DISPATCH(TexSubImage2D, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, "glTexSubImage2DEXT(0x%x, %d, %d, %d, %p, %p, 0x%x, 0x%x, %p);", target, level, xoffset, yoffset, (void *) width, (void *) height, format, type, (void *) pixels));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyTexImage1DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
 {
-   DISPATCH(CopyTexImage1D, (target, level, internalformat, x, y, width, border), (F, "glCopyTexImage1DEXT(0x%x, %d, 0x%x, %d, %d, %p, %d);\n", target, level, internalformat, x, y, (void *) width, border));
+   DISPATCH(CopyTexImage1D, (target, level, internalformat, x, y, width, border), (F, "glCopyTexImage1DEXT(0x%x, %d, 0x%x, %d, %d, %p, %d);", target, level, internalformat, x, y, (void *) width, border));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyTexImage2DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
 {
-   DISPATCH(CopyTexImage2D, (target, level, internalformat, x, y, width, height, border), (F, "glCopyTexImage2DEXT(0x%x, %d, 0x%x, %d, %d, %p, %p, %d);\n", target, level, internalformat, x, y, (void *) width, (void *) height, border));
+   DISPATCH(CopyTexImage2D, (target, level, internalformat, x, y, width, height, border), (F, "glCopyTexImage2DEXT(0x%x, %d, 0x%x, %d, %d, %p, %p, %d);", target, level, internalformat, x, y, (void *) width, (void *) height, border));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
 {
-   DISPATCH(CopyTexSubImage1D, (target, level, xoffset, x, y, width), (F, "glCopyTexSubImage1DEXT(0x%x, %d, %d, %d, %d, %p);\n", target, level, xoffset, x, y, (void *) width));
+   DISPATCH(CopyTexSubImage1D, (target, level, xoffset, x, y, width), (F, "glCopyTexSubImage1DEXT(0x%x, %d, %d, %d, %d, %p);", target, level, xoffset, x, y, (void *) width));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
 {
-   DISPATCH(CopyTexSubImage2D, (target, level, xoffset, yoffset, x, y, width, height), (F, "glCopyTexSubImage2DEXT(0x%x, %d, %d, %d, %d, %d, %p, %p);\n", target, level, xoffset, yoffset, x, y, (void *) width, (void *) height));
+   DISPATCH(CopyTexSubImage2D, (target, level, xoffset, yoffset, x, y, width, height), (F, "glCopyTexSubImage2DEXT(0x%x, %d, %d, %d, %d, %d, %p, %p);", target, level, xoffset, yoffset, x, y, (void *) width, (void *) height));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
 {
-   DISPATCH(CopyTexSubImage3D, (target, level, xoffset, yoffset, zoffset, x, y, width, height), (F, "glCopyTexSubImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, %p, %p);\n", target, level, xoffset, yoffset, zoffset, x, y, (void *) width, (void *) height));
+   DISPATCH(CopyTexSubImage3D, (target, level, xoffset, yoffset, zoffset, x, y, width, height), (F, "glCopyTexSubImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, %p, %p);", target, level, xoffset, yoffset, zoffset, x, y, (void *) width, (void *) height));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetHistogramEXT)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
 {
-   DISPATCH(GetHistogramEXT, (target, reset, format, type, values), (F, "glGetHistogramEXT(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (void *) values));
+   DISPATCH(GetHistogramEXT, (target, reset, format, type, values), (F, "glGetHistogramEXT(0x%x, %d, 0x%x, 0x%x, %p);", target, reset, format, type, (void *) values));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetHistogramParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetHistogramParameterfvEXT, (target, pname, params), (F, "glGetHistogramParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetHistogramParameterfvEXT, (target, pname, params), (F, "glGetHistogramParameterfvEXT(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetHistogramParameterivEXT)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(GetHistogramParameterivEXT, (target, pname, params), (F, "glGetHistogramParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetHistogramParameterivEXT, (target, pname, params), (F, "glGetHistogramParameterivEXT(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetMinmaxEXT)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
 {
-   DISPATCH(GetMinmaxEXT, (target, reset, format, type, values), (F, "glGetMinmaxEXT(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (void *) values));
+   DISPATCH(GetMinmaxEXT, (target, reset, format, type, values), (F, "glGetMinmaxEXT(0x%x, %d, 0x%x, 0x%x, %p);", target, reset, format, type, (void *) values));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetMinmaxParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetMinmaxParameterfvEXT, (target, pname, params), (F, "glGetMinmaxParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetMinmaxParameterfvEXT, (target, pname, params), (F, "glGetMinmaxParameterfvEXT(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetMinmaxParameterivEXT)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(GetMinmaxParameterivEXT, (target, pname, params), (F, "glGetMinmaxParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetMinmaxParameterivEXT, (target, pname, params), (F, "glGetMinmaxParameterivEXT(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(HistogramEXT)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)
 {
-   DISPATCH(Histogram, (target, width, internalformat, sink), (F, "glHistogramEXT(0x%x, %p, 0x%x, %d);\n", target, (void *) width, internalformat, sink));
+   DISPATCH(Histogram, (target, width, internalformat, sink), (F, "glHistogramEXT(0x%x, %p, 0x%x, %d);", target, (void *) width, internalformat, sink));
 }
 
 KEYWORD1 void KEYWORD2 NAME(MinmaxEXT)(GLenum target, GLenum internalformat, GLboolean sink)
 {
-   DISPATCH(Minmax, (target, internalformat, sink), (F, "glMinmaxEXT(0x%x, 0x%x, %d);\n", target, internalformat, sink));
+   DISPATCH(Minmax, (target, internalformat, sink), (F, "glMinmaxEXT(0x%x, 0x%x, %d);", target, internalformat, sink));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ResetHistogramEXT)(GLenum target)
 {
-   DISPATCH(ResetHistogram, (target), (F, "glResetHistogramEXT(0x%x);\n", target));
+   DISPATCH(ResetHistogram, (target), (F, "glResetHistogramEXT(0x%x);", target));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ResetMinmaxEXT)(GLenum target)
 {
-   DISPATCH(ResetMinmax, (target), (F, "glResetMinmaxEXT(0x%x);\n", target));
+   DISPATCH(ResetMinmax, (target), (F, "glResetMinmaxEXT(0x%x);", target));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image)
 {
-   DISPATCH(ConvolutionFilter1D, (target, internalformat, width, format, type, image), (F, "glConvolutionFilter1DEXT(0x%x, 0x%x, %p, 0x%x, 0x%x, %p);\n", target, internalformat, (void *) width, format, type, (void *) image));
+   DISPATCH(ConvolutionFilter1D, (target, internalformat, width, format, type, image), (F, "glConvolutionFilter1DEXT(0x%x, 0x%x, %p, 0x%x, 0x%x, %p);", target, internalformat, (void *) width, format, type, (void *) image));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image)
 {
-   DISPATCH(ConvolutionFilter2D, (target, internalformat, width, height, format, type, image), (F, "glConvolutionFilter2DEXT(0x%x, 0x%x, %p, %p, 0x%x, 0x%x, %p);\n", target, internalformat, (void *) width, (void *) height, format, type, (void *) image));
+   DISPATCH(ConvolutionFilter2D, (target, internalformat, width, height, format, type, image), (F, "glConvolutionFilter2DEXT(0x%x, 0x%x, %p, %p, 0x%x, 0x%x, %p);", target, internalformat, (void *) width, (void *) height, format, type, (void *) image));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfEXT)(GLenum target, GLenum pname, GLfloat params)
 {
-   DISPATCH(ConvolutionParameterf, (target, pname, params), (F, "glConvolutionParameterfEXT(0x%x, 0x%x, %f);\n", target, pname, params));
+   DISPATCH(ConvolutionParameterf, (target, pname, params), (F, "glConvolutionParameterfEXT(0x%x, 0x%x, %f);", target, pname, params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfvEXT)(GLenum target, GLenum pname, const GLfloat * params)
 {
-   DISPATCH(ConvolutionParameterfv, (target, pname, params), (F, "glConvolutionParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(ConvolutionParameterfv, (target, pname, params), (F, "glConvolutionParameterfvEXT(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ConvolutionParameteriEXT)(GLenum target, GLenum pname, GLint params)
 {
-   DISPATCH(ConvolutionParameteri, (target, pname, params), (F, "glConvolutionParameteriEXT(0x%x, 0x%x, %d);\n", target, pname, params));
+   DISPATCH(ConvolutionParameteri, (target, pname, params), (F, "glConvolutionParameteriEXT(0x%x, 0x%x, %d);", target, pname, params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterivEXT)(GLenum target, GLenum pname, const GLint * params)
 {
-   DISPATCH(ConvolutionParameteriv, (target, pname, params), (F, "glConvolutionParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(ConvolutionParameteriv, (target, pname, params), (F, "glConvolutionParameterivEXT(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter1DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
 {
-   DISPATCH(CopyConvolutionFilter1D, (target, internalformat, x, y, width), (F, "glCopyConvolutionFilter1DEXT(0x%x, 0x%x, %d, %d, %p);\n", target, internalformat, x, y, (void *) width));
+   DISPATCH(CopyConvolutionFilter1D, (target, internalformat, x, y, width), (F, "glCopyConvolutionFilter1DEXT(0x%x, 0x%x, %d, %d, %p);", target, internalformat, x, y, (void *) width));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter2DEXT)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
 {
-   DISPATCH(CopyConvolutionFilter2D, (target, internalformat, x, y, width, height), (F, "glCopyConvolutionFilter2DEXT(0x%x, 0x%x, %d, %d, %p, %p);\n", target, internalformat, x, y, (void *) width, (void *) height));
+   DISPATCH(CopyConvolutionFilter2D, (target, internalformat, x, y, width, height), (F, "glCopyConvolutionFilter2DEXT(0x%x, 0x%x, %d, %d, %p, %p);", target, internalformat, x, y, (void *) width, (void *) height));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetConvolutionFilterEXT)(GLenum target, GLenum format, GLenum type, GLvoid * image)
 {
-   DISPATCH(GetConvolutionFilterEXT, (target, format, type, image), (F, "glGetConvolutionFilterEXT(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (void *) image));
+   DISPATCH(GetConvolutionFilterEXT, (target, format, type, image), (F, "glGetConvolutionFilterEXT(0x%x, 0x%x, 0x%x, %p);", target, format, type, (void *) image));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetConvolutionParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetConvolutionParameterfvEXT, (target, pname, params), (F, "glGetConvolutionParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetConvolutionParameterfvEXT, (target, pname, params), (F, "glGetConvolutionParameterfvEXT(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetConvolutionParameterivEXT)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(GetConvolutionParameterivEXT, (target, pname, params), (F, "glGetConvolutionParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetConvolutionParameterivEXT, (target, pname, params), (F, "glGetConvolutionParameterivEXT(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetSeparableFilterEXT)(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span)
 {
-   DISPATCH(GetSeparableFilterEXT, (target, format, type, row, column, span), (F, "glGetSeparableFilterEXT(0x%x, 0x%x, 0x%x, %p, %p, %p);\n", target, format, type, (void *) row, (void *) column, (void *) span));
+   DISPATCH(GetSeparableFilterEXT, (target, format, type, row, column, span), (F, "glGetSeparableFilterEXT(0x%x, 0x%x, 0x%x, %p, %p, %p);", target, format, type, (void *) row, (void *) column, (void *) span));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SeparableFilter2DEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column)
 {
-   DISPATCH(SeparableFilter2D, (target, internalformat, width, height, format, type, row, column), (F, "glSeparableFilter2DEXT(0x%x, 0x%x, %p, %p, 0x%x, 0x%x, %p, %p);\n", target, internalformat, (void *) width, (void *) height, format, type, (void *) row, (void *) column));
+   DISPATCH(SeparableFilter2D, (target, internalformat, width, height, format, type, row, column), (F, "glSeparableFilter2DEXT(0x%x, 0x%x, %p, %p, 0x%x, 0x%x, %p, %p);", target, internalformat, (void *) width, (void *) height, format, type, (void *) row, (void *) column));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ColorTableSGI)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
 {
-   DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTableSGI(0x%x, 0x%x, %p, 0x%x, 0x%x, %p);\n", target, internalformat, (void *) width, format, type, (void *) table));
+   DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTableSGI(0x%x, 0x%x, %p, 0x%x, 0x%x, %p);", target, internalformat, (void *) width, format, type, (void *) table));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ColorTableParameterfvSGI)(GLenum target, GLenum pname, const GLfloat * params)
 {
-   DISPATCH(ColorTableParameterfv, (target, pname, params), (F, "glColorTableParameterfvSGI(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(ColorTableParameterfv, (target, pname, params), (F, "glColorTableParameterfvSGI(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ColorTableParameterivSGI)(GLenum target, GLenum pname, const GLint * params)
 {
-   DISPATCH(ColorTableParameteriv, (target, pname, params), (F, "glColorTableParameterivSGI(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(ColorTableParameteriv, (target, pname, params), (F, "glColorTableParameterivSGI(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyColorTableSGI)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
 {
-   DISPATCH(CopyColorTable, (target, internalformat, x, y, width), (F, "glCopyColorTableSGI(0x%x, 0x%x, %d, %d, %p);\n", target, internalformat, x, y, (void *) width));
+   DISPATCH(CopyColorTable, (target, internalformat, x, y, width), (F, "glCopyColorTableSGI(0x%x, 0x%x, %d, %d, %p);", target, internalformat, x, y, (void *) width));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetColorTableSGI)(GLenum target, GLenum format, GLenum type, GLvoid * table)
 {
-   DISPATCH(GetColorTableSGI, (target, format, type, table), (F, "glGetColorTableSGI(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (void *) table));
+   DISPATCH(GetColorTableSGI, (target, format, type, table), (F, "glGetColorTableSGI(0x%x, 0x%x, 0x%x, %p);", target, format, type, (void *) table));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterfvSGI)(GLenum target, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetColorTableParameterfvSGI, (target, pname, params), (F, "glGetColorTableParameterfvSGI(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetColorTableParameterfvSGI, (target, pname, params), (F, "glGetColorTableParameterfvSGI(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterivSGI)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(GetColorTableParameterivSGI, (target, pname, params), (F, "glGetColorTableParameterivSGI(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetColorTableParameterivSGI, (target, pname, params), (F, "glGetColorTableParameterivSGI(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PixelTexGenSGIX)(GLenum mode)
 {
-   DISPATCH(PixelTexGenSGIX, (mode), (F, "glPixelTexGenSGIX(0x%x);\n", mode));
+   DISPATCH(PixelTexGenSGIX, (mode), (F, "glPixelTexGenSGIX(0x%x);", mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PixelTexGenParameteriSGIS)(GLenum pname, GLint param)
 {
-   DISPATCH(PixelTexGenParameteriSGIS, (pname, param), (F, "glPixelTexGenParameteriSGIS(0x%x, %d);\n", pname, param));
+   DISPATCH(PixelTexGenParameteriSGIS, (pname, param), (F, "glPixelTexGenParameteriSGIS(0x%x, %d);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PixelTexGenParameterivSGIS)(GLenum pname, const GLint * params)
 {
-   DISPATCH(PixelTexGenParameterivSGIS, (pname, params), (F, "glPixelTexGenParameterivSGIS(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(PixelTexGenParameterivSGIS, (pname, params), (F, "glPixelTexGenParameterivSGIS(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PixelTexGenParameterfSGIS)(GLenum pname, GLfloat param)
 {
-   DISPATCH(PixelTexGenParameterfSGIS, (pname, param), (F, "glPixelTexGenParameterfSGIS(0x%x, %f);\n", pname, param));
+   DISPATCH(PixelTexGenParameterfSGIS, (pname, param), (F, "glPixelTexGenParameterfSGIS(0x%x, %f);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PixelTexGenParameterfvSGIS)(GLenum pname, const GLfloat * params)
 {
-   DISPATCH(PixelTexGenParameterfvSGIS, (pname, params), (F, "glPixelTexGenParameterfvSGIS(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(PixelTexGenParameterfvSGIS, (pname, params), (F, "glPixelTexGenParameterfvSGIS(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetPixelTexGenParameterivSGIS)(GLenum pname, GLint * params)
 {
-   DISPATCH(GetPixelTexGenParameterivSGIS, (pname, params), (F, "glGetPixelTexGenParameterivSGIS(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(GetPixelTexGenParameterivSGIS, (pname, params), (F, "glGetPixelTexGenParameterivSGIS(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetPixelTexGenParameterfvSGIS)(GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetPixelTexGenParameterfvSGIS, (pname, params), (F, "glGetPixelTexGenParameterfvSGIS(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(GetPixelTexGenParameterfvSGIS, (pname, params), (F, "glGetPixelTexGenParameterfvSGIS(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexImage4DSGIS)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
 {
-   DISPATCH(TexImage4DSGIS, (target, level, internalformat, width, height, depth, size4d, border, format, type, pixels), (F, "glTexImage4DSGIS(0x%x, %d, 0x%x, %p, %p, %p, %p, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, (void *) width, (void *) height, (void *) depth, (void *) size4d, border, format, type, (void *) pixels));
+   DISPATCH(TexImage4DSGIS, (target, level, internalformat, width, height, depth, size4d, border, format, type, pixels), (F, "glTexImage4DSGIS(0x%x, %d, 0x%x, %p, %p, %p, %p, %d, 0x%x, 0x%x, %p);", target, level, internalformat, (void *) width, (void *) height, (void *) depth, (void *) size4d, border, format, type, (void *) pixels));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexSubImage4DSGIS)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid * pixels)
 {
-   DISPATCH(TexSubImage4DSGIS, (target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, pixels), (F, "glTexSubImage4DSGIS(0x%x, %d, %d, %d, %d, %d, %p, %p, %p, %p, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, zoffset, woffset, (void *) width, (void *) height, (void *) depth, (void *) size4d, format, type, (void *) pixels));
+   DISPATCH(TexSubImage4DSGIS, (target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, pixels), (F, "glTexSubImage4DSGIS(0x%x, %d, %d, %d, %d, %d, %p, %p, %p, %p, 0x%x, 0x%x, %p);", target, level, xoffset, yoffset, zoffset, woffset, (void *) width, (void *) height, (void *) depth, (void *) size4d, format, type, (void *) pixels));
 }
 
 KEYWORD1 GLboolean KEYWORD2 NAME(AreTexturesResidentEXT)(GLsizei n, const GLuint * textures, GLboolean * residences)
 {
-   RETURN_DISPATCH(AreTexturesResidentEXT, (n, textures, residences), (F, "glAreTexturesResidentEXT(%p, %p, %p);\n", (void *) n, (void *) textures, (void *) residences));
+   RETURN_DISPATCH(AreTexturesResidentEXT, (n, textures, residences), (F, "glAreTexturesResidentEXT(%p, %p, %p);", (void *) n, (void *) textures, (void *) residences));
 }
 
 KEYWORD1 void KEYWORD2 NAME(BindTextureEXT)(GLenum target, GLuint texture)
 {
-   DISPATCH(BindTexture, (target, texture), (F, "glBindTextureEXT(0x%x, %d);\n", target, texture));
+   DISPATCH(BindTexture, (target, texture), (F, "glBindTextureEXT(0x%x, %d);", target, texture));
 }
 
 KEYWORD1 void KEYWORD2 NAME(DeleteTexturesEXT)(GLsizei n, const GLuint * textures)
 {
-   DISPATCH(DeleteTextures, (n, textures), (F, "glDeleteTexturesEXT(%p, %p);\n", (void *) n, (void *) textures));
+   DISPATCH(DeleteTextures, (n, textures), (F, "glDeleteTexturesEXT(%p, %p);", (void *) n, (void *) textures));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GenTexturesEXT)(GLsizei n, GLuint * textures)
 {
-   DISPATCH(GenTexturesEXT, (n, textures), (F, "glGenTexturesEXT(%p, %p);\n", (void *) n, (void *) textures));
+   DISPATCH(GenTexturesEXT, (n, textures), (F, "glGenTexturesEXT(%p, %p);", (void *) n, (void *) textures));
 }
 
 KEYWORD1 GLboolean KEYWORD2 NAME(IsTextureEXT)(GLuint texture)
 {
-   RETURN_DISPATCH(IsTextureEXT, (texture), (F, "glIsTextureEXT(%d);\n", texture));
+   RETURN_DISPATCH(IsTextureEXT, (texture), (F, "glIsTextureEXT(%d);", texture));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PrioritizeTexturesEXT)(GLsizei n, const GLuint * textures, const GLclampf * priorities)
 {
-   DISPATCH(PrioritizeTextures, (n, textures, priorities), (F, "glPrioritizeTexturesEXT(%p, %p, %p);\n", (void *) n, (void *) textures, (void *) priorities));
+   DISPATCH(PrioritizeTextures, (n, textures, priorities), (F, "glPrioritizeTexturesEXT(%p, %p, %p);", (void *) n, (void *) textures, (void *) priorities));
 }
 
 KEYWORD1 void KEYWORD2 NAME(DetailTexFuncSGIS)(GLenum target, GLsizei n, const GLfloat * points)
 {
-   DISPATCH(DetailTexFuncSGIS, (target, n, points), (F, "glDetailTexFuncSGIS(0x%x, %p, %p);\n", target, (void *) n, (void *) points));
+   DISPATCH(DetailTexFuncSGIS, (target, n, points), (F, "glDetailTexFuncSGIS(0x%x, %p, %p);", target, (void *) n, (void *) points));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetDetailTexFuncSGIS)(GLenum target, GLfloat * points)
 {
-   DISPATCH(GetDetailTexFuncSGIS, (target, points), (F, "glGetDetailTexFuncSGIS(0x%x, %p);\n", target, (void *) points));
+   DISPATCH(GetDetailTexFuncSGIS, (target, points), (F, "glGetDetailTexFuncSGIS(0x%x, %p);", target, (void *) points));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SharpenTexFuncSGIS)(GLenum target, GLsizei n, const GLfloat * points)
 {
-   DISPATCH(SharpenTexFuncSGIS, (target, n, points), (F, "glSharpenTexFuncSGIS(0x%x, %p, %p);\n", target, (void *) n, (void *) points));
+   DISPATCH(SharpenTexFuncSGIS, (target, n, points), (F, "glSharpenTexFuncSGIS(0x%x, %p, %p);", target, (void *) n, (void *) points));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetSharpenTexFuncSGIS)(GLenum target, GLfloat * points)
 {
-   DISPATCH(GetSharpenTexFuncSGIS, (target, points), (F, "glGetSharpenTexFuncSGIS(0x%x, %p);\n", target, (void *) points));
+   DISPATCH(GetSharpenTexFuncSGIS, (target, points), (F, "glGetSharpenTexFuncSGIS(0x%x, %p);", target, (void *) points));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SampleMaskSGIS)(GLclampf value, GLboolean invert)
 {
-   DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskSGIS(%f, %d);\n", value, invert));
+   DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskSGIS(%f, %d);", value, invert));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SamplePatternSGIS)(GLenum pattern)
 {
-   DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternSGIS(0x%x);\n", pattern));
+   DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternSGIS(0x%x);", pattern));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ArrayElementEXT)(GLint i)
 {
-   DISPATCH(ArrayElement, (i), (F, "glArrayElementEXT(%d);\n", i));
+   DISPATCH(ArrayElement, (i), (F, "glArrayElementEXT(%d);", i));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
 {
-   DISPATCH(ColorPointerEXT, (size, type, stride, count, pointer), (F, "glColorPointerEXT(%d, 0x%x, %p, %p, %p);\n", size, type, (void *) stride, (void *) count, (void *) pointer));
+   DISPATCH(ColorPointerEXT, (size, type, stride, count, pointer), (F, "glColorPointerEXT(%d, 0x%x, %p, %p, %p);", size, type, (void *) stride, (void *) count, (void *) pointer));
 }
 
 KEYWORD1 void KEYWORD2 NAME(DrawArraysEXT)(GLenum mode, GLint first, GLsizei count)
 {
-   DISPATCH(DrawArrays, (mode, first, count), (F, "glDrawArraysEXT(0x%x, %d, %p);\n", mode, first, (void *) count));
+   DISPATCH(DrawArrays, (mode, first, count), (F, "glDrawArraysEXT(0x%x, %d, %p);", mode, first, (void *) count));
 }
 
 KEYWORD1 void KEYWORD2 NAME(EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer)
 {
-   DISPATCH(EdgeFlagPointerEXT, (stride, count, pointer), (F, "glEdgeFlagPointerEXT(%p, %p, %p);\n", (void *) stride, (void *) count, (void *) pointer));
+   DISPATCH(EdgeFlagPointerEXT, (stride, count, pointer), (F, "glEdgeFlagPointerEXT(%p, %p, %p);", (void *) stride, (void *) count, (void *) pointer));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetPointervEXT)(GLenum pname, GLvoid ** params)
 {
-   DISPATCH(GetPointerv, (pname, params), (F, "glGetPointervEXT(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(GetPointerv, (pname, params), (F, "glGetPointervEXT(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
 {
-   DISPATCH(IndexPointerEXT, (type, stride, count, pointer), (F, "glIndexPointerEXT(0x%x, %p, %p, %p);\n", type, (void *) stride, (void *) count, (void *) pointer));
+   DISPATCH(IndexPointerEXT, (type, stride, count, pointer), (F, "glIndexPointerEXT(0x%x, %p, %p, %p);", type, (void *) stride, (void *) count, (void *) pointer));
 }
 
 KEYWORD1 void KEYWORD2 NAME(NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
 {
-   DISPATCH(NormalPointerEXT, (type, stride, count, pointer), (F, "glNormalPointerEXT(0x%x, %p, %p, %p);\n", type, (void *) stride, (void *) count, (void *) pointer));
+   DISPATCH(NormalPointerEXT, (type, stride, count, pointer), (F, "glNormalPointerEXT(0x%x, %p, %p, %p);", type, (void *) stride, (void *) count, (void *) pointer));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
 {
-   DISPATCH(TexCoordPointerEXT, (size, type, stride, count, pointer), (F, "glTexCoordPointerEXT(%d, 0x%x, %p, %p, %p);\n", size, type, (void *) stride, (void *) count, (void *) pointer));
+   DISPATCH(TexCoordPointerEXT, (size, type, stride, count, pointer), (F, "glTexCoordPointerEXT(%d, 0x%x, %p, %p, %p);", size, type, (void *) stride, (void *) count, (void *) pointer));
 }
 
 KEYWORD1 void KEYWORD2 NAME(VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
 {
-   DISPATCH(VertexPointerEXT, (size, type, stride, count, pointer), (F, "glVertexPointerEXT(%d, 0x%x, %p, %p, %p);\n", size, type, (void *) stride, (void *) count, (void *) pointer));
+   DISPATCH(VertexPointerEXT, (size, type, stride, count, pointer), (F, "glVertexPointerEXT(%d, 0x%x, %p, %p, %p);", size, type, (void *) stride, (void *) count, (void *) pointer));
 }
 
 KEYWORD1 void KEYWORD2 NAME(BlendEquationEXT)(GLenum mode)
 {
-   DISPATCH(BlendEquation, (mode), (F, "glBlendEquationEXT(0x%x);\n", mode));
+   DISPATCH(BlendEquation, (mode), (F, "glBlendEquationEXT(0x%x);", mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SpriteParameterfSGIX)(GLenum pname, GLfloat param)
 {
-   DISPATCH(SpriteParameterfSGIX, (pname, param), (F, "glSpriteParameterfSGIX(0x%x, %f);\n", pname, param));
+   DISPATCH(SpriteParameterfSGIX, (pname, param), (F, "glSpriteParameterfSGIX(0x%x, %f);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SpriteParameterfvSGIX)(GLenum pname, const GLfloat * params)
 {
-   DISPATCH(SpriteParameterfvSGIX, (pname, params), (F, "glSpriteParameterfvSGIX(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(SpriteParameterfvSGIX, (pname, params), (F, "glSpriteParameterfvSGIX(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SpriteParameteriSGIX)(GLenum pname, GLint param)
 {
-   DISPATCH(SpriteParameteriSGIX, (pname, param), (F, "glSpriteParameteriSGIX(0x%x, %d);\n", pname, param));
+   DISPATCH(SpriteParameteriSGIX, (pname, param), (F, "glSpriteParameteriSGIX(0x%x, %d);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SpriteParameterivSGIX)(GLenum pname, const GLint * params)
 {
-   DISPATCH(SpriteParameterivSGIX, (pname, params), (F, "glSpriteParameterivSGIX(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(SpriteParameterivSGIX, (pname, params), (F, "glSpriteParameterivSGIX(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PointParameterfEXT)(GLenum pname, GLfloat param)
 {
-   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfEXT(0x%x, %f);\n", pname, param));
+   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfEXT(0x%x, %f);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PointParameterfvEXT)(GLenum pname, const GLfloat * params)
 {
-   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvEXT(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvEXT(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PointParameterfARB)(GLenum pname, GLfloat param)
 {
-   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfARB(0x%x, %f);\n", pname, param));
+   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfARB(0x%x, %f);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PointParameterfvARB)(GLenum pname, const GLfloat * params)
 {
-   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvARB(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvARB(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PointParameterfSGIS)(GLenum pname, GLfloat param)
 {
-   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfSGIS(0x%x, %f);\n", pname, param));
+   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfSGIS(0x%x, %f);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(PointParameterfvSGIS)(GLenum pname, const GLfloat * params)
 {
-   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvSGIS(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvSGIS(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 GLint KEYWORD2 NAME(GetInstrumentsSGIX)(void)
 {
-   RETURN_DISPATCH(GetInstrumentsSGIX, (), (F, "glGetInstrumentsSGIX();\n"));
+   RETURN_DISPATCH(GetInstrumentsSGIX, (), (F, "glGetInstrumentsSGIX();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(InstrumentsBufferSGIX)(GLsizei size, GLint * buffer)
 {
-   DISPATCH(InstrumentsBufferSGIX, (size, buffer), (F, "glInstrumentsBufferSGIX(%p, %p);\n", (void *) size, (void *) buffer));
+   DISPATCH(InstrumentsBufferSGIX, (size, buffer), (F, "glInstrumentsBufferSGIX(%p, %p);", (void *) size, (void *) buffer));
 }
 
 KEYWORD1 GLint KEYWORD2 NAME(PollInstrumentsSGIX)(GLint * marker_p)
 {
-   RETURN_DISPATCH(PollInstrumentsSGIX, (marker_p), (F, "glPollInstrumentsSGIX(%p);\n", (void *) marker_p));
+   RETURN_DISPATCH(PollInstrumentsSGIX, (marker_p), (F, "glPollInstrumentsSGIX(%p);", (void *) marker_p));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ReadInstrumentsSGIX)(GLint marker)
 {
-   DISPATCH(ReadInstrumentsSGIX, (marker), (F, "glReadInstrumentsSGIX(%d);\n", marker));
+   DISPATCH(ReadInstrumentsSGIX, (marker), (F, "glReadInstrumentsSGIX(%d);", marker));
 }
 
 KEYWORD1 void KEYWORD2 NAME(StartInstrumentsSGIX)(void)
 {
-   DISPATCH(StartInstrumentsSGIX, (), (F, "glStartInstrumentsSGIX();\n"));
+   DISPATCH(StartInstrumentsSGIX, (), (F, "glStartInstrumentsSGIX();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(StopInstrumentsSGIX)(GLint marker)
 {
-   DISPATCH(StopInstrumentsSGIX, (marker), (F, "glStopInstrumentsSGIX(%d);\n", marker));
+   DISPATCH(StopInstrumentsSGIX, (marker), (F, "glStopInstrumentsSGIX(%d);", marker));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FrameZoomSGIX)(GLint factor)
 {
-   DISPATCH(FrameZoomSGIX, (factor), (F, "glFrameZoomSGIX(%d);\n", factor));
+   DISPATCH(FrameZoomSGIX, (factor), (F, "glFrameZoomSGIX(%d);", factor));
 }
 
 KEYWORD1 void KEYWORD2 NAME(TagSampleBufferSGIX)(void)
 {
-   DISPATCH(TagSampleBufferSGIX, (), (F, "glTagSampleBufferSGIX();\n"));
+   DISPATCH(TagSampleBufferSGIX, (), (F, "glTagSampleBufferSGIX();"));
 }
 
 /* No dispatch for DeformationMap3dSGIX() */
@@ -2860,12 +2859,12 @@ KEYWORD1 void KEYWORD2 NAME(TagSampleBufferSGIX)(void)
 /* No dispatch for LoadIdentityDeformationMapSGIX() */
 KEYWORD1 void KEYWORD2 NAME(ReferencePlaneSGIX)(const GLdouble * equation)
 {
-   DISPATCH(ReferencePlaneSGIX, (equation), (F, "glReferencePlaneSGIX(%p);\n", (void *) equation));
+   DISPATCH(ReferencePlaneSGIX, (equation), (F, "glReferencePlaneSGIX(%p);", (void *) equation));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FlushRasterSGIX)(void)
 {
-   DISPATCH(FlushRasterSGIX, (), (F, "glFlushRasterSGIX();\n"));
+   DISPATCH(FlushRasterSGIX, (), (F, "glFlushRasterSGIX();"));
 }
 
 /* No dispatch for FogFuncSGIS() */
@@ -2878,192 +2877,192 @@ KEYWORD1 void KEYWORD2 NAME(FlushRasterSGIX)(void)
 /* No dispatch for GetImageTransformParameterfvHP() */
 KEYWORD1 void KEYWORD2 NAME(ColorSubTableEXT)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data)
 {
-   DISPATCH(ColorSubTable, (target, start, count, format, type, data), (F, "glColorSubTableEXT(0x%x, %p, %p, 0x%x, 0x%x, %p);\n", target, (void *) start, (void *) count, format, type, (void *) data));
+   DISPATCH(ColorSubTable, (target, start, count, format, type, data), (F, "glColorSubTableEXT(0x%x, %p, %p, 0x%x, 0x%x, %p);", target, (void *) start, (void *) count, format, type, (void *) data));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CopyColorSubTableEXT)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
 {
-   DISPATCH(CopyColorSubTable, (target, start, x, y, width), (F, "glCopyColorSubTableEXT(0x%x, %p, %d, %d, %p);\n", target, (void *) start, x, y, (void *) width));
+   DISPATCH(CopyColorSubTable, (target, start, x, y, width), (F, "glCopyColorSubTableEXT(0x%x, %p, %d, %d, %p);", target, (void *) start, x, y, (void *) width));
 }
 
 KEYWORD1 void KEYWORD2 NAME(HintPGI)(GLenum target, GLint mode)
 {
-   DISPATCH(HintPGI, (target, mode), (F, "glHintPGI(0x%x, %d);\n", target, mode));
+   DISPATCH(HintPGI, (target, mode), (F, "glHintPGI(0x%x, %d);", target, mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ColorTableEXT)(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
 {
-   DISPATCH(ColorTable, (target, internalFormat, width, format, type, table), (F, "glColorTableEXT(0x%x, 0x%x, %p, 0x%x, 0x%x, %p);\n", target, internalFormat, (void *) width, format, type, (void *) table));
+   DISPATCH(ColorTable, (target, internalFormat, width, format, type, table), (F, "glColorTableEXT(0x%x, 0x%x, %p, 0x%x, 0x%x, %p);", target, internalFormat, (void *) width, format, type, (void *) table));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetColorTableEXT)(GLenum target, GLenum format, GLenum type, GLvoid * data)
 {
-   DISPATCH(GetColorTableEXT, (target, format, type, data), (F, "glGetColorTableEXT(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (void *) data));
+   DISPATCH(GetColorTableEXT, (target, format, type, data), (F, "glGetColorTableEXT(0x%x, 0x%x, 0x%x, %p);", target, format, type, (void *) data));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterivEXT)(GLenum target, GLenum pname, GLint * params)
 {
-   DISPATCH(GetColorTableParameterivEXT, (target, pname, params), (F, "glGetColorTableParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetColorTableParameterivEXT, (target, pname, params), (F, "glGetColorTableParameterivEXT(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetColorTableParameterfvEXT, (target, pname, params), (F, "glGetColorTableParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (void *) params));
+   DISPATCH(GetColorTableParameterfvEXT, (target, pname, params), (F, "glGetColorTableParameterfvEXT(0x%x, 0x%x, %p);", target, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetListParameterfvSGIX)(GLuint list, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetListParameterfvSGIX, (list, pname, params), (F, "glGetListParameterfvSGIX(%d, 0x%x, %p);\n", list, pname, (void *) params));
+   DISPATCH(GetListParameterfvSGIX, (list, pname, params), (F, "glGetListParameterfvSGIX(%d, 0x%x, %p);", list, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetListParameterivSGIX)(GLuint list, GLenum pname, GLint * params)
 {
-   DISPATCH(GetListParameterivSGIX, (list, pname, params), (F, "glGetListParameterivSGIX(%d, 0x%x, %p);\n", list, pname, (void *) params));
+   DISPATCH(GetListParameterivSGIX, (list, pname, params), (F, "glGetListParameterivSGIX(%d, 0x%x, %p);", list, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ListParameterfSGIX)(GLuint list, GLenum pname, GLfloat param)
 {
-   DISPATCH(ListParameterfSGIX, (list, pname, param), (F, "glListParameterfSGIX(%d, 0x%x, %f);\n", list, pname, param));
+   DISPATCH(ListParameterfSGIX, (list, pname, param), (F, "glListParameterfSGIX(%d, 0x%x, %f);", list, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ListParameterfvSGIX)(GLuint list, GLenum pname, const GLfloat * params)
 {
-   DISPATCH(ListParameterfvSGIX, (list, pname, params), (F, "glListParameterfvSGIX(%d, 0x%x, %p);\n", list, pname, (void *) params));
+   DISPATCH(ListParameterfvSGIX, (list, pname, params), (F, "glListParameterfvSGIX(%d, 0x%x, %p);", list, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ListParameteriSGIX)(GLuint list, GLenum pname, GLint param)
 {
-   DISPATCH(ListParameteriSGIX, (list, pname, param), (F, "glListParameteriSGIX(%d, 0x%x, %d);\n", list, pname, param));
+   DISPATCH(ListParameteriSGIX, (list, pname, param), (F, "glListParameteriSGIX(%d, 0x%x, %d);", list, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ListParameterivSGIX)(GLuint list, GLenum pname, const GLint * params)
 {
-   DISPATCH(ListParameterivSGIX, (list, pname, params), (F, "glListParameterivSGIX(%d, 0x%x, %p);\n", list, pname, (void *) params));
+   DISPATCH(ListParameterivSGIX, (list, pname, params), (F, "glListParameterivSGIX(%d, 0x%x, %p);", list, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(IndexMaterialEXT)(GLenum face, GLenum mode)
 {
-   DISPATCH(IndexMaterialEXT, (face, mode), (F, "glIndexMaterialEXT(0x%x, 0x%x);\n", face, mode));
+   DISPATCH(IndexMaterialEXT, (face, mode), (F, "glIndexMaterialEXT(0x%x, 0x%x);", face, mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(IndexFuncEXT)(GLenum func, GLclampf ref)
 {
-   DISPATCH(IndexFuncEXT, (func, ref), (F, "glIndexFuncEXT(0x%x, %f);\n", func, ref));
+   DISPATCH(IndexFuncEXT, (func, ref), (F, "glIndexFuncEXT(0x%x, %f);", func, ref));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LockArraysEXT)(GLint first, GLsizei count)
 {
-   DISPATCH(LockArraysEXT, (first, count), (F, "glLockArraysEXT(%d, %p);\n", first, (void *) count));
+   DISPATCH(LockArraysEXT, (first, count), (F, "glLockArraysEXT(%d, %p);", first, (void *) count));
 }
 
 KEYWORD1 void KEYWORD2 NAME(UnlockArraysEXT)(void)
 {
-   DISPATCH(UnlockArraysEXT, (), (F, "glUnlockArraysEXT();\n"));
+   DISPATCH(UnlockArraysEXT, (), (F, "glUnlockArraysEXT();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CullParameterdvEXT)(GLenum pname, GLdouble * params)
 {
-   DISPATCH(CullParameterdvEXT, (pname, params), (F, "glCullParameterdvEXT(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(CullParameterdvEXT, (pname, params), (F, "glCullParameterdvEXT(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CullParameterfvEXT)(GLenum pname, GLfloat * params)
 {
-   DISPATCH(CullParameterfvEXT, (pname, params), (F, "glCullParameterfvEXT(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(CullParameterfvEXT, (pname, params), (F, "glCullParameterfvEXT(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FragmentColorMaterialSGIX)(GLenum face, GLenum mode)
 {
-   DISPATCH(FragmentColorMaterialSGIX, (face, mode), (F, "glFragmentColorMaterialSGIX(0x%x, 0x%x);\n", face, mode));
+   DISPATCH(FragmentColorMaterialSGIX, (face, mode), (F, "glFragmentColorMaterialSGIX(0x%x, 0x%x);", face, mode));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FragmentLightfSGIX)(GLenum light, GLenum pname, GLfloat param)
 {
-   DISPATCH(FragmentLightfSGIX, (light, pname, param), (F, "glFragmentLightfSGIX(0x%x, 0x%x, %f);\n", light, pname, param));
+   DISPATCH(FragmentLightfSGIX, (light, pname, param), (F, "glFragmentLightfSGIX(0x%x, 0x%x, %f);", light, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FragmentLightfvSGIX)(GLenum light, GLenum pname, const GLfloat * params)
 {
-   DISPATCH(FragmentLightfvSGIX, (light, pname, params), (F, "glFragmentLightfvSGIX(0x%x, 0x%x, %p);\n", light, pname, (void *) params));
+   DISPATCH(FragmentLightfvSGIX, (light, pname, params), (F, "glFragmentLightfvSGIX(0x%x, 0x%x, %p);", light, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FragmentLightiSGIX)(GLenum light, GLenum pname, GLint param)
 {
-   DISPATCH(FragmentLightiSGIX, (light, pname, param), (F, "glFragmentLightiSGIX(0x%x, 0x%x, %d);\n", light, pname, param));
+   DISPATCH(FragmentLightiSGIX, (light, pname, param), (F, "glFragmentLightiSGIX(0x%x, 0x%x, %d);", light, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FragmentLightivSGIX)(GLenum light, GLenum pname, const GLint * params)
 {
-   DISPATCH(FragmentLightivSGIX, (light, pname, params), (F, "glFragmentLightivSGIX(0x%x, 0x%x, %p);\n", light, pname, (void *) params));
+   DISPATCH(FragmentLightivSGIX, (light, pname, params), (F, "glFragmentLightivSGIX(0x%x, 0x%x, %p);", light, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FragmentLightModelfSGIX)(GLenum pname, GLfloat param)
 {
-   DISPATCH(FragmentLightModelfSGIX, (pname, param), (F, "glFragmentLightModelfSGIX(0x%x, %f);\n", pname, param));
+   DISPATCH(FragmentLightModelfSGIX, (pname, param), (F, "glFragmentLightModelfSGIX(0x%x, %f);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FragmentLightModelfvSGIX)(GLenum pname, const GLfloat * params)
 {
-   DISPATCH(FragmentLightModelfvSGIX, (pname, params), (F, "glFragmentLightModelfvSGIX(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(FragmentLightModelfvSGIX, (pname, params), (F, "glFragmentLightModelfvSGIX(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FragmentLightModeliSGIX)(GLenum pname, GLint param)
 {
-   DISPATCH(FragmentLightModeliSGIX, (pname, param), (F, "glFragmentLightModeliSGIX(0x%x, %d);\n", pname, param));
+   DISPATCH(FragmentLightModeliSGIX, (pname, param), (F, "glFragmentLightModeliSGIX(0x%x, %d);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FragmentLightModelivSGIX)(GLenum pname, const GLint * params)
 {
-   DISPATCH(FragmentLightModelivSGIX, (pname, params), (F, "glFragmentLightModelivSGIX(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(FragmentLightModelivSGIX, (pname, params), (F, "glFragmentLightModelivSGIX(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FragmentMaterialfSGIX)(GLenum face, GLenum pname, GLfloat param)
 {
-   DISPATCH(FragmentMaterialfSGIX, (face, pname, param), (F, "glFragmentMaterialfSGIX(0x%x, 0x%x, %f);\n", face, pname, param));
+   DISPATCH(FragmentMaterialfSGIX, (face, pname, param), (F, "glFragmentMaterialfSGIX(0x%x, 0x%x, %f);", face, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FragmentMaterialfvSGIX)(GLenum face, GLenum pname, const GLfloat * params)
 {
-   DISPATCH(FragmentMaterialfvSGIX, (face, pname, params), (F, "glFragmentMaterialfvSGIX(0x%x, 0x%x, %p);\n", face, pname, (void *) params));
+   DISPATCH(FragmentMaterialfvSGIX, (face, pname, params), (F, "glFragmentMaterialfvSGIX(0x%x, 0x%x, %p);", face, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FragmentMaterialiSGIX)(GLenum face, GLenum pname, GLint param)
 {
-   DISPATCH(FragmentMaterialiSGIX, (face, pname, param), (F, "glFragmentMaterialiSGIX(0x%x, 0x%x, %d);\n", face, pname, param));
+   DISPATCH(FragmentMaterialiSGIX, (face, pname, param), (F, "glFragmentMaterialiSGIX(0x%x, 0x%x, %d);", face, pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FragmentMaterialivSGIX)(GLenum face, GLenum pname, const GLint * params)
 {
-   DISPATCH(FragmentMaterialivSGIX, (face, pname, params), (F, "glFragmentMaterialivSGIX(0x%x, 0x%x, %p);\n", face, pname, (void *) params));
+   DISPATCH(FragmentMaterialivSGIX, (face, pname, params), (F, "glFragmentMaterialivSGIX(0x%x, 0x%x, %p);", face, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetFragmentLightfvSGIX)(GLenum light, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetFragmentLightfvSGIX, (light, pname, params), (F, "glGetFragmentLightfvSGIX(0x%x, 0x%x, %p);\n", light, pname, (void *) params));
+   DISPATCH(GetFragmentLightfvSGIX, (light, pname, params), (F, "glGetFragmentLightfvSGIX(0x%x, 0x%x, %p);", light, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetFragmentLightivSGIX)(GLenum light, GLenum pname, GLint * params)
 {
-   DISPATCH(GetFragmentLightivSGIX, (light, pname, params), (F, "glGetFragmentLightivSGIX(0x%x, 0x%x, %p);\n", light, pname, (void *) params));
+   DISPATCH(GetFragmentLightivSGIX, (light, pname, params), (F, "glGetFragmentLightivSGIX(0x%x, 0x%x, %p);", light, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetFragmentMaterialfvSGIX)(GLenum face, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetFragmentMaterialfvSGIX, (face, pname, params), (F, "glGetFragmentMaterialfvSGIX(0x%x, 0x%x, %p);\n", face, pname, (void *) params));
+   DISPATCH(GetFragmentMaterialfvSGIX, (face, pname, params), (F, "glGetFragmentMaterialfvSGIX(0x%x, 0x%x, %p);", face, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetFragmentMaterialivSGIX)(GLenum face, GLenum pname, GLint * params)
 {
-   DISPATCH(GetFragmentMaterialivSGIX, (face, pname, params), (F, "glGetFragmentMaterialivSGIX(0x%x, 0x%x, %p);\n", face, pname, (void *) params));
+   DISPATCH(GetFragmentMaterialivSGIX, (face, pname, params), (F, "glGetFragmentMaterialivSGIX(0x%x, 0x%x, %p);", face, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(LightEnviSGIX)(GLenum pname, GLint param)
 {
-   DISPATCH(LightEnviSGIX, (pname, param), (F, "glLightEnviSGIX(0x%x, %d);\n", pname, param));
+   DISPATCH(LightEnviSGIX, (pname, param), (F, "glLightEnviSGIX(0x%x, %d);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(DrawRangeElementsEXT)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)
 {
-   DISPATCH(DrawRangeElements, (mode, start, end, count, type, indices), (F, "glDrawRangeElementsEXT(0x%x, %d, %d, %p, 0x%x, %p);\n", mode, start, end, (void *) count, type, (void *) indices));
+   DISPATCH(DrawRangeElements, (mode, start, end, count, type, indices), (F, "glDrawRangeElementsEXT(0x%x, %d, %d, %p, 0x%x, %p);", mode, start, end, (void *) count, type, (void *) indices));
 }
 
 /* No dispatch for ApplyTextureEXT() */
@@ -3085,87 +3084,87 @@ KEYWORD1 void KEYWORD2 NAME(DrawRangeElementsEXT)(GLenum mode, GLuint start, GLu
 /* No dispatch for PixelTransformParameterfvEXT() */
 KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue)
 {
-   DISPATCH(SecondaryColor3bEXT, (red, green, blue), (F, "glSecondaryColor3bEXT(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(SecondaryColor3bEXT, (red, green, blue), (F, "glSecondaryColor3bEXT(%d, %d, %d);", red, green, blue));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bvEXT)(const GLbyte * v)
 {
-   DISPATCH(SecondaryColor3bvEXT, (v), (F, "glSecondaryColor3bvEXT(%p);\n", (void *) v));
+   DISPATCH(SecondaryColor3bvEXT, (v), (F, "glSecondaryColor3bvEXT(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue)
 {
-   DISPATCH(SecondaryColor3dEXT, (red, green, blue), (F, "glSecondaryColor3dEXT(%f, %f, %f);\n", red, green, blue));
+   DISPATCH(SecondaryColor3dEXT, (red, green, blue), (F, "glSecondaryColor3dEXT(%f, %f, %f);", red, green, blue));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dvEXT)(const GLdouble * v)
 {
-   DISPATCH(SecondaryColor3dvEXT, (v), (F, "glSecondaryColor3dvEXT(%p);\n", (void *) v));
+   DISPATCH(SecondaryColor3dvEXT, (v), (F, "glSecondaryColor3dvEXT(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue)
 {
-   DISPATCH(SecondaryColor3fEXT, (red, green, blue), (F, "glSecondaryColor3fEXT(%f, %f, %f);\n", red, green, blue));
+   DISPATCH(SecondaryColor3fEXT, (red, green, blue), (F, "glSecondaryColor3fEXT(%f, %f, %f);", red, green, blue));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fvEXT)(const GLfloat * v)
 {
-   DISPATCH(SecondaryColor3fvEXT, (v), (F, "glSecondaryColor3fvEXT(%p);\n", (void *) v));
+   DISPATCH(SecondaryColor3fvEXT, (v), (F, "glSecondaryColor3fvEXT(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SecondaryColor3iEXT)(GLint red, GLint green, GLint blue)
 {
-   DISPATCH(SecondaryColor3iEXT, (red, green, blue), (F, "glSecondaryColor3iEXT(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(SecondaryColor3iEXT, (red, green, blue), (F, "glSecondaryColor3iEXT(%d, %d, %d);", red, green, blue));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ivEXT)(const GLint * v)
 {
-   DISPATCH(SecondaryColor3ivEXT, (v), (F, "glSecondaryColor3ivEXT(%p);\n", (void *) v));
+   DISPATCH(SecondaryColor3ivEXT, (v), (F, "glSecondaryColor3ivEXT(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue)
 {
-   DISPATCH(SecondaryColor3sEXT, (red, green, blue), (F, "glSecondaryColor3sEXT(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(SecondaryColor3sEXT, (red, green, blue), (F, "glSecondaryColor3sEXT(%d, %d, %d);", red, green, blue));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SecondaryColor3svEXT)(const GLshort * v)
 {
-   DISPATCH(SecondaryColor3svEXT, (v), (F, "glSecondaryColor3svEXT(%p);\n", (void *) v));
+   DISPATCH(SecondaryColor3svEXT, (v), (F, "glSecondaryColor3svEXT(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue)
 {
-   DISPATCH(SecondaryColor3ubEXT, (red, green, blue), (F, "glSecondaryColor3ubEXT(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(SecondaryColor3ubEXT, (red, green, blue), (F, "glSecondaryColor3ubEXT(%d, %d, %d);", red, green, blue));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubvEXT)(const GLubyte * v)
 {
-   DISPATCH(SecondaryColor3ubvEXT, (v), (F, "glSecondaryColor3ubvEXT(%p);\n", (void *) v));
+   DISPATCH(SecondaryColor3ubvEXT, (v), (F, "glSecondaryColor3ubvEXT(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue)
 {
-   DISPATCH(SecondaryColor3uiEXT, (red, green, blue), (F, "glSecondaryColor3uiEXT(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(SecondaryColor3uiEXT, (red, green, blue), (F, "glSecondaryColor3uiEXT(%d, %d, %d);", red, green, blue));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uivEXT)(const GLuint * v)
 {
-   DISPATCH(SecondaryColor3uivEXT, (v), (F, "glSecondaryColor3uivEXT(%p);\n", (void *) v));
+   DISPATCH(SecondaryColor3uivEXT, (v), (F, "glSecondaryColor3uivEXT(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue)
 {
-   DISPATCH(SecondaryColor3usEXT, (red, green, blue), (F, "glSecondaryColor3usEXT(%d, %d, %d);\n", red, green, blue));
+   DISPATCH(SecondaryColor3usEXT, (red, green, blue), (F, "glSecondaryColor3usEXT(%d, %d, %d);", red, green, blue));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usvEXT)(const GLushort * v)
 {
-   DISPATCH(SecondaryColor3usvEXT, (v), (F, "glSecondaryColor3usvEXT(%p);\n", (void *) v));
+   DISPATCH(SecondaryColor3usvEXT, (v), (F, "glSecondaryColor3usvEXT(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
 {
-   DISPATCH(SecondaryColorPointerEXT, (size, type, stride, pointer), (F, "glSecondaryColorPointerEXT(%d, 0x%x, %p, %p);\n", size, type, (void *) stride, (void *) pointer));
+   DISPATCH(SecondaryColorPointerEXT, (size, type, stride, pointer), (F, "glSecondaryColorPointerEXT(%d, 0x%x, %p, %p);", size, type, (void *) stride, (void *) pointer));
 }
 
 /* No dispatch for TextureNormalEXT() */
@@ -3173,27 +3172,27 @@ KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointerEXT)(GLint size, GLenum type, G
 /* No dispatch for MultiDrawElementsEXT() */
 KEYWORD1 void KEYWORD2 NAME(FogCoordfEXT)(GLfloat coord)
 {
-   DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordfEXT(%f);\n", coord));
+   DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordfEXT(%f);", coord));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FogCoordfvEXT)(const GLfloat * coord)
 {
-   DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfvEXT(%p);\n", (void *) coord));
+   DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfvEXT(%p);", (void *) coord));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FogCoorddEXT)(GLdouble coord)
 {
-   DISPATCH(FogCoorddEXT, (coord), (F, "glFogCoorddEXT(%f);\n", coord));
+   DISPATCH(FogCoorddEXT, (coord), (F, "glFogCoorddEXT(%f);", coord));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FogCoorddvEXT)(const GLdouble * coord)
 {
-   DISPATCH(FogCoorddvEXT, (coord), (F, "glFogCoorddvEXT(%p);\n", (void *) coord));
+   DISPATCH(FogCoorddvEXT, (coord), (F, "glFogCoorddvEXT(%p);", (void *) coord));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer)
 {
-   DISPATCH(FogCoordPointerEXT, (type, stride, pointer), (F, "glFogCoordPointerEXT(0x%x, %p, %p);\n", type, (void *) stride, (void *) pointer));
+   DISPATCH(FogCoordPointerEXT, (type, stride, pointer), (F, "glFogCoordPointerEXT(0x%x, %p, %p);", type, (void *) stride, (void *) pointer));
 }
 
 /* No dispatch for Tangent3bEXT() */
@@ -3276,227 +3275,227 @@ KEYWORD1 void KEYWORD2 NAME(FogCoordPointerEXT)(GLenum type, GLsizei stride, con
 /* No dispatch for ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN() */
 KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
 {
-   DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateEXT(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
+   DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateEXT(0x%x, 0x%x, 0x%x, 0x%x);", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
 }
 
 KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateINGR)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
 {
-   DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateINGR(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
+   DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateINGR(0x%x, 0x%x, 0x%x, 0x%x);", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
 }
 
 KEYWORD1 void KEYWORD2 NAME(VertexWeightfEXT)(GLfloat weight)
 {
-   DISPATCH(VertexWeightfEXT, (weight), (F, "glVertexWeightfEXT(%f);\n", weight));
+   DISPATCH(VertexWeightfEXT, (weight), (F, "glVertexWeightfEXT(%f);", weight));
 }
 
 KEYWORD1 void KEYWORD2 NAME(VertexWeightfvEXT)(const GLfloat * weight)
 {
-   DISPATCH(VertexWeightfvEXT, (weight), (F, "glVertexWeightfvEXT(%p);\n", (void *) weight));
+   DISPATCH(VertexWeightfvEXT, (weight), (F, "glVertexWeightfvEXT(%p);", (void *) weight));
 }
 
 KEYWORD1 void KEYWORD2 NAME(VertexWeightPointerEXT)(GLsizei size, GLenum type, GLsizei stride, const GLvoid * pointer)
 {
-   DISPATCH(VertexWeightPointerEXT, (size, type, stride, pointer), (F, "glVertexWeightPointerEXT(%p, 0x%x, %p, %p);\n", (void *) size, type, (void *) stride, (void *) pointer));
+   DISPATCH(VertexWeightPointerEXT, (size, type, stride, pointer), (F, "glVertexWeightPointerEXT(%p, 0x%x, %p, %p);", (void *) size, type, (void *) stride, (void *) pointer));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FlushVertexArrayRangeNV)(void)
 {
-   DISPATCH(FlushVertexArrayRangeNV, (), (F, "glFlushVertexArrayRangeNV();\n"));
+   DISPATCH(FlushVertexArrayRangeNV, (), (F, "glFlushVertexArrayRangeNV();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(VertexArrayRangeNV)(GLsizei length, const GLvoid * pointer)
 {
-   DISPATCH(VertexArrayRangeNV, (length, pointer), (F, "glVertexArrayRangeNV(%p, %p);\n", (void *) length, (void *) pointer));
+   DISPATCH(VertexArrayRangeNV, (length, pointer), (F, "glVertexArrayRangeNV(%p, %p);", (void *) length, (void *) pointer));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CombinerParameterfvNV)(GLenum pname, const GLfloat * params)
 {
-   DISPATCH(CombinerParameterfvNV, (pname, params), (F, "glCombinerParameterfvNV(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(CombinerParameterfvNV, (pname, params), (F, "glCombinerParameterfvNV(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CombinerParameterfNV)(GLenum pname, GLfloat param)
 {
-   DISPATCH(CombinerParameterfNV, (pname, param), (F, "glCombinerParameterfNV(0x%x, %f);\n", pname, param));
+   DISPATCH(CombinerParameterfNV, (pname, param), (F, "glCombinerParameterfNV(0x%x, %f);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CombinerParameterivNV)(GLenum pname, const GLint * params)
 {
-   DISPATCH(CombinerParameterivNV, (pname, params), (F, "glCombinerParameterivNV(0x%x, %p);\n", pname, (void *) params));
+   DISPATCH(CombinerParameterivNV, (pname, params), (F, "glCombinerParameterivNV(0x%x, %p);", pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CombinerParameteriNV)(GLenum pname, GLint param)
 {
-   DISPATCH(CombinerParameteriNV, (pname, param), (F, "glCombinerParameteriNV(0x%x, %d);\n", pname, param));
+   DISPATCH(CombinerParameteriNV, (pname, param), (F, "glCombinerParameteriNV(0x%x, %d);", pname, param));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)
 {
-   DISPATCH(CombinerInputNV, (stage, portion, variable, input, mapping, componentUsage), (F, "glCombinerInputNV(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x);\n", stage, portion, variable, input, mapping, componentUsage));
+   DISPATCH(CombinerInputNV, (stage, portion, variable, input, mapping, componentUsage), (F, "glCombinerInputNV(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x);", stage, portion, variable, input, mapping, componentUsage));
 }
 
 KEYWORD1 void KEYWORD2 NAME(CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum)
 {
-   DISPATCH(CombinerOutputNV, (stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum), (F, "glCombinerOutputNV(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, %d, %d, %d);\n", stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum));
+   DISPATCH(CombinerOutputNV, (stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum), (F, "glCombinerOutputNV(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, %d, %d, %d);", stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum));
 }
 
 KEYWORD1 void KEYWORD2 NAME(FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)
 {
-   DISPATCH(FinalCombinerInputNV, (variable, input, mapping, componentUsage), (F, "glFinalCombinerInputNV(0x%x, 0x%x, 0x%x, 0x%x);\n", variable, input, mapping, componentUsage));
+   DISPATCH(FinalCombinerInputNV, (variable, input, mapping, componentUsage), (F, "glFinalCombinerInputNV(0x%x, 0x%x, 0x%x, 0x%x);", variable, input, mapping, componentUsage));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetCombinerInputParameterfvNV, (stage, portion, variable, pname, params), (F, "glGetCombinerInputParameterfvNV(0x%x, 0x%x, 0x%x, 0x%x, %p);\n", stage, portion, variable, pname, (void *) params));
+   DISPATCH(GetCombinerInputParameterfvNV, (stage, portion, variable, pname, params), (F, "glGetCombinerInputParameterfvNV(0x%x, 0x%x, 0x%x, 0x%x, %p);", stage, portion, variable, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params)
 {
-   DISPATCH(GetCombinerInputParameterivNV, (stage, portion, variable, pname, params), (F, "glGetCombinerInputParameterivNV(0x%x, 0x%x, 0x%x, 0x%x, %p);\n", stage, portion, variable, pname, (void *) params));
+   DISPATCH(GetCombinerInputParameterivNV, (stage, portion, variable, pname, params), (F, "glGetCombinerInputParameterivNV(0x%x, 0x%x, 0x%x, 0x%x, %p);", stage, portion, variable, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetCombinerOutputParameterfvNV, (stage, portion, pname, params), (F, "glGetCombinerOutputParameterfvNV(0x%x, 0x%x, 0x%x, %p);\n", stage, portion, pname, (void *) params));
+   DISPATCH(GetCombinerOutputParameterfvNV, (stage, portion, pname, params), (F, "glGetCombinerOutputParameterfvNV(0x%x, 0x%x, 0x%x, %p);", stage, portion, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params)
 {
-   DISPATCH(GetCombinerOutputParameterivNV, (stage, portion, pname, params), (F, "glGetCombinerOutputParameterivNV(0x%x, 0x%x, 0x%x, %p);\n", stage, portion, pname, (void *) params));
+   DISPATCH(GetCombinerOutputParameterivNV, (stage, portion, pname, params), (F, "glGetCombinerOutputParameterivNV(0x%x, 0x%x, 0x%x, %p);", stage, portion, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params)
 {
-   DISPATCH(GetFinalCombinerInputParameterfvNV, (variable, pname, params), (F, "glGetFinalCombinerInputParameterfvNV(0x%x, 0x%x, %p);\n", variable, pname, (void *) params));
+   DISPATCH(GetFinalCombinerInputParameterfvNV, (variable, pname, params), (F, "glGetFinalCombinerInputParameterfvNV(0x%x, 0x%x, %p);", variable, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params)
 {
-   DISPATCH(GetFinalCombinerInputParameterivNV, (variable, pname, params), (F, "glGetFinalCombinerInputParameterivNV(0x%x, 0x%x, %p);\n", variable, pname, (void *) params));
+   DISPATCH(GetFinalCombinerInputParameterivNV, (variable, pname, params), (F, "glGetFinalCombinerInputParameterivNV(0x%x, 0x%x, %p);", variable, pname, (void *) params));
 }
 
 KEYWORD1 void KEYWORD2 NAME(ResizeBuffersMESA)(void)
 {
-   DISPATCH(ResizeBuffersMESA, (), (F, "glResizeBuffersMESA();\n"));
+   DISPATCH(ResizeBuffersMESA, (), (F, "glResizeBuffersMESA();"));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos2dMESA)(GLdouble x, GLdouble y)
 {
-   DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2dMESA(%f, %f);\n", x, y));
+   DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2dMESA(%f, %f);", x, y));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos2dvMESA)(const GLdouble * v)
 {
-   DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dvMESA(%p);\n", (void *) v));
+   DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dvMESA(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos2fMESA)(GLfloat x, GLfloat y)
 {
-   DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2fMESA(%f, %f);\n", x, y));
+   DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2fMESA(%f, %f);", x, y));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos2fvMESA)(const GLfloat * v)
 {
-   DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fvMESA(%p);\n", (void *) v));
+   DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fvMESA(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos2iMESA)(GLint x, GLint y)
 {
-   DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2iMESA(%d, %d);\n", x, y));
+   DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2iMESA(%d, %d);", x, y));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos2ivMESA)(const GLint * v)
 {
-   DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2ivMESA(%p);\n", (void *) v));
+   DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2ivMESA(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos2sMESA)(GLshort x, GLshort y)
 {
-   DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2sMESA(%d, %d);\n", x, y));
+   DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2sMESA(%d, %d);", x, y));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos2svMESA)(const GLshort * v)
 {
-   DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2svMESA(%p);\n", (void *) v));
+   DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2svMESA(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z)
 {
-   DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3dMESA(%f, %f, %f);\n", x, y, z));
+   DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3dMESA(%f, %f, %f);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos3dvMESA)(const GLdouble * v)
 {
-   DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dvMESA(%p);\n", (void *) v));
+   DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dvMESA(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z)
 {
-   DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3fMESA(%f, %f, %f);\n", x, y, z));
+   DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3fMESA(%f, %f, %f);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos3fvMESA)(const GLfloat * v)
 {
-   DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fvMESA(%p);\n", (void *) v));
+   DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fvMESA(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos3iMESA)(GLint x, GLint y, GLint z)
 {
-   DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3iMESA(%d, %d, %d);\n", x, y, z));
+   DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3iMESA(%d, %d, %d);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos3ivMESA)(const GLint * v)
 {
-   DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3ivMESA(%p);\n", (void *) v));
+   DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3ivMESA(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos3sMESA)(GLshort x, GLshort y, GLshort z)
 {
-   DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3sMESA(%d, %d, %d);\n", x, y, z));
+   DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3sMESA(%d, %d, %d);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos3svMESA)(const GLshort * v)
 {
-   DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3svMESA(%p);\n", (void *) v));
+   DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3svMESA(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
 {
-   DISPATCH(WindowPos4dMESA, (x, y, z, w), (F, "glWindowPos4dMESA(%f, %f, %f, %f);\n", x, y, z, w));
+   DISPATCH(WindowPos4dMESA, (x, y, z, w), (F, "glWindowPos4dMESA(%f, %f, %f, %f);", x, y, z, w));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos4dvMESA)(const GLdouble * v)
 {
-   DISPATCH(WindowPos4dvMESA, (v), (F, "glWindowPos4dvMESA(%p);\n", (void *) v));
+   DISPATCH(WindowPos4dvMESA, (v), (F, "glWindowPos4dvMESA(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
 {
-   DISPATCH(WindowPos4fMESA, (x, y, z, w), (F, "glWindowPos4fMESA(%f, %f, %f, %f);\n", x, y, z, w));
+   DISPATCH(WindowPos4fMESA, (x, y, z, w), (F, "glWindowPos4fMESA(%f, %f, %f, %f);", x, y, z, w));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos4fvMESA)(const GLfloat * v)
 {
-   DISPATCH(WindowPos4fvMESA, (v), (F, "glWindowPos4fvMESA(%p);\n", (void *) v));
+   DISPATCH(WindowPos4fvMESA, (v), (F, "glWindowPos4fvMESA(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w)
 {
-   DISPATCH(WindowPos4iMESA, (x, y, z, w), (F, "glWindowPos4iMESA(%d, %d, %d, %d);\n", x, y, z, w));
+   DISPATCH(WindowPos4iMESA, (x, y, z, w), (F, "glWindowPos4iMESA(%d, %d, %d, %d);", x, y, z, w));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos4ivMESA)(const GLint * v)
 {
-   DISPATCH(WindowPos4ivMESA, (v), (F, "glWindowPos4ivMESA(%p);\n", (void *) v));
+   DISPATCH(WindowPos4ivMESA, (v), (F, "glWindowPos4ivMESA(%p);", (void *) v));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w)
 {
-   DISPATCH(WindowPos4sMESA, (x, y, z, w), (F, "glWindowPos4sMESA(%d, %d, %d, %d);\n", x, y, z, w));
+   DISPATCH(WindowPos4sMESA, (x, y, z, w), (F, "glWindowPos4sMESA(%d, %d, %d, %d);", x, y, z, w));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos4svMESA)(const GLshort * v)
 {
-   DISPATCH(WindowPos4svMESA, (v), (F, "glWindowPos4svMESA(%p);\n", (void *) v));
+   DISPATCH(WindowPos4svMESA, (v), (F, "glWindowPos4svMESA(%p);", (void *) v));
 }
 
 /* No dispatch for MultiModeDrawArraysIBM() */
@@ -3511,17 +3510,17 @@ KEYWORD1 void KEYWORD2 NAME(WindowPos4svMESA)(const GLshort * v)
 /* No dispatch for VertexPointerListIBM() */
 KEYWORD1 void KEYWORD2 NAME(TbufferMask3DFX)(GLuint mask)
 {
-   DISPATCH(TbufferMask3DFX, (mask), (F, "glTbufferMask3DFX(%d);\n", mask));
+   DISPATCH(TbufferMask3DFX, (mask), (F, "glTbufferMask3DFX(%d);", mask));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SampleMaskEXT)(GLclampf value, GLboolean invert)
 {
-   DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskEXT(%f, %d);\n", value, invert));
+   DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskEXT(%f, %d);", value, invert));
 }
 
 KEYWORD1 void KEYWORD2 NAME(SamplePatternEXT)(GLenum pattern)
 {
-   DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternEXT(0x%x);\n", pattern));
+   DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternEXT(0x%x);", pattern));
 }
 
 /* No dispatch for TextureColorMaskSGIS() */
@@ -3544,148 +3543,404 @@ KEYWORD1 void KEYWORD2 NAME(SamplePatternEXT)(GLenum pattern)
 /* No dispatch for EvalMapsNV() */
 /* No dispatch for CombinerStageParameterfvNV() */
 /* No dispatch for GetCombinerStageParameterfvNV() */
-/* No dispatch for BindProgramNV() */
-/* No dispatch for DeleteProgramsNV() */
-/* No dispatch for ExecuteProgramNV() */
-/* No dispatch for GenProgramsNV() */
-/* No dispatch for AreProgramsResidentNV() */
-/* No dispatch for RequestResidentProgramsNV() */
-/* No dispatch for GetProgramParameterfvNV() */
-/* No dispatch for GetProgramParameterdvNV() */
-/* No dispatch for GetProgramivNV() */
-/* No dispatch for GetProgramStringNV() */
-/* No dispatch for GetTrackMatrixivNV() */
-/* No dispatch for GetVertexAttribdvNV() */
-/* No dispatch for GetVertexAttribfvNV() */
-/* No dispatch for GetVertexAttribivNV() */
-/* No dispatch for GetVertexAttribPointervNV() */
-/* No dispatch for IsProgramNV() */
-/* No dispatch for LoadProgramNV() */
-/* No dispatch for ProgramParameter4fNV() */
-/* No dispatch for ProgramParameter4dNV() */
-/* No dispatch for ProgramParameter4dvNV() */
-/* No dispatch for ProgramParameter4fvNV() */
-/* No dispatch for ProgramParameters4dvNV() */
-/* No dispatch for ProgramParameters4fvNV() */
-/* No dispatch for TrackMatrixNV() */
-/* No dispatch for VertexAttribPointerNV() */
-/* No dispatch for VertexAttrib1sNV() */
-/* No dispatch for VertexAttrib1fNV() */
-/* No dispatch for VertexAttrib1dNV() */
-/* No dispatch for VertexAttrib2sNV() */
-/* No dispatch for VertexAttrib2fNV() */
-/* No dispatch for VertexAttrib2dNV() */
-/* No dispatch for VertexAttrib3sNV() */
-/* No dispatch for VertexAttrib3fNV() */
-/* No dispatch for VertexAttrib3dNV() */
-/* No dispatch for VertexAttrib4sNV() */
-/* No dispatch for VertexAttrib4fNV() */
-/* No dispatch for VertexAttrib4dNV() */
-/* No dispatch for VertexAttrib4ubNV() */
-/* No dispatch for VertexAttrib1svNV() */
-/* No dispatch for VertexAttrib1fvNV() */
-/* No dispatch for VertexAttrib1dvNV() */
-/* No dispatch for VertexAttrib2svNV() */
-/* No dispatch for VertexAttrib2fvNV() */
-/* No dispatch for VertexAttrib2dvNV() */
-/* No dispatch for VertexAttrib3svNV() */
-/* No dispatch for VertexAttrib3fvNV() */
-/* No dispatch for VertexAttrib3dvNV() */
-/* No dispatch for VertexAttrib4svNV() */
-/* No dispatch for VertexAttrib4fvNV() */
-/* No dispatch for VertexAttrib4dvNV() */
-/* No dispatch for VertexAttrib4ubvNV() */
-/* No dispatch for VertexAttribs1svNV() */
-/* No dispatch for VertexAttribs1fvNV() */
-/* No dispatch for VertexAttribs1dvNV() */
-/* No dispatch for VertexAttribs2svNV() */
-/* No dispatch for VertexAttribs2fvNV() */
-/* No dispatch for VertexAttribs2dvNV() */
-/* No dispatch for VertexAttribs3svNV() */
-/* No dispatch for VertexAttribs3fvNV() */
-/* No dispatch for VertexAttribs3dvNV() */
-/* No dispatch for VertexAttribs4svNV() */
-/* No dispatch for VertexAttribs4fvNV() */
-/* No dispatch for VertexAttribs4dvNV() */
-/* No dispatch for VertexAttribs4ubvNV() */
 KEYWORD1 void KEYWORD2 NAME(WindowPos2dARB)(GLdouble x, GLdouble y)
 {
-   DISPATCH(WindowPos2dARB, (x, y), (F, "glWindowPos2dARB(%f, %f);\n", x, y));
+   DISPATCH(WindowPos2dARB, (x, y), (F, "glWindowPos2dARB(%f, %f);", x, y));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos2fARB)(GLfloat x, GLfloat y)
 {
-   DISPATCH(WindowPos2fARB, (x, y), (F, "glWindowPos2fARB(%f, %f);\n", x, y));
+   DISPATCH(WindowPos2fARB, (x, y), (F, "glWindowPos2fARB(%f, %f);", x, y));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos2iARB)(GLint x, GLint y)
 {
-   DISPATCH(WindowPos2iARB, (x, y), (F, "glWindowPos2iARB(%d, %d);\n", x, y));
+   DISPATCH(WindowPos2iARB, (x, y), (F, "glWindowPos2iARB(%d, %d);", x, y));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos2sARB)(GLshort x, GLshort y)
 {
-   DISPATCH(WindowPos2sARB, (x, y), (F, "glWindowPos2sARB(%d, %d);\n", x, y));
+   DISPATCH(WindowPos2sARB, (x, y), (F, "glWindowPos2sARB(%d, %d);", x, y));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos2dvARB)(const GLdouble * p)
 {
-   DISPATCH(WindowPos2dvARB, (p), (F, "glWindowPos2dvARB(%p);\n", (void *) p));
+   DISPATCH(WindowPos2dvARB, (p), (F, "glWindowPos2dvARB(%p);", (void *) p));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos2fvARB)(const GLfloat * p)
 {
-   DISPATCH(WindowPos2fvARB, (p), (F, "glWindowPos2fvARB(%p);\n", (void *) p));
+   DISPATCH(WindowPos2fvARB, (p), (F, "glWindowPos2fvARB(%p);", (void *) p));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos2ivARB)(const GLint * p)
 {
-   DISPATCH(WindowPos2ivARB, (p), (F, "glWindowPos2ivARB(%p);\n", (void *) p));
+   DISPATCH(WindowPos2ivARB, (p), (F, "glWindowPos2ivARB(%p);", (void *) p));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos2svARB)(const GLshort * p)
 {
-   DISPATCH(WindowPos2svARB, (p), (F, "glWindowPos2svARB(%p);\n", (void *) p));
+   DISPATCH(WindowPos2svARB, (p), (F, "glWindowPos2svARB(%p);", (void *) p));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z)
 {
-   DISPATCH(WindowPos3dARB, (x, y, z), (F, "glWindowPos3dARB(%f, %f, %f);\n", x, y, z));
+   DISPATCH(WindowPos3dARB, (x, y, z), (F, "glWindowPos3dARB(%f, %f, %f);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z)
 {
-   DISPATCH(WindowPos3fARB, (x, y, z), (F, "glWindowPos3fARB(%f, %f, %f);\n", x, y, z));
+   DISPATCH(WindowPos3fARB, (x, y, z), (F, "glWindowPos3fARB(%f, %f, %f);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos3iARB)(GLint x, GLint y, GLint z)
 {
-   DISPATCH(WindowPos3iARB, (x, y, z), (F, "glWindowPos3iARB(%d, %d, %d);\n", x, y, z));
+   DISPATCH(WindowPos3iARB, (x, y, z), (F, "glWindowPos3iARB(%d, %d, %d);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos3sARB)(GLshort x, GLshort y, GLshort z)
 {
-   DISPATCH(WindowPos3sARB, (x, y, z), (F, "glWindowPos3sARB(%d, %d, %d);\n", x, y, z));
+   DISPATCH(WindowPos3sARB, (x, y, z), (F, "glWindowPos3sARB(%d, %d, %d);", x, y, z));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos3dvARB)(const GLdouble * p)
 {
-   DISPATCH(WindowPos3dvARB, (p), (F, "glWindowPos3dvARB(%p);\n", (void *) p));
+   DISPATCH(WindowPos3dvARB, (p), (F, "glWindowPos3dvARB(%p);", (void *) p));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos3fvARB)(const GLfloat * p)
 {
-   DISPATCH(WindowPos3fvARB, (p), (F, "glWindowPos3fvARB(%p);\n", (void *) p));
+   DISPATCH(WindowPos3fvARB, (p), (F, "glWindowPos3fvARB(%p);", (void *) p));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos3ivARB)(const GLint * p)
 {
-   DISPATCH(WindowPos3ivARB, (p), (F, "glWindowPos3ivARB(%p);\n", (void *) p));
+   DISPATCH(WindowPos3ivARB, (p), (F, "glWindowPos3ivARB(%p);", (void *) p));
 }
 
 KEYWORD1 void KEYWORD2 NAME(WindowPos3svARB)(const GLshort * p)
 {
-   DISPATCH(WindowPos3svARB, (p), (F, "glWindowPos3svARB(%p);\n", (void *) p));
+   DISPATCH(WindowPos3svARB, (p), (F, "glWindowPos3svARB(%p);", (void *) p));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindProgramNV)(GLenum target, GLuint id)
+{
+   DISPATCH(BindProgramNV, (target, id), (F, "glBindProgramNV(0x%x, %d);", target, id));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteProgramsNV)(GLsizei n, const GLuint * ids)
+{
+   DISPATCH(DeleteProgramsNV, (n, ids), (F, "glDeleteProgramsNV(%p, %p);", (void *) n, (void *) ids));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params)
+{
+   DISPATCH(ExecuteProgramNV, (target, id, params), (F, "glExecuteProgramNV(0x%x, %d, %p);", target, id, (void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GenProgramsNV)(GLsizei n, GLuint * ids)
+{
+   DISPATCH(GenProgramsNV, (n, ids), (F, "glGenProgramsNV(%p, %p);", (void *) n, (void *) ids));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences)
+{
+   RETURN_DISPATCH(AreProgramsResidentNV, (n, ids, residences), (F, "glAreProgramsResidentNV(%p, %p, %p);", (void *) n, (void *) ids, (void *) residences));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RequestResidentProgramsNV)(GLsizei n, const GLuint * ids)
+{
+   DISPATCH(RequestResidentProgramsNV, (n, ids), (F, "glRequestResidentProgramsNV(%p, %p);", (void *) n, (void *) ids));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetProgramParameterfvNV, (target, index, pname, params), (F, "glGetProgramParameterfvNV(0x%x, %d, 0x%x, %p);", target, index, pname, (void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params)
+{
+   DISPATCH(GetProgramParameterdvNV, (target, index, pname, params), (F, "glGetProgramParameterdvNV(0x%x, %d, 0x%x, %p);", target, index, pname, (void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramivNV)(GLuint id, GLenum pname, GLint * params)
+{
+   DISPATCH(GetProgramivNV, (id, pname, params), (F, "glGetProgramivNV(%d, 0x%x, %p);", id, pname, (void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program)
+{
+   DISPATCH(GetProgramStringNV, (id, pname, program), (F, "glGetProgramStringNV(%d, 0x%x, %p);", id, pname, (void *) program));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params)
+{
+   DISPATCH(GetTrackMatrixivNV, (target, address, pname, params), (F, "glGetTrackMatrixivNV(0x%x, %d, 0x%x, %p);", target, address, pname, (void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params)
+{
+   DISPATCH(GetVertexAttribdvNV, (index, pname, params), (F, "glGetVertexAttribdvNV(%d, 0x%x, %p);", index, pname, (void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetVertexAttribfvNV, (index, pname, params), (F, "glGetVertexAttribfvNV(%d, 0x%x, %p);", index, pname, (void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params)
+{
+   DISPATCH(GetVertexAttribivNV, (index, pname, params), (F, "glGetVertexAttribivNV(%d, 0x%x, %p);", index, pname, (void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer)
+{
+   DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointervNV(%d, 0x%x, %p);", index, pname, (void *) pointer));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramNV)(GLuint id)
+{
+   RETURN_DISPATCH(IsProgramNV, (id), (F, "glIsProgramNV(%d);", id));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program)
+{
+   DISPATCH(LoadProgramNV, (target, id, len, program), (F, "glLoadProgramNV(0x%x, %d, %p, %p);", target, id, (void *) len, (void *) program));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramParameter4fNV)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+   DISPATCH(ProgramParameter4fNV, (target, index, x, y, z, w), (F, "glProgramParameter4fNV(0x%x, %d, %f, %f, %f, %f);", target, index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+   DISPATCH(ProgramParameter4dNV, (target, index, x, y, z, w), (F, "glProgramParameter4dNV(0x%x, %d, %f, %f, %f, %f);", target, index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble * params)
+{
+   DISPATCH(ProgramParameter4dvNV, (target, index, params), (F, "glProgramParameter4dvNV(0x%x, %d, %p);", target, index, (void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramParameter4fvNV)(GLenum target, GLuint index, const GLfloat * params)
+{
+   DISPATCH(ProgramParameter4fvNV, (target, index, params), (F, "glProgramParameter4fvNV(0x%x, %d, %p);", target, index, (void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramParameters4dvNV)(GLenum target, GLuint index, GLuint num, const GLdouble * params)
+{
+   DISPATCH(ProgramParameters4dvNV, (target, index, num, params), (F, "glProgramParameters4dvNV(0x%x, %d, %d, %p);", target, index, num, (void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramParameters4fvNV)(GLenum target, GLuint index, GLuint num, const GLfloat * params)
+{
+   DISPATCH(ProgramParameters4fvNV, (target, index, num, params), (F, "glProgramParameters4fvNV(0x%x, %d, %d, %p);", target, index, num, (void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform)
+{
+   DISPATCH(TrackMatrixNV, (target, address, matrix, transform), (F, "glTrackMatrixNV(0x%x, %d, 0x%x, 0x%x);", target, address, matrix, transform));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
+{
+   DISPATCH(VertexAttribPointerNV, (index, size, type, stride, pointer), (F, "glVertexAttribPointerNV(%d, %d, 0x%x, %p, %p);", index, size, type, (void *) stride, (void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sNV)(GLuint index, GLshort x)
+{
+   DISPATCH(VertexAttrib1sNV, (index, x), (F, "glVertexAttrib1sNV(%d, %d);", index, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fNV)(GLuint index, GLfloat x)
+{
+   DISPATCH(VertexAttrib1fNV, (index, x), (F, "glVertexAttrib1fNV(%d, %f);", index, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dNV)(GLuint index, GLdouble x)
+{
+   DISPATCH(VertexAttrib1dNV, (index, x), (F, "glVertexAttrib1dNV(%d, %f);", index, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y)
+{
+   DISPATCH(VertexAttrib2sNV, (index, x, y), (F, "glVertexAttrib2sNV(%d, %d, %d);", index, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y)
+{
+   DISPATCH(VertexAttrib2fNV, (index, x, y), (F, "glVertexAttrib2fNV(%d, %f, %f);", index, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y)
+{
+   DISPATCH(VertexAttrib2dNV, (index, x, y), (F, "glVertexAttrib2dNV(%d, %f, %f);", index, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z)
+{
+   DISPATCH(VertexAttrib3sNV, (index, x, y, z), (F, "glVertexAttrib3sNV(%d, %d, %d, %d);", index, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
+{
+   DISPATCH(VertexAttrib3fNV, (index, x, y, z), (F, "glVertexAttrib3fNV(%d, %f, %f, %f);", index, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
+{
+   DISPATCH(VertexAttrib3dNV, (index, x, y, z), (F, "glVertexAttrib3dNV(%d, %f, %f, %f);", index, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
+{
+   DISPATCH(VertexAttrib4sNV, (index, x, y, z, w), (F, "glVertexAttrib4sNV(%d, %d, %d, %d, %d);", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+   DISPATCH(VertexAttrib4fNV, (index, x, y, z, w), (F, "glVertexAttrib4fNV(%d, %f, %f, %f, %f);", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+   DISPATCH(VertexAttrib4dNV, (index, x, y, z, w), (F, "glVertexAttrib4dNV(%d, %f, %f, %f, %f);", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
+{
+   DISPATCH(VertexAttrib4ubNV, (index, x, y, z, w), (F, "glVertexAttrib4ubNV(%d, %d, %d, %d, %d);", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1svNV)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib1svNV, (index, v), (F, "glVertexAttrib1svNV(%d, %p);", index, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fvNV)(GLuint index, const GLfloat * v)
+{
+   DISPATCH(VertexAttrib1fvNV, (index, v), (F, "glVertexAttrib1fvNV(%d, %p);", index, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dvNV)(GLuint index, const GLdouble * v)
+{
+   DISPATCH(VertexAttrib1dvNV, (index, v), (F, "glVertexAttrib1dvNV(%d, %p);", index, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2svNV)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib2svNV, (index, v), (F, "glVertexAttrib2svNV(%d, %p);", index, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fvNV)(GLuint index, const GLfloat * v)
+{
+   DISPATCH(VertexAttrib2fvNV, (index, v), (F, "glVertexAttrib2fvNV(%d, %p);", index, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dvNV)(GLuint index, const GLdouble * v)
+{
+   DISPATCH(VertexAttrib2dvNV, (index, v), (F, "glVertexAttrib2dvNV(%d, %p);", index, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3svNV)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib3svNV, (index, v), (F, "glVertexAttrib3svNV(%d, %p);", index, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fvNV)(GLuint index, const GLfloat * v)
+{
+   DISPATCH(VertexAttrib3fvNV, (index, v), (F, "glVertexAttrib3fvNV(%d, %p);", index, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dvNV)(GLuint index, const GLdouble * v)
+{
+   DISPATCH(VertexAttrib3dvNV, (index, v), (F, "glVertexAttrib3dvNV(%d, %p);", index, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4svNV)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib4svNV, (index, v), (F, "glVertexAttrib4svNV(%d, %p);", index, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fvNV)(GLuint index, const GLfloat * v)
+{
+   DISPATCH(VertexAttrib4fvNV, (index, v), (F, "glVertexAttrib4fvNV(%d, %p);", index, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dvNV)(GLuint index, const GLdouble * v)
+{
+   DISPATCH(VertexAttrib4dvNV, (index, v), (F, "glVertexAttrib4dvNV(%d, %p);", index, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubvNV)(GLuint index, const GLubyte * v)
+{
+   DISPATCH(VertexAttrib4ubvNV, (index, v), (F, "glVertexAttrib4ubvNV(%d, %p);", index, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v)
+{
+   DISPATCH(VertexAttribs1svNV, (index, n, v), (F, "glVertexAttribs1svNV(%d, %p, %p);", index, (void *) n, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v)
+{
+   DISPATCH(VertexAttribs1fvNV, (index, n, v), (F, "glVertexAttribs1fvNV(%d, %p, %p);", index, (void *) n, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v)
+{
+   DISPATCH(VertexAttribs1dvNV, (index, n, v), (F, "glVertexAttribs1dvNV(%d, %p, %p);", index, (void *) n, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v)
+{
+   DISPATCH(VertexAttribs2svNV, (index, n, v), (F, "glVertexAttribs2svNV(%d, %p, %p);", index, (void *) n, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v)
+{
+   DISPATCH(VertexAttribs2fvNV, (index, n, v), (F, "glVertexAttribs2fvNV(%d, %p, %p);", index, (void *) n, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v)
+{
+   DISPATCH(VertexAttribs2dvNV, (index, n, v), (F, "glVertexAttribs2dvNV(%d, %p, %p);", index, (void *) n, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v)
+{
+   DISPATCH(VertexAttribs3svNV, (index, n, v), (F, "glVertexAttribs3svNV(%d, %p, %p);", index, (void *) n, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v)
+{
+   DISPATCH(VertexAttribs3fvNV, (index, n, v), (F, "glVertexAttribs3fvNV(%d, %p, %p);", index, (void *) n, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v)
+{
+   DISPATCH(VertexAttribs3dvNV, (index, n, v), (F, "glVertexAttribs3dvNV(%d, %p, %p);", index, (void *) n, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v)
+{
+   DISPATCH(VertexAttribs4svNV, (index, n, v), (F, "glVertexAttribs4svNV(%d, %p, %p);", index, (void *) n, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v)
+{
+   DISPATCH(VertexAttribs4fvNV, (index, n, v), (F, "glVertexAttribs4fvNV(%d, %p, %p);", index, (void *) n, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v)
+{
+   DISPATCH(VertexAttribs4dvNV, (index, n, v), (F, "glVertexAttribs4dvNV(%d, %p, %p);", index, (void *) n, (void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v)
+{
+   DISPATCH(VertexAttribs4ubvNV, (index, n, v), (F, "glVertexAttribs4ubvNV(%d, %p, %p);", index, (void *) n, (void *) v));
 }
 
 
@@ -4295,6 +4550,70 @@ void *DISPATCH_TABLE_NAME[] = {
    TABLE_ENTRY(WindowPos3fvARB),
    TABLE_ENTRY(WindowPos3ivARB),
    TABLE_ENTRY(WindowPos3svARB),
+   TABLE_ENTRY(BindProgramNV),
+   TABLE_ENTRY(DeleteProgramsNV),
+   TABLE_ENTRY(ExecuteProgramNV),
+   TABLE_ENTRY(GenProgramsNV),
+   TABLE_ENTRY(AreProgramsResidentNV),
+   TABLE_ENTRY(RequestResidentProgramsNV),
+   TABLE_ENTRY(GetProgramParameterfvNV),
+   TABLE_ENTRY(GetProgramParameterdvNV),
+   TABLE_ENTRY(GetProgramivNV),
+   TABLE_ENTRY(GetProgramStringNV),
+   TABLE_ENTRY(GetTrackMatrixivNV),
+   TABLE_ENTRY(GetVertexAttribdvNV),
+   TABLE_ENTRY(GetVertexAttribfvNV),
+   TABLE_ENTRY(GetVertexAttribivNV),
+   TABLE_ENTRY(GetVertexAttribPointervNV),
+   TABLE_ENTRY(IsProgramNV),
+   TABLE_ENTRY(LoadProgramNV),
+   TABLE_ENTRY(ProgramParameter4fNV),
+   TABLE_ENTRY(ProgramParameter4dNV),
+   TABLE_ENTRY(ProgramParameter4dvNV),
+   TABLE_ENTRY(ProgramParameter4fvNV),
+   TABLE_ENTRY(ProgramParameters4dvNV),
+   TABLE_ENTRY(ProgramParameters4fvNV),
+   TABLE_ENTRY(TrackMatrixNV),
+   TABLE_ENTRY(VertexAttribPointerNV),
+   TABLE_ENTRY(VertexAttrib1sNV),
+   TABLE_ENTRY(VertexAttrib1fNV),
+   TABLE_ENTRY(VertexAttrib1dNV),
+   TABLE_ENTRY(VertexAttrib2sNV),
+   TABLE_ENTRY(VertexAttrib2fNV),
+   TABLE_ENTRY(VertexAttrib2dNV),
+   TABLE_ENTRY(VertexAttrib3sNV),
+   TABLE_ENTRY(VertexAttrib3fNV),
+   TABLE_ENTRY(VertexAttrib3dNV),
+   TABLE_ENTRY(VertexAttrib4sNV),
+   TABLE_ENTRY(VertexAttrib4fNV),
+   TABLE_ENTRY(VertexAttrib4dNV),
+   TABLE_ENTRY(VertexAttrib4ubNV),
+   TABLE_ENTRY(VertexAttrib1svNV),
+   TABLE_ENTRY(VertexAttrib1fvNV),
+   TABLE_ENTRY(VertexAttrib1dvNV),
+   TABLE_ENTRY(VertexAttrib2svNV),
+   TABLE_ENTRY(VertexAttrib2fvNV),
+   TABLE_ENTRY(VertexAttrib2dvNV),
+   TABLE_ENTRY(VertexAttrib3svNV),
+   TABLE_ENTRY(VertexAttrib3fvNV),
+   TABLE_ENTRY(VertexAttrib3dvNV),
+   TABLE_ENTRY(VertexAttrib4svNV),
+   TABLE_ENTRY(VertexAttrib4fvNV),
+   TABLE_ENTRY(VertexAttrib4dvNV),
+   TABLE_ENTRY(VertexAttrib4ubvNV),
+   TABLE_ENTRY(VertexAttribs1svNV),
+   TABLE_ENTRY(VertexAttribs1fvNV),
+   TABLE_ENTRY(VertexAttribs1dvNV),
+   TABLE_ENTRY(VertexAttribs2svNV),
+   TABLE_ENTRY(VertexAttribs2fvNV),
+   TABLE_ENTRY(VertexAttribs2dvNV),
+   TABLE_ENTRY(VertexAttribs3svNV),
+   TABLE_ENTRY(VertexAttribs3fvNV),
+   TABLE_ENTRY(VertexAttribs3dvNV),
+   TABLE_ENTRY(VertexAttribs4svNV),
+   TABLE_ENTRY(VertexAttribs4fvNV),
+   TABLE_ENTRY(VertexAttribs4dvNV),
+   TABLE_ENTRY(VertexAttribs4ubvNV),
    /* A whole bunch of no-op functions.  These might be called
     * when someone tries to call a dynamically-registered
     * extension function without a current rendering context.
index dc7b2c9..6a2e5d7 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.X11,v 1.59 2001/11/23 20:44:12 brianp Exp $
+# $Id: Makefile.X11,v 1.60 2001/12/14 02:55:08 brianp Exp $
 
 # Mesa 3-D graphics library
 # Version:  4.1
@@ -21,9 +21,9 @@ LIBDIR = ../lib
 
 
 CORE_SOURCES = \
-       swrast_setup/ss_context.c \
-       swrast_setup/ss_triangle.c \
-       swrast_setup/ss_vb.c \
+       vpexec.c \
+       vpparse.c \
+       vpstate.c \
        api_arrayelt.c \
        api_loopback.c \
        api_noop.c \
@@ -121,6 +121,9 @@ CORE_SOURCES = \
        swrast/s_texstore.c \
        swrast/s_triangle.c \
        swrast/s_zoom.c \
+       swrast_setup/ss_context.c \
+       swrast_setup/ss_triangle.c \
+       swrast_setup/ss_vb.c \
        tnl/t_array_api.c \
        tnl/t_array_import.c \
        tnl/t_context.c \
@@ -138,6 +141,7 @@ CORE_SOURCES = \
        tnl/t_vb_light.c \
        tnl/t_vb_normals.c \
        tnl/t_vb_points.c \
+       tnl/t_vb_program.c \
        tnl/t_vb_render.c \
        tnl/t_vb_texgen.c \
        tnl/t_vb_texmat.c \
@@ -337,3 +341,28 @@ dep: $(CORE_SOURCES) $(DRIVER_SOURCES) $(OSMESA_SOURCES)
 
 tags:
        etags `find . -name \*.[ch]` `find ../include`
+
+
+
+# XXX temporary for NV_vertex_program
+VPFILES = \
+       include/GL/glext.h \
+       src/Makefile.X11 \
+       src/vpparse.[ch] \
+       src/vpexec.[ch] \
+       src/vpstate.[ch] \
+       src/attrib.c \
+       src/context.c \
+       src/enable.c \
+       src/extensions.c \
+       src/get.c \
+       src/matrix.c \
+       src/mtypes.h \
+       src/varray.c \
+       src/tnl/t_vb_program.c \
+       tests/vptest1.c \
+       tests/vptest2.c
+       
+vptar:
+       cd .. ; tar cvf vpfiles.tar $(VPFILES) ; gzip vpfiles.tar
+
index f25ede9..f644a98 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: api_eval.c,v 1.1 2001/06/04 13:57:35 keithw Exp $ */
+/* $Id: api_eval.c,v 1.2 2001/12/14 02:50:01 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -281,16 +281,16 @@ void _mesa_EvalCoord1f( GLfloat u )
    GLfloat normal[3], texcoord[4], color[4];
    GLuint index;
 
-   COPY_3FV( normal, ctx->Current.Normal );
-   COPY_4FV( texcoord, ctx->Current.Texcoord[0] );
-   COPY_4FV( color, ctx->Current.Color );
+   COPY_3FV( normal, ctx->Current.Attrib[VERT_ATTRIB_NORMAL] );
+   COPY_4FV( texcoord, ctx->Current.Attrib[VERT_ATTRIB_TEX0] );
+   COPY_4FV( color, ctx->Current.Attrib[VERT_ATTRIB_COLOR0] );
    index = ctx->Current.Index;
 
    do_EvalCoord1f( ctx, u );
 
-   COPY_3FV( ctx->Current.Normal, normal );
-   COPY_4FV( ctx->Current.Texcoord[0], texcoord );
-   COPY_4FV( ctx->Current.Color, color );
+   COPY_3FV( ctx->Current.Attrib[VERT_ATTRIB_NORMAL], normal );
+   COPY_4FV( ctx->Current.Attrib[VERT_ATTRIB_TEX0], texcoord );
+   COPY_4FV( ctx->Current.Attrib[VERT_ATTRIB_COLOR0], color );
    ctx->Current.Index = index;
 }
 
@@ -300,16 +300,16 @@ void _mesa_EvalCoord2f( GLfloat u, GLfloat v )
    GLfloat normal[3], texcoord[4], color[4];
    GLuint index;
 
-   COPY_3FV( normal, ctx->Current.Normal );
-   COPY_4FV( texcoord, ctx->Current.Texcoord[0] );
-   COPY_4FV( color, ctx->Current.Color );
+   COPY_3FV( normal, ctx->Current.Attrib[VERT_ATTRIB_NORMAL] );
+   COPY_4FV( texcoord, ctx->Current.Attrib[VERT_ATTRIB_TEX0] );
+   COPY_4FV( color, ctx->Current.Attrib[VERT_ATTRIB_COLOR0] );
    index = ctx->Current.Index;
 
    do_EvalCoord2f( ctx, u, v );
 
-   COPY_3FV( ctx->Current.Normal, normal );
-   COPY_4FV( ctx->Current.Texcoord[0], texcoord );
-   COPY_4FV( ctx->Current.Color, color );
+   COPY_3FV( ctx->Current.Attrib[VERT_ATTRIB_NORMAL], normal );
+   COPY_4FV( ctx->Current.Attrib[VERT_ATTRIB_TEX0], texcoord );
+   COPY_4FV( ctx->Current.Attrib[VERT_ATTRIB_COLOR0], color );
    ctx->Current.Index = index;
 }
 
index 3ec4f30..cf38a54 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: api_loopback.c,v 1.11 2001/12/04 23:43:31 brianp Exp $ */
+/* $Id: api_loopback.c,v 1.12 2001/12/14 02:50:01 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -66,6 +66,7 @@
 #define RECTF(a,b,c,d)              DRIVER(Rectf)(a,b,c,d)
 #define SECONDARYCOLORUB(a,b,c)     DRIVER(SecondaryColor3ubEXT)(a,b,c)
 #define SECONDARYCOLORF(a,b,c)      DRIVER(SecondaryColor3fEXT)(a,b,c)
+#define ATTRIB(index, x, y, z, w)   DRIVER(VertexAttrib4fNV)(index, x, y, z, w)
 
 
 static void
@@ -1367,6 +1368,267 @@ loopback_SecondaryColor3usvEXT_f( const GLushort *v )
 }
 
 
+/*
+ * GL_NV_vertex_program
+ */
+
+static void
+loopback_VertexAttrib1sNV(GLuint index, GLshort x)
+{
+   ATTRIB(index, (GLfloat) x, 0.0F, 0.0F, 1.0F);
+}
+
+static void
+loopback_VertexAttrib1fNV(GLuint index, GLfloat x)
+{
+   ATTRIB(index, x, 0.0F, 0.0F, 1.0F);
+}
+
+static void
+loopback_VertexAttrib1dNV(GLuint index, GLdouble x)
+{
+   ATTRIB(index, (GLfloat) x, 0.0F, 0.0F, 1.0F);
+}
+
+static void
+loopback_VertexAttrib2sNV(GLuint index, GLshort x, GLshort y)
+{
+   ATTRIB(index, (GLfloat) x, y, 0.0F, 1.0F);
+}
+
+static void
+loopback_VertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y)
+{
+   ATTRIB(index, (GLfloat) x, y, 0.0F, 1.0F);
+}
+
+static void
+loopback_VertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y)
+{
+   ATTRIB(index, (GLfloat) x, y, 0.0F, 1.0F);
+}
+
+static void
+loopback_VertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z)
+{
+   ATTRIB(index, (GLfloat) x, y, z, 1.0F);
+}
+
+static void
+loopback_VertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z)
+{
+   ATTRIB(index, x, y, z, 1.0F);
+}
+
+static void
+loopback_VertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z)
+{
+   ATTRIB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
+}
+
+static void
+loopback_VertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
+{
+   ATTRIB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
+}
+
+static void
+loopback_VertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+   ATTRIB(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
+}
+
+static void
+loopback_VertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
+{
+   ATTRIB(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
+       UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
+}
+
+static void
+loopback_VertexAttrib1svNV(GLuint index, const GLshort *v)
+{
+   ATTRIB(index, (GLfloat) v[0], 0.0F, 0.0F, 1.0F);
+}
+
+static void
+loopback_VertexAttrib1fvNV(GLuint index, const GLfloat *v)
+{
+   ATTRIB(index, v[0], 0.0F, 0.0F, 1.0F);
+}
+
+static void
+loopback_VertexAttrib1dvNV(GLuint index, const GLdouble *v)
+{
+   ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
+}
+
+static void
+loopback_VertexAttrib2svNV(GLuint index, const GLshort *v)
+{
+   ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], 0.0F, 1.0F);
+}
+
+static void
+loopback_VertexAttrib2fvNV(GLuint index, const GLfloat *v)
+{
+   ATTRIB(index, v[0], v[1], 0.0F, 1.0F);
+}
+
+static void
+loopback_VertexAttrib2dvNV(GLuint index, const GLdouble *v)
+{
+   ATTRIB(index, (GLfloat) v[0], (GLdouble) v[1], 0.0F, 1.0F);
+}
+
+static void
+loopback_VertexAttrib3svNV(GLuint index, const GLshort *v)
+{
+   ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
+}
+
+static void
+loopback_VertexAttrib3fvNV(GLuint index, const GLfloat *v)
+{
+   ATTRIB(index, v[0], v[1], v[2], 1.0F);
+}
+
+static void
+loopback_VertexAttrib3dvNV(GLuint index, const GLdouble *v)
+{
+   ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
+}
+
+static void
+loopback_VertexAttrib4svNV(GLuint index, const GLshort *v)
+{
+   ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], 1.0F);
+}
+
+static void
+loopback_VertexAttrib4fvNV(GLuint index, const GLfloat *v)
+{
+   ATTRIB(index, v[0], v[1], v[2], v[3]);
+}
+
+static void
+loopback_VertexAttrib4dvNV(GLuint index, const GLdouble *v)
+{
+   ATTRIB(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
+}
+
+static void
+loopback_VertexAttrib4ubvNV(GLuint index, const GLubyte *v)
+{
+   ATTRIB(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
+          UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
+}
+
+
+static void
+loopback_VertexAttribs1svNV(GLuint index, GLsizei n, const GLshort *v)
+{
+   GLint i;
+   for (i = n - 1; i >= 0; i--)
+      loopback_VertexAttrib1svNV(index + i, v + i);
+}
+
+static void
+loopback_VertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat *v)
+{
+   GLint i;
+   for (i = n - 1; i >= 0; i--)
+      loopback_VertexAttrib1fvNV(index + i, v + i);
+}
+
+static void
+loopback_VertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble *v)
+{
+   GLint i;
+   for (i = n - 1; i >= 0; i--)
+      loopback_VertexAttrib1dvNV(index + i, v + i);
+}
+
+static void
+loopback_VertexAttribs2svNV(GLuint index, GLsizei n, const GLshort *v)
+{
+   GLint i;
+   for (i = n - 1; i >= 0; i--)
+      loopback_VertexAttrib2svNV(index + i, v + 2 * i);
+}
+
+static void
+loopback_VertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat *v)
+{
+   GLint i;
+   for (i = n - 1; i >= 0; i--)
+      loopback_VertexAttrib2fvNV(index + i, v + 2 * i);
+}
+
+static void
+loopback_VertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble *v)
+{
+   GLint i;
+   for (i = n - 1; i >= 0; i--)
+      loopback_VertexAttrib2dvNV(index + i, v + 2 * i);
+}
+
+static void
+loopback_VertexAttribs3svNV(GLuint index, GLsizei n, const GLshort *v)
+{
+   GLint i;
+   for (i = n - 1; i >= 0; i--)
+      loopback_VertexAttrib3svNV(index + i, v + 3 * i);
+}
+
+static void
+loopback_VertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat *v)
+{
+   GLint i;
+   for (i = n - 1; i >= 0; i--)
+      loopback_VertexAttrib3fvNV(index + i, v + 3 * i);
+}
+
+static void
+loopback_VertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble *v)
+{
+   GLint i;
+   for (i = n - 1; i >= 0; i--)
+      loopback_VertexAttrib3dvNV(index + i, v + 3 * i);
+}
+
+static void
+loopback_VertexAttribs4svNV(GLuint index, GLsizei n, const GLshort *v)
+{
+   GLint i;
+   for (i = n - 1; i >= 0; i--)
+      loopback_VertexAttrib4svNV(index + i, v + 4 * i);
+}
+
+static void
+loopback_VertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat *v)
+{
+   GLint i;
+   for (i = n - 1; i >= 0; i--)
+      loopback_VertexAttrib4fvNV(index + i, v + 4 * i);
+}
+
+static void
+loopback_VertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble *v)
+{
+   GLint i;
+   for (i = n - 1; i >= 0; i--)
+      loopback_VertexAttrib4dvNV(index + i, v + 4 * i);
+}
+
+static void
+loopback_VertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v)
+{
+   GLint i;
+   for (i = n - 1; i >= 0; i--)
+      loopback_VertexAttrib4ubvNV(index + i, v + 4 * i);
+}
+
 
 void
 _mesa_loopback_prefer_float( struct _glapi_table *dest,
@@ -1564,4 +1826,45 @@ _mesa_loopback_init_api_table( struct _glapi_table *dest,
    dest->Rectsv = loopback_Rectsv;
    dest->FogCoorddEXT = loopback_FogCoorddEXT;
    dest->FogCoorddvEXT = loopback_FogCoorddvEXT;
+
+   dest->VertexAttrib1sNV = loopback_VertexAttrib1sNV;
+   dest->VertexAttrib1fNV = loopback_VertexAttrib1fNV;
+   dest->VertexAttrib1dNV = loopback_VertexAttrib1dNV;
+   dest->VertexAttrib2sNV = loopback_VertexAttrib2sNV;
+   dest->VertexAttrib2fNV = loopback_VertexAttrib2fNV;
+   dest->VertexAttrib2dNV = loopback_VertexAttrib2dNV;
+   dest->VertexAttrib3sNV = loopback_VertexAttrib3sNV;
+   dest->VertexAttrib3fNV = loopback_VertexAttrib3fNV;
+   dest->VertexAttrib3dNV = loopback_VertexAttrib3dNV;
+   dest->VertexAttrib4sNV = loopback_VertexAttrib4sNV;
+   dest->VertexAttrib4dNV = loopback_VertexAttrib4dNV;
+   dest->VertexAttrib4ubNV = loopback_VertexAttrib4ubNV;
+
+   dest->VertexAttrib1svNV = loopback_VertexAttrib1svNV;
+   dest->VertexAttrib1fvNV = loopback_VertexAttrib1fvNV;
+   dest->VertexAttrib1dvNV = loopback_VertexAttrib1dvNV;
+   dest->VertexAttrib2svNV = loopback_VertexAttrib2svNV;
+   dest->VertexAttrib2fvNV = loopback_VertexAttrib2fvNV;
+   dest->VertexAttrib2dvNV = loopback_VertexAttrib2dvNV;
+   dest->VertexAttrib3svNV = loopback_VertexAttrib3svNV;
+   dest->VertexAttrib3fvNV = loopback_VertexAttrib3fvNV;
+   dest->VertexAttrib3dvNV = loopback_VertexAttrib3dvNV;
+   dest->VertexAttrib4svNV = loopback_VertexAttrib4svNV;
+   dest->VertexAttrib4fvNV = loopback_VertexAttrib4fvNV;
+   dest->VertexAttrib4dvNV = loopback_VertexAttrib4dvNV;
+   dest->VertexAttrib4ubvNV = loopback_VertexAttrib4ubvNV;
+
+   dest->VertexAttribs1svNV = loopback_VertexAttribs1svNV;
+   dest->VertexAttribs1fvNV = loopback_VertexAttribs1fvNV;
+   dest->VertexAttribs1dvNV = loopback_VertexAttribs1dvNV;
+   dest->VertexAttribs2svNV = loopback_VertexAttribs2svNV;
+   dest->VertexAttribs2fvNV = loopback_VertexAttribs2fvNV;
+   dest->VertexAttribs2dvNV = loopback_VertexAttribs2dvNV;
+   dest->VertexAttribs3svNV = loopback_VertexAttribs3svNV;
+   dest->VertexAttribs3fvNV = loopback_VertexAttribs3fvNV;
+   dest->VertexAttribs3dvNV = loopback_VertexAttribs3dvNV;
+   dest->VertexAttribs4svNV = loopback_VertexAttribs4svNV;
+   dest->VertexAttribs4fvNV = loopback_VertexAttribs4fvNV;
+   dest->VertexAttribs4dvNV = loopback_VertexAttribs4dvNV;
+   dest->VertexAttribs4ubvNV = loopback_VertexAttribs4ubvNV;
 }
index 58a6e7d..b603b74 100644 (file)
@@ -1,8 +1,8 @@
-/* $Id: api_noop.c,v 1.8 2001/04/28 08:39:17 keithw Exp $ */
+/* $Id: api_noop.c,v 1.9 2001/12/14 02:50:01 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
- * Version:  3.5
+ * Version:  4.1
  *
  * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
  *
@@ -58,13 +58,13 @@ void _mesa_noop_EdgeFlagv( const GLboolean *b )
 void _mesa_noop_FogCoordfEXT( GLfloat a )
 {
    GET_CURRENT_CONTEXT(ctx);
-   ctx->Current.FogCoord = a;
+   ctx->Current.Attrib[VERT_ATTRIB_FOG][0] = a;
 }
 
 void _mesa_noop_FogCoordfvEXT( const GLfloat *v )
 {
    GET_CURRENT_CONTEXT(ctx);
-   ctx->Current.FogCoord = *v;
+   ctx->Current.Attrib[VERT_ATTRIB_FOG][0] = *v;
 }
 
 void _mesa_noop_Indexi( GLint i )
@@ -82,7 +82,7 @@ void _mesa_noop_Indexiv( const GLint *v )
 void _mesa_noop_Normal3f( GLfloat a, GLfloat b, GLfloat c )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *dest = ctx->Current.Normal;
+   GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_NORMAL];
    COPY_FLOAT(dest[0], a);
    COPY_FLOAT(dest[1], b);
    COPY_FLOAT(dest[2], c);
@@ -91,7 +91,7 @@ void _mesa_noop_Normal3f( GLfloat a, GLfloat b, GLfloat c )
 void _mesa_noop_Normal3fv( const GLfloat *v )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *dest = ctx->Current.Normal;
+   GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_NORMAL];
    COPY_FLOAT(dest[0], v[0]);
    COPY_FLOAT(dest[1], v[1]);
    COPY_FLOAT(dest[2], v[2]);
@@ -155,7 +155,7 @@ void _mesa_noop_Materialfv( GLenum face, GLenum pname, const GLfloat *params )
 void _mesa_noop_Color4ub( GLubyte a, GLubyte b, GLubyte c, GLubyte d )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *color = ctx->Current.Color;
+   GLfloat *color = ctx->Current.Attrib[VERT_ATTRIB_COLOR0];
    color[0] = UBYTE_TO_FLOAT(a);
    color[1] = UBYTE_TO_FLOAT(b);
    color[2] = UBYTE_TO_FLOAT(c);
@@ -165,7 +165,7 @@ void _mesa_noop_Color4ub( GLubyte a, GLubyte b, GLubyte c, GLubyte d )
 void _mesa_noop_Color4ubv( const GLubyte *v )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *color = ctx->Current.Color;
+   GLfloat *color = ctx->Current.Attrib[VERT_ATTRIB_COLOR0];
    color[0] = UBYTE_TO_FLOAT(v[0]);
    color[1] = UBYTE_TO_FLOAT(v[1]);
    color[2] = UBYTE_TO_FLOAT(v[2]);
@@ -175,7 +175,7 @@ void _mesa_noop_Color4ubv( const GLubyte *v )
 void _mesa_noop_Color4f( GLfloat a, GLfloat b, GLfloat c, GLfloat d )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *color = ctx->Current.Color;
+   GLfloat *color = ctx->Current.Attrib[VERT_ATTRIB_COLOR0];
    color[0] = a;
    color[1] = b;
    color[2] = c;
@@ -185,7 +185,7 @@ void _mesa_noop_Color4f( GLfloat a, GLfloat b, GLfloat c, GLfloat d )
 void _mesa_noop_Color4fv( const GLfloat *v )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *color = ctx->Current.Color;
+   GLfloat *color = ctx->Current.Attrib[VERT_ATTRIB_COLOR0];
    color[0] = v[0];
    color[1] = v[1];
    color[2] = v[2];
@@ -195,7 +195,7 @@ void _mesa_noop_Color4fv( const GLfloat *v )
 void _mesa_noop_Color3ub( GLubyte a, GLubyte b, GLubyte c )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *color = ctx->Current.Color;
+   GLfloat *color = ctx->Current.Attrib[VERT_ATTRIB_COLOR0];
    color[0] = UBYTE_TO_FLOAT(a);
    color[1] = UBYTE_TO_FLOAT(b);
    color[2] = UBYTE_TO_FLOAT(c);
@@ -205,7 +205,7 @@ void _mesa_noop_Color3ub( GLubyte a, GLubyte b, GLubyte c )
 void _mesa_noop_Color3ubv( const GLubyte *v )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *color = ctx->Current.Color;
+   GLfloat *color = ctx->Current.Attrib[VERT_ATTRIB_COLOR0];
    color[0] = UBYTE_TO_FLOAT(v[0]);
    color[1] = UBYTE_TO_FLOAT(v[1]);
    color[2] = UBYTE_TO_FLOAT(v[2]);
@@ -215,7 +215,7 @@ void _mesa_noop_Color3ubv( const GLubyte *v )
 void _mesa_noop_Color3f( GLfloat a, GLfloat b, GLfloat c )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *color = ctx->Current.Color;
+   GLfloat *color = ctx->Current.Attrib[VERT_ATTRIB_COLOR0];
    color[0] = a;
    color[1] = b;
    color[2] = c;
@@ -225,7 +225,7 @@ void _mesa_noop_Color3f( GLfloat a, GLfloat b, GLfloat c )
 void _mesa_noop_Color3fv( const GLfloat *v )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *color = ctx->Current.Color;
+   GLfloat *color = ctx->Current.Attrib[VERT_ATTRIB_COLOR0];
    color[0] = v[0];
    color[1] = v[1];
    color[2] = v[2];
@@ -241,7 +241,7 @@ void _mesa_noop_MultiTexCoord1fARB( GLenum target, GLfloat a )
     */
    if (unit < MAX_TEXTURE_UNITS)
    {
-      GLfloat *dest = ctx->Current.Texcoord[unit];
+      GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit];
       COPY_FLOAT(dest[0], a);
       dest[1] = 0;
       dest[2] = 0;
@@ -258,7 +258,7 @@ void _mesa_noop_MultiTexCoord1fvARB( GLenum target, GLfloat *v )
     */
    if (unit < MAX_TEXTURE_UNITS)
    {
-      GLfloat *dest = ctx->Current.Texcoord[unit];
+      GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit];
       COPY_FLOAT(dest[0], v[0]);
       dest[1] = 0;
       dest[2] = 0;
@@ -275,7 +275,7 @@ void _mesa_noop_MultiTexCoord2fARB( GLenum target, GLfloat a, GLfloat b )
     */
    if (unit < MAX_TEXTURE_UNITS)
    {
-      GLfloat *dest = ctx->Current.Texcoord[unit];
+      GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit];
       COPY_FLOAT(dest[0], a);
       COPY_FLOAT(dest[1], b);
       dest[2] = 0;
@@ -292,7 +292,7 @@ void _mesa_noop_MultiTexCoord2fvARB( GLenum target, GLfloat *v )
     */
    if (unit < MAX_TEXTURE_UNITS)
    {
-      GLfloat *dest = ctx->Current.Texcoord[unit];
+      GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit];
       COPY_FLOAT(dest[0], v[0]);
       COPY_FLOAT(dest[1], v[1]);
       dest[2] = 0;
@@ -309,7 +309,7 @@ void _mesa_noop_MultiTexCoord3fARB( GLenum target, GLfloat a, GLfloat b, GLfloat
     */
    if (unit < MAX_TEXTURE_UNITS)
    {
-      GLfloat *dest = ctx->Current.Texcoord[unit];
+      GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit];
       COPY_FLOAT(dest[0], a);
       COPY_FLOAT(dest[1], b);
       COPY_FLOAT(dest[2], c);
@@ -326,7 +326,7 @@ void _mesa_noop_MultiTexCoord3fvARB( GLenum target, GLfloat *v )
     */
    if (unit < MAX_TEXTURE_UNITS)
    {
-      GLfloat *dest = ctx->Current.Texcoord[unit];
+      GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit];
       COPY_FLOAT(dest[0], v[0]);
       COPY_FLOAT(dest[1], v[1]);
       COPY_FLOAT(dest[2], v[2]);
@@ -344,7 +344,7 @@ void _mesa_noop_MultiTexCoord4fARB( GLenum target, GLfloat a, GLfloat b,
     */
    if (unit < MAX_TEXTURE_UNITS)
    {
-      GLfloat *dest = ctx->Current.Texcoord[unit];
+      GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit];
       COPY_FLOAT(dest[0], a);
       COPY_FLOAT(dest[1], b);
       COPY_FLOAT(dest[2], c);
@@ -361,7 +361,7 @@ void _mesa_noop_MultiTexCoord4fvARB( GLenum target, GLfloat *v )
     */
    if (unit < MAX_TEXTURE_UNITS)
    {
-      GLfloat *dest = ctx->Current.Texcoord[unit];
+      GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit];
       COPY_FLOAT(dest[0], v[0]);
       COPY_FLOAT(dest[1], v[1]);
       COPY_FLOAT(dest[2], v[2]);
@@ -372,7 +372,7 @@ void _mesa_noop_MultiTexCoord4fvARB( GLenum target, GLfloat *v )
 void _mesa_noop_SecondaryColor3ubEXT( GLubyte a, GLubyte b, GLubyte c )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *color = ctx->Current.SecondaryColor;
+   GLfloat *color = ctx->Current.Attrib[VERT_ATTRIB_COLOR1];
    color[0] = UBYTE_TO_FLOAT(a);
    color[1] = UBYTE_TO_FLOAT(b);
    color[2] = UBYTE_TO_FLOAT(c);
@@ -382,7 +382,7 @@ void _mesa_noop_SecondaryColor3ubEXT( GLubyte a, GLubyte b, GLubyte c )
 void _mesa_noop_SecondaryColor3ubvEXT( const GLubyte *v )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *color = ctx->Current.SecondaryColor;
+   GLfloat *color = ctx->Current.Attrib[VERT_ATTRIB_COLOR1];
    color[0] = UBYTE_TO_FLOAT(v[0]);
    color[1] = UBYTE_TO_FLOAT(v[1]);
    color[2] = UBYTE_TO_FLOAT(v[2]);
@@ -392,7 +392,7 @@ void _mesa_noop_SecondaryColor3ubvEXT( const GLubyte *v )
 void _mesa_noop_SecondaryColor3fEXT( GLfloat a, GLfloat b, GLfloat c )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *color = ctx->Current.SecondaryColor;
+   GLfloat *color = ctx->Current.Attrib[VERT_ATTRIB_COLOR1];
    color[0] = a;
    color[1] = b;
    color[2] = c;
@@ -402,7 +402,7 @@ void _mesa_noop_SecondaryColor3fEXT( GLfloat a, GLfloat b, GLfloat c )
 void _mesa_noop_SecondaryColor3fvEXT( const GLfloat *v )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *color = ctx->Current.SecondaryColor;
+   GLfloat *color = ctx->Current.Attrib[VERT_ATTRIB_COLOR1];
    color[0] = v[0];
    color[1] = v[1];
    color[2] = v[2];
@@ -412,7 +412,7 @@ void _mesa_noop_SecondaryColor3fvEXT( const GLfloat *v )
 void _mesa_noop_TexCoord1f( GLfloat a )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *dest = ctx->Current.Texcoord[0];
+   GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_TEX0];
    COPY_FLOAT(dest[0], a);
    dest[1] = 0;
    dest[2] = 0;
@@ -422,7 +422,7 @@ void _mesa_noop_TexCoord1f( GLfloat a )
 void _mesa_noop_TexCoord1fv( GLfloat *v )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *dest = ctx->Current.Texcoord[0];
+   GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_TEX0];
    COPY_FLOAT(dest[0], v[0]);
    dest[1] = 0;
    dest[2] = 0;
@@ -432,7 +432,7 @@ void _mesa_noop_TexCoord1fv( GLfloat *v )
 void _mesa_noop_TexCoord2f( GLfloat a, GLfloat b )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *dest = ctx->Current.Texcoord[0];
+   GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_TEX0];
    COPY_FLOAT(dest[0], a);
    COPY_FLOAT(dest[1], b);
    dest[2] = 0;
@@ -442,7 +442,7 @@ void _mesa_noop_TexCoord2f( GLfloat a, GLfloat b )
 void _mesa_noop_TexCoord2fv( GLfloat *v )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *dest = ctx->Current.Texcoord[0];
+   GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_TEX0];
    COPY_FLOAT(dest[0], v[0]);
    COPY_FLOAT(dest[1], v[1]);
    dest[2] = 0;
@@ -452,7 +452,7 @@ void _mesa_noop_TexCoord2fv( GLfloat *v )
 void _mesa_noop_TexCoord3f( GLfloat a, GLfloat b, GLfloat c )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *dest = ctx->Current.Texcoord[0];
+   GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_TEX0];
    COPY_FLOAT(dest[0], a);
    COPY_FLOAT(dest[1], b);
    COPY_FLOAT(dest[2], c);
@@ -462,7 +462,7 @@ void _mesa_noop_TexCoord3f( GLfloat a, GLfloat b, GLfloat c )
 void _mesa_noop_TexCoord3fv( GLfloat *v )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *dest = ctx->Current.Texcoord[0];
+   GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_TEX0];
    COPY_FLOAT(dest[0], v[0]);
    COPY_FLOAT(dest[1], v[1]);
    COPY_FLOAT(dest[2], v[2]);
@@ -472,7 +472,7 @@ void _mesa_noop_TexCoord3fv( GLfloat *v )
 void _mesa_noop_TexCoord4f( GLfloat a, GLfloat b, GLfloat c, GLfloat d )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *dest = ctx->Current.Texcoord[0];
+   GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_TEX0];
    COPY_FLOAT(dest[0], a);
    COPY_FLOAT(dest[1], b);
    COPY_FLOAT(dest[2], c);
@@ -482,13 +482,32 @@ void _mesa_noop_TexCoord4f( GLfloat a, GLfloat b, GLfloat c, GLfloat d )
 void _mesa_noop_TexCoord4fv( GLfloat *v )
 {
    GET_CURRENT_CONTEXT(ctx);
-   GLfloat *dest = ctx->Current.Texcoord[0];
+   GLfloat *dest = ctx->Current.Attrib[VERT_ATTRIB_TEX0];
    COPY_FLOAT(dest[0], v[0]);
    COPY_FLOAT(dest[1], v[1]);
    COPY_FLOAT(dest[2], v[2]);
    COPY_FLOAT(dest[3], v[3]);
 }
 
+void _mesa_noop_VertexAttrib4fNV( GLuint index, GLfloat x,
+                                  GLfloat y, GLfloat z, GLfloat w )
+{
+   GET_CURRENT_CONTEXT(ctx);
+   if (index < 16) {
+      ASSIGN_4V(ctx->Current.Attrib[index], x, y, z, w);
+   }
+}
+
+void _mesa_noop_VertexAttrib4fvNV( GLuint index, const GLfloat *v )
+{
+   GET_CURRENT_CONTEXT(ctx);
+   if (index < 16) {
+      ASSIGN_4V(ctx->Current.Attrib[index], v[0], v[1], v[2], v[3]);
+   }
+}
+
+
+
 /* Execute a glRectf() function.  This is not suitable for GL_COMPILE
  * modes (as the test for outside begin/end is not compiled),
  * but may be useful for drivers in circumstances which exclude
index c80179d..14fb9fc 100644 (file)
@@ -1,8 +1,8 @@
-/* $Id: api_noop.h,v 1.3 2001/03/12 00:48:37 gareth Exp $ */
+/* $Id: api_noop.h,v 1.4 2001/12/14 02:50:01 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
- * Version:  3.5
+ * Version:  4.1
  *
  * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
  *
@@ -116,6 +116,12 @@ extern void _mesa_noop_TexCoord4f( GLfloat a, GLfloat b, GLfloat c, GLfloat d );
 
 extern void _mesa_noop_TexCoord4fv( GLfloat *v );
 
+extern void _mesa_noop_VertexAttrib4fNV( GLuint index, GLfloat x,
+                                         GLfloat y, GLfloat z, GLfloat w );
+
+extern void _mesa_noop_VertexAttrib4fvNV( GLuint index, const GLfloat *v );
+
+
 
 /* Not strictly a noop -- translate Rectf down to Begin/End and
  * vertices.  Closer to the loopback operations, but doesn't meet the
index 01a9139..8b49cd4 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: attrib.c,v 1.57 2001/09/18 15:27:18 kschultz Exp $ */
+/* $Id: attrib.c,v 1.58 2001/12/14 02:50:01 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -240,6 +240,10 @@ _mesa_PushAttrib(GLbitfield mask)
          attr->Texture[i] = ctx->Texture.Unit[i].Enabled;
          attr->TexGen[i] = ctx->Texture.Unit[i].TexGenEnabled;
       }
+      /* GL_NV_vertex_program */
+      attr->VertexProgram = ctx->VertexProgram.Enabled;
+      attr->VertexProgramPointSize = ctx->VertexProgram.PointSizeEnabled;
+      attr->VertexProgramTwoSide = ctx->VertexProgram.TwoSideEnabled;
       newnode = new_attrib_node( GL_ENABLE_BIT );
       newnode->data = attr;
       newnode->next = head;
@@ -537,6 +541,17 @@ pop_enable_group(GLcontext *ctx, const struct gl_enable_attrib *enable)
    TEST_AND_UPDATE(ctx->Multisample.SampleCoverageInvert,
                    enable->SampleCoverageInvert,
                    GL_SAMPLE_COVERAGE_INVERT_ARB);
+   /* GL_NV_vertex_program */
+   TEST_AND_UPDATE(ctx->VertexProgram.Enabled,
+                   enable->VertexProgram,
+                   GL_VERTEX_PROGRAM_NV);
+   TEST_AND_UPDATE(ctx->VertexProgram.PointSizeEnabled,
+                   enable->VertexProgramPointSize,
+                   GL_VERTEX_PROGRAM_POINT_SIZE_NV);
+   TEST_AND_UPDATE(ctx->VertexProgram.TwoSideEnabled,
+                   enable->VertexProgramTwoSide,
+                   GL_VERTEX_PROGRAM_TWO_SIDE_NV);
+
 #undef TEST_AND_UPDATE
 
    /* texture unit enables */
index 230af9c..1f87a13 100644 (file)
@@ -1,8 +1,8 @@
-/* $Id: context.c,v 1.149 2001/11/06 15:53:00 brianp Exp $ */
+/* $Id: context.c,v 1.150 2001/12/14 02:50:01 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
- * Version:  3.5
+ * Version:  4.1
  *
  * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
  *
@@ -53,7 +53,6 @@
 #include "mtypes.h"
 #include "varray.h"
 #include "vtxfmt.h"
-
 #include "math/m_translate.h"
 #include "math/m_vertices.h"
 #include "math/m_matrix.h"
@@ -89,6 +88,8 @@ int MESA_DEBUG_FLAGS = 0
 ;
 #endif
 
+
+
 /**********************************************************************/
 /*****       OpenGL SI-style interface (new in Mesa 3.5)          *****/
 /**********************************************************************/
@@ -477,6 +478,37 @@ one_time_init( void )
 }
 
 
+static void
+init_matrix_stack( struct matrix_stack *stack,
+                   GLuint maxDepth, GLuint dirtyFlag )
+{
+   GLuint i;
+
+   stack->Depth = 0;
+   stack->MaxDepth = maxDepth;
+   stack->DirtyFlag = dirtyFlag;
+   /* Top matrix */
+   _math_matrix_ctr( &stack->Top );
+   _math_matrix_alloc_inv( &stack->Top );
+   /* The stack */
+   stack->Stack = MALLOC(maxDepth * sizeof(GLmatrix));
+   for (i = 0; i < maxDepth; i++) {
+      _math_matrix_ctr(&stack->Stack[i]);
+      _math_matrix_alloc_inv(&stack->Stack[i]);
+   }
+}
+
+
+static void
+free_matrix_stack( struct matrix_stack *stack )
+{
+   GLuint i;
+   _math_matrix_dtr( &stack->Top );
+   for (i = 0; i < stack->MaxDepth; i++) {
+      _math_matrix_dtr(&stack->Stack[i]);
+   }
+}
+
 
 /*
  * Allocate and initialize a shared context state structure.
@@ -768,6 +800,9 @@ init_attrib_groups( GLcontext *ctx )
       _math_matrix_ctr( &ctx->ModelViewStack[i] );
       _math_matrix_alloc_inv( &ctx->ModelViewStack[i] );
    }
+#if 1
+   init_matrix_stack(&ctx->ModelviewStack, 32, _NEW_MODELVIEW);
+#endif
 
    /* Projection matrix - need inv for user clipping in clip space*/
    _math_matrix_ctr( &ctx->ProjectionMatrix );
@@ -828,10 +863,16 @@ init_attrib_groups( GLcontext *ctx )
    ctx->Color.MultiDrawBuffer = GL_FALSE;
 
    /* Current group */
-   ASSIGN_4V( ctx->Current.Color, 1.0, 1.0, 1.0, 1.0 );
+   ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_WEIGHT], 0.0, 0.0, 0.0, 0.0 );
+   ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_NORMAL], 0.0, 0.0, 1.0, 0.0 );
+   ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_COLOR0], 1.0, 1.0, 1.0, 1.0 );
+   ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_COLOR1], 0.0, 0.0, 0.0, 0.0 );
+   ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_FOG], 0.0, 0.0, 0.0, 0.0 );
+   for (i = 0; i < MAX_TEXTURE_UNITS; i++)
+      ASSIGN_4V( ctx->Current.Attrib[VERT_ATTRIB_TEX0 + i], 0.0, 0.0, 0.0, 1.0 );
    ctx->Current.Index = 1;
-   for (i=0; i<MAX_TEXTURE_UNITS; i++)
-      ASSIGN_4V( ctx->Current.Texcoord[i], 0.0, 0.0, 0.0, 1.0 );
+   ctx->Current.EdgeFlag = GL_TRUE;
+   
    ASSIGN_4V( ctx->Current.RasterPos, 0.0, 0.0, 0.0, 1.0 );
    ctx->Current.RasterDistance = 0.0;
    ASSIGN_4V( ctx->Current.RasterColor, 1.0, 1.0, 1.0, 1.0 );
@@ -840,8 +881,6 @@ init_attrib_groups( GLcontext *ctx )
       ASSIGN_4V( ctx->Current.RasterMultiTexCoord[i], 0.0, 0.0, 0.0, 1.0 );
    ctx->Current.RasterTexCoord = ctx->Current.RasterMultiTexCoord[0];
    ctx->Current.RasterPosValid = GL_TRUE;
-   ctx->Current.EdgeFlag = GL_TRUE;
-   ASSIGN_3V( ctx->Current.Normal, 0.0, 0.0, 1.0 );
 
 
    /* Depth buffer group */
@@ -1279,6 +1318,17 @@ init_attrib_groups( GLcontext *ctx )
    _mesa_init_colortable(&ctx->PostColorMatrixColorTable);
    _mesa_init_colortable(&ctx->ProxyPostColorMatrixColorTable);
 
+   /* GL_NV_vertex_program */
+   ctx->VertexProgram.Binding = 0;
+   ctx->VertexProgram.HashTable = _mesa_NewHashTable();
+   ctx->VertexProgram.Enabled = GL_FALSE;
+   ctx->VertexProgram.PointSizeEnabled = GL_FALSE;
+   ctx->VertexProgram.TwoSideEnabled = GL_FALSE;
+   for (i = 0; i < VP_NUM_PROG_REGS / 4; i++) {
+      ctx->VertexProgram.TrackMatrix[i] = GL_NONE;
+      ctx->VertexProgram.TrackMatrixTransform[i] = GL_IDENTITY_NV;
+   }
+
    /* Miscellaneous */
    ctx->NewState = _NEW_ALL;
    ctx->RenderMode = GL_RENDER;
@@ -1600,6 +1650,10 @@ _mesa_free_context_data( GLcontext *ctx )
       _mesa_make_current(NULL, NULL);
    }
 
+#if 1
+   free_matrix_stack(&ctx->ModelviewStack);
+#endif
+
    _math_matrix_dtr( &ctx->ModelView );
    for (i = 0; i < MAX_MODELVIEW_STACK_DEPTH - 1; i++) {
       _math_matrix_dtr( &ctx->ModelViewStack[i] );
@@ -1690,6 +1744,9 @@ _mesa_free_context_data( GLcontext *ctx )
 
    _mesa_extensions_dtr(ctx);
 
+   /* GL_NV_vertex_program */
+   _mesa_DeleteHashTable(ctx->VertexProgram.HashTable);
+
    FREE(ctx->Exec);
    FREE(ctx->Save);
 }
@@ -1971,21 +2028,6 @@ _mesa_warning( const GLcontext *ctx, const char *s )
 
 
 /*
- * Compile an error into current display list.
- */
-void
-_mesa_compile_error( GLcontext *ctx, GLenum error, const char *s )
-{
-   if (ctx->CompileFlag)
-      _mesa_save_error( ctx, error, s );
-
-   if (ctx->ExecuteFlag)
-      _mesa_error( ctx, error, s );
-}
-
-
-
-/*
  * This is Mesa's error handler.  Normally, all that's done is the updating
  * of the current error value.  If Mesa is compiled with -DDEBUG or if the
  * environment variable "MESA_DEBUG" is defined then a real error message
index 3d56ada..e0bb2ad 100644 (file)
@@ -1,8 +1,8 @@
-/* $Id: context.h,v 1.27 2001/05/03 14:11:18 brianp Exp $ */
+/* $Id: context.h,v 1.28 2001/12/14 02:50:01 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
- * Version:  3.5
+ * Version:  4.1
  *
  * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
  *
@@ -204,9 +204,6 @@ _mesa_warning( const GLcontext *ctx, const char *s );
 extern void
 _mesa_error( GLcontext *ctx, GLenum error, const char *s );
 
-extern void
-_mesa_compile_error( GLcontext *ctx, GLenum error, const char *s );
-
 
 
 extern void
index 52707e1..f22aa94 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: dd.h,v 1.64 2001/12/04 23:43:31 brianp Exp $ */
+/* $Id: dd.h,v 1.65 2001/12/14 02:50:01 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -696,6 +696,9 @@ typedef struct {
    void (*CallList)( GLuint ); /* NOTE */
    void (*Begin)( GLenum );
    void (*End)( void );
+   void (*VertexAttrib4fNV)( GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w );
+   void (*VertexAttrib4fvNV)( GLuint index, const GLfloat *v );
+
    /* Drivers present a reduced set of the functions possible in
     * begin/end objects.  Core mesa provides translation stubs for the
     * remaining functions to map down to these entrypoints.
index 050373a..bb2c68d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: dlist.c,v 1.80 2001/12/13 19:58:20 kschultz Exp $ */
+/* $Id: dlist.c,v 1.81 2001/12/14 02:50:01 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -4049,6 +4049,21 @@ _mesa_save_error( GLcontext *ctx, GLenum error, const char *s )
 }
 
 
+/*
+ * Compile an error into current display list.
+ */
+void
+_mesa_compile_error( GLcontext *ctx, GLenum error, const char *s )
+{
+   if (ctx->CompileFlag)
+      _mesa_save_error( ctx, error, s );
+
+   if (ctx->ExecuteFlag)
+      _mesa_error( ctx, error, s );
+}
+
+
+
 static GLboolean
 islist(GLcontext *ctx, GLuint list)
 {
index 2994cf7..6671620 100644 (file)
@@ -1,8 +1,8 @@
-/* $Id: dlist.h,v 1.16 2001/03/24 06:01:27 gareth Exp $ */
+/* $Id: dlist.h,v 1.17 2001/12/14 02:50:01 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
- * Version:  3.5
+ * Version:  4.1
  *
  * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
  *
@@ -83,19 +83,20 @@ extern void _mesa_ListBase( GLuint base );
 
 extern void _mesa_NewList( GLuint list, GLenum mode );
 
-extern void _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize );
+extern void _mesa_init_dlist_table( struct _glapi_table *table,
+                                    GLuint tableSize );
 
 extern void _mesa_save_error( GLcontext *ctx, GLenum error, const char *s );
 
+extern void _mesa_compile_error( GLcontext *ctx, GLenum error, const char *s );
 
-void *
-_mesa_alloc_instruction( GLcontext *ctx, int opcode, GLint sz );
 
-int
-_mesa_alloc_opcode( GLcontext *ctx, GLuint sz,
-                   void (*execute)( GLcontext *, void * ),
-                   void (*destroy)( GLcontext *, void * ),
-                   void (*print)( GLcontext *, void * ) );
+extern void *_mesa_alloc_instruction( GLcontext *ctx, int opcode, GLint sz );
+
+extern int _mesa_alloc_opcode( GLcontext *ctx, GLuint sz,
+                               void (*execute)( GLcontext *, void * ),
+                               void (*destroy)( GLcontext *, void * ),
+                               void (*print)( GLcontext *, void * ) );
 
 extern void _mesa_save_EvalMesh2(GLenum mode, GLint i1, GLint i2,
                                 GLint j1, GLint j2 );
index f605ae1..ac1c68a 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: drawpix.c,v 1.57 2001/12/13 19:12:42 brianp Exp $ */
+/* $Id: drawpix.c,v 1.58 2001/12/14 02:55:08 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -71,13 +71,14 @@ _mesa_DrawPixels( GLsizei width, GLsizei height,
                             &ctx->Unpack, pixels);
    }
    else if (ctx->RenderMode==GL_FEEDBACK) {
+      /* Feedback the current raster pos info */
       if (ctx->Current.RasterPosValid) {
-        FLUSH_CURRENT(ctx, 0);
+        FLUSH_CURRENT( ctx, 0 );
          FEEDBACK_TOKEN( ctx, (GLfloat) (GLint) GL_DRAW_PIXEL_TOKEN );
          _mesa_feedback_vertex( ctx,
                                ctx->Current.RasterPos,
                                ctx->Current.RasterColor,
-                               ctx->Current.RasterIndex, 
+                               ctx->Current.RasterIndex,
                                ctx->Current.RasterTexCoord );
       }
    }
@@ -146,13 +147,13 @@ _mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, GLsizei height,
    }
    else if (ctx->RenderMode == GL_FEEDBACK) {
       if (ctx->Current.RasterPosValid) {
-        FLUSH_CURRENT(ctx, 0);
+         FLUSH_CURRENT( ctx, 0 );
          FEEDBACK_TOKEN( ctx, (GLfloat) (GLint) GL_COPY_PIXEL_TOKEN );
-         _mesa_feedback_vertex( ctx,
-                               ctx->Current.RasterPos,
-                               ctx->Current.RasterColor,
-                               ctx->Current.RasterIndex, 
-                               ctx->Current.RasterTexCoord );
+         _mesa_feedback_vertex( ctx, 
+                                ctx->Current.RasterPos,
+                                ctx->Current.RasterColor,
+                                ctx->Current.RasterIndex,
+                                ctx->Current.RasterTexCoord );
       }
    }
    else if (ctx->RenderMode == GL_SELECT) {
index a1adf1d..758426d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: enable.c,v 1.50 2001/06/26 01:32:48 brianp Exp $ */
+/* $Id: enable.c,v 1.51 2001/12/14 02:50:01 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
 #include "simple_list.h"
 #include "mtypes.h"
 #include "enums.h"
-
 #include "math/m_matrix.h"
 #include "math/m_xform.h"
-
 #endif
 
 
+#define CHECK_EXTENSION(EXTNAME)                                       \
+   if (!ctx->Extensions.EXTNAME) {                                     \
+      _mesa_error(ctx, GL_INVALID_ENUM,                                        \
+         state ? "glEnableClientState": "glDisableClientState");       \
+      return;                                                          \
+   }
+
+
+
 static void
 client_state( GLcontext *ctx, GLenum cap, GLboolean state )
 {
@@ -51,41 +58,66 @@ client_state( GLcontext *ctx, GLenum cap, GLboolean state )
    GLboolean *var;
 
    switch (cap) {
-   case GL_VERTEX_ARRAY:
-      var = &ctx->Array.Vertex.Enabled;
-      flag = _NEW_ARRAY_VERTEX;
-      break;
-   case GL_NORMAL_ARRAY:
-      var = &ctx->Array.Normal.Enabled;
-      flag = _NEW_ARRAY_NORMAL;
-      break;
-   case GL_COLOR_ARRAY:
-      var = &ctx->Array.Color.Enabled;
-      flag = _NEW_ARRAY_COLOR;
-      break;
-   case GL_INDEX_ARRAY:
-      var = &ctx->Array.Index.Enabled;
-      flag = _NEW_ARRAY_INDEX;
-      break;
-   case GL_TEXTURE_COORD_ARRAY:
-      var = &ctx->Array.TexCoord[ctx->Array.ActiveTexture].Enabled;
-      flag = _NEW_ARRAY_TEXCOORD(ctx->Array.ActiveTexture);
-      break;
-   case GL_EDGE_FLAG_ARRAY:
-      var = &ctx->Array.EdgeFlag.Enabled;
-      flag = _NEW_ARRAY_EDGEFLAG;
-      break;
-   case GL_FOG_COORDINATE_ARRAY_EXT:
-      var = &ctx->Array.FogCoord.Enabled;
-      flag = _NEW_ARRAY_FOGCOORD;
-      break;
-   case GL_SECONDARY_COLOR_ARRAY_EXT:
-      var = &ctx->Array.SecondaryColor.Enabled;
-      flag = _NEW_ARRAY_SECONDARYCOLOR;
-      break;
-   default:
-      _mesa_error( ctx, GL_INVALID_ENUM, "glEnable/DisableClientState" );
-      return;
+      case GL_VERTEX_ARRAY:
+         var = &ctx->Array.Vertex.Enabled;
+         flag = _NEW_ARRAY_VERTEX;
+         break;
+      case GL_NORMAL_ARRAY:
+         var = &ctx->Array.Normal.Enabled;
+         flag = _NEW_ARRAY_NORMAL;
+         break;
+      case GL_COLOR_ARRAY:
+         var = &ctx->Array.Color.Enabled;
+         flag = _NEW_ARRAY_COLOR0;
+         break;
+      case GL_INDEX_ARRAY:
+         var = &ctx->Array.Index.Enabled;
+         flag = _NEW_ARRAY_INDEX;
+         break;
+      case GL_TEXTURE_COORD_ARRAY:
+         var = &ctx->Array.TexCoord[ctx->Array.ActiveTexture].Enabled;
+         flag = _NEW_ARRAY_TEXCOORD(ctx->Array.ActiveTexture);
+         break;
+      case GL_EDGE_FLAG_ARRAY:
+         var = &ctx->Array.EdgeFlag.Enabled;
+         flag = _NEW_ARRAY_EDGEFLAG;
+         break;
+      case GL_FOG_COORDINATE_ARRAY_EXT:
+         var = &ctx->Array.FogCoord.Enabled;
+         flag = _NEW_ARRAY_FOGCOORD;
+         break;
+      case GL_SECONDARY_COLOR_ARRAY_EXT:
+         var = &ctx->Array.SecondaryColor.Enabled;
+         flag = _NEW_ARRAY_COLOR1;
+         break;
+
+      /* GL_NV_vertex_program */
+      case GL_VERTEX_ATTRIB_ARRAY0_NV:
+      case GL_VERTEX_ATTRIB_ARRAY1_NV:
+      case GL_VERTEX_ATTRIB_ARRAY2_NV:
+      case GL_VERTEX_ATTRIB_ARRAY3_NV:
+      case GL_VERTEX_ATTRIB_ARRAY4_NV:
+      case GL_VERTEX_ATTRIB_ARRAY5_NV:
+      case GL_VERTEX_ATTRIB_ARRAY6_NV:
+      case GL_VERTEX_ATTRIB_ARRAY7_NV:
+      case GL_VERTEX_ATTRIB_ARRAY8_NV:
+      case GL_VERTEX_ATTRIB_ARRAY9_NV:
+      case GL_VERTEX_ATTRIB_ARRAY10_NV:
+      case GL_VERTEX_ATTRIB_ARRAY11_NV:
+      case GL_VERTEX_ATTRIB_ARRAY12_NV:
+      case GL_VERTEX_ATTRIB_ARRAY13_NV:
+      case GL_VERTEX_ATTRIB_ARRAY14_NV:
+      case GL_VERTEX_ATTRIB_ARRAY15_NV:
+         CHECK_EXTENSION(NV_vertex_program);
+         {
+            GLint n = (GLint) cap - GL_VERTEX_ATTRIB_ARRAY0_NV;
+            var = &ctx->Array.VertexAttrib[n].Enabled;
+            flag = _NEW_ARRAY_VERT_ATTRIB0;  /* XXX flag OK? */
+         }
+         break;
+      default:
+         _mesa_error( ctx, GL_INVALID_ENUM, "glEnable/DisableClientState" );
+         return;
    }
 
    if (*var == flag)
@@ -126,6 +158,15 @@ _mesa_DisableClientState( GLenum cap )
 }
 
 
+#undef CHECK_EXTENSION
+#define CHECK_EXTENSION(EXTNAME)                       \
+   if (!ctx->Extensions.EXTNAME) {                     \
+      _mesa_error(ctx, GL_INVALID_ENUM,                        \
+                  state ? "glEnable": "glDisable");    \
+      return;                                          \
+   }
+
+
 /*
  * Perform glEnable and glDisable calls.
  */
@@ -138,680 +179,686 @@ void _mesa_set_enable( GLcontext *ctx, GLenum cap, GLboolean state )
              ctx->NewState);
 
    switch (cap) {
-   case GL_ALPHA_TEST:
-      if (ctx->Color.AlphaEnabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_COLOR);
-      ctx->Color.AlphaEnabled = state;
-      break;
-   case GL_AUTO_NORMAL:
-      if (ctx->Eval.AutoNormal == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.AutoNormal = state;
-      break;
-   case GL_BLEND:
-      if (ctx->Color.BlendEnabled == state)
-        return;
-
-      FLUSH_VERTICES(ctx, _NEW_COLOR);
-      ctx->Color.BlendEnabled = state;
-      /* The following needed to accomodate 1.0 RGB logic op blending */
-      ctx->Color.ColorLogicOpEnabled =
-        (ctx->Color.BlendEquation == GL_LOGIC_OP && state);
-      break;
-   case GL_CLIP_PLANE0:
-   case GL_CLIP_PLANE1:
-   case GL_CLIP_PLANE2:
-   case GL_CLIP_PLANE3:
-   case GL_CLIP_PLANE4:
-   case GL_CLIP_PLANE5: {
-      GLuint p = cap-GL_CLIP_PLANE0;
-
-      if (ctx->Transform.ClipEnabled[p] == state)
-        return;
-
-      FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
-      ctx->Transform.ClipEnabled[p] = state;
-
-      if (state) {
-        ctx->Transform._AnyClip++;
-
-        if (ctx->ProjectionMatrix.flags & MAT_DIRTY) {
-           _math_matrix_analyse( &ctx->ProjectionMatrix );
-        }
-
-        /* This derived state also calculated in clip.c and
-         * from _mesa_update_state() on changes to EyeUserPlane
-         * and ctx->ProjectionMatrix respectively.
-         */
-        _mesa_transform_vector( ctx->Transform._ClipUserPlane[p],
-                             ctx->Transform.EyeUserPlane[p],
-                             ctx->ProjectionMatrix.inv );
+      case GL_ALPHA_TEST:
+         if (ctx->Color.AlphaEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_COLOR);
+         ctx->Color.AlphaEnabled = state;
+         break;
+      case GL_AUTO_NORMAL:
+         if (ctx->Eval.AutoNormal == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.AutoNormal = state;
+         break;
+      case GL_BLEND:
+         if (ctx->Color.BlendEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_COLOR);
+         ctx->Color.BlendEnabled = state;
+         /* The following needed to accomodate 1.0 RGB logic op blending */
+         ctx->Color.ColorLogicOpEnabled =
+            (ctx->Color.BlendEquation == GL_LOGIC_OP && state);
+         break;
+      case GL_CLIP_PLANE0:
+      case GL_CLIP_PLANE1:
+      case GL_CLIP_PLANE2:
+      case GL_CLIP_PLANE3:
+      case GL_CLIP_PLANE4:
+      case GL_CLIP_PLANE5:
+         {
+            GLuint p = cap-GL_CLIP_PLANE0;
+
+            if (ctx->Transform.ClipEnabled[p] == state)
+               return;
+
+            FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
+            ctx->Transform.ClipEnabled[p] = state;
+
+            if (state) {
+               ctx->Transform._AnyClip++;
+
+               if (ctx->ProjectionMatrix.flags & MAT_DIRTY) {
+                  _math_matrix_analyse( &ctx->ProjectionMatrix );
+               }
+
+               /* This derived state also calculated in clip.c and
+                * from _mesa_update_state() on changes to EyeUserPlane
+                * and ctx->ProjectionMatrix respectively.
+                */
+               _mesa_transform_vector( ctx->Transform._ClipUserPlane[p],
+                                    ctx->Transform.EyeUserPlane[p],
+                                    ctx->ProjectionMatrix.inv );
+            }
+         }
+         break;
+      case GL_COLOR_MATERIAL:
+         if (ctx->Light.ColorMaterialEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_LIGHT);
+         ctx->Light.ColorMaterialEnabled = state;
+         if (state) {
+            FLUSH_CURRENT(ctx, 0);
+            _mesa_update_color_material( ctx,
+                                  ctx->Current.Attrib[VERT_ATTRIB_COLOR0] );
+         }
+         break;
+      case GL_CULL_FACE:
+         if (ctx->Polygon.CullFlag == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_POLYGON);
+         ctx->Polygon.CullFlag = state;
+         break;
+      case GL_DEPTH_TEST:
+         if (state && ctx->Visual.depthBits==0) {
+            _mesa_warning(ctx,"glEnable(GL_DEPTH_TEST) but no depth buffer");
+            return;
+         }
+         if (ctx->Depth.Test==state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_DEPTH);
+         ctx->Depth.Test = state;
+         break;
+      case GL_DITHER:
+         if (ctx->NoDither) {
+            state = GL_FALSE; /* MESA_NO_DITHER env var */
+         }
+         if (ctx->Color.DitherFlag==state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_COLOR);
+         ctx->Color.DitherFlag = state;
+         break;
+      case GL_FOG:
+         if (ctx->Fog.Enabled==state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_FOG);
+         ctx->Fog.Enabled = state;
+         break;
+      case GL_HISTOGRAM:
+         CHECK_EXTENSION(EXT_histogram);
+         if (ctx->Pixel.HistogramEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_PIXEL);
+         ctx->Pixel.HistogramEnabled = state;
+         break;
+      case GL_LIGHT0:
+      case GL_LIGHT1:
+      case GL_LIGHT2:
+      case GL_LIGHT3:
+      case GL_LIGHT4:
+      case GL_LIGHT5:
+      case GL_LIGHT6:
+      case GL_LIGHT7:
+         if (ctx->Light.Light[cap-GL_LIGHT0].Enabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_LIGHT);
+         ctx->Light.Light[cap-GL_LIGHT0].Enabled = state;
+         if (state) {
+            insert_at_tail(&ctx->Light.EnabledList,
+                           &ctx->Light.Light[cap-GL_LIGHT0]);
+         }
+         else {
+            remove_from_list(&ctx->Light.Light[cap-GL_LIGHT0]);
+         }
+         break;
+      case GL_LIGHTING:
+         if (ctx->Light.Enabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_LIGHT);
+         ctx->Light.Enabled = state;
+
+         if ((ctx->Light.Enabled &&
+              ctx->Light.Model.ColorControl==GL_SEPARATE_SPECULAR_COLOR)
+             || ctx->Fog.ColorSumEnabled)
+            ctx->_TriangleCaps |= DD_SEPARATE_SPECULAR;
+         else
+            ctx->_TriangleCaps &= ~DD_SEPARATE_SPECULAR;
+
+         break;
+      case GL_LINE_SMOOTH:
+         if (ctx->Line.SmoothFlag == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_LINE);
+         ctx->Line.SmoothFlag = state;
+         ctx->_TriangleCaps ^= DD_LINE_SMOOTH;
+         break;
+      case GL_LINE_STIPPLE:
+         if (ctx->Line.StippleFlag == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_LINE);
+         ctx->Line.StippleFlag = state;
+         ctx->_TriangleCaps ^= DD_LINE_STIPPLE;
+         break;
+      case GL_INDEX_LOGIC_OP:
+         if (ctx->Color.IndexLogicOpEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_COLOR);
+         ctx->Color.IndexLogicOpEnabled = state;
+         break;
+      case GL_COLOR_LOGIC_OP:
+         if (ctx->Color.ColorLogicOpEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_COLOR);
+         ctx->Color.ColorLogicOpEnabled = state;
+         break;
+      case GL_MAP1_COLOR_4:
+         if (ctx->Eval.Map1Color4 == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map1Color4 = state;
+         break;
+      case GL_MAP1_INDEX:
+         if (ctx->Eval.Map1Index == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map1Index = state;
+         break;
+      case GL_MAP1_NORMAL:
+         if (ctx->Eval.Map1Normal == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map1Normal = state;
+         break;
+      case GL_MAP1_TEXTURE_COORD_1:
+         if (ctx->Eval.Map1TextureCoord1 == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map1TextureCoord1 = state;
+         break;
+      case GL_MAP1_TEXTURE_COORD_2:
+         if (ctx->Eval.Map1TextureCoord2 == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map1TextureCoord2 = state;
+         break;
+      case GL_MAP1_TEXTURE_COORD_3:
+         if (ctx->Eval.Map1TextureCoord3 == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map1TextureCoord3 = state;
+         break;
+      case GL_MAP1_TEXTURE_COORD_4:
+         if (ctx->Eval.Map1TextureCoord4 == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map1TextureCoord4 = state;
+         break;
+      case GL_MAP1_VERTEX_3:
+         if (ctx->Eval.Map1Vertex3 == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map1Vertex3 = state;
+         break;
+      case GL_MAP1_VERTEX_4:
+         if (ctx->Eval.Map1Vertex4 == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map1Vertex4 = state;
+         break;
+      case GL_MAP2_COLOR_4:
+         if (ctx->Eval.Map2Color4 == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map2Color4 = state;
+         break;
+      case GL_MAP2_INDEX:
+         if (ctx->Eval.Map2Index == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map2Index = state;
+         break;
+      case GL_MAP2_NORMAL:
+         if (ctx->Eval.Map2Normal == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map2Normal = state;
+         break;
+      case GL_MAP2_TEXTURE_COORD_1:
+         if (ctx->Eval.Map2TextureCoord1 == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map2TextureCoord1 = state;
+         break;
+      case GL_MAP2_TEXTURE_COORD_2:
+         if (ctx->Eval.Map2TextureCoord2 == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map2TextureCoord2 = state;
+         break;
+      case GL_MAP2_TEXTURE_COORD_3:
+         if (ctx->Eval.Map2TextureCoord3 == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map2TextureCoord3 = state;
+         break;
+      case GL_MAP2_TEXTURE_COORD_4:
+         if (ctx->Eval.Map2TextureCoord4 == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map2TextureCoord4 = state;
+         break;
+      case GL_MAP2_VERTEX_3:
+         if (ctx->Eval.Map2Vertex3 == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map2Vertex3 = state;
+         break;
+      case GL_MAP2_VERTEX_4:
+         if (ctx->Eval.Map2Vertex4 == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_EVAL);
+         ctx->Eval.Map2Vertex4 = state;
+         break;
+      case GL_MINMAX:
+         if (ctx->Pixel.MinMaxEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_PIXEL);
+         ctx->Pixel.MinMaxEnabled = state;
+         break;
+      case GL_NORMALIZE:
+         if (ctx->Transform.Normalize == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
+         ctx->Transform.Normalize = state;
+         break;
+      case GL_POINT_SMOOTH:
+         if (ctx->Point.SmoothFlag==state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_POINT);
+         ctx->Point.SmoothFlag = state;
+         ctx->_TriangleCaps ^= DD_POINT_SMOOTH;
+         break;
+      case GL_POLYGON_SMOOTH:
+         if (ctx->Polygon.SmoothFlag==state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_POLYGON);
+         ctx->Polygon.SmoothFlag = state;
+         ctx->_TriangleCaps ^= DD_TRI_SMOOTH;
+         break;
+      case GL_POLYGON_STIPPLE:
+         if (ctx->Polygon.StippleFlag==state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_POLYGON);
+         ctx->Polygon.StippleFlag = state;
+         ctx->_TriangleCaps ^= DD_TRI_STIPPLE;
+         break;
+      case GL_POLYGON_OFFSET_POINT:
+         if (ctx->Polygon.OffsetPoint==state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_POLYGON);
+         ctx->Polygon.OffsetPoint = state;
+         break;
+      case GL_POLYGON_OFFSET_LINE:
+         if (ctx->Polygon.OffsetLine==state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_POLYGON);
+         ctx->Polygon.OffsetLine = state;
+         break;
+      case GL_POLYGON_OFFSET_FILL:
+         /*case GL_POLYGON_OFFSET_EXT:*/
+         if (ctx->Polygon.OffsetFill==state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_POLYGON);
+         ctx->Polygon.OffsetFill = state;
+         break;
+      case GL_RESCALE_NORMAL_EXT:
+         if (ctx->Transform.RescaleNormals == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
+         ctx->Transform.RescaleNormals = state;
+         break;
+      case GL_SCISSOR_TEST:
+         if (ctx->Scissor.Enabled==state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_SCISSOR);
+         ctx->Scissor.Enabled = state;
+         break;
+      case GL_SHARED_TEXTURE_PALETTE_EXT:
+         if (ctx->Texture.SharedPalette == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+         ctx->Texture.SharedPalette = state;
+         break;
+      case GL_STENCIL_TEST:
+         if (state && ctx->Visual.stencilBits==0) {
+            _mesa_warning(ctx,
+                          "glEnable(GL_STENCIL_TEST) but no stencil buffer");
+            return;
+         }
+         if (ctx->Stencil.Enabled==state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_STENCIL);
+         ctx->Stencil.Enabled = state;
+         break;
+      case GL_TEXTURE_1D: {
+         const GLuint curr = ctx->Texture.CurrentUnit;
+         struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr];
+         GLuint newenabled = texUnit->Enabled & ~TEXTURE0_1D;
+         if (state)
+            newenabled |= TEXTURE0_1D;
+         if (!ctx->Visual.rgbMode || texUnit->Enabled == newenabled)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+         texUnit->Enabled = newenabled;
+         break;
       }
-   }
-   break;
-   case GL_COLOR_MATERIAL:
-      if (ctx->Light.ColorMaterialEnabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_LIGHT);
-      ctx->Light.ColorMaterialEnabled = state;
-      if (state) {
-        FLUSH_CURRENT(ctx, 0);
-        _mesa_update_color_material( ctx, ctx->Current.Color );
+      case GL_TEXTURE_2D: {
+         const GLuint curr = ctx->Texture.CurrentUnit;
+         struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr];
+         GLuint newenabled = texUnit->Enabled & ~TEXTURE0_2D;
+         if (state)
+            newenabled |= TEXTURE0_2D;
+         if (!ctx->Visual.rgbMode || texUnit->Enabled == newenabled)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+         texUnit->Enabled = newenabled;
+         break;
       }
-      break;
-   case GL_CULL_FACE:
-      if (ctx->Polygon.CullFlag == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_POLYGON);
-      ctx->Polygon.CullFlag = state;
-      break;
-   case GL_DEPTH_TEST:
-      if (state && ctx->Visual.depthBits==0) {
-        _mesa_warning(ctx,"glEnable(GL_DEPTH_TEST) but no depth buffer");
-        return;
+      case GL_TEXTURE_3D: {
+         const GLuint curr = ctx->Texture.CurrentUnit;
+         struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr];
+         GLuint newenabled = texUnit->Enabled & ~TEXTURE0_3D;
+         if (state)
+            newenabled |= TEXTURE0_3D;
+         if (!ctx->Visual.rgbMode || texUnit->Enabled == newenabled)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+         texUnit->Enabled = newenabled;
+         break;
       }
-      if (ctx->Depth.Test==state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_DEPTH);
-      ctx->Depth.Test = state;
-      break;
-   case GL_DITHER:
-      if (ctx->NoDither) {
-        state = GL_FALSE; /* MESA_NO_DITHER env var */
+      case GL_TEXTURE_GEN_Q: {
+         GLuint unit = ctx->Texture.CurrentUnit;
+         struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
+         GLuint newenabled = texUnit->TexGenEnabled & ~Q_BIT;
+         if (state)
+            newenabled |= Q_BIT;
+         if (texUnit->TexGenEnabled == newenabled)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+         texUnit->TexGenEnabled = newenabled;
+         break;
       }
-      if (ctx->Color.DitherFlag==state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_COLOR);
-      ctx->Color.DitherFlag = state;
-      break;
-   case GL_FOG:
-      if (ctx->Fog.Enabled==state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_FOG);
-      ctx->Fog.Enabled = state;
-      break;
-   case GL_HISTOGRAM:
-      if (!ctx->Extensions.EXT_histogram && !ctx->Extensions.ARB_imaging) {
-        _mesa_error(ctx, GL_INVALID_ENUM, "glEnable(GL_HISTOGRAM)");
-        return;
+      case GL_TEXTURE_GEN_R: {
+         GLuint unit = ctx->Texture.CurrentUnit;
+         struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
+         GLuint newenabled = texUnit->TexGenEnabled & ~R_BIT;
+         if (state)
+            newenabled |= R_BIT;
+         if (texUnit->TexGenEnabled == newenabled)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+         texUnit->TexGenEnabled = newenabled;
+         break;
       }
-      if (ctx->Pixel.HistogramEnabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_PIXEL);
-      ctx->Pixel.HistogramEnabled = state;
       break;
-   case GL_LIGHT0:
-   case GL_LIGHT1:
-   case GL_LIGHT2:
-   case GL_LIGHT3:
-   case GL_LIGHT4:
-   case GL_LIGHT5:
-   case GL_LIGHT6:
-   case GL_LIGHT7:
-      if (ctx->Light.Light[cap-GL_LIGHT0].Enabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_LIGHT);
-      ctx->Light.Light[cap-GL_LIGHT0].Enabled = state;
-      if (state) {
-        insert_at_tail(&ctx->Light.EnabledList,
-                       &ctx->Light.Light[cap-GL_LIGHT0]);
-      }
-      else {
-        remove_from_list(&ctx->Light.Light[cap-GL_LIGHT0]);
+      case GL_TEXTURE_GEN_S: {
+         GLuint unit = ctx->Texture.CurrentUnit;
+         struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
+         GLuint newenabled = texUnit->TexGenEnabled & ~S_BIT;
+         if (state)
+            newenabled |= S_BIT;
+         if (texUnit->TexGenEnabled == newenabled)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+         texUnit->TexGenEnabled = newenabled;
+         break;
       }
       break;
-   case GL_LIGHTING:
-      if (ctx->Light.Enabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_LIGHT);
-      ctx->Light.Enabled = state;
-
-      if ((ctx->Light.Enabled &&
-          ctx->Light.Model.ColorControl==GL_SEPARATE_SPECULAR_COLOR)
-         || ctx->Fog.ColorSumEnabled)
-        ctx->_TriangleCaps |= DD_SEPARATE_SPECULAR;
-      else
-        ctx->_TriangleCaps &= ~DD_SEPARATE_SPECULAR;
-
-      break;
-   case GL_LINE_SMOOTH:
-      if (ctx->Line.SmoothFlag == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_LINE);
-      ctx->Line.SmoothFlag = state;
-      ctx->_TriangleCaps ^= DD_LINE_SMOOTH;
-      break;
-   case GL_LINE_STIPPLE:
-      if (ctx->Line.StippleFlag == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_LINE);
-      ctx->Line.StippleFlag = state;
-      ctx->_TriangleCaps ^= DD_LINE_STIPPLE;
-      break;
-   case GL_INDEX_LOGIC_OP:
-      if (ctx->Color.IndexLogicOpEnabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_COLOR);
-      ctx->Color.IndexLogicOpEnabled = state;
-      break;
-   case GL_COLOR_LOGIC_OP:
-      if (ctx->Color.ColorLogicOpEnabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_COLOR);
-      ctx->Color.ColorLogicOpEnabled = state;
-      break;
-   case GL_MAP1_COLOR_4:
-      if (ctx->Eval.Map1Color4 == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map1Color4 = state;
-      break;
-   case GL_MAP1_INDEX:
-      if (ctx->Eval.Map1Index == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map1Index = state;
-      break;
-   case GL_MAP1_NORMAL:
-      if (ctx->Eval.Map1Normal == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map1Normal = state;
-      break;
-   case GL_MAP1_TEXTURE_COORD_1:
-      if (ctx->Eval.Map1TextureCoord1 == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map1TextureCoord1 = state;
-      break;
-   case GL_MAP1_TEXTURE_COORD_2:
-      if (ctx->Eval.Map1TextureCoord2 == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map1TextureCoord2 = state;
-      break;
-   case GL_MAP1_TEXTURE_COORD_3:
-      if (ctx->Eval.Map1TextureCoord3 == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map1TextureCoord3 = state;
-      break;
-   case GL_MAP1_TEXTURE_COORD_4:
-      if (ctx->Eval.Map1TextureCoord4 == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map1TextureCoord4 = state;
-      break;
-   case GL_MAP1_VERTEX_3:
-      if (ctx->Eval.Map1Vertex3 == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map1Vertex3 = state;
-      break;
-   case GL_MAP1_VERTEX_4:
-      if (ctx->Eval.Map1Vertex4 == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map1Vertex4 = state;
-      break;
-   case GL_MAP2_COLOR_4:
-      if (ctx->Eval.Map2Color4 == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map2Color4 = state;
-      break;
-   case GL_MAP2_INDEX:
-      if (ctx->Eval.Map2Index == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map2Index = state;
-      break;
-   case GL_MAP2_NORMAL:
-      if (ctx->Eval.Map2Normal == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map2Normal = state;
-      break;
-   case GL_MAP2_TEXTURE_COORD_1:
-      if (ctx->Eval.Map2TextureCoord1 == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map2TextureCoord1 = state;
-      break;
-   case GL_MAP2_TEXTURE_COORD_2:
-      if (ctx->Eval.Map2TextureCoord2 == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map2TextureCoord2 = state;
-      break;
-   case GL_MAP2_TEXTURE_COORD_3:
-      if (ctx->Eval.Map2TextureCoord3 == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map2TextureCoord3 = state;
-      break;
-   case GL_MAP2_TEXTURE_COORD_4:
-      if (ctx->Eval.Map2TextureCoord4 == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map2TextureCoord4 = state;
-      break;
-   case GL_MAP2_VERTEX_3:
-      if (ctx->Eval.Map2Vertex3 == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map2Vertex3 = state;
-      break;
-   case GL_MAP2_VERTEX_4:
-      if (ctx->Eval.Map2Vertex4 == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_EVAL);
-      ctx->Eval.Map2Vertex4 = state;
-      break;
-   case GL_MINMAX:
-      if (ctx->Pixel.MinMaxEnabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_PIXEL);
-      ctx->Pixel.MinMaxEnabled = state;
-      break;
-   case GL_NORMALIZE:
-      if (ctx->Transform.Normalize == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
-      ctx->Transform.Normalize = state;
-      break;
-   case GL_POINT_SMOOTH:
-      if (ctx->Point.SmoothFlag==state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_POINT);
-      ctx->Point.SmoothFlag = state;
-      ctx->_TriangleCaps ^= DD_POINT_SMOOTH;
-      break;
-   case GL_POLYGON_SMOOTH:
-      if (ctx->Polygon.SmoothFlag==state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_POLYGON);
-      ctx->Polygon.SmoothFlag = state;
-      ctx->_TriangleCaps ^= DD_TRI_SMOOTH;
-      break;
-   case GL_POLYGON_STIPPLE:
-      if (ctx->Polygon.StippleFlag==state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_POLYGON);
-      ctx->Polygon.StippleFlag = state;
-      ctx->_TriangleCaps ^= DD_TRI_STIPPLE;
-      break;
-   case GL_POLYGON_OFFSET_POINT:
-      if (ctx->Polygon.OffsetPoint==state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_POLYGON);
-      ctx->Polygon.OffsetPoint = state;
-      break;
-   case GL_POLYGON_OFFSET_LINE:
-      if (ctx->Polygon.OffsetLine==state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_POLYGON);
-      ctx->Polygon.OffsetLine = state;
-      break;
-   case GL_POLYGON_OFFSET_FILL:
-      /*case GL_POLYGON_OFFSET_EXT:*/
-      if (ctx->Polygon.OffsetFill==state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_POLYGON);
-      ctx->Polygon.OffsetFill = state;
-      break;
-   case GL_RESCALE_NORMAL_EXT:
-      if (ctx->Transform.RescaleNormals == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
-      ctx->Transform.RescaleNormals = state;
-      break;
-   case GL_SCISSOR_TEST:
-      if (ctx->Scissor.Enabled==state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_SCISSOR);
-      ctx->Scissor.Enabled = state;
-      break;
-   case GL_SHARED_TEXTURE_PALETTE_EXT:
-      if (ctx->Texture.SharedPalette == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_TEXTURE);
-      ctx->Texture.SharedPalette = state;
-      break;
-   case GL_STENCIL_TEST:
-      if (state && ctx->Visual.stencilBits==0) {
-        _mesa_warning(ctx, "glEnable(GL_STENCIL_TEST) but no stencil buffer");
-        return;
+      case GL_TEXTURE_GEN_T: {
+         GLuint unit = ctx->Texture.CurrentUnit;
+         struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
+         GLuint newenabled = texUnit->TexGenEnabled & ~T_BIT;
+         if (state)
+            newenabled |= T_BIT;
+         if (texUnit->TexGenEnabled == newenabled)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+         texUnit->TexGenEnabled = newenabled;
+         break;
       }
-      if (ctx->Stencil.Enabled==state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_STENCIL);
-      ctx->Stencil.Enabled = state;
       break;
-   case GL_TEXTURE_1D: {
-      const GLuint curr = ctx->Texture.CurrentUnit;
-      struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr];
-      GLuint newenabled = texUnit->Enabled & ~TEXTURE0_1D;
-      if (state)
-        newenabled |= TEXTURE0_1D;
-      if (!ctx->Visual.rgbMode || texUnit->Enabled == newenabled)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_TEXTURE);
-      texUnit->Enabled = newenabled;
-      break;
-   }
-   case GL_TEXTURE_2D: {
-      const GLuint curr = ctx->Texture.CurrentUnit;
-      struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr];
-      GLuint newenabled = texUnit->Enabled & ~TEXTURE0_2D;
-      if (state)
-        newenabled |= TEXTURE0_2D;
-      if (!ctx->Visual.rgbMode || texUnit->Enabled == newenabled)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_TEXTURE);
-      texUnit->Enabled = newenabled;
-      break;
-   }
-   case GL_TEXTURE_3D: {
-      const GLuint curr = ctx->Texture.CurrentUnit;
-      struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr];
-      GLuint newenabled = texUnit->Enabled & ~TEXTURE0_3D;
-      if (state)
-        newenabled |= TEXTURE0_3D;
-      if (!ctx->Visual.rgbMode || texUnit->Enabled == newenabled)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_TEXTURE);
-      texUnit->Enabled = newenabled;
-      break;
-   }
-   case GL_TEXTURE_GEN_Q: {
-      GLuint unit = ctx->Texture.CurrentUnit;
-      struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
-      GLuint newenabled = texUnit->TexGenEnabled & ~Q_BIT;
-      if (state)
-        newenabled |= Q_BIT;
-      if (texUnit->TexGenEnabled == newenabled)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_TEXTURE);
-      texUnit->TexGenEnabled = newenabled;
-      break;
-   }
-   case GL_TEXTURE_GEN_R: {
-      GLuint unit = ctx->Texture.CurrentUnit;
-      struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
-      GLuint newenabled = texUnit->TexGenEnabled & ~R_BIT;
-      if (state)
-        newenabled |= R_BIT;
-      if (texUnit->TexGenEnabled == newenabled)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_TEXTURE);
-      texUnit->TexGenEnabled = newenabled;
-      break;
-   }
-   break;
-   case GL_TEXTURE_GEN_S: {
-      GLuint unit = ctx->Texture.CurrentUnit;
-      struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
-      GLuint newenabled = texUnit->TexGenEnabled & ~S_BIT;
-      if (state)
-        newenabled |= S_BIT;
-      if (texUnit->TexGenEnabled == newenabled)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_TEXTURE);
-      texUnit->TexGenEnabled = newenabled;
-      break;
-   }
-   break;
-   case GL_TEXTURE_GEN_T: {
-      GLuint unit = ctx->Texture.CurrentUnit;
-      struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
-      GLuint newenabled = texUnit->TexGenEnabled & ~T_BIT;
-      if (state)
-        newenabled |= T_BIT;
-      if (texUnit->TexGenEnabled == newenabled)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_TEXTURE);
-      texUnit->TexGenEnabled = newenabled;
-      break;
-   }
-   break;
-
-   /*
-    * CLIENT STATE!!!
-    */
-   case GL_VERTEX_ARRAY:
-   case GL_NORMAL_ARRAY:
-   case GL_COLOR_ARRAY:
-   case GL_INDEX_ARRAY:
-   case GL_TEXTURE_COORD_ARRAY:
-   case GL_EDGE_FLAG_ARRAY:
-   case GL_FOG_COORDINATE_ARRAY_EXT:
-   case GL_SECONDARY_COLOR_ARRAY_EXT:
-      client_state( ctx, cap, state );
-      return;
+
+      /*
+       * CLIENT STATE!!!
+       */
+      case GL_VERTEX_ARRAY:
+      case GL_NORMAL_ARRAY:
+      case GL_COLOR_ARRAY:
+      case GL_INDEX_ARRAY:
+      case GL_TEXTURE_COORD_ARRAY:
+      case GL_EDGE_FLAG_ARRAY:
+      case GL_FOG_COORDINATE_ARRAY_EXT:
+      case GL_SECONDARY_COLOR_ARRAY_EXT:
+         client_state( ctx, cap, state );
+         return;
 
       /* GL_HP_occlusion_test */
-   case GL_OCCLUSION_TEST_HP:
-      if (!ctx->Extensions.HP_occlusion_test) {
-        _mesa_error( ctx, GL_INVALID_ENUM, state ? "glEnable": "glDisable" );
-        return;
-      }
-      if (ctx->Depth.OcclusionTest == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_DEPTH);
-      ctx->Depth.OcclusionTest = state;
-      if (state)
-        ctx->OcclusionResult = ctx->OcclusionResultSaved;
-      else
-        ctx->OcclusionResultSaved = ctx->OcclusionResult;
-      break;
+      case GL_OCCLUSION_TEST_HP:
+         CHECK_EXTENSION(HP_occlusion_test);
+         if (ctx->Depth.OcclusionTest == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_DEPTH);
+         ctx->Depth.OcclusionTest = state;
+         if (state)
+            ctx->OcclusionResult = ctx->OcclusionResultSaved;
+         else
+            ctx->OcclusionResultSaved = ctx->OcclusionResult;
+         break;
 
       /* GL_SGIS_pixel_texture */
-   case GL_PIXEL_TEXTURE_SGIS:
-      if (!ctx->Extensions.SGIS_pixel_texture) {
-        _mesa_error( ctx, GL_INVALID_ENUM, state ? "glEnable": "glDisable" );
-        return;
-      }
-      if (ctx->Pixel.PixelTextureEnabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_PIXEL);
-      ctx->Pixel.PixelTextureEnabled = state;
-      break;
+      case GL_PIXEL_TEXTURE_SGIS:
+         CHECK_EXTENSION(SGIS_pixel_texture);
+         if (ctx->Pixel.PixelTextureEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_PIXEL);
+         ctx->Pixel.PixelTextureEnabled = state;
+         break;
 
       /* GL_SGIX_pixel_texture */
-   case GL_PIXEL_TEX_GEN_SGIX:
-      if (!ctx->Extensions.SGIX_pixel_texture) {
-        _mesa_error( ctx, GL_INVALID_ENUM, state ? "glEnable": "glDisable" );
-        return;
-      }
-      if (ctx->Pixel.PixelTextureEnabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_PIXEL);
-      ctx->Pixel.PixelTextureEnabled = state;
-      break;
+      case GL_PIXEL_TEX_GEN_SGIX:
+         CHECK_EXTENSION(SGIX_pixel_texture);
+         if (ctx->Pixel.PixelTextureEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_PIXEL);
+         ctx->Pixel.PixelTextureEnabled = state;
+         break;
 
       /* GL_SGI_color_table */
-   case GL_COLOR_TABLE_SGI:
-      if (!ctx->Extensions.SGI_color_table && !ctx->Extensions.ARB_imaging) {
-        _mesa_error( ctx, GL_INVALID_ENUM, state ? "glEnable": "glDisable" );
-        return;
-      }
-      if (ctx->Pixel.ColorTableEnabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_PIXEL);
-      ctx->Pixel.ColorTableEnabled = state;
-      break;
-   case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
-      if (!ctx->Extensions.SGI_color_table && !ctx->Extensions.ARB_imaging) {
-        _mesa_error( ctx, GL_INVALID_ENUM, state ? "glEnable": "glDisable" );
-        return;
-      }
-      if (ctx->Pixel.PostConvolutionColorTableEnabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_PIXEL);
-      ctx->Pixel.PostConvolutionColorTableEnabled = state;
-      break;
-   case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
-      if (!ctx->Extensions.SGI_color_table && !ctx->Extensions.ARB_imaging) {
-        _mesa_error( ctx, GL_INVALID_ENUM, state ? "glEnable": "glDisable" );
-        return;
-      }
-      if (ctx->Pixel.PostColorMatrixColorTableEnabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_PIXEL);
-      ctx->Pixel.PostColorMatrixColorTableEnabled = state;
-      break;
+      case GL_COLOR_TABLE_SGI:
+         CHECK_EXTENSION(SGI_color_table);
+         if (ctx->Pixel.ColorTableEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_PIXEL);
+         ctx->Pixel.ColorTableEnabled = state;
+         break;
+      case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
+         CHECK_EXTENSION(SGI_color_table);
+         if (ctx->Pixel.PostConvolutionColorTableEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_PIXEL);
+         ctx->Pixel.PostConvolutionColorTableEnabled = state;
+         break;
+      case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
+         CHECK_EXTENSION(SGI_color_table);
+         if (ctx->Pixel.PostColorMatrixColorTableEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_PIXEL);
+         ctx->Pixel.PostColorMatrixColorTableEnabled = state;
+         break;
 
       /* GL_EXT_convolution */
-   case GL_CONVOLUTION_1D:
-      if (!ctx->Extensions.EXT_convolution && !ctx->Extensions.ARB_imaging) {
-        _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
-        return;
-      }
-      if (ctx->Pixel.Convolution1DEnabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_PIXEL);
-      ctx->Pixel.Convolution1DEnabled = state;
-      break;
-   case GL_CONVOLUTION_2D:
-      if (!ctx->Extensions.EXT_convolution && !ctx->Extensions.ARB_imaging) {
-        _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
-        return;
-      }
-      if (ctx->Pixel.Convolution2DEnabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_PIXEL);
-      ctx->Pixel.Convolution2DEnabled = state;
-      break;
-   case GL_SEPARABLE_2D:
-      if (!ctx->Extensions.EXT_convolution && !ctx->Extensions.ARB_imaging) {
-        _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
-        return;
-      }
-      if (ctx->Pixel.Separable2DEnabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_PIXEL);
-      ctx->Pixel.Separable2DEnabled = state;
-      break;
+      case GL_CONVOLUTION_1D:
+         CHECK_EXTENSION(EXT_convolution);
+         if (ctx->Pixel.Convolution1DEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_PIXEL);
+         ctx->Pixel.Convolution1DEnabled = state;
+         break;
+      case GL_CONVOLUTION_2D:
+         CHECK_EXTENSION(EXT_convolution);
+         if (ctx->Pixel.Convolution2DEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_PIXEL);
+         ctx->Pixel.Convolution2DEnabled = state;
+         break;
+      case GL_SEPARABLE_2D:
+         CHECK_EXTENSION(EXT_convolution);
+         if (ctx->Pixel.Separable2DEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_PIXEL);
+         ctx->Pixel.Separable2DEnabled = state;
+         break;
 
       /* GL_ARB_texture_cube_map */
-   case GL_TEXTURE_CUBE_MAP_ARB: {
-      const GLuint curr = ctx->Texture.CurrentUnit;
-      struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr];
-      GLuint newenabled = texUnit->Enabled & ~TEXTURE0_CUBE;
-      if (state)
-        newenabled |= TEXTURE0_CUBE;
-      if (!ctx->Extensions.ARB_texture_cube_map) {
-        _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
-        return;
-      }
-      if (!ctx->Visual.rgbMode || texUnit->Enabled == newenabled)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_TEXTURE);
-      texUnit->Enabled = newenabled;
-      break;
-   }
-      /* GL_EXT_secondary_color */
-   case GL_COLOR_SUM_EXT:
-      if (!ctx->Extensions.EXT_secondary_color) {
-        _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
-        return;
-      }
-      if (ctx->Fog.ColorSumEnabled == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_FOG);
-      ctx->Fog.ColorSumEnabled = state;
-
-      if ((ctx->Light.Enabled &&
-          ctx->Light.Model.ColorControl==GL_SEPARATE_SPECULAR_COLOR)
-         || ctx->Fog.ColorSumEnabled)
-        ctx->_TriangleCaps |= DD_SEPARATE_SPECULAR;
-      else
-        ctx->_TriangleCaps &= ~DD_SEPARATE_SPECULAR;
+      case GL_TEXTURE_CUBE_MAP_ARB:
+         {
+            const GLuint curr = ctx->Texture.CurrentUnit;
+            struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr];
+            GLuint newenabled = texUnit->Enabled & ~TEXTURE0_CUBE;
+            CHECK_EXTENSION(ARB_texture_cube_map);
+            if (state)
+               newenabled |= TEXTURE0_CUBE;
+            if (!ctx->Visual.rgbMode || texUnit->Enabled == newenabled)
+               return;
+            FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+            texUnit->Enabled = newenabled;
+         }
+         break;
 
-      break;
+      /* GL_EXT_secondary_color */
+      case GL_COLOR_SUM_EXT:
+         CHECK_EXTENSION(EXT_secondary_color);
+         if (ctx->Fog.ColorSumEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_FOG);
+         ctx->Fog.ColorSumEnabled = state;
+
+         if ((ctx->Light.Enabled &&
+              ctx->Light.Model.ColorControl==GL_SEPARATE_SPECULAR_COLOR)
+             || ctx->Fog.ColorSumEnabled)
+            ctx->_TriangleCaps |= DD_SEPARATE_SPECULAR;
+         else
+            ctx->_TriangleCaps &= ~DD_SEPARATE_SPECULAR;
+
+         break;
 
       /* GL_ARB_multisample */
-   case GL_MULTISAMPLE_ARB:
-      if (!ctx->Extensions.ARB_multisample) {
-         _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
-         return;
-      }
-      if (ctx->Multisample.Enabled == state)
-         return;
-      FLUSH_VERTICES(ctx, _NEW_MULTISAMPLE);
-      ctx->Multisample.Enabled = state;
-      break;
-   case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
-      if (!ctx->Extensions.ARB_multisample) {
-         _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
-         return;
-      }
-      if (ctx->Multisample.SampleAlphaToCoverage == state)
-         return;
-      FLUSH_VERTICES(ctx, _NEW_MULTISAMPLE);
-      ctx->Multisample.SampleAlphaToCoverage = state;
-      break;
-   case GL_SAMPLE_ALPHA_TO_ONE_ARB:
-      if (!ctx->Extensions.ARB_multisample) {
-         _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
-         return;
-      }
-      if (ctx->Multisample.SampleAlphaToOne == state)
-         return;
-      FLUSH_VERTICES(ctx, _NEW_MULTISAMPLE);
-      ctx->Multisample.SampleAlphaToOne = state;
-      break;
-   case GL_SAMPLE_COVERAGE_ARB:
-      if (!ctx->Extensions.ARB_multisample) {
-         _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
-         return;
-      }
-      if (ctx->Multisample.SampleCoverage == state)
-         return;
-      FLUSH_VERTICES(ctx, _NEW_MULTISAMPLE);
-      ctx->Multisample.SampleCoverage = state;
-      break;
-   case GL_SAMPLE_COVERAGE_INVERT_ARB:
-      if (!ctx->Extensions.ARB_multisample) {
-         _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
-         return;
-      }
-      if (ctx->Multisample.SampleCoverageInvert == state)
-         return;
-      FLUSH_VERTICES(ctx, _NEW_MULTISAMPLE);
-      ctx->Multisample.SampleCoverageInvert = state;
-      break;
+      case GL_MULTISAMPLE_ARB:
+         CHECK_EXTENSION(ARB_multisample);
+         if (ctx->Multisample.Enabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_MULTISAMPLE);
+         ctx->Multisample.Enabled = state;
+         break;
+      case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
+         CHECK_EXTENSION(ARB_multisample);
+         if (ctx->Multisample.SampleAlphaToCoverage == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_MULTISAMPLE);
+         ctx->Multisample.SampleAlphaToCoverage = state;
+         break;
+      case GL_SAMPLE_ALPHA_TO_ONE_ARB:
+         CHECK_EXTENSION(ARB_multisample);
+         if (ctx->Multisample.SampleAlphaToOne == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_MULTISAMPLE);
+         ctx->Multisample.SampleAlphaToOne = state;
+         break;
+      case GL_SAMPLE_COVERAGE_ARB:
+         CHECK_EXTENSION(ARB_multisample);
+         if (ctx->Multisample.SampleCoverage == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_MULTISAMPLE);
+         ctx->Multisample.SampleCoverage = state;
+         break;
+      case GL_SAMPLE_COVERAGE_INVERT_ARB:
+         CHECK_EXTENSION(ARB_multisample);
+         if (ctx->Multisample.SampleCoverageInvert == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_MULTISAMPLE);
+         ctx->Multisample.SampleCoverageInvert = state;
+         break;
 
       /* GL_IBM_rasterpos_clip */
-   case GL_RASTER_POSITION_UNCLIPPED_IBM:
-      if (!ctx->Extensions.IBM_rasterpos_clip) {
-         _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
-         return;
-      }
-      if (ctx->Transform.RasterPositionUnclipped == state)
-         return;
-      FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
-      ctx->Transform.RasterPositionUnclipped = state;
-      break;
+      case GL_RASTER_POSITION_UNCLIPPED_IBM:
+         CHECK_EXTENSION(IBM_rasterpos_clip);
+         if (ctx->Transform.RasterPositionUnclipped == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
+         ctx->Transform.RasterPositionUnclipped = state;
+         break;
 
       /* GL_MESA_sprite_point */
-   case GL_SPRITE_POINT_MESA:
-      if (!ctx->Extensions.MESA_sprite_point) {
-        _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
-        return;
-      }
-      if (ctx->Point.SpriteMode == state)
-        return;
-      FLUSH_VERTICES(ctx, _NEW_POINT);
-      ctx->Point.SpriteMode = state;
-      break;
+      case GL_SPRITE_POINT_MESA:
+         CHECK_EXTENSION(MESA_sprite_point);
+         if (ctx->Point.SpriteMode == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_POINT);
+         ctx->Point.SpriteMode = state;
+         break;
+
+      /* GL_NV_vertex_program */
+      case GL_VERTEX_PROGRAM_NV:
+         CHECK_EXTENSION(NV_vertex_program);
+         if (ctx->VertexProgram.Enabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_TRANSFORM);  /* XXX OK? */
+         ctx->VertexProgram.Enabled = state;
+         break;
+      case GL_VERTEX_PROGRAM_POINT_SIZE_NV:
+         CHECK_EXTENSION(NV_vertex_program);
+         if (ctx->VertexProgram.PointSizeEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_TRANSFORM);  /* XXX OK? */
+         ctx->VertexProgram.PointSizeEnabled = state;
+         break;
+      case GL_VERTEX_PROGRAM_TWO_SIDE_NV:
+         CHECK_EXTENSION(NV_vertex_program);
+         if (ctx->VertexProgram.TwoSideEnabled == state)
+            return;
+         FLUSH_VERTICES(ctx, _NEW_TRANSFORM);  /* XXX OK? */
+         ctx->VertexProgram.TwoSideEnabled = state;
+         break;
+      case GL_MAP1_VERTEX_ATTRIB0_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB1_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB2_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB3_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB4_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB5_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB6_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB7_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB8_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB9_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB10_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB11_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB12_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB13_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB14_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB15_4_NV:
+         CHECK_EXTENSION(NV_vertex_program);
+         break;
+      case GL_MAP2_VERTEX_ATTRIB0_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB1_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB2_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB3_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB4_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB5_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB6_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB7_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB8_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB9_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB10_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB11_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB12_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB13_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB14_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB15_4_NV:
+         CHECK_EXTENSION(NV_vertex_program);
+         break;
 
-   default:
-      _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
-      return;
+      default:
+         _mesa_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
+         return;
    }
 
    if (ctx->Driver.Enable) {
@@ -843,6 +890,13 @@ _mesa_Disable( GLenum cap )
 }
 
 
+#undef CHECK_EXTENSION
+#define CHECK_EXTENSION(EXTNAME)                       \
+   if (!ctx->Extensions.EXTNAME) {                     \
+      _mesa_error(ctx, GL_INVALID_ENUM, "glIsEnabled");        \
+      return GL_FALSE;                                 \
+   }
+
 
 GLboolean
 _mesa_IsEnabled( GLenum cap )
@@ -872,14 +926,6 @@ _mesa_IsEnabled( GLenum cap )
         return ctx->Color.DitherFlag;
       case GL_FOG:
         return ctx->Fog.Enabled;
-      case GL_HISTOGRAM:
-         if (ctx->Extensions.EXT_histogram || ctx->Extensions.ARB_imaging) {
-            return ctx->Pixel.HistogramEnabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glIsEnabled");
-            return GL_FALSE;
-         }
       case GL_LIGHTING:
          return ctx->Light.Enabled;
       case GL_LIGHT0:
@@ -935,8 +981,6 @@ _mesa_IsEnabled( GLenum cap )
         return ctx->Eval.Map2Vertex3;
       case GL_MAP2_VERTEX_4:
         return ctx->Eval.Map2Vertex4;
-      case GL_MINMAX:
-         return ctx->Pixel.MinMaxEnabled;
       case GL_NORMALIZE:
         return ctx->Transform.Normalize;
       case GL_POINT_SMOOTH:
@@ -962,37 +1006,44 @@ _mesa_IsEnabled( GLenum cap )
         return ctx->Stencil.Enabled;
       case GL_TEXTURE_1D:
          {
-            const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
+            const struct gl_texture_unit *texUnit;
+            texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
             return (texUnit->Enabled & TEXTURE0_1D) ? GL_TRUE : GL_FALSE;
          }
       case GL_TEXTURE_2D:
          {
-            const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
+            const struct gl_texture_unit *texUnit;
+            texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
             return (texUnit->Enabled & TEXTURE0_2D) ? GL_TRUE : GL_FALSE;
          }
       case GL_TEXTURE_3D:
          {
-            const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
+            const struct gl_texture_unit *texUnit;
+            texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
             return (texUnit->Enabled & TEXTURE0_3D) ? GL_TRUE : GL_FALSE;
          }
       case GL_TEXTURE_GEN_Q:
          {
-            const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
+            const struct gl_texture_unit *texUnit;
+            texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
             return (texUnit->TexGenEnabled & Q_BIT) ? GL_TRUE : GL_FALSE;
          }
       case GL_TEXTURE_GEN_R:
          {
-            const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
+            const struct gl_texture_unit *texUnit;
+            texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
             return (texUnit->TexGenEnabled & R_BIT) ? GL_TRUE : GL_FALSE;
          }
       case GL_TEXTURE_GEN_S:
          {
-            const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
+            const struct gl_texture_unit *texUnit;
+            texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
             return (texUnit->TexGenEnabled & S_BIT) ? GL_TRUE : GL_FALSE;
          }
       case GL_TEXTURE_GEN_T:
          {
-            const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
+            const struct gl_texture_unit *texUnit;
+            texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
             return (texUnit->TexGenEnabled & T_BIT) ? GL_TRUE : GL_FALSE;
          }
 
@@ -1012,107 +1063,154 @@ _mesa_IsEnabled( GLenum cap )
       case GL_EDGE_FLAG_ARRAY:
          return ctx->Array.EdgeFlag.Enabled;
 
+      /* GL_EXT_histogram */
+      case GL_HISTOGRAM:
+         CHECK_EXTENSION(EXT_histogram);
+         return ctx->Pixel.HistogramEnabled;
+      case GL_MINMAX:
+         CHECK_EXTENSION(EXT_histogram);
+         return ctx->Pixel.MinMaxEnabled;
+
       /* GL_HP_occlusion_test */
       case GL_OCCLUSION_TEST_HP:
-         if (ctx->Extensions.HP_occlusion_test) {
-            return ctx->Depth.OcclusionTest;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glIsEnabled" );
-            return GL_FALSE;
-         }
+         CHECK_EXTENSION(HP_occlusion_test);
+         return ctx->Depth.OcclusionTest;
 
       /* GL_SGIS_pixel_texture */
       case GL_PIXEL_TEXTURE_SGIS:
+         CHECK_EXTENSION(SGIS_pixel_texture);
          return ctx->Pixel.PixelTextureEnabled;
 
       /* GL_SGIX_pixel_texture */
       case GL_PIXEL_TEX_GEN_SGIX:
+         CHECK_EXTENSION(SGIX_pixel_texture);
          return ctx->Pixel.PixelTextureEnabled;
 
       /* GL_SGI_color_table */
       case GL_COLOR_TABLE_SGI:
+         CHECK_EXTENSION(SGI_color_table);
          return ctx->Pixel.ColorTableEnabled;
       case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
+         CHECK_EXTENSION(SGI_color_table);
          return ctx->Pixel.PostConvolutionColorTableEnabled;
       case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
+         CHECK_EXTENSION(SGI_color_table);
          return ctx->Pixel.PostColorMatrixColorTableEnabled;
 
       /* GL_EXT_convolution */
       case GL_CONVOLUTION_1D:
+         CHECK_EXTENSION(EXT_convolution);
          return ctx->Pixel.Convolution1DEnabled;
       case GL_CONVOLUTION_2D:
+         CHECK_EXTENSION(EXT_convolution);
          return ctx->Pixel.Convolution2DEnabled;
       case GL_SEPARABLE_2D:
+         CHECK_EXTENSION(EXT_convolution);
          return ctx->Pixel.Separable2DEnabled;
 
       /* GL_ARB_texture_cube_map */
       case GL_TEXTURE_CUBE_MAP_ARB:
-         if (ctx->Extensions.ARB_texture_cube_map) {
-            const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
+         CHECK_EXTENSION(ARB_texture_cube_map);
+         {
+            const struct gl_texture_unit *texUnit;
+            texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
             return (texUnit->Enabled & TEXTURE0_CUBE) ? GL_TRUE : GL_FALSE;
          }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glIsEnabled");
-            return GL_FALSE;
-         }
 
       /* GL_ARB_multisample */
       case GL_MULTISAMPLE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            return ctx->Multisample.Enabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glIsEnabled");
-            return GL_FALSE;
-         }
+         CHECK_EXTENSION(ARB_multisample);
+         return ctx->Multisample.Enabled;
       case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            return ctx->Multisample.SampleAlphaToCoverage;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glIsEnabled");
-            return GL_FALSE;
-         }
+         CHECK_EXTENSION(ARB_multisample);
+         return ctx->Multisample.SampleAlphaToCoverage;
       case GL_SAMPLE_ALPHA_TO_ONE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            return ctx->Multisample.SampleAlphaToOne;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glIsEnabled");
-            return GL_FALSE;
-         }
+         CHECK_EXTENSION(ARB_multisample);
+         return ctx->Multisample.SampleAlphaToOne;
       case GL_SAMPLE_COVERAGE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            return ctx->Multisample.SampleCoverage;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glIsEnabled");
-            return GL_FALSE;
-         }
+         CHECK_EXTENSION(ARB_multisample);
+         return ctx->Multisample.SampleCoverage;
       case GL_SAMPLE_COVERAGE_INVERT_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            return ctx->Multisample.SampleCoverageInvert;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glIsEnabled");
-            return GL_FALSE;
-         }
+         CHECK_EXTENSION(ARB_multisample);
+         return ctx->Multisample.SampleCoverageInvert;
 
       /* GL_IBM_rasterpos_clip */
       case GL_RASTER_POSITION_UNCLIPPED_IBM:
-         if (ctx->Extensions.IBM_rasterpos_clip) {
-            return ctx->Transform.RasterPositionUnclipped;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glIsEnabled");
-            return GL_FALSE;
-         }
+         CHECK_EXTENSION(IBM_rasterpos_clip);
+         return ctx->Transform.RasterPositionUnclipped;
 
       /* GL_MESA_sprite_point */
       case GL_SPRITE_POINT_MESA:
          return ctx->Point.SpriteMode;
 
+      /* GL_NV_vertex_program */
+      case GL_VERTEX_PROGRAM_NV:
+         CHECK_EXTENSION(NV_vertex_program);
+         return ctx->VertexProgram.Enabled;
+      case GL_VERTEX_PROGRAM_POINT_SIZE_NV:
+         CHECK_EXTENSION(NV_vertex_program);
+         return ctx->VertexProgram.PointSizeEnabled;
+      case GL_VERTEX_PROGRAM_TWO_SIDE_NV:
+         CHECK_EXTENSION(NV_vertex_program);
+         return ctx->VertexProgram.TwoSideEnabled;
+      case GL_VERTEX_ATTRIB_ARRAY0_NV:
+      case GL_VERTEX_ATTRIB_ARRAY1_NV:
+      case GL_VERTEX_ATTRIB_ARRAY2_NV:
+      case GL_VERTEX_ATTRIB_ARRAY3_NV:
+      case GL_VERTEX_ATTRIB_ARRAY4_NV:
+      case GL_VERTEX_ATTRIB_ARRAY5_NV:
+      case GL_VERTEX_ATTRIB_ARRAY6_NV:
+      case GL_VERTEX_ATTRIB_ARRAY7_NV:
+      case GL_VERTEX_ATTRIB_ARRAY8_NV:
+      case GL_VERTEX_ATTRIB_ARRAY9_NV:
+      case GL_VERTEX_ATTRIB_ARRAY10_NV:
+      case GL_VERTEX_ATTRIB_ARRAY11_NV:
+      case GL_VERTEX_ATTRIB_ARRAY12_NV:
+      case GL_VERTEX_ATTRIB_ARRAY13_NV:
+      case GL_VERTEX_ATTRIB_ARRAY14_NV:
+      case GL_VERTEX_ATTRIB_ARRAY15_NV:
+         CHECK_EXTENSION(NV_vertex_program);
+         {
+            GLint n = (GLint) cap - GL_VERTEX_ATTRIB_ARRAY0_NV;
+            return ctx->Array.VertexAttrib[n].Enabled;
+         }
+      case GL_MAP1_VERTEX_ATTRIB0_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB1_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB2_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB3_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB4_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB5_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB6_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB7_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB8_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB9_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB10_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB11_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB12_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB13_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB14_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB15_4_NV:
+         CHECK_EXTENSION(NV_vertex_program);
+         return GL_FALSE;
+      case GL_MAP2_VERTEX_ATTRIB0_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB1_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB2_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB3_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB4_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB5_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB6_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB7_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB8_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB9_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB10_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB11_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB12_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB13_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB14_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB15_4_NV:
+         CHECK_EXTENSION(NV_vertex_program);
+         return GL_FALSE;
+
       default:
         _mesa_error( ctx, GL_INVALID_ENUM, "glIsEnabled" );
         return GL_FALSE;
index 75bbb05..ee8eb4f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: extensions.c,v 1.67 2001/12/04 23:44:55 brianp Exp $ */
+/* $Id: extensions.c,v 1.68 2001/12/14 02:50:01 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -112,6 +112,7 @@ static struct {
    { ON,  "GL_MESA_window_pos",                F(MESA_window_pos) },
    { OFF, "GL_NV_blend_square",                F(NV_blend_square) },
    { ON,  "GL_NV_texgen_reflection",           F(NV_texgen_reflection) },
+   { OFF, "GL_NV_vertex_program",              F(NV_vertex_program) },
    { OFF, "GL_SGI_color_matrix",               F(SGI_color_matrix) },
    { OFF, "GL_SGI_color_table",                F(SGI_color_table) },
    { OFF, "GL_SGIS_generate_mipmap",           F(SGIS_generate_mipmap) },
@@ -170,6 +171,7 @@ _mesa_enable_sw_extensions(GLcontext *ctx)
       "GL_MESA_resize_buffers",
       "GL_NV_blend_square",
       "GL_NV_texgen_reflection",
+      "GL_NV_vertex_program",
       "GL_SGI_color_matrix",
       "GL_SGI_color_table",
       "GL_SGIS_generate_mipmap",
index 2e51305..a6a4d12 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: get.c,v 1.73 2001/12/04 23:44:56 brianp Exp $ */
+/* $Id: get.c,v 1.74 2001/12/14 02:55:08 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
 #endif
 
 
+/* Check if named extension is enabled, if not generate error and return */
+
+#define CHECK_EXTENSION_B(EXTNAME)                             \
+   if (!ctx->Extensions.EXTNAME) {                             \
+      _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanv");     \
+      return;                                                  \
+   }   
+
+#define CHECK_EXTENSION_I(EXTNAME)                             \
+   if (!ctx->Extensions.EXTNAME) {                             \
+      _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerv");     \
+      return;                                                  \
+   }   
+
+#define CHECK_EXTENSION_F(EXTNAME)                             \
+   if (!ctx->Extensions.EXTNAME) {                             \
+      _mesa_error(ctx, GL_INVALID_VALUE, "glGetFloatv");       \
+      return;                                                  \
+   }   
+
+#define CHECK_EXTENSION_D(EXTNAME)                             \
+   if (!ctx->Extensions.EXTNAME) {                             \
+      _mesa_error(ctx, GL_INVALID_VALUE, "glGetDoublev");      \
+      return;                                                  \
+   }   
+
+
+
 
 static GLenum
 pixel_texgen_mode(const GLcontext *ctx)
@@ -231,10 +259,10 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
          break;
       case GL_CURRENT_COLOR:
         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_BOOL(ctx->Current.Color[0]);
-         params[1] = FLOAT_TO_BOOL(ctx->Current.Color[1]);
-         params[2] = FLOAT_TO_BOOL(ctx->Current.Color[2]);
-         params[3] = FLOAT_TO_BOOL(ctx->Current.Color[3]);
+         params[0] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
+         params[1] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
+         params[2] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
+         params[3] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
          break;
       case GL_CURRENT_INDEX:
         FLUSH_CURRENT(ctx, 0);
@@ -242,9 +270,9 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
          break;
       case GL_CURRENT_NORMAL:
         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_BOOL(ctx->Current.Normal[0]);
-         params[1] = FLOAT_TO_BOOL(ctx->Current.Normal[1]);
-         params[2] = FLOAT_TO_BOOL(ctx->Current.Normal[2]);
+         params[0] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
+         params[1] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
+         params[2] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
          break;
       case GL_CURRENT_RASTER_COLOR:
         params[0] = FLOAT_TO_BOOL(ctx->Current.RasterColor[0]);
@@ -275,10 +303,10 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
         break;
       case GL_CURRENT_TEXTURE_COORDS:
         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_BOOL(ctx->Current.Texcoord[texUnit][0]);
-         params[1] = FLOAT_TO_BOOL(ctx->Current.Texcoord[texUnit][1]);
-         params[2] = FLOAT_TO_BOOL(ctx->Current.Texcoord[texUnit][2]);
-         params[3] = FLOAT_TO_BOOL(ctx->Current.Texcoord[texUnit][3]);
+         params[0] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]);
+         params[1] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]);
+         params[2] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]);
+         params[3] = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]);
         break;
       case GL_DEPTH_BIAS:
          *params = FLOAT_TO_BOOL(ctx->Pixel.DepthBias);
@@ -363,15 +391,6 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
       case GL_GREEN_SCALE:
          *params = FLOAT_TO_BOOL(ctx->Pixel.GreenScale);
         break;
-      case GL_HISTOGRAM:
-         if (ctx->Extensions.EXT_histogram) {
-            *params = ctx->Pixel.HistogramEnabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
-            return;
-         }
-        break;
       case GL_INDEX_BITS:
          *params = INT_TO_BOOL( ctx->Visual.indexBits );
         break;
@@ -595,9 +614,6 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
         params[0] = INT_TO_BOOL(MAX_WIDTH);
         params[1] = INT_TO_BOOL(MAX_HEIGHT);
         break;
-      case GL_MINMAX:
-         *params = ctx->Pixel.MinMaxEnabled;
-         break;
       case GL_MODELVIEW_MATRIX:
         for (i=0;i<16;i++) {
            params[i] = FLOAT_TO_BOOL(ctx->ModelView.m[i]);
@@ -983,47 +999,34 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
 
       /* GL_ARB_texture_cube_map */
       case GL_TEXTURE_CUBE_MAP_ARB:
-         if (ctx->Extensions.ARB_texture_cube_map)
-            *params = _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
-         return;
+         CHECK_EXTENSION_B(ARB_texture_cube_map);
+         *params = _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
+         break;
       case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
-         if (ctx->Extensions.ARB_texture_cube_map)
-            *params = INT_TO_BOOL(textureUnit->CurrentCubeMap->Name);
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
-         return;
+         CHECK_EXTENSION_B(ARB_texture_cube_map);
+         *params = INT_TO_BOOL(textureUnit->CurrentCubeMap->Name);
+         break;
       case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
-         if (ctx->Extensions.ARB_texture_cube_map)
-            *params = INT_TO_BOOL(1 << (ctx->Const.MaxCubeTextureLevels - 1));
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
+         CHECK_EXTENSION_B(ARB_texture_cube_map);
+         *params = INT_TO_BOOL(1 << (ctx->Const.MaxCubeTextureLevels - 1));
          break;
 
       /* GL_ARB_texture_compression */
       case GL_TEXTURE_COMPRESSION_HINT_ARB:
-         if (ctx->Extensions.ARB_texture_compression) {
-            *params = INT_TO_BOOL(ctx->Hint.TextureCompression);
-         }
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
+         CHECK_EXTENSION_B(ARB_texture_compression);
+         *params = INT_TO_BOOL(ctx->Hint.TextureCompression);
          break;
       case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
-         if (ctx->Extensions.ARB_texture_compression) {
-            *params = INT_TO_BOOL(ctx->Const.NumCompressedTextureFormats);
-         }
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
+         CHECK_EXTENSION_B(ARB_texture_compression);
+         *params = INT_TO_BOOL(ctx->Const.NumCompressedTextureFormats);
          break;
       case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
-         if (ctx->Extensions.ARB_texture_compression) {
+         CHECK_EXTENSION_B(ARB_texture_compression);
+         {
             GLuint i;
             for (i = 0; i < ctx->Const.NumCompressedTextureFormats; i++)
                params[i] = INT_TO_BOOL(ctx->Const.CompressedTextureFormats[i]);
          }
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
          break;
 
       /* GL_EXT_compiled_vertex_array */
@@ -1078,26 +1081,18 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
 
       /* GL_HP_occlusion_test */
       case GL_OCCLUSION_TEST_HP:
-         if (ctx->Extensions.HP_occlusion_test) {
-            *params = ctx->Depth.OcclusionTest;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glGetBooleanv" );
-         }
+         CHECK_EXTENSION_B(HP_occlusion_test);
+         *params = ctx->Depth.OcclusionTest;
          return;
       case GL_OCCLUSION_TEST_RESULT_HP:
-         if (ctx->Extensions.HP_occlusion_test) {
-            if (ctx->Depth.OcclusionTest)
-               *params = ctx->OcclusionResult;
-            else
-               *params = ctx->OcclusionResultSaved;
-            /* reset flag now */
-            ctx->OcclusionResult = GL_FALSE;
-            ctx->OcclusionResultSaved = GL_FALSE;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glGetBooleanv" );
-         }
+         CHECK_EXTENSION_B(HP_occlusion_test);
+         if (ctx->Depth.OcclusionTest)
+            *params = ctx->OcclusionResult;
+         else
+            *params = ctx->OcclusionResultSaved;
+         /* reset flag now */
+         ctx->OcclusionResult = GL_FALSE;
+         ctx->OcclusionResultSaved = GL_FALSE;
          return;
 
       /* GL_SGIS_pixel_texture */
@@ -1152,63 +1147,68 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
 
       /* GL_EXT_convolution (also in 1.2 imaging) */
       case GL_CONVOLUTION_1D_EXT:
-         if (ctx->Extensions.EXT_convolution || ctx->Extensions.ARB_imaging) {
-            *params = ctx->Pixel.Convolution1DEnabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
-            return;
-         }
+         CHECK_EXTENSION_B(EXT_convolution);
+         *params = ctx->Pixel.Convolution1DEnabled;
          break;
       case GL_CONVOLUTION_2D:
-         if (ctx->Extensions.EXT_convolution || ctx->Extensions.ARB_imaging) {
-            *params = ctx->Pixel.Convolution2DEnabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
-            return;
-         }
+         CHECK_EXTENSION_B(EXT_convolution);
+         *params = ctx->Pixel.Convolution2DEnabled;
          break;
       case GL_SEPARABLE_2D:
-         if (ctx->Extensions.EXT_convolution || ctx->Extensions.ARB_imaging) {
-            *params = ctx->Pixel.Separable2DEnabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
-            return;
-         }
+         CHECK_EXTENSION_B(EXT_convolution);
+         *params = ctx->Pixel.Separable2DEnabled;
          break;
       case GL_MAX_CONVOLUTION_WIDTH:
+         CHECK_EXTENSION_B(EXT_convolution);
          *params = INT_TO_BOOL(ctx->Const.MaxConvolutionWidth);
          break;
       case GL_MAX_CONVOLUTION_HEIGHT:
+         CHECK_EXTENSION_B(EXT_convolution);
          *params = INT_TO_BOOL(ctx->Const.MaxConvolutionHeight);
          break;
       case GL_POST_CONVOLUTION_RED_SCALE_EXT:
+         CHECK_EXTENSION_B(EXT_convolution);
          *params = FLOAT_TO_BOOL(ctx->Pixel.PostConvolutionScale[0]);
          break;
       case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
+         CHECK_EXTENSION_B(EXT_convolution);
          *params = FLOAT_TO_BOOL(ctx->Pixel.PostConvolutionScale[1]);
          break;
       case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
+         CHECK_EXTENSION_B(EXT_convolution);
          *params = FLOAT_TO_BOOL(ctx->Pixel.PostConvolutionScale[2]);
          break;
       case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
+         CHECK_EXTENSION_B(EXT_convolution);
          *params = FLOAT_TO_BOOL(ctx->Pixel.PostConvolutionScale[3]);
          break;
       case GL_POST_CONVOLUTION_RED_BIAS_EXT:
+         CHECK_EXTENSION_B(EXT_convolution);
          *params = FLOAT_TO_BOOL(ctx->Pixel.PostConvolutionBias[0]);
          break;
       case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
+         CHECK_EXTENSION_B(EXT_convolution);
          *params = FLOAT_TO_BOOL(ctx->Pixel.PostConvolutionBias[1]);
          break;
       case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
+         CHECK_EXTENSION_B(EXT_convolution);
          *params = FLOAT_TO_BOOL(ctx->Pixel.PostConvolutionBias[2]);
          break;
       case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
+         CHECK_EXTENSION_B(EXT_convolution);
          *params = FLOAT_TO_BOOL(ctx->Pixel.PostConvolutionBias[2]);
          break;
 
+      /* GL_EXT_histogram (also in 1.2 imaging) */
+      case GL_HISTOGRAM:
+         CHECK_EXTENSION_B(EXT_histogram);
+         *params = ctx->Pixel.HistogramEnabled;
+        break;
+      case GL_MINMAX:
+         CHECK_EXTENSION_B(EXT_histogram);
+         *params = ctx->Pixel.MinMaxEnabled;
+         break;
+
       /* GL_SGI_color_table (also in 1.2 imaging */
       case GL_COLOR_TABLE_SGI:
          *params = ctx->Pixel.ColorTableEnabled;
@@ -1222,39 +1222,49 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
 
       /* GL_EXT_secondary_color */
       case GL_COLOR_SUM_EXT:
+         CHECK_EXTENSION_B(EXT_secondary_color);
         *params = ctx->Fog.ColorSumEnabled;
         break;
       case GL_CURRENT_SECONDARY_COLOR_EXT:
+         CHECK_EXTENSION_B(EXT_secondary_color);
         FLUSH_CURRENT(ctx, 0);
-         params[0] = INT_TO_BOOL(ctx->Current.SecondaryColor[0]);
-         params[1] = INT_TO_BOOL(ctx->Current.SecondaryColor[1]);
-         params[2] = INT_TO_BOOL(ctx->Current.SecondaryColor[2]);
+         params[0] = INT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
+         params[1] = INT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
+         params[2] = INT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
         break;
       case GL_SECONDARY_COLOR_ARRAY_EXT:
+         CHECK_EXTENSION_B(EXT_secondary_color);
          *params = ctx->Array.SecondaryColor.Enabled;
          break;
       case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
+         CHECK_EXTENSION_B(EXT_secondary_color);
         *params = ENUM_TO_BOOL(ctx->Array.SecondaryColor.Type);
         break;
       case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
+         CHECK_EXTENSION_B(EXT_secondary_color);
         *params = INT_TO_BOOL(ctx->Array.SecondaryColor.Stride);
         break;
       case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
+         CHECK_EXTENSION_B(EXT_secondary_color);
         *params = INT_TO_BOOL(ctx->Array.SecondaryColor.Stride);
         break;
 
       /* GL_EXT_fog_coord */
       case GL_CURRENT_FOG_COORDINATE_EXT:
+         CHECK_EXTENSION_B(EXT_fog_coord);
         FLUSH_CURRENT(ctx, 0);
-        *params = FLOAT_TO_BOOL(ctx->Current.FogCoord);
+        *params = FLOAT_TO_BOOL(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
         break;
       case GL_FOG_COORDINATE_ARRAY_EXT:
+         CHECK_EXTENSION_B(EXT_fog_coord);
          *params = ctx->Array.FogCoord.Enabled;
          break;
       case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
+         CHECK_EXTENSION_B(EXT_fog_coord);
         *params = ENUM_TO_BOOL(ctx->Array.FogCoord.Type);
         break;
       case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
+         CHECK_EXTENSION_B(EXT_fog_coord);
         *params = INT_TO_BOOL(ctx->Array.FogCoord.Stride);
         break;
 
@@ -1265,120 +1275,160 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
 
       /* GL_EXT_texture_filter_anisotropic */
       case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
-         if (ctx->Extensions.EXT_texture_filter_anisotropic) {
-           *params = FLOAT_TO_BOOL(ctx->Const.MaxTextureMaxAnisotropy);
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glGetBooleanv" );
-            return;
-         }
+         CHECK_EXTENSION_B(EXT_texture_filter_anisotropic);
+         *params = FLOAT_TO_BOOL(ctx->Const.MaxTextureMaxAnisotropy);
         break;
 
       /* GL_ARB_multisample */
       case GL_MULTISAMPLE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = ctx->Multisample.Enabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
-            return;
-         }
+         CHECK_EXTENSION_B(ARB_multisample);
+         *params = ctx->Multisample.Enabled;
          break;
       case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = ctx->Multisample.SampleAlphaToCoverage;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
-            return;
-         }
+         CHECK_EXTENSION_B(ARB_multisample);
+         *params = ctx->Multisample.SampleAlphaToCoverage;
          break;
       case GL_SAMPLE_ALPHA_TO_ONE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = ctx->Multisample.SampleAlphaToOne;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
-            return;
-         }
+         CHECK_EXTENSION_B(ARB_multisample);
+         *params = ctx->Multisample.SampleAlphaToOne;
          break;
       case GL_SAMPLE_COVERAGE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = ctx->Multisample.SampleCoverage;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
-            return;
-         }
+         CHECK_EXTENSION_B(ARB_multisample);
+         *params = ctx->Multisample.SampleCoverage;
          break;
       case GL_SAMPLE_COVERAGE_VALUE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = FLOAT_TO_BOOL(ctx->Multisample.SampleCoverageValue);
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
-            return;
-         }
+         CHECK_EXTENSION_B(ARB_multisample);
+         *params = FLOAT_TO_BOOL(ctx->Multisample.SampleCoverageValue);
          break;
       case GL_SAMPLE_COVERAGE_INVERT_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = ctx->Multisample.SampleCoverageInvert;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
-            return;
-         }
+         CHECK_EXTENSION_B(ARB_multisample);
+         *params = ctx->Multisample.SampleCoverageInvert;
          break;
       case GL_SAMPLE_BUFFERS_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = 0; /* XXX fix someday */
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
-            return;
-         }
+         CHECK_EXTENSION_B(ARB_multisample);
+         *params = 0; /* XXX fix someday */
          break;
       case GL_SAMPLES_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = 0; /* XXX fix someday */
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
-            return;
-         }
+         CHECK_EXTENSION_B(ARB_multisample);
+         *params = 0; /* XXX fix someday */
          break;
 
       /* GL_IBM_rasterpos_clip */
       case GL_RASTER_POSITION_UNCLIPPED_IBM:
-         if (ctx->Extensions.IBM_rasterpos_clip) {
-            *params = ctx->Transform.RasterPositionUnclipped;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBoolean");
-            return;
-         }
+         CHECK_EXTENSION_B(IBM_rasterpos_clip);
+         *params = ctx->Transform.RasterPositionUnclipped;
          break;
 
       /* GL_MESA_sprite_point */
       case GL_SPRITE_POINT_MESA:
-         if (ctx->Extensions.MESA_sprite_point) {
-            *params = ctx->Point.SpriteMode;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glGetBooleanv" );
-            return;
-         }
+         CHECK_EXTENSION_B(MESA_sprite_point);
+         *params = ctx->Point.SpriteMode;
          break;
 
       /* GL_SGIS_generate_mipmap */
       case GL_GENERATE_MIPMAP_HINT_SGIS:
-         if (ctx->Extensions.SGIS_generate_mipmap) {
-            *params = ENUM_TO_BOOL(ctx->Hint.GenerateMipmap);
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv");
-           return;
-         }
+         CHECK_EXTENSION_B(SGIS_generate_mipmap);
+         *params = ENUM_TO_BOOL(ctx->Hint.GenerateMipmap);
+         break;
+
+      /* GL_NV_vertex_program */
+      case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV:
+         CHECK_EXTENSION_B(NV_vertex_program);
+         *params = VP_MAX_MATRIX_DEPTH;
+         break;
+      case GL_MAX_TRACK_MATRICES_NV:
+         CHECK_EXTENSION_B(NV_vertex_program);
+         *params = VP_MAX_MATRICES;
+         break;
+      case GL_VERTEX_PROGRAM_NV:
+         CHECK_EXTENSION_B(NV_vertex_program);
+         *params = ctx->VertexProgram.Enabled;
+         break;
+      case GL_VERTEX_PROGRAM_POINT_SIZE_NV:
+         CHECK_EXTENSION_B(NV_vertex_program);
+         *params = ctx->VertexProgram.PointSizeEnabled;
+         break;
+      case GL_VERTEX_PROGRAM_TWO_SIDE_NV:
+         CHECK_EXTENSION_B(NV_vertex_program);
+         *params = ctx->VertexProgram.TwoSideEnabled;
+         break;
+      case GL_CURRENT_MATRIX_STACK_DEPTH_NV:
+         CHECK_EXTENSION_B(NV_vertex_program);
+         *params = 0;
+         break;
+      case GL_CURRENT_MATRIX_NV:
+         CHECK_EXTENSION_B(NV_vertex_program);
+         *params = 0;
+         break;
+      case GL_VERTEX_PROGRAM_BINDING_NV:
+         CHECK_EXTENSION_B(NV_vertex_program);
+         *params = 0;
+         break;
+      case GL_PROGRAM_ERROR_POSITION_NV:
+         CHECK_EXTENSION_B(NV_vertex_program);
+         *params = 0;
+         break;
+      case GL_VERTEX_ATTRIB_ARRAY0_NV:
+      case GL_VERTEX_ATTRIB_ARRAY1_NV:
+      case GL_VERTEX_ATTRIB_ARRAY2_NV:
+      case GL_VERTEX_ATTRIB_ARRAY3_NV:
+      case GL_VERTEX_ATTRIB_ARRAY4_NV:
+      case GL_VERTEX_ATTRIB_ARRAY5_NV:
+      case GL_VERTEX_ATTRIB_ARRAY6_NV:
+      case GL_VERTEX_ATTRIB_ARRAY7_NV:
+      case GL_VERTEX_ATTRIB_ARRAY8_NV:
+      case GL_VERTEX_ATTRIB_ARRAY9_NV:
+      case GL_VERTEX_ATTRIB_ARRAY10_NV:
+      case GL_VERTEX_ATTRIB_ARRAY11_NV:
+      case GL_VERTEX_ATTRIB_ARRAY12_NV:
+      case GL_VERTEX_ATTRIB_ARRAY13_NV:
+      case GL_VERTEX_ATTRIB_ARRAY14_NV:
+      case GL_VERTEX_ATTRIB_ARRAY15_NV:
+         CHECK_EXTENSION_B(NV_vertex_program);
+         {
+            GLuint n = (GLint) pname - GL_VERTEX_ATTRIB_ARRAY0_NV;
+            *params = ctx->Array.VertexAttrib[n].Enabled;
+         }
+         break;
+      case GL_MAP1_VERTEX_ATTRIB0_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB1_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB2_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB3_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB4_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB5_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB6_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB7_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB8_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB9_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB10_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB11_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB12_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB13_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB14_4_NV:
+      case GL_MAP1_VERTEX_ATTRIB15_4_NV:
+         CHECK_EXTENSION_B(NV_vertex_program);
+         _mesa_problem(ctx, "glGetBoolean NV token not implemented");
+         *params = 0;
+         break;
+      case GL_MAP2_VERTEX_ATTRIB0_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB1_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB2_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB3_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB4_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB5_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB6_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB7_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB8_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB9_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB10_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB11_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB12_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB13_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB14_4_NV:
+      case GL_MAP2_VERTEX_ATTRIB15_4_NV:
+         CHECK_EXTENSION_B(NV_vertex_program);
+         _mesa_problem(ctx, "glGetBoolean NV token not implemented");
+         *params = 0;
          break;
 
       default:
@@ -1535,10 +1585,10 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
          break;
       case GL_CURRENT_COLOR:
         FLUSH_CURRENT(ctx, 0);
-         params[0] = (ctx->Current.Color[0]);
-         params[1] = (ctx->Current.Color[1]);
-         params[2] = (ctx->Current.Color[2]);
-         params[3] = (ctx->Current.Color[3]);
+         params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0];
+         params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1];
+         params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2];
+         params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3];
          break;
       case GL_CURRENT_INDEX:
         FLUSH_CURRENT(ctx, 0);
@@ -1546,9 +1596,9 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
          break;
       case GL_CURRENT_NORMAL:
         FLUSH_CURRENT(ctx, 0);
-         params[0] = (GLdouble) ctx->Current.Normal[0];
-         params[1] = (GLdouble) ctx->Current.Normal[1];
-         params[2] = (GLdouble) ctx->Current.Normal[2];
+         params[0] = (GLdouble) ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0];
+         params[1] = (GLdouble) ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1];
+         params[2] = (GLdouble) ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2];
          break;
       case GL_CURRENT_RASTER_COLOR:
         params[0] = (GLdouble) ctx->Current.RasterColor[0];
@@ -1579,10 +1629,10 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
         break;
       case GL_CURRENT_TEXTURE_COORDS:
         FLUSH_CURRENT(ctx, 0);
-        params[0] = (GLdouble) ctx->Current.Texcoord[texUnit][0];
-        params[1] = (GLdouble) ctx->Current.Texcoord[texUnit][1];
-        params[2] = (GLdouble) ctx->Current.Texcoord[texUnit][2];
-        params[3] = (GLdouble) ctx->Current.Texcoord[texUnit][3];
+        params[0] = (GLdouble) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0];
+        params[1] = (GLdouble) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1];
+        params[2] = (GLdouble) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2];
+        params[3] = (GLdouble) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3];
         break;
       case GL_DEPTH_BIAS:
         *params = (GLdouble) ctx->Pixel.DepthBias;
@@ -1667,15 +1717,6 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
       case GL_GREEN_SCALE:
          *params = (GLdouble) ctx->Pixel.GreenScale;
          break;
-      case GL_HISTOGRAM:
-         if (ctx->Extensions.EXT_histogram || ctx->Extensions.ARB_imaging) {
-            *params = (GLdouble) ctx->Pixel.HistogramEnabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-            return;
-         }
-        break;
       case GL_INDEX_BITS:
          *params = (GLdouble) ctx->Visual.indexBits;
         break;
@@ -1899,9 +1940,6 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
          params[0] = (GLdouble) MAX_WIDTH;
          params[1] = (GLdouble) MAX_HEIGHT;
          break;
-      case GL_MINMAX:
-         *params = (GLdouble) ctx->Pixel.MinMaxEnabled;
-         break;
       case GL_MODELVIEW_MATRIX:
         for (i=0;i<16;i++) {
            params[i] = (GLdouble) ctx->ModelView.m[i];
@@ -2287,47 +2325,34 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
 
       /* GL_ARB_texture_cube_map */
       case GL_TEXTURE_CUBE_MAP_ARB:
-         if (ctx->Extensions.ARB_texture_cube_map)
-            *params = (GLdouble) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-         return;
+         CHECK_EXTENSION_D(ARB_texture_cube_map);
+         *params = (GLdouble) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
+         break;
       case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
-         if (ctx->Extensions.ARB_texture_cube_map)
-            *params = (GLdouble) textureUnit->CurrentCubeMap->Name;
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-         return;
+         CHECK_EXTENSION_D(ARB_texture_cube_map);
+         *params = (GLdouble) textureUnit->CurrentCubeMap->Name;
+         break;
       case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
-         if (ctx->Extensions.ARB_texture_cube_map)
-            *params = (GLdouble) (1 << (ctx->Const.MaxCubeTextureLevels - 1));
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-         return;
+         CHECK_EXTENSION_D(ARB_texture_cube_map);
+         *params = (GLdouble) (1 << (ctx->Const.MaxCubeTextureLevels - 1));
+         break;
 
       /* GL_ARB_texture_compression */
       case GL_TEXTURE_COMPRESSION_HINT_ARB:
-         if (ctx->Extensions.ARB_texture_compression) {
-            *params = (GLdouble) ctx->Hint.TextureCompression;
-         }
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
+         CHECK_EXTENSION_D(ARB_texture_compression);
+         *params = (GLdouble) ctx->Hint.TextureCompression;
          break;
       case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
-         if (ctx->Extensions.ARB_texture_compression) {
-            *params = (GLdouble) ctx->Const.NumCompressedTextureFormats;
-         }
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
+         CHECK_EXTENSION_D(ARB_texture_compression);
+         *params = (GLdouble) ctx->Const.NumCompressedTextureFormats;
          break;
       case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
-         if (ctx->Extensions.ARB_texture_compression) {
+         CHECK_EXTENSION_D(ARB_texture_compression);
+         {
             GLuint i;
             for (i = 0; i < ctx->Const.NumCompressedTextureFormats; i++)
                params[i] = (GLdouble) ctx->Const.CompressedTextureFormats[i];
          }
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
          break;
 
       /* GL_EXT_compiled_vertex_array */
@@ -2382,27 +2407,19 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
 
       /* GL_HP_occlusion_test */
       case GL_OCCLUSION_TEST_HP:
-         if (ctx->Extensions.HP_occlusion_test) {
-            *params = (GLdouble) ctx->Depth.OcclusionTest;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glGetDoublev" );
-         }
-         return;
+         CHECK_EXTENSION_D(HP_occlusion_test);
+         *params = (GLdouble) ctx->Depth.OcclusionTest;
+         break;
       case GL_OCCLUSION_TEST_RESULT_HP:
-         if (ctx->Extensions.HP_occlusion_test) {
-            if (ctx->Depth.OcclusionTest)
-               *params = (GLdouble) ctx->OcclusionResult;
-            else
-               *params = (GLdouble) ctx->OcclusionResultSaved;
-            /* reset flag now */
-            ctx->OcclusionResult = GL_FALSE;
-            ctx->OcclusionResultSaved = GL_FALSE;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glGetDoublev" );
-         }
-         return;
+         CHECK_EXTENSION_D(HP_occlusion_test);
+         if (ctx->Depth.OcclusionTest)
+            *params = (GLdouble) ctx->OcclusionResult;
+         else
+            *params = (GLdouble) ctx->OcclusionResultSaved;
+         /* reset flag now */
+         ctx->OcclusionResult = GL_FALSE;
+         ctx->OcclusionResultSaved = GL_FALSE;
+         break;
 
       /* GL_SGIS_pixel_texture */
       case GL_PIXEL_TEXTURE_SGIS:
@@ -2456,63 +2473,68 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
 
       /* GL_EXT_convolution (also in 1.2 imaging) */
       case GL_CONVOLUTION_1D_EXT:
-         if (ctx->Extensions.EXT_convolution || ctx->Extensions.ARB_imaging) {
-            *params = (GLdouble) ctx->Pixel.Convolution1DEnabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-            return;
-         }
+         CHECK_EXTENSION_D(EXT_convolution);
+         *params = (GLdouble) ctx->Pixel.Convolution1DEnabled;
          break;
       case GL_CONVOLUTION_2D:
-         if (ctx->Extensions.EXT_convolution || ctx->Extensions.ARB_imaging) {
-            *params = (GLdouble) ctx->Pixel.Convolution2DEnabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-            return;
-         }
+         CHECK_EXTENSION_D(EXT_convolution);
+         *params = (GLdouble) ctx->Pixel.Convolution2DEnabled;
          break;
       case GL_SEPARABLE_2D:
-         if (ctx->Extensions.EXT_convolution || ctx->Extensions.ARB_imaging) {
-            *params = (GLdouble) ctx->Pixel.Separable2DEnabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-            return;
-         }
+         CHECK_EXTENSION_D(EXT_convolution);
+         *params = (GLdouble) ctx->Pixel.Separable2DEnabled;
          break;
       case GL_MAX_CONVOLUTION_WIDTH:
+         CHECK_EXTENSION_D(EXT_convolution);
          *params = (GLdouble) ctx->Const.MaxConvolutionWidth;
          break;
       case GL_MAX_CONVOLUTION_HEIGHT:
+         CHECK_EXTENSION_D(EXT_convolution);
          *params = (GLdouble) ctx->Const.MaxConvolutionHeight;
          break;
       case GL_POST_CONVOLUTION_RED_SCALE_EXT:
+         CHECK_EXTENSION_D(EXT_convolution);
          *params = (GLdouble) ctx->Pixel.PostConvolutionScale[0];
          break;
       case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
+         CHECK_EXTENSION_D(EXT_convolution);
          *params = (GLdouble) ctx->Pixel.PostConvolutionScale[1];
          break;
       case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
+         CHECK_EXTENSION_D(EXT_convolution);
          *params = (GLdouble) ctx->Pixel.PostConvolutionScale[2];
          break;
       case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
+         CHECK_EXTENSION_D(EXT_convolution);
          *params = (GLdouble) ctx->Pixel.PostConvolutionScale[3];
          break;
       case GL_POST_CONVOLUTION_RED_BIAS_EXT:
+         CHECK_EXTENSION_D(EXT_convolution);
          *params = (GLdouble) ctx->Pixel.PostConvolutionBias[0];
          break;
       case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
+         CHECK_EXTENSION_D(EXT_convolution);
          *params = (GLdouble) ctx->Pixel.PostConvolutionBias[1];
          break;
       case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
+         CHECK_EXTENSION_D(EXT_convolution);
          *params = (GLdouble) ctx->Pixel.PostConvolutionBias[2];
          break;
       case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
+         CHECK_EXTENSION_D(EXT_convolution);
          *params = (GLdouble) ctx->Pixel.PostConvolutionBias[2];
          break;
 
+      /* GL_EXT_histogram (also in 1.2 imaging) */
+      case GL_HISTOGRAM:
+         CHECK_EXTENSION_D(EXT_histogram);
+         *params = (GLdouble) ctx->Pixel.HistogramEnabled;
+        break;
+      case GL_MINMAX:
+         CHECK_EXTENSION_D(EXT_histogram);
+         *params = (GLdouble) ctx->Pixel.MinMaxEnabled;
+         break;
+
       /* GL_SGI_color_table (also in 1.2 imaging */
       case GL_COLOR_TABLE_SGI:
          *params = (GLdouble) ctx->Pixel.ColorTableEnabled;
@@ -2526,39 +2548,49 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
 
       /* GL_EXT_secondary_color */
       case GL_COLOR_SUM_EXT:
+         CHECK_EXTENSION_D(EXT_secondary_color);
         *params = (GLdouble) ctx->Fog.ColorSumEnabled;
         break;
       case GL_CURRENT_SECONDARY_COLOR_EXT:
+         CHECK_EXTENSION_D(EXT_secondary_color);
         FLUSH_CURRENT(ctx, 0);
-         params[0] = (ctx->Current.SecondaryColor[0]);
-         params[1] = (ctx->Current.SecondaryColor[1]);
-         params[2] = (ctx->Current.SecondaryColor[2]);
+         params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0];
+         params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1];
+         params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2];
         break;
       case GL_SECONDARY_COLOR_ARRAY_EXT:
+         CHECK_EXTENSION_D(EXT_secondary_color);
          *params = (GLdouble) ctx->Array.SecondaryColor.Enabled;
          break;
       case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
+         CHECK_EXTENSION_D(EXT_secondary_color);
         *params = (GLdouble) ctx->Array.SecondaryColor.Type;
         break;
       case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
+         CHECK_EXTENSION_D(EXT_secondary_color);
         *params = (GLdouble) ctx->Array.SecondaryColor.Stride;
         break;
       case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
+         CHECK_EXTENSION_D(EXT_secondary_color);
         *params = (GLdouble) ctx->Array.SecondaryColor.Stride;
         break;
 
       /* GL_EXT_fog_coord */
       case GL_CURRENT_FOG_COORDINATE_EXT:
+         CHECK_EXTENSION_D(EXT_fog_coord);
         FLUSH_CURRENT(ctx, 0);
-        *params = (GLdouble) ctx->Current.FogCoord;
+        *params = (GLdouble) ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
         break;
       case GL_FOG_COORDINATE_ARRAY_EXT:
+         CHECK_EXTENSION_D(EXT_fog_coord);
          *params = (GLdouble) ctx->Array.FogCoord.Enabled;
          break;
       case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
+         CHECK_EXTENSION_D(EXT_fog_coord);
         *params = (GLdouble) ctx->Array.FogCoord.Type;
         break;
       case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
+         CHECK_EXTENSION_D(EXT_fog_coord);
         *params = (GLdouble) ctx->Array.FogCoord.Stride;
         break;
 
@@ -2569,122 +2601,65 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
 
       /* GL_EXT_texture_filter_anisotropic */
       case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
-         if (ctx->Extensions.EXT_texture_filter_anisotropic) {
-           *params = (GLdouble) ctx->Const.MaxTextureMaxAnisotropy;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glGetDoublev" );
-            return;
-         }
+         CHECK_EXTENSION_D(EXT_texture_filter_anisotropic);
+         *params = (GLdouble) ctx->Const.MaxTextureMaxAnisotropy;
         break;
 
       /* GL_ARB_multisample */
       case GL_MULTISAMPLE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = (GLdouble) ctx->Multisample.Enabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-            return;
-         }
+         CHECK_EXTENSION_D(ARB_multisample);
+         *params = (GLdouble) ctx->Multisample.Enabled;
          break;
       case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = (GLdouble) ctx->Multisample.SampleAlphaToCoverage;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-            return;
-         }
+         CHECK_EXTENSION_D(ARB_multisample);
+         *params = (GLdouble) ctx->Multisample.SampleAlphaToCoverage;
          break;
       case GL_SAMPLE_ALPHA_TO_ONE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = (GLdouble) ctx->Multisample.SampleAlphaToOne;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-            return;
-         }
+         CHECK_EXTENSION_D(ARB_multisample);
+         *params = (GLdouble) ctx->Multisample.SampleAlphaToOne;
          break;
       case GL_SAMPLE_COVERAGE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = (GLdouble) ctx->Multisample.SampleCoverage;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-            return;
-         }
+         CHECK_EXTENSION_D(ARB_multisample);
+         *params = (GLdouble) ctx->Multisample.SampleCoverage;
          break;
       case GL_SAMPLE_COVERAGE_VALUE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = ctx->Multisample.SampleCoverageValue;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-            return;
-         }
+         CHECK_EXTENSION_D(ARB_multisample);
+         *params = ctx->Multisample.SampleCoverageValue;
          break;
       case GL_SAMPLE_COVERAGE_INVERT_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = (GLdouble) ctx->Multisample.SampleCoverageInvert;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-            return;
-         }
+         CHECK_EXTENSION_D(ARB_multisample);
+         *params = (GLdouble) ctx->Multisample.SampleCoverageInvert;
          break;
       case GL_SAMPLE_BUFFERS_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = 0.0; /* XXX fix someday */
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-            return;
-         }
+         CHECK_EXTENSION_D(ARB_multisample);
+         *params = 0.0; /* XXX fix someday */
          break;
       case GL_SAMPLES_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = 0.0; /* XXX fix someday */
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-            return;
-         }
+         CHECK_EXTENSION_D(ARB_multisample);
+         *params = 0.0; /* XXX fix someday */
          break;
 
       /* GL_IBM_rasterpos_clip */
       case GL_RASTER_POSITION_UNCLIPPED_IBM:
-         if (ctx->Extensions.IBM_rasterpos_clip) {
-            *params = (GLdouble) ctx->Transform.RasterPositionUnclipped;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-            return;
-         }
+         CHECK_EXTENSION_D(IBM_rasterpos_clip);
+         *params = (GLdouble) ctx->Transform.RasterPositionUnclipped;
          break;
 
       /* GL_MESA_sprite_point */
       case GL_SPRITE_POINT_MESA:
-         if (ctx->Extensions.MESA_sprite_point) {
-            *params = (GLdouble) ctx->Point.SpriteMode;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glGetDoublev" );
-            return;
-         }
+         CHECK_EXTENSION_D(MESA_sprite_point);
+         *params = (GLdouble) ctx->Point.SpriteMode;
          break;
 
       /* GL_SGIS_generate_mipmap */
       case GL_GENERATE_MIPMAP_HINT_SGIS:
-         if (ctx->Extensions.SGIS_generate_mipmap) {
-            *params = (GLdouble) ctx->Hint.GenerateMipmap;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev");
-           return;
-         }
+         CHECK_EXTENSION_D(SGIS_generate_mipmap);
+         *params = (GLdouble) ctx->Hint.GenerateMipmap;
          break;
 
+      /* GL_NV_vertex_program */
+         /* to do */
+
       default:
          _mesa_error( ctx, GL_INVALID_ENUM, "glGetDoublev" );
    }
@@ -2846,10 +2821,10 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
          break;
       case GL_CURRENT_COLOR:
         FLUSH_CURRENT(ctx, 0);
-         params[0] = (ctx->Current.Color[0]);
-         params[1] = (ctx->Current.Color[1]);
-         params[2] = (ctx->Current.Color[2]);
-         params[3] = (ctx->Current.Color[3]);
+         params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0];
+         params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1];
+         params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2];
+         params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3];
          break;
       case GL_CURRENT_INDEX:
         FLUSH_CURRENT(ctx, 0);
@@ -2857,9 +2832,9 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
          break;
       case GL_CURRENT_NORMAL:
         FLUSH_CURRENT(ctx, 0);
-         params[0] = ctx->Current.Normal[0];
-         params[1] = ctx->Current.Normal[1];
-         params[2] = ctx->Current.Normal[2];
+         params[0] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0];
+         params[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1];
+         params[2] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2];
          break;
       case GL_CURRENT_RASTER_COLOR:
         params[0] = ctx->Current.RasterColor[0];
@@ -2890,10 +2865,10 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
         break;
       case GL_CURRENT_TEXTURE_COORDS:
         FLUSH_CURRENT(ctx, 0);
-        params[0] = (GLfloat) ctx->Current.Texcoord[texUnit][0];
-        params[1] = (GLfloat) ctx->Current.Texcoord[texUnit][1];
-        params[2] = (GLfloat) ctx->Current.Texcoord[texUnit][2];
-        params[3] = (GLfloat) ctx->Current.Texcoord[texUnit][3];
+        params[0] = (GLfloat) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0];
+        params[1] = (GLfloat) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1];
+        params[2] = (GLfloat) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2];
+        params[3] = (GLfloat) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3];
         break;
       case GL_DEPTH_BIAS:
         *params = (GLfloat) ctx->Pixel.DepthBias;
@@ -2978,15 +2953,6 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
       case GL_GREEN_SCALE:
          *params = (GLfloat) ctx->Pixel.GreenScale;
          break;
-      case GL_HISTOGRAM:
-         if (ctx->Extensions.EXT_histogram || ctx->Extensions.ARB_imaging) {
-            *params = (GLfloat) ctx->Pixel.HistogramEnabled;
-         }
-         else {
-            GET_FLOAT_ERROR;
-            return;
-         }
-        break;
       case GL_INDEX_BITS:
          *params = (GLfloat) ctx->Visual.indexBits;
         break;
@@ -3210,9 +3176,6 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
          params[0] = (GLfloat) MAX_WIDTH;
          params[1] = (GLfloat) MAX_HEIGHT;
          break;
-      case GL_MINMAX:
-         *params = (GLfloat) ctx->Pixel.MinMaxEnabled;
-         break;
       case GL_MODELVIEW_MATRIX:
         for (i=0;i<16;i++) {
            params[i] = ctx->ModelView.m[i];
@@ -3600,54 +3563,43 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
 
       /* GL_ARB_texture_cube_map */
       case GL_TEXTURE_CUBE_MAP_ARB:
-         if (ctx->Extensions.ARB_texture_cube_map)
-            *params = (GLfloat) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
-         else
-            GET_FLOAT_ERROR;
-         return;
+         CHECK_EXTENSION_F(ARB_texture_cube_map);
+         *params = (GLfloat) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
+         break;
       case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
-         if (ctx->Extensions.ARB_texture_cube_map)
-            *params = (GLfloat) textureUnit->CurrentCubeMap->Name;
-         else
-            GET_FLOAT_ERROR;
-         return;
+         CHECK_EXTENSION_F(ARB_texture_cube_map);
+         *params = (GLfloat) textureUnit->CurrentCubeMap->Name;
+         break;
       case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
-         if (ctx->Extensions.ARB_texture_cube_map)
-            *params = (GLfloat) (1 << (ctx->Const.MaxCubeTextureLevels - 1));
-         else
-            GET_FLOAT_ERROR;
-         return;
+         CHECK_EXTENSION_F(ARB_texture_cube_map);
+         *params = (GLfloat) (1 << (ctx->Const.MaxCubeTextureLevels - 1));
+         break;
 
       /* GL_ARB_texture_compression */
       case GL_TEXTURE_COMPRESSION_HINT_ARB:
-         if (ctx->Extensions.ARB_texture_compression) {
-            *params = (GLfloat) ctx->Hint.TextureCompression;
-         }
-         else
-            GET_FLOAT_ERROR;
+         CHECK_EXTENSION_F(ARB_texture_compression);
+         *params = (GLfloat) ctx->Hint.TextureCompression;
          break;
       case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
-         if (ctx->Extensions.ARB_texture_compression) {
-            *params = (GLfloat) ctx->Const.NumCompressedTextureFormats;
-         }
-         else
-            GET_FLOAT_ERROR;
+         CHECK_EXTENSION_F(ARB_texture_compression);
+         *params = (GLfloat) ctx->Const.NumCompressedTextureFormats;
          break;
       case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
-         if (ctx->Extensions.ARB_texture_compression) {
+         CHECK_EXTENSION_F(ARB_texture_compression);
+         {
             GLuint i;
             for (i = 0; i < ctx->Const.NumCompressedTextureFormats; i++)
                params[i] = (GLfloat) ctx->Const.CompressedTextureFormats[i];
          }
-         else
-            GET_FLOAT_ERROR;
          break;
 
       /* GL_EXT_compiled_vertex_array */
       case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
+         CHECK_EXTENSION_F(EXT_compiled_vertex_array);
         *params = (GLfloat) ctx->Array.LockFirst;
         break;
       case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
+         CHECK_EXTENSION_F(EXT_compiled_vertex_array);
         *params = (GLfloat) ctx->Array.LockCount;
         break;
 
@@ -3667,27 +3619,19 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
 
       /* GL_HP_occlusion_test */
       case GL_OCCLUSION_TEST_HP:
-         if (ctx->Extensions.HP_occlusion_test) {
-            *params = (GLfloat) ctx->Depth.OcclusionTest;
-         }
-         else {
-            GET_FLOAT_ERROR;
-         }
-         return;
+         CHECK_EXTENSION_F(HP_occlusion_test);
+         *params = (GLfloat) ctx->Depth.OcclusionTest;
+         break;
       case GL_OCCLUSION_TEST_RESULT_HP:
-         if (ctx->Extensions.HP_occlusion_test) {
-            if (ctx->Depth.OcclusionTest)
-               *params = (GLfloat) ctx->OcclusionResult;
-            else
-               *params = (GLfloat) ctx->OcclusionResultSaved;
-            /* reset flag now */
-            ctx->OcclusionResult = GL_FALSE;
-            ctx->OcclusionResultSaved = GL_FALSE;
-         }
-         else {
-            GET_FLOAT_ERROR;
-         }
-         return;
+         CHECK_EXTENSION_F(HP_occlusion_test);
+         if (ctx->Depth.OcclusionTest)
+            *params = (GLfloat) ctx->OcclusionResult;
+         else
+            *params = (GLfloat) ctx->OcclusionResultSaved;
+         /* reset flag now */
+         ctx->OcclusionResult = GL_FALSE;
+         ctx->OcclusionResultSaved = GL_FALSE;
+         break;
 
       /* GL_SGIS_pixel_texture */
       case GL_PIXEL_TEXTURE_SGIS:
@@ -3741,63 +3685,68 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
 
       /* GL_EXT_convolution (also in 1.2 imaging) */
       case GL_CONVOLUTION_1D_EXT:
-         if (ctx->Extensions.EXT_convolution || ctx->Extensions.ARB_imaging) {
-            *params = (GLfloat) ctx->Pixel.Convolution1DEnabled;
-         }
-         else {
-            GET_FLOAT_ERROR;
-            return;
-         }
+         CHECK_EXTENSION_F(EXT_convolution);
+         *params = (GLfloat) ctx->Pixel.Convolution1DEnabled;
          break;
       case GL_CONVOLUTION_2D:
-         if (ctx->Extensions.EXT_convolution || ctx->Extensions.ARB_imaging) {
-            *params = (GLfloat) ctx->Pixel.Convolution2DEnabled;
-         }
-         else {
-            GET_FLOAT_ERROR;
-            return;
-         }
+         CHECK_EXTENSION_F(EXT_convolution);
+         *params = (GLfloat) ctx->Pixel.Convolution2DEnabled;
          break;
       case GL_SEPARABLE_2D:
-         if (ctx->Extensions.EXT_convolution || ctx->Extensions.ARB_imaging) {
-            *params = (GLfloat) ctx->Pixel.Separable2DEnabled;
-         }
-         else {
-            GET_FLOAT_ERROR;
-            return;
-         }
+         CHECK_EXTENSION_F(EXT_convolution);
+         *params = (GLfloat) ctx->Pixel.Separable2DEnabled;
          break;
       case GL_MAX_CONVOLUTION_WIDTH:
+         CHECK_EXTENSION_F(EXT_convolution);
          *params = (GLfloat) ctx->Const.MaxConvolutionWidth;
          break;
       case GL_MAX_CONVOLUTION_HEIGHT:
+         CHECK_EXTENSION_F(EXT_convolution);
          *params = (GLfloat) ctx->Const.MaxConvolutionHeight;
          break;
       case GL_POST_CONVOLUTION_RED_SCALE_EXT:
+         CHECK_EXTENSION_F(EXT_convolution);
          *params = ctx->Pixel.PostConvolutionScale[0];
          break;
       case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
+         CHECK_EXTENSION_F(EXT_convolution);
          *params = ctx->Pixel.PostConvolutionScale[1];
          break;
       case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
+         CHECK_EXTENSION_F(EXT_convolution);
          *params = ctx->Pixel.PostConvolutionScale[2];
          break;
       case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
+         CHECK_EXTENSION_F(EXT_convolution);
          *params = ctx->Pixel.PostConvolutionScale[3];
          break;
       case GL_POST_CONVOLUTION_RED_BIAS_EXT:
+         CHECK_EXTENSION_F(EXT_convolution);
          *params = ctx->Pixel.PostConvolutionBias[0];
          break;
       case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
+         CHECK_EXTENSION_F(EXT_convolution);
          *params = ctx->Pixel.PostConvolutionBias[1];
          break;
       case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
+         CHECK_EXTENSION_F(EXT_convolution);
          *params = ctx->Pixel.PostConvolutionBias[2];
          break;
       case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
+         CHECK_EXTENSION_F(EXT_convolution);
          *params = ctx->Pixel.PostConvolutionBias[2];
          break;
 
+      /* GL_EXT_histogram (also in 1.2 imaging) */
+      case GL_HISTOGRAM:
+         CHECK_EXTENSION_F(EXT_histogram);
+         *params = (GLfloat) ctx->Pixel.HistogramEnabled;
+        break;
+      case GL_MINMAX:
+         CHECK_EXTENSION_F(EXT_histogram);
+         *params = (GLfloat) ctx->Pixel.MinMaxEnabled;
+         break;
+
       /* GL_SGI_color_table (also in 1.2 imaging */
       case GL_COLOR_TABLE_SGI:
          *params = (GLfloat) ctx->Pixel.ColorTableEnabled;
@@ -3811,39 +3760,49 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
 
       /* GL_EXT_secondary_color */
       case GL_COLOR_SUM_EXT:
+         CHECK_EXTENSION_F(EXT_secondary_color);
         *params = (GLfloat) ctx->Fog.ColorSumEnabled;
         break;
       case GL_CURRENT_SECONDARY_COLOR_EXT:
+         CHECK_EXTENSION_F(EXT_secondary_color);
         FLUSH_CURRENT(ctx, 0);
-         params[0] = (ctx->Current.SecondaryColor[0]);
-         params[1] = (ctx->Current.SecondaryColor[1]);
-         params[2] = (ctx->Current.SecondaryColor[2]);
+         params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0];
+         params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1];
+         params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2];
         break;
       case GL_SECONDARY_COLOR_ARRAY_EXT:
+         CHECK_EXTENSION_F(EXT_secondary_color);
          *params = (GLfloat) ctx->Array.SecondaryColor.Enabled;
          break;
       case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
+         CHECK_EXTENSION_F(EXT_secondary_color);
         *params = (GLfloat) ctx->Array.SecondaryColor.Type;
         break;
       case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
+         CHECK_EXTENSION_F(EXT_secondary_color);
         *params = (GLfloat) ctx->Array.SecondaryColor.Stride;
         break;
       case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
+         CHECK_EXTENSION_F(EXT_secondary_color);
         *params = (GLfloat) ctx->Array.SecondaryColor.Stride;
         break;
 
       /* GL_EXT_fog_coord */
       case GL_CURRENT_FOG_COORDINATE_EXT:
+         CHECK_EXTENSION_F(EXT_fog_coord);
         FLUSH_CURRENT(ctx, 0);
-        *params = (GLfloat) ctx->Current.FogCoord;
+        *params = (GLfloat) ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
         break;
       case GL_FOG_COORDINATE_ARRAY_EXT:
+         CHECK_EXTENSION_F(EXT_fog_coord);
          *params = (GLfloat) ctx->Array.FogCoord.Enabled;
          break;
       case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
+         CHECK_EXTENSION_F(EXT_fog_coord);
         *params = (GLfloat) ctx->Array.FogCoord.Type;
         break;
       case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
+         CHECK_EXTENSION_F(EXT_fog_coord);
         *params = (GLfloat) ctx->Array.FogCoord.Stride;
         break;
 
@@ -3854,122 +3813,65 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
 
       /* GL_EXT_texture_filter_anisotropic */
       case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
-         if (ctx->Extensions.EXT_texture_filter_anisotropic) {
-           *params = ctx->Const.MaxTextureMaxAnisotropy;
-         }
-         else {
-            GET_FLOAT_ERROR;
-            return;
-         }
+         CHECK_EXTENSION_F(EXT_texture_filter_anisotropic);
+         *params = ctx->Const.MaxTextureMaxAnisotropy;
         break;
 
       /* GL_ARB_multisample */
       case GL_MULTISAMPLE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = (GLfloat) ctx->Multisample.Enabled;
-         }
-         else {
-            GET_FLOAT_ERROR;
-            return;
-         }
+         CHECK_EXTENSION_F(ARB_multisample);
+         *params = (GLfloat) ctx->Multisample.Enabled;
          break;
       case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = (GLfloat) ctx->Multisample.SampleAlphaToCoverage;
-         }
-         else {
-            GET_FLOAT_ERROR;
-            return;
-         }
+         CHECK_EXTENSION_F(ARB_multisample);
+         *params = (GLfloat) ctx->Multisample.SampleAlphaToCoverage;
          break;
       case GL_SAMPLE_ALPHA_TO_ONE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = (GLfloat) ctx->Multisample.SampleAlphaToOne;
-         }
-         else {
-            GET_FLOAT_ERROR;
-            return;
-         }
+         CHECK_EXTENSION_F(ARB_multisample);
+         *params = (GLfloat) ctx->Multisample.SampleAlphaToOne;
          break;
       case GL_SAMPLE_COVERAGE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = (GLfloat) ctx->Multisample.SampleCoverage;
-         }
-         else {
-            GET_FLOAT_ERROR;
-            return;
-         }
+         CHECK_EXTENSION_F(ARB_multisample);
+         *params = (GLfloat) ctx->Multisample.SampleCoverage;
          break;
       case GL_SAMPLE_COVERAGE_VALUE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = ctx->Multisample.SampleCoverageValue;
-         }
-         else {
-            GET_FLOAT_ERROR;
-            return;
-         }
+         CHECK_EXTENSION_F(ARB_multisample);
+         *params = ctx->Multisample.SampleCoverageValue;
          break;
       case GL_SAMPLE_COVERAGE_INVERT_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = (GLfloat) ctx->Multisample.SampleCoverageInvert;
-         }
-         else {
-            GET_FLOAT_ERROR;
-            return;
-         }
+         CHECK_EXTENSION_F(ARB_multisample);
+         *params = (GLfloat) ctx->Multisample.SampleCoverageInvert;
          break;
       case GL_SAMPLE_BUFFERS_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = 0.0; /* XXX fix someday */
-         }
-         else {
-            GET_FLOAT_ERROR;
-            return;
-         }
+         CHECK_EXTENSION_F(ARB_multisample);
+         *params = 0.0; /* XXX fix someday */
          break;
       case GL_SAMPLES_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = 0.0; /* XXX fix someday */
-         }
-         else {
-            GET_FLOAT_ERROR;
-            return;
-         }
+         CHECK_EXTENSION_F(ARB_multisample);
+         *params = 0.0; /* XXX fix someday */
          break;
 
       /* GL_IBM_rasterpos_clip */
       case GL_RASTER_POSITION_UNCLIPPED_IBM:
-         if (ctx->Extensions.IBM_rasterpos_clip) {
-            *params = (GLfloat) ctx->Transform.RasterPositionUnclipped;
-         }
-         else {
-            GET_FLOAT_ERROR;
-            return;
-         }
+         CHECK_EXTENSION_F(IBM_rasterpos_clip);
+         *params = (GLfloat) ctx->Transform.RasterPositionUnclipped;
          break;
 
       /* GL_MESA_sprite_point */
       case GL_SPRITE_POINT_MESA:
-         if (ctx->Extensions.MESA_sprite_point) {
-            *params = (GLfloat) ctx->Point.SpriteMode;
-         }
-         else {
-            GET_FLOAT_ERROR;
-            return;
-         }
+         CHECK_EXTENSION_F(MESA_sprite_point);
+         *params = (GLfloat) ctx->Point.SpriteMode;
          break;
 
       /* GL_SGIS_generate_mipmap */
       case GL_GENERATE_MIPMAP_HINT_SGIS:
-         if (ctx->Extensions.SGIS_generate_mipmap) {
-            *params = (GLfloat) ctx->Hint.GenerateMipmap;
-         }
-         else {
-            GET_FLOAT_ERROR;
-           return;
-         }
+         CHECK_EXTENSION_F(SGIS_generate_mipmap);
+         *params = (GLfloat) ctx->Hint.GenerateMipmap;
          break;
 
+      /* GL_NV_vertex_program */
+         /* to do */
+
       default:
          GET_FLOAT_ERROR;
    }
@@ -4126,10 +4028,10 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
          break;
       case GL_CURRENT_COLOR:
         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_INT( ( ctx->Current.Color[0] ) );
-         params[1] = FLOAT_TO_INT( ( ctx->Current.Color[1] ) );
-         params[2] = FLOAT_TO_INT( ( ctx->Current.Color[2] ) );
-         params[3] = FLOAT_TO_INT( ( ctx->Current.Color[3] ) );
+         params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
+         params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
+         params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
+         params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
          break;
       case GL_CURRENT_INDEX:
         FLUSH_CURRENT(ctx, 0);
@@ -4137,9 +4039,9 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
          break;
       case GL_CURRENT_NORMAL:
         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_INT( ctx->Current.Normal[0] );
-         params[1] = FLOAT_TO_INT( ctx->Current.Normal[1] );
-         params[2] = FLOAT_TO_INT( ctx->Current.Normal[2] );
+         params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
+         params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
+         params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
          break;
       case GL_CURRENT_RASTER_COLOR:
         params[0] = FLOAT_TO_INT( ctx->Current.RasterColor[0] );
@@ -4170,10 +4072,10 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
         break;
       case GL_CURRENT_TEXTURE_COORDS:
         FLUSH_CURRENT(ctx, 0);
-         params[0] = (GLint) ctx->Current.Texcoord[texUnit][0];
-         params[1] = (GLint) ctx->Current.Texcoord[texUnit][1];
-         params[2] = (GLint) ctx->Current.Texcoord[texUnit][2];
-         params[3] = (GLint) ctx->Current.Texcoord[texUnit][3];
+         params[0] = (GLint) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0];
+         params[1] = (GLint) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1];
+         params[2] = (GLint) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2];
+         params[3] = (GLint) ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3];
         break;
       case GL_DEPTH_BIAS:
          *params = (GLint) ctx->Pixel.DepthBias;
@@ -4258,15 +4160,6 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
       case GL_GREEN_SCALE:
          *params = (GLint) ctx->Pixel.GreenScale;
          break;
-      case GL_HISTOGRAM:
-         if (ctx->Extensions.EXT_histogram || ctx->Extensions.ARB_imaging) {
-            *params = (GLint) ctx->Pixel.HistogramEnabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetFloatv");
-            return;
-         }
-        break;
       case GL_INDEX_BITS:
          *params = (GLint) ctx->Visual.indexBits;
          break;
@@ -4490,9 +4383,6 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
          params[0] = (GLint) MAX_WIDTH;
          params[1] = (GLint) MAX_HEIGHT;
          break;
-      case GL_MINMAX:
-         *params = (GLint) ctx->Pixel.MinMaxEnabled;
-         break;
       case GL_MODELVIEW_MATRIX:
         for (i=0;i<16;i++) {
            params[i] = (GLint) ctx->ModelView.m[i];
@@ -4878,54 +4768,43 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
 
       /* GL_ARB_texture_cube_map */
       case GL_TEXTURE_CUBE_MAP_ARB:
-         if (ctx->Extensions.ARB_texture_cube_map)
-            *params = (GLint) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
-         return;
+         CHECK_EXTENSION_I(ARB_texture_cube_map);
+         *params = (GLint) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
+         break;
       case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
-         if (ctx->Extensions.ARB_texture_cube_map)
-            *params = textureUnit->CurrentCubeMap->Name;
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
-         return;
+         CHECK_EXTENSION_I(ARB_texture_cube_map);
+         *params = textureUnit->CurrentCubeMap->Name;
+         break;
       case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
-         if (ctx->Extensions.ARB_texture_cube_map)
-            *params = (1 << (ctx->Const.MaxCubeTextureLevels - 1));
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
-         return;
+         CHECK_EXTENSION_I(ARB_texture_cube_map);
+         *params = (1 << (ctx->Const.MaxCubeTextureLevels - 1));
+         break;
 
       /* GL_ARB_texture_compression */
       case GL_TEXTURE_COMPRESSION_HINT_ARB:
-         if (ctx->Extensions.ARB_texture_compression) {
-            *params = (GLint) ctx->Hint.TextureCompression;
-         }
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
+         CHECK_EXTENSION_I(ARB_texture_compression);
+         *params = (GLint) ctx->Hint.TextureCompression;
          break;
       case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
-         if (ctx->Extensions.ARB_texture_compression) {
-            *params = (GLint) ctx->Const.NumCompressedTextureFormats;
-         }
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
+         CHECK_EXTENSION_I(ARB_texture_compression);
+         *params = (GLint) ctx->Const.NumCompressedTextureFormats;
          break;
       case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
-         if (ctx->Extensions.ARB_texture_compression) {
+         CHECK_EXTENSION_I(ARB_texture_compression);
+         {
             GLuint i;
             for (i = 0; i < ctx->Const.NumCompressedTextureFormats; i++)
                params[i] = (GLint) ctx->Const.CompressedTextureFormats[i];
          }
-         else
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
          break;
 
       /* GL_EXT_compiled_vertex_array */
       case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
+         CHECK_EXTENSION_I(EXT_compiled_vertex_array);
         *params = ctx->Array.LockFirst;
         break;
       case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
+         CHECK_EXTENSION_I(EXT_compiled_vertex_array);
         *params = ctx->Array.LockCount;
         break;
 
@@ -4973,205 +4852,209 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
 
       /* GL_HP_occlusion_test */
       case GL_OCCLUSION_TEST_HP:
-         if (ctx->Extensions.HP_occlusion_test) {
-            *params = (GLint) ctx->Depth.OcclusionTest;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glGetIntegerv" );
-         }
-         return;
+         CHECK_EXTENSION_I(HP_occlusion_test);
+         *params = (GLint) ctx->Depth.OcclusionTest;
+         break;
       case GL_OCCLUSION_TEST_RESULT_HP:
-         if (ctx->Extensions.HP_occlusion_test) {
-            if (ctx->Depth.OcclusionTest)
-               *params = (GLint) ctx->OcclusionResult;
-            else
-               *params = (GLint) ctx->OcclusionResultSaved;
-            /* reset flag now */
-            ctx->OcclusionResult = GL_FALSE;
-            ctx->OcclusionResultSaved = GL_FALSE;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glGetIntegerv" );
-         }
-         return;
+         CHECK_EXTENSION_I(HP_occlusion_test);
+         if (ctx->Depth.OcclusionTest)
+            *params = (GLint) ctx->OcclusionResult;
+         else
+            *params = (GLint) ctx->OcclusionResultSaved;
+         /* reset flag now */
+         ctx->OcclusionResult = GL_FALSE;
+         ctx->OcclusionResultSaved = GL_FALSE;
+         break;
 
       /* GL_SGIS_pixel_texture */
       case GL_PIXEL_TEXTURE_SGIS:
+         CHECK_EXTENSION_I(SGIS_pixel_texture);
          *params = (GLint) ctx->Pixel.PixelTextureEnabled;
          break;
 
       /* GL_SGIX_pixel_texture */
       case GL_PIXEL_TEX_GEN_SGIX:
+         CHECK_EXTENSION_I(SGIX_pixel_texture);
          *params = (GLint) ctx->Pixel.PixelTextureEnabled;
          break;
       case GL_PIXEL_TEX_GEN_MODE_SGIX:
+         CHECK_EXTENSION_I(SGIX_pixel_texture);
          *params = (GLint) pixel_texgen_mode(ctx);
          break;
 
       /* GL_SGI_color_matrix (also in 1.2 imaging) */
       case GL_COLOR_MATRIX_SGI:
+         CHECK_EXTENSION_I(SGI_color_matrix);
          for (i=0;i<16;i++) {
            params[i] = (GLint) ctx->ColorMatrix.m[i];
         }
         break;
       case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
+         CHECK_EXTENSION_I(SGI_color_matrix);
          *params = ctx->ColorStackDepth + 1;
          break;
       case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
+         CHECK_EXTENSION_I(SGI_color_matrix);
          *params = MAX_COLOR_STACK_DEPTH;
          break;
       case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
+         CHECK_EXTENSION_I(SGI_color_matrix);
          *params = (GLint) ctx->Pixel.PostColorMatrixScale[0];
          break;
       case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
+         CHECK_EXTENSION_I(SGI_color_matrix);
          *params = (GLint) ctx->Pixel.PostColorMatrixScale[1];
          break;
       case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
+         CHECK_EXTENSION_I(SGI_color_matrix);
          *params = (GLint) ctx->Pixel.PostColorMatrixScale[2];
          break;
       case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
+         CHECK_EXTENSION_I(SGI_color_matrix);
          *params = (GLint) ctx->Pixel.PostColorMatrixScale[3];
          break;
       case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
+         CHECK_EXTENSION_I(SGI_color_matrix);
          *params = (GLint) ctx->Pixel.PostColorMatrixBias[0];
          break;
       case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
+         CHECK_EXTENSION_I(SGI_color_matrix);
          *params = (GLint) ctx->Pixel.PostColorMatrixBias[1];
          break;
       case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
+         CHECK_EXTENSION_I(SGI_color_matrix);
          *params = (GLint) ctx->Pixel.PostColorMatrixBias[2];
          break;
       case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
+         CHECK_EXTENSION_I(SGI_color_matrix);
          *params = (GLint) ctx->Pixel.PostColorMatrixBias[3];
          break;
 
       /* GL_EXT_convolution (also in 1.2 imaging) */
       case GL_CONVOLUTION_1D_EXT:
-         if (ctx->Extensions.EXT_convolution || ctx->Extensions.ARB_imaging) {
-            *params = (GLint) ctx->Pixel.Convolution1DEnabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
-            return;
-         }
+         CHECK_EXTENSION_I(EXT_convolution);
+         *params = (GLint) ctx->Pixel.Convolution1DEnabled;
          break;
       case GL_CONVOLUTION_2D:
-         if (ctx->Extensions.EXT_convolution || ctx->Extensions.ARB_imaging) {
-            *params = (GLint) ctx->Pixel.Convolution2DEnabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
-            return;
-         }
+         CHECK_EXTENSION_I(EXT_convolution);
+         *params = (GLint) ctx->Pixel.Convolution2DEnabled;
          break;
       case GL_SEPARABLE_2D:
-         if (ctx->Extensions.EXT_convolution || ctx->Extensions.ARB_imaging) {
-            *params = (GLint) ctx->Pixel.Separable2DEnabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
-            return;
-         }
+         CHECK_EXTENSION_I(EXT_convolution);
+         *params = (GLint) ctx->Pixel.Separable2DEnabled;
          break;
       case GL_MAX_CONVOLUTION_WIDTH:
+         CHECK_EXTENSION_I(EXT_convolution);
          *params = ctx->Const.MaxConvolutionWidth;
          break;
       case GL_MAX_CONVOLUTION_HEIGHT:
+         CHECK_EXTENSION_I(EXT_convolution);
          *params = ctx->Const.MaxConvolutionHeight;
          break;
       case GL_POST_CONVOLUTION_RED_SCALE_EXT:
+         CHECK_EXTENSION_I(EXT_convolution);
          *params = (GLint) ctx->Pixel.PostConvolutionScale[0];
          break;
       case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
+         CHECK_EXTENSION_I(EXT_convolution);
          *params = (GLint) ctx->Pixel.PostConvolutionScale[1];
          break;
       case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
+         CHECK_EXTENSION_I(EXT_convolution);
          *params = (GLint) ctx->Pixel.PostConvolutionScale[2];
          break;
       case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
+         CHECK_EXTENSION_I(EXT_convolution);
          *params = (GLint) ctx->Pixel.PostConvolutionScale[3];
          break;
       case GL_POST_CONVOLUTION_RED_BIAS_EXT:
+         CHECK_EXTENSION_I(EXT_convolution);
          *params = (GLint) ctx->Pixel.PostConvolutionBias[0];
          break;
       case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
+         CHECK_EXTENSION_I(EXT_convolution);
          *params = (GLint) ctx->Pixel.PostConvolutionBias[1];
          break;
       case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
+         CHECK_EXTENSION_I(EXT_convolution);
          *params = (GLint) ctx->Pixel.PostConvolutionBias[2];
          break;
       case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
+         CHECK_EXTENSION_I(EXT_convolution);
          *params = (GLint) ctx->Pixel.PostConvolutionBias[2];
          break;
 
+      /* GL_EXT_histogram (also in 1.2 imaging) */
+      case GL_HISTOGRAM:
+         CHECK_EXTENSION_I(EXT_histogram);
+         *params = (GLint) ctx->Pixel.HistogramEnabled;
+        break;
+      case GL_MINMAX:
+         CHECK_EXTENSION_I(EXT_histogram);
+         *params = (GLint) ctx->Pixel.MinMaxEnabled;
+         break;
+
       /* GL_SGI_color_table (also in 1.2 imaging */
       case GL_COLOR_TABLE_SGI:
+         CHECK_EXTENSION_I(SGI_color_table);
          *params = (GLint) ctx->Pixel.ColorTableEnabled;
          break;
       case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
+         CHECK_EXTENSION_I(SGI_color_table);
          *params = (GLint) ctx->Pixel.PostConvolutionColorTableEnabled;
          break;
       case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
+         CHECK_EXTENSION_I(SGI_color_table);
          *params = (GLint) ctx->Pixel.PostColorMatrixColorTableEnabled;
          break;
 
 
       /* GL_EXT_secondary_color */
       case GL_COLOR_SUM_EXT:
+         CHECK_EXTENSION_I(EXT_secondary_color);
         *params = (GLint) ctx->Fog.ColorSumEnabled;
         break;
       case GL_CURRENT_SECONDARY_COLOR_EXT:
+         CHECK_EXTENSION_I(EXT_secondary_color);
         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_INT( (ctx->Current.SecondaryColor[0]) );
-         params[1] = FLOAT_TO_INT( (ctx->Current.SecondaryColor[1]) );
-         params[2] = FLOAT_TO_INT( (ctx->Current.SecondaryColor[2]) );
+         params[0] = FLOAT_TO_INT( (ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]) );
+         params[1] = FLOAT_TO_INT( (ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]) );
+         params[2] = FLOAT_TO_INT( (ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]) );
         break;
       case GL_SECONDARY_COLOR_ARRAY_EXT:
+         CHECK_EXTENSION_I(EXT_secondary_color);
          *params = (GLint) ctx->Array.SecondaryColor.Enabled;
          break;
       case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
+         CHECK_EXTENSION_I(EXT_secondary_color);
         *params = (GLint) ctx->Array.SecondaryColor.Type;
         break;
       case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
+         CHECK_EXTENSION_I(EXT_secondary_color);
         *params = (GLint) ctx->Array.SecondaryColor.Stride;
         break;
       case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
+         CHECK_EXTENSION_I(EXT_secondary_color);
         *params = (GLint) ctx->Array.SecondaryColor.Stride;
         break;
 
       /* GL_EXT_fog_coord */
       case GL_CURRENT_FOG_COORDINATE_EXT:
-         if (ctx->Extensions.EXT_fog_coord) {
-            FLUSH_CURRENT(ctx, 0);
-            *params = (GLint) ctx->Current.FogCoord;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glGetIntegerv" );
-         }
+         CHECK_EXTENSION_I(EXT_fog_coord);
+         FLUSH_CURRENT(ctx, 0);
+         *params = (GLint) ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
         break;
       case GL_FOG_COORDINATE_ARRAY_EXT:
-         if (ctx->Extensions.EXT_fog_coord) {
-            *params = (GLint) ctx->Array.FogCoord.Enabled;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glGetIntegerv" );
-         }
+         CHECK_EXTENSION_I(EXT_fog_coord);
+         *params = (GLint) ctx->Array.FogCoord.Enabled;
          break;
       case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
-         if (ctx->Extensions.EXT_fog_coord) {
-            *params = (GLint) ctx->Array.FogCoord.Type;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glGetIntegerv" );
-         }
+         CHECK_EXTENSION_I(EXT_fog_coord);
+         *params = (GLint) ctx->Array.FogCoord.Type;
         break;
       case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
-         if (ctx->Extensions.EXT_fog_coord) {
-            *params = (GLint) ctx->Array.FogCoord.Stride;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glGetIntegerv" );
-         }
+         CHECK_EXTENSION_I(EXT_fog_coord);
+         *params = (GLint) ctx->Array.FogCoord.Stride;
         break;
 
       /* GL_EXT_texture_lod_bias */
@@ -5181,122 +5064,65 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
 
       /* GL_EXT_texture_filter_anisotropic */
       case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
-         if (ctx->Extensions.EXT_texture_filter_anisotropic) {
-           *params = (GLint) ctx->Const.MaxTextureMaxAnisotropy;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glGetIntegerv" );
-            return;
-         }
+         CHECK_EXTENSION_I(EXT_texture_filter_anisotropic);
+         *params = (GLint) ctx->Const.MaxTextureMaxAnisotropy;
         break;
 
       /* GL_ARB_multisample */
       case GL_MULTISAMPLE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = (GLint) ctx->Multisample.Enabled;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
-            return;
-         }
+         CHECK_EXTENSION_I(ARB_multisample);
+         *params = (GLint) ctx->Multisample.Enabled;
          break;
       case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = (GLint) ctx->Multisample.SampleAlphaToCoverage;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
-            return;
-         }
+         CHECK_EXTENSION_I(ARB_multisample);
+         *params = (GLint) ctx->Multisample.SampleAlphaToCoverage;
          break;
       case GL_SAMPLE_ALPHA_TO_ONE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = (GLint) ctx->Multisample.SampleAlphaToOne;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
-            return;
-         }
+         CHECK_EXTENSION_I(ARB_multisample);
+         *params = (GLint) ctx->Multisample.SampleAlphaToOne;
          break;
       case GL_SAMPLE_COVERAGE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = (GLint) ctx->Multisample.SampleCoverage;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
-            return;
-         }
+         CHECK_EXTENSION_I(ARB_multisample);
+         *params = (GLint) ctx->Multisample.SampleCoverage;
          break;
       case GL_SAMPLE_COVERAGE_VALUE_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = (GLint) ctx->Multisample.SampleCoverageValue;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
-            return;
-         }
+         CHECK_EXTENSION_I(ARB_multisample);
+         *params = (GLint) ctx->Multisample.SampleCoverageValue;
          break;
       case GL_SAMPLE_COVERAGE_INVERT_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = (GLint) ctx->Multisample.SampleCoverageInvert;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
-            return;
-         }
+         CHECK_EXTENSION_I(ARB_multisample);
+         *params = (GLint) ctx->Multisample.SampleCoverageInvert;
          break;
       case GL_SAMPLE_BUFFERS_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = 0; /* XXX fix someday */
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
-            return;
-         }
+         CHECK_EXTENSION_I(ARB_multisample);
+         *params = 0; /* XXX fix someday */
          break;
       case GL_SAMPLES_ARB:
-         if (ctx->Extensions.ARB_multisample) {
-            *params = 0; /* XXX fix someday */
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
-            return;
-         }
+         CHECK_EXTENSION_I(ARB_multisample);
+         *params = 0; /* XXX fix someday */
          break;
 
       /* GL_IBM_rasterpos_clip */
       case GL_RASTER_POSITION_UNCLIPPED_IBM:
-         if (ctx->Extensions.IBM_rasterpos_clip) {
-            *params = (GLint) ctx->Transform.RasterPositionUnclipped;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
-            return;
-         }
+         CHECK_EXTENSION_I(IBM_rasterpos_clip);
+         *params = (GLint) ctx->Transform.RasterPositionUnclipped;
          break;
 
       /* GL_MESA_sprite_point */
       case GL_SPRITE_POINT_MESA:
-         if (ctx->Extensions.MESA_sprite_point) {
-            *params = (GLint) ctx->Point.SpriteMode;
-         }
-         else {
-            _mesa_error( ctx, GL_INVALID_ENUM, "glGetIntegerv" );
-            return;
-         }
+         CHECK_EXTENSION_I(MESA_sprite_point);
+         *params = (GLint) ctx->Point.SpriteMode;
          break;
 
       /* GL_SGIS_generate_mipmap */
       case GL_GENERATE_MIPMAP_HINT_SGIS:
-         if (ctx->Extensions.SGIS_generate_mipmap) {
-            *params = (GLint) ctx->Hint.GenerateMipmap;
-         }
-         else {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv");
-           return;
-         }
+         CHECK_EXTENSION_I(SGIS_generate_mipmap);
+         *params = (GLint) ctx->Hint.GenerateMipmap;
          break;
 
+      /* GL_NV_vertex_program */
+         /* to do */
+
       default:
          _mesa_error( ctx, GL_INVALID_ENUM, "glGetIntegerv" );
    }
index c91be5a..bf573ad 100644 (file)
@@ -688,5 +688,69 @@ static struct name_address_offset static_functions[] = {
    { "glWindowPos3fvARB", (GLvoid *) glWindowPos3fvARB, _gloffset_WindowPos3fvARB },
    { "glWindowPos3ivARB", (GLvoid *) glWindowPos3ivARB, _gloffset_WindowPos3ivARB },
    { "glWindowPos3svARB", (GLvoid *) glWindowPos3svARB, _gloffset_WindowPos3svARB },
+   { "glBindProgramNV", (GLvoid *) glBindProgramNV, _gloffset_BindProgramNV },
+   { "glDeleteProgramsNV", (GLvoid *) glDeleteProgramsNV, _gloffset_DeleteProgramsNV },
+   { "glExecuteProgramNV", (GLvoid *) glExecuteProgramNV, _gloffset_ExecuteProgramNV },
+   { "glGenProgramsNV", (GLvoid *) glGenProgramsNV, _gloffset_GenProgramsNV },
+   { "glAreProgramsResidentNV", (GLvoid *) glAreProgramsResidentNV, _gloffset_AreProgramsResidentNV },
+   { "glRequestResidentProgramsNV", (GLvoid *) glRequestResidentProgramsNV, _gloffset_RequestResidentProgramsNV },
+   { "glGetProgramParameterfvNV", (GLvoid *) glGetProgramParameterfvNV, _gloffset_GetProgramParameterfvNV },
+   { "glGetProgramParameterdvNV", (GLvoid *) glGetProgramParameterdvNV, _gloffset_GetProgramParameterdvNV },
+   { "glGetProgramivNV", (GLvoid *) glGetProgramivNV, _gloffset_GetProgramivNV },
+   { "glGetProgramStringNV", (GLvoid *) glGetProgramStringNV, _gloffset_GetProgramStringNV },
+   { "glGetTrackMatrixivNV", (GLvoid *) glGetTrackMatrixivNV, _gloffset_GetTrackMatrixivNV },
+   { "glGetVertexAttribdvNV", (GLvoid *) glGetVertexAttribdvNV, _gloffset_GetVertexAttribdvNV },
+   { "glGetVertexAttribfvNV", (GLvoid *) glGetVertexAttribfvNV, _gloffset_GetVertexAttribfvNV },
+   { "glGetVertexAttribivNV", (GLvoid *) glGetVertexAttribivNV, _gloffset_GetVertexAttribivNV },
+   { "glGetVertexAttribPointervNV", (GLvoid *) glGetVertexAttribPointervNV, _gloffset_GetVertexAttribPointervNV },
+   { "glIsProgramNV", (GLvoid *) glIsProgramNV, _gloffset_IsProgramNV },
+   { "glLoadProgramNV", (GLvoid *) glLoadProgramNV, _gloffset_LoadProgramNV },
+   { "glProgramParameter4fNV", (GLvoid *) glProgramParameter4fNV, _gloffset_ProgramParameter4fNV },
+   { "glProgramParameter4dNV", (GLvoid *) glProgramParameter4dNV, _gloffset_ProgramParameter4dNV },
+   { "glProgramParameter4dvNV", (GLvoid *) glProgramParameter4dvNV, _gloffset_ProgramParameter4dvNV },
+   { "glProgramParameter4fvNV", (GLvoid *) glProgramParameter4fvNV, _gloffset_ProgramParameter4fvNV },
+   { "glProgramParameters4dvNV", (GLvoid *) glProgramParameters4dvNV, _gloffset_ProgramParameters4dvNV },
+   { "glProgramParameters4fvNV", (GLvoid *) glProgramParameters4fvNV, _gloffset_ProgramParameters4fvNV },
+   { "glTrackMatrixNV", (GLvoid *) glTrackMatrixNV, _gloffset_TrackMatrixNV },
+   { "glVertexAttribPointerNV", (GLvoid *) glVertexAttribPointerNV, _gloffset_VertexAttribPointerNV },
+   { "glVertexAttrib1sNV", (GLvoid *) glVertexAttrib1sNV, _gloffset_VertexAttrib1sNV },
+   { "glVertexAttrib1fNV", (GLvoid *) glVertexAttrib1fNV, _gloffset_VertexAttrib1fNV },
+   { "glVertexAttrib1dNV", (GLvoid *) glVertexAttrib1dNV, _gloffset_VertexAttrib1dNV },
+   { "glVertexAttrib2sNV", (GLvoid *) glVertexAttrib2sNV, _gloffset_VertexAttrib2sNV },
+   { "glVertexAttrib2fNV", (GLvoid *) glVertexAttrib2fNV, _gloffset_VertexAttrib2fNV },
+   { "glVertexAttrib2dNV", (GLvoid *) glVertexAttrib2dNV, _gloffset_VertexAttrib2dNV },
+   { "glVertexAttrib3sNV", (GLvoid *) glVertexAttrib3sNV, _gloffset_VertexAttrib3sNV },
+   { "glVertexAttrib3fNV", (GLvoid *) glVertexAttrib3fNV, _gloffset_VertexAttrib3fNV },
+   { "glVertexAttrib3dNV", (GLvoid *) glVertexAttrib3dNV, _gloffset_VertexAttrib3dNV },
+   { "glVertexAttrib4sNV", (GLvoid *) glVertexAttrib4sNV, _gloffset_VertexAttrib4sNV },
+   { "glVertexAttrib4fNV", (GLvoid *) glVertexAttrib4fNV, _gloffset_VertexAttrib4fNV },
+   { "glVertexAttrib4dNV", (GLvoid *) glVertexAttrib4dNV, _gloffset_VertexAttrib4dNV },
+   { "glVertexAttrib4ubNV", (GLvoid *) glVertexAttrib4ubNV, _gloffset_VertexAttrib4ubNV },
+   { "glVertexAttrib1svNV", (GLvoid *) glVertexAttrib1svNV, _gloffset_VertexAttrib1svNV },
+   { "glVertexAttrib1fvNV", (GLvoid *) glVertexAttrib1fvNV, _gloffset_VertexAttrib1fvNV },
+   { "glVertexAttrib1dvNV", (GLvoid *) glVertexAttrib1dvNV, _gloffset_VertexAttrib1dvNV },
+   { "glVertexAttrib2svNV", (GLvoid *) glVertexAttrib2svNV, _gloffset_VertexAttrib2svNV },
+   { "glVertexAttrib2fvNV", (GLvoid *) glVertexAttrib2fvNV, _gloffset_VertexAttrib2fvNV },
+   { "glVertexAttrib2dvNV", (GLvoid *) glVertexAttrib2dvNV, _gloffset_VertexAttrib2dvNV },
+   { "glVertexAttrib3svNV", (GLvoid *) glVertexAttrib3svNV, _gloffset_VertexAttrib3svNV },
+   { "glVertexAttrib3fvNV", (GLvoid *) glVertexAttrib3fvNV, _gloffset_VertexAttrib3fvNV },
+   { "glVertexAttrib3dvNV", (GLvoid *) glVertexAttrib3dvNV, _gloffset_VertexAttrib3dvNV },
+   { "glVertexAttrib4svNV", (GLvoid *) glVertexAttrib4svNV, _gloffset_VertexAttrib4svNV },
+   { "glVertexAttrib4fvNV", (GLvoid *) glVertexAttrib4fvNV, _gloffset_VertexAttrib4fvNV },
+   { "glVertexAttrib4dvNV", (GLvoid *) glVertexAttrib4dvNV, _gloffset_VertexAttrib4dvNV },
+   { "glVertexAttrib4ubvNV", (GLvoid *) glVertexAttrib4ubvNV, _gloffset_VertexAttrib4ubvNV },
+   { "glVertexAttribs1svNV", (GLvoid *) glVertexAttribs1svNV, _gloffset_VertexAttribs1svNV },
+   { "glVertexAttribs1fvNV", (GLvoid *) glVertexAttribs1fvNV, _gloffset_VertexAttribs1fvNV },
+   { "glVertexAttribs1dvNV", (GLvoid *) glVertexAttribs1dvNV, _gloffset_VertexAttribs1dvNV },
+   { "glVertexAttribs2svNV", (GLvoid *) glVertexAttribs2svNV, _gloffset_VertexAttribs2svNV },
+   { "glVertexAttribs2fvNV", (GLvoid *) glVertexAttribs2fvNV, _gloffset_VertexAttribs2fvNV },
+   { "glVertexAttribs2dvNV", (GLvoid *) glVertexAttribs2dvNV, _gloffset_VertexAttribs2dvNV },
+   { "glVertexAttribs3svNV", (GLvoid *) glVertexAttribs3svNV, _gloffset_VertexAttribs3svNV },
+   { "glVertexAttribs3fvNV", (GLvoid *) glVertexAttribs3fvNV, _gloffset_VertexAttribs3fvNV },
+   { "glVertexAttribs3dvNV", (GLvoid *) glVertexAttribs3dvNV, _gloffset_VertexAttribs3dvNV },
+   { "glVertexAttribs4svNV", (GLvoid *) glVertexAttribs4svNV, _gloffset_VertexAttribs4svNV },
+   { "glVertexAttribs4fvNV", (GLvoid *) glVertexAttribs4fvNV, _gloffset_VertexAttribs4fvNV },
+   { "glVertexAttribs4dvNV", (GLvoid *) glVertexAttribs4dvNV, _gloffset_VertexAttribs4dvNV },
+   { "glVertexAttribs4ubvNV", (GLvoid *) glVertexAttribs4ubvNV, _gloffset_VertexAttribs4ubvNV },
    { NULL, NULL }  /* end of list marker */
 };
index 8bd5450..c5f7415 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: light.c,v 1.46 2001/09/18 16:16:21 kschultz Exp $ */
+/* $Id: light.c,v 1.47 2001/12/14 02:50:02 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -881,7 +881,7 @@ _mesa_ColorMaterial( GLenum face, GLenum mode )
 
    if (ctx->Light.ColorMaterialEnabled) {
       FLUSH_CURRENT( ctx, 0 );
-      _mesa_update_color_material( ctx, ctx->Current.Color );
+      _mesa_update_color_material(ctx,ctx->Current.Attrib[VERT_ATTRIB_COLOR0]);
    }
 }
 
index 4b510fe..763669e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: matrix.c,v 1.36 2001/09/18 16:16:21 kschultz Exp $ */
+/* $Id: matrix.c,v 1.37 2001/12/14 02:50:02 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
 /**********************************************************************/
 
 
-#define GET_ACTIVE_MATRIX(ctx, mat, flags, where)              \
+#define GET_ACTIVE_MATRIX(mat, where)                                  \
 do {                                                                   \
+   GLint n;                                                            \
    if (MESA_VERBOSE&VERBOSE_API) fprintf(stderr, "%s\n", where);       \
    switch (ctx->Transform.MatrixMode) {                                        \
       case GL_MODELVIEW:                                               \
         mat = &ctx->ModelView;                                         \
-        flags |= _NEW_MODELVIEW;                                       \
+        ctx->NewState |= _NEW_MODELVIEW;                               \
         break;                                                         \
       case GL_PROJECTION:                                              \
         mat = &ctx->ProjectionMatrix;                                  \
-        flags |= _NEW_PROJECTION;                                      \
+        ctx->NewState |= _NEW_PROJECTION;                              \
         break;                                                         \
       case GL_TEXTURE:                                                 \
         mat = &ctx->TextureMatrix[ctx->Texture.CurrentUnit];           \
-        flags |= _NEW_TEXTURE_MATRIX;                                  \
+        ctx->NewState |= _NEW_TEXTURE_MATRIX;                          \
         break;                                                         \
       case GL_COLOR:                                                   \
         mat = &ctx->ColorMatrix;                                       \
-        flags |= _NEW_COLOR_MATRIX;                                    \
+        ctx->NewState |= _NEW_COLOR_MATRIX;                            \
+        break;                                                         \
+      case GL_MATRIX0_NV:                                              \
+      case GL_MATRIX1_NV:                                              \
+      case GL_MATRIX2_NV:                                              \
+      case GL_MATRIX3_NV:                                              \
+      case GL_MATRIX4_NV:                                              \
+      case GL_MATRIX5_NV:                                              \
+      case GL_MATRIX6_NV:                                              \
+      case GL_MATRIX7_NV:                                              \
+        n = ctx->Transform.MatrixMode - GL_MATRIX0_NV;                 \
+        mat = &ctx->VertexProgram.Matrix[n];                           \
+        ctx->NewState |= _NEW_TRACK_MATRIX;                            \
         break;                                                         \
       default:                                                         \
          _mesa_problem(ctx, where);                                    \
@@ -92,7 +105,7 @@ _mesa_Frustum( GLdouble left, GLdouble right,
    GLmatrix *mat = 0;
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
 
-   GET_ACTIVE_MATRIX( ctx,  mat, ctx->NewState, "glFrustrum" );
+   GET_ACTIVE_MATRIX(mat, "glFrustrum");
 
    if (nearval <= 0.0 ||
        farval <= 0.0 ||
@@ -119,7 +132,7 @@ _mesa_Ortho( GLdouble left, GLdouble right,
    GLmatrix *mat = 0;
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
 
-   GET_ACTIVE_MATRIX( ctx,  mat, ctx->NewState, "glOrtho" );
+   GET_ACTIVE_MATRIX(mat, "glOrtho");
 
    if (left == right ||
        bottom == top ||
@@ -142,6 +155,19 @@ _mesa_MatrixMode( GLenum mode )
    ASSERT_OUTSIDE_BEGIN_END(ctx);
 
    switch (mode) {
+      case GL_MATRIX0_NV:
+      case GL_MATRIX1_NV:
+      case GL_MATRIX2_NV:
+      case GL_MATRIX3_NV:
+      case GL_MATRIX4_NV:
+      case GL_MATRIX5_NV:
+      case GL_MATRIX6_NV:
+      case GL_MATRIX7_NV:
+         if (!ctx->Extensions.NV_vertex_program) {
+            _mesa_error( ctx,  GL_INVALID_ENUM, "glMatrixMode" );
+            return;
+         }
+         /* FALL-THROUGH */
       case GL_MODELVIEW:
       case GL_PROJECTION:
       case GL_TEXTURE:
@@ -275,7 +301,7 @@ _mesa_LoadIdentity( void )
    GET_CURRENT_CONTEXT(ctx);
    GLmatrix *mat = 0;
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
-   GET_ACTIVE_MATRIX(ctx, mat, ctx->NewState, "glLoadIdentity");
+   GET_ACTIVE_MATRIX(mat, "glLoadIdentity");
    _math_matrix_set_identity( mat );
 }
 
@@ -286,7 +312,7 @@ _mesa_LoadMatrixf( const GLfloat *m )
    GET_CURRENT_CONTEXT(ctx);
    GLmatrix *mat = 0;
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
-   GET_ACTIVE_MATRIX(ctx, mat, ctx->NewState, "glLoadMatrix");
+   GET_ACTIVE_MATRIX(mat, "glLoadMatrix");
    _math_matrix_loadf( mat, m );
 }
 
@@ -312,7 +338,7 @@ _mesa_MultMatrixf( const GLfloat *m )
    GET_CURRENT_CONTEXT(ctx);
    GLmatrix *mat = 0;
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
-   GET_ACTIVE_MATRIX( ctx,  mat, ctx->NewState, "glMultMatrix" );
+   GET_ACTIVE_MATRIX(mat, "glMultMatrix");
    _math_matrix_mul_floats( mat, m );
 }
 
@@ -343,7 +369,7 @@ _mesa_Rotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z )
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
    if (angle != 0.0F) {
       GLmatrix *mat = 0;
-      GET_ACTIVE_MATRIX( ctx,  mat, ctx->NewState, "glRotate" );
+      GET_ACTIVE_MATRIX(mat, "glRotate");
       _math_matrix_rotate( mat, angle, x, y, z );
    }
 }
@@ -364,7 +390,7 @@ _mesa_Scalef( GLfloat x, GLfloat y, GLfloat z )
    GET_CURRENT_CONTEXT(ctx);
    GLmatrix *mat = 0;
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
-   GET_ACTIVE_MATRIX(ctx, mat, ctx->NewState, "glScale");
+   GET_ACTIVE_MATRIX(mat, "glScale");
    _math_matrix_scale( mat, x, y, z );
 }
 
@@ -385,7 +411,7 @@ _mesa_Translatef( GLfloat x, GLfloat y, GLfloat z )
    GET_CURRENT_CONTEXT(ctx);
    GLmatrix *mat = 0;
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
-   GET_ACTIVE_MATRIX(ctx, mat, ctx->NewState, "glTranslate");
+   GET_ACTIVE_MATRIX(mat, "glTranslate");
    _math_matrix_translate( mat, x, y, z );
 }
 
index 8659782..3282017 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: mtypes.h,v 1.54 2001/12/04 23:44:56 brianp Exp $ */
+/* $Id: mtypes.h,v 1.55 2001/12/14 02:50:02 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -63,7 +63,7 @@
 #define CHAN_MAXF 1.0F
 #define CHAN_TYPE GL_FLOAT
 #else
-#error  illegal number of color channel bits
+#error "illegal number of color channel bits"
 #endif
 
 
@@ -295,28 +295,46 @@ struct gl_colorbuffer_attrib {
 };
 
 
+/* These define the aliases between numbered vertex attributes and
+ * conventional OpenGL vertex attributes.
+ */
+#define VERT_ATTRIB_POS      0
+#define VERT_ATTRIB_WEIGHT   1
+#define VERT_ATTRIB_NORMAL   2
+#define VERT_ATTRIB_COLOR0   3
+#define VERT_ATTRIB_COLOR1   4
+#define VERT_ATTRIB_FOG      5
+#define VERT_ATTRIB_SIX      6
+#define VERT_ATTRIB_SEVEN    7
+#define VERT_ATTRIB_TEX0     8
+#define VERT_ATTRIB_TEX1     9
+#define VERT_ATTRIB_TEX2     10
+#define VERT_ATTRIB_TEX3     11
+#define VERT_ATTRIB_TEX4     12
+#define VERT_ATTRIB_TEX5     13
+#define VERT_ATTRIB_TEX6     14
+#define VERT_ATTRIB_TEX7     15
+
 struct gl_current_attrib {
    /* These values valid only when FLUSH_VERTICES has been called.
     */
-   GLfloat Normal[3];                          /* Current vertex normal */
-   GLfloat Color[4];                           /* Current RGBA color */
-   GLfloat SecondaryColor[4];                  /* Current secondary color */
-   GLfloat FogCoord;                           /* Current Fog coord */
+   GLfloat Attrib[8 + MAX_TEXTURE_UNITS][4];   /* Current vertex attributes */
+                                               /* indexed by VERT_ATTRIB_* */
    GLuint Index;                               /* Current color index */
    GLboolean EdgeFlag;                         /* Current edge flag */
-   GLfloat Texcoord[MAX_TEXTURE_UNITS][4];     /* Current texture coords */
 
-   /* These values are always valid.
+   /* These values are always valid.  BTW, note how similar this set of
+    * attributes is to the SWvertex datatype in the software rasterizer...
     */
    GLfloat RasterPos[4];                       /* Current raster position */
    GLfloat RasterDistance;                     /* Current raster distance */
    GLfloat RasterColor[4];                     /* Current raster color */
    GLfloat RasterSecondaryColor[4];             /* Current rast 2ndary color */
-   GLuint  RasterIndex;                                /* Current raster index */
-   GLfloat *RasterTexCoord;                    /* Current raster texcoord*/
+   GLuint RasterIndex;                         /* Current raster index */
+   GLfloat *RasterTexCoord;                    /* Current raster texcoord */
    GLfloat RasterMultiTexCoord[MAX_TEXTURE_UNITS][4];
    GLfloat RasterFogCoord;
-   GLboolean RasterPosValid;                   /* Raster po valid flag */
+   GLboolean RasterPosValid;                   /* Raster pos valid flag */
 };
 
 
@@ -387,6 +405,10 @@ struct gl_enable_attrib {
    GLboolean RasterPositionUnclipped; /* GL_IBM_rasterpos_clip */
    GLuint Texture[MAX_TEXTURE_UNITS];
    GLuint TexGen[MAX_TEXTURE_UNITS];
+   /* GL_NV_vertex_program */
+   GLboolean VertexProgram;
+   GLboolean VertexProgramPointSize;
+   GLboolean VertexProgramTwoSide;
 };
 
 
@@ -475,6 +497,11 @@ struct gl_convolution_attrib {
 };
 
 
+#define LIGHT_SPOT         0x1
+#define LIGHT_LOCAL_VIEWER 0x2
+#define LIGHT_POSITIONAL   0x4
+#define LIGHT_NEED_VERTICES (LIGHT_POSITIONAL|LIGHT_LOCAL_VIEWER)
+
 struct gl_light_attrib {
    struct gl_light Light[MAX_LIGHTS];  /* Array of lights */
    struct gl_lightmodel Model;         /* Lighting model */
@@ -494,17 +521,11 @@ struct gl_light_attrib {
 
    /* Derived for optimizations: */
    GLboolean _NeedVertices;            /* Use fast shader? */
-   GLuint  _Flags;                     /* LIGHT_* flags, see below */
+   GLuint  _Flags;                     /* LIGHT_* flags, see above */
    GLfloat _BaseColor[2][3];
 };
 
 
-#define LIGHT_SPOT         0x1
-#define LIGHT_LOCAL_VIEWER 0x2
-#define LIGHT_POSITIONAL   0x4
-
-#define LIGHT_NEED_VERTICES (LIGHT_POSITIONAL|LIGHT_LOCAL_VIEWER)
-
 struct gl_line_attrib {
    GLboolean SmoothFlag;       /* GL_LINE_SMOOTH enabled? */
    GLboolean StippleFlag;      /* GL_LINE_STIPPLE enabled? */
@@ -519,6 +540,7 @@ struct gl_list_attrib {
    GLuint ListBase;
 };
 
+
 struct gl_list_opcode {
    GLuint size;
    void (*execute)( GLcontext *ctx, void *data );
@@ -1021,6 +1043,8 @@ struct gl_array_attrib {
    struct gl_client_array TexCoord[MAX_TEXTURE_UNITS];
    struct gl_client_array EdgeFlag;
 
+   struct gl_client_array VertexAttrib[16];  /* GL_NV_vertex_program */
+
    GLint TexCoordInterleaveFactor;
    GLint ActiveTexture;                /* Client Active Texture */
    GLuint LockFirst;
@@ -1103,6 +1127,158 @@ struct gl_evaluators {
 
 
 /*
+ * Vertex program tokens and datatypes
+ */
+
+#define VP_MAX_INSTRUCTIONS 128
+#define VP_MAX_MATRICES 8
+#define VP_MAX_MATRIX_DEPTH 4
+
+#define VP_NUM_INPUT_REGS 16
+#define VP_NUM_OUTPUT_REGS 15
+#define VP_NUM_TEMP_REGS 12
+#define VP_NUM_PROG_REGS 96
+
+#define VP_NUM_TOTAL_REGISTERS (VP_NUM_INPUT_REGS + VP_NUM_OUTPUT_REGS + VP_NUM_TEMP_REGS + VP_NUM_PROG_REGS)
+
+/* Location of register sets within the whole register file */
+#define VP_INPUT_REG_START  0
+#define VP_INPUT_REG_END    (VP_INPUT_REG_START + VP_NUM_INPUT_REGS - 1)
+#define VP_OUTPUT_REG_START (VP_INPUT_REG_END + 1)
+#define VP_OUTPUT_REG_END   (VP_OUTPUT_REG_START + VP_NUM_OUTPUT_REGS - 1)
+#define VP_TEMP_REG_START   (VP_OUTPUT_REG_END + 1)
+#define VP_TEMP_REG_END     (VP_TEMP_REG_START + VP_NUM_TEMP_REGS - 1)
+#define VP_PROG_REG_START   (VP_TEMP_REG_END + 1)
+#define VP_PROG_REG_END     (VP_PROG_REG_START + VP_NUM_PROG_REGS - 1)
+
+/* Input register names */
+#define VP_IN_OPOS (VP_INPUT_REG_START + 0)
+#define VP_IN_WGHT (VP_INPUT_REG_START + 1)
+#define VP_IN_NRML (VP_INPUT_REG_START + 2)
+#define VP_IN_COL0 (VP_INPUT_REG_START + 3)
+#define VP_IN_COL1 (VP_INPUT_REG_START + 4)
+#define VP_IN_FOGC (VP_INPUT_REG_START + 5)
+#define VP_IN_TEX0 (VP_INPUT_REG_START + 8)
+#define VP_IN_TEX1 (VP_INPUT_REG_START + 9)
+#define VP_IN_TEX2 (VP_INPUT_REG_START + 10)
+#define VP_IN_TEX3 (VP_INPUT_REG_START + 11)
+#define VP_IN_TEX4 (VP_INPUT_REG_START + 12)
+#define VP_IN_TEX5 (VP_INPUT_REG_START + 13)
+#define VP_IN_TEX6 (VP_INPUT_REG_START + 14)
+#define VP_IN_TEX7 (VP_INPUT_REG_START + 15)
+
+/* Output register names */
+#define VP_OUT_HPOS (VP_OUTPUT_REG_START + 0)
+#define VP_OUT_COL0 (VP_OUTPUT_REG_START + 1)
+#define VP_OUT_COL1 (VP_OUTPUT_REG_START + 2)
+#define VP_OUT_BFC0 (VP_OUTPUT_REG_START + 3)
+#define VP_OUT_BFC1 (VP_OUTPUT_REG_START + 4)
+#define VP_OUT_FOGC (VP_OUTPUT_REG_START + 5)
+#define VP_OUT_PSIZ (VP_OUTPUT_REG_START + 6)
+#define VP_OUT_TEX0 (VP_OUTPUT_REG_START + 7)
+#define VP_OUT_TEX1 (VP_OUTPUT_REG_START + 8)
+#define VP_OUT_TEX2 (VP_OUTPUT_REG_START + 9)
+#define VP_OUT_TEX3 (VP_OUTPUT_REG_START + 10)
+#define VP_OUT_TEX4 (VP_OUTPUT_REG_START + 11)
+#define VP_OUT_TEX5 (VP_OUTPUT_REG_START + 12)
+#define VP_OUT_TEX6 (VP_OUTPUT_REG_START + 13)
+#define VP_OUT_TEX7 (VP_OUTPUT_REG_START + 14)
+
+
+
+/* Machine state (i.e. the register file) */
+struct vp_machine
+{
+   GLfloat Registers[VP_NUM_TOTAL_REGISTERS][4];
+   GLint AddressReg;  /* might someday be a 4-vector */
+};
+
+
+/* Vertex program opcodes */
+enum vp_opcode
+{
+   MOV,
+   LIT,
+   RCP,
+   RSQ,
+   EXP,
+   LOG,
+   MUL,
+   ADD,
+   DP3,
+   DP4,
+   DST,
+   MIN,
+   MAX,
+   SLT,
+   SGE,
+   MAD,
+   ARL,
+   END
+};
+
+
+/* Instruction source register */
+struct vp_src_register
+{
+   GLint Register;    /* or the offset from the address register */
+   GLuint Swizzle[4];
+   GLboolean Negate;
+   GLboolean RelAddr;
+};
+
+
+/* Instruction destination register */
+struct vp_dst_register
+{
+   GLint Register;
+   GLboolean WriteMask[4];
+};
+
+
+/* Vertex program instruction */
+struct vp_instruction
+{
+   enum vp_opcode Opcode;
+   struct vp_src_register SrcReg[3];
+   struct vp_dst_register DstReg;
+};
+
+
+/* The actual vertex program, stored in the hash table */
+struct vp_program
+{
+   GLubyte *String;                      /* Original user code */
+   struct vp_instruction *Instructions;  /* Compiled instructions */
+   GLenum Target;      /* GL_VERTEX_PROGRAM_NV or GL_VERTEX_STATE_PROGRAM_NV */
+   GLint ErrorPos;
+   GLboolean Resident;
+};
+
+
+/*
+ * State vars for GL_NV_vertex_program
+ */
+struct gl_vertex_program
+{
+   GLboolean Enabled;                    /* GL_VERTEX_PROGRAM_NV */
+   GLboolean PointSizeEnabled;           /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
+   GLboolean TwoSideEnabled;            /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
+   GLuint Binding;                       /* currently bound program */
+   struct _mesa_HashTable *HashTable;    /* all programs */
+   struct vp_machine Machine;            /* machine state */
+   GLmatrix Matrix[VP_MAX_MATRICES];          /* Tracking matrices */
+   GLmatrix MatrixStack[VP_MAX_MATRICES][VP_MAX_MATRIX_DEPTH-1];  /* stacks */
+   GLuint MatrixStackDepth[VP_MAX_MATRICES];
+
+   GLenum TrackMatrix[VP_NUM_PROG_REGS / 4];
+   GLenum TrackMatrixTransform[VP_NUM_PROG_REGS / 4];
+
+};
+
+
+
+/*
  * State which can be shared by multiple contexts:
  */
 struct gl_shared_state {
@@ -1246,6 +1422,7 @@ struct gl_extensions {
    GLboolean MESA_sprite_point;
    GLboolean NV_blend_square;
    GLboolean NV_texgen_reflection;
+   GLboolean NV_vertex_program;
    GLboolean SGI_color_matrix;
    GLboolean SGI_color_table;
    GLboolean SGIS_generate_mipmap;
@@ -1259,6 +1436,16 @@ struct gl_extensions {
 };
 
 
+/* XXX just an idea */
+struct matrix_stack
+{
+   GLmatrix Top;
+   GLmatrix *Stack;
+   GLuint Depth;
+   GLuint MaxDepth;
+   GLuint DirtyFlag;   /* _NEW_MODELVIEW or _NEW_PROJECTION, for example */
+};
+
 
 /*
  * Bits for image transfer operations (ctx->ImageTransferState).
@@ -1319,28 +1506,32 @@ struct gl_extensions {
 #define _NEW_RENDERMODE                0x800000   /* RenderMode, Feedback, Select */
 #define _NEW_BUFFERS            0x1000000  /* ctx->Visual, ctx->DrawBuffer, */
 #define _NEW_MULTISAMPLE        0x2000000  /* ctx->Multisample */
+#define _NEW_TRACK_MATRIX       0x4000000  /* ctx->VertexProgram */
 #define _NEW_ALL ~0
 
 
 
 /* Bits to track array state changes (also used to summarize array enabled)
  */
-#define _NEW_ARRAY_VERTEX           0x1
-#define _NEW_ARRAY_COLOR            0x2
-#define _NEW_ARRAY_NORMAL           0x4
-#define _NEW_ARRAY_INDEX            0x8
-#define _NEW_ARRAY_EDGEFLAG         0x10
-#define _NEW_ARRAY_SECONDARYCOLOR   0x20
-#define _NEW_ARRAY_FOGCOORD         0x40
-#define _NEW_ARRAY_TEXCOORD_0       0x80
-#define _NEW_ARRAY_TEXCOORD_1       0x100
-#define _NEW_ARRAY_TEXCOORD_2       0x200
-#define _NEW_ARRAY_TEXCOORD_3       0x400
-#define _NEW_ARRAY_TEXCOORD_4       0x800
-#define _NEW_ARRAY_TEXCOORD_5       0x1000
-#define _NEW_ARRAY_TEXCOORD_6       0x2000
-#define _NEW_ARRAY_TEXCOORD_7       0x4000
-#define _NEW_ARRAY_ALL              0x7fff
+#define _NEW_ARRAY_VERTEX           (1 << VERT_ATTRIB_POS)
+#define _NEW_ARRAY_WEIGHT           (1 << VERT_ATTRIB_WEIGHT)
+#define _NEW_ARRAY_NORMAL           (1 << VERT_ATTRIB_NORMAL)
+#define _NEW_ARRAY_COLOR0           (1 << VERT_ATTRIB_COLOR0)
+#define _NEW_ARRAY_COLOR1           (1 << VERT_ATTRIB_COLOR1)
+#define _NEW_ARRAY_FOGCOORD         (1 << VERT_ATTRIB_FOG)
+#define _NEW_ARRAY_INDEX            (1 << VERT_ATTRIB_SIX)
+#define _NEW_ARRAY_EDGEFLAG         (1 << VERT_ATTRIB_SEVEN)
+#define _NEW_ARRAY_TEXCOORD_0       (1 << VERT_ATTRIB_TEX0)
+#define _NEW_ARRAY_TEXCOORD_1       (1 << VERT_ATTRIB_TEX1)
+#define _NEW_ARRAY_TEXCOORD_2       (1 << VERT_ATTRIB_TEX2)
+#define _NEW_ARRAY_TEXCOORD_3       (1 << VERT_ATTRIB_TEX3)
+#define _NEW_ARRAY_TEXCOORD_4       (1 << VERT_ATTRIB_TEX4)
+#define _NEW_ARRAY_TEXCOORD_5       (1 << VERT_ATTRIB_TEX5)
+#define _NEW_ARRAY_TEXCOORD_6       (1 << VERT_ATTRIB_TEX6)
+#define _NEW_ARRAY_TEXCOORD_7       (1 << VERT_ATTRIB_TEX7)
+#define _NEW_ARRAY_ALL              0xffff
+#define _NEW_ARRAY_VERT_ATTRIB0     0x10000
+
 
 #define _NEW_ARRAY_TEXCOORD(i) (_NEW_ARRAY_TEXCOORD_0 << (i))
 
@@ -1467,6 +1658,9 @@ struct __GLcontextRec {
    GLmatrix ModelView;           /* current matrix, not stored on stack */
    GLuint ModelViewStackDepth;
    GLmatrix ModelViewStack[MAX_MODELVIEW_STACK_DEPTH - 1];
+#if 1
+   struct matrix_stack ModelviewStack;
+#endif
 
    /* Projection matrix and stack */
    GLmatrix ProjectionMatrix;    /* current matrix, not stored on stack */
@@ -1551,6 +1745,8 @@ struct __GLcontextRec {
    struct gl_color_table PostColorMatrixColorTable;
    struct gl_color_table ProxyPostColorMatrixColorTable;
 
+   struct gl_vertex_program VertexProgram;  /* GL_NV_vertex_program */
+
    GLenum ErrorValue;        /* Last error code */
    GLenum RenderMode;        /* either GL_RENDER, GL_SELECT, GL_FEEDBACK */
    GLuint NewState;          /* bitwise-or of _NEW_* flags */
index a7b4e16..276c54c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: rastpos.c,v 1.32 2001/11/18 23:52:38 brianp Exp $ */
+/* $Id: rastpos.c,v 1.33 2001/12/14 02:50:02 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -291,7 +291,7 @@ raster_pos4f(GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
    /* raster color */
    if (ctx->Light.Enabled) {
       GLfloat *norm, eyenorm[3];
-      GLfloat *objnorm = ctx->Current.Normal;
+      GLfloat *objnorm = ctx->Current.Attrib[VERT_ATTRIB_NORMAL];
 
       if (ctx->_NeedEyeCoords) {
         GLfloat *inv = ctx->ModelView.inv;
@@ -311,9 +311,10 @@ raster_pos4f(GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
    else {
       /* use current color or index */
       if (ctx->Visual.rgbMode) {
-         COPY_4FV(ctx->Current.RasterColor, ctx->Current.Color);
+         COPY_4FV(ctx->Current.RasterColor,
+                  ctx->Current.Attrib[VERT_ATTRIB_COLOR0]);
          COPY_4FV(ctx->Current.RasterSecondaryColor,
-                  ctx->Current.SecondaryColor);
+                  ctx->Current.Attrib[VERT_ATTRIB_COLOR1]);
       }
       else {
         ctx->Current.RasterIndex = ctx->Current.Index;
@@ -362,13 +363,13 @@ raster_pos4f(GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
    ctx->Current.RasterPos[3] = clip[3];
    ctx->Current.RasterPosValid = GL_TRUE;
 
-   ctx->Current.RasterFogCoord = ctx->Current.FogCoord;
+   ctx->Current.RasterFogCoord = ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
 
    {
       GLuint texSet;
       for (texSet = 0; texSet < ctx->Const.MaxTextureUnits; texSet++) {
          COPY_4FV( ctx->Current.RasterMultiTexCoord[texSet],
-                  ctx->Current.Texcoord[texSet] );
+                  ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texSet] );
       }
    }
 
@@ -559,10 +560,8 @@ _mesa_WindowPos4fMESA( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
 
    /* raster color = current color or index */
    if (ctx->Visual.rgbMode) {
-      ctx->Current.RasterColor[0] = (ctx->Current.Color[0]);
-      ctx->Current.RasterColor[1] = (ctx->Current.Color[1]);
-      ctx->Current.RasterColor[2] = (ctx->Current.Color[2]);
-      ctx->Current.RasterColor[3] = (ctx->Current.Color[3]);
+      COPY_4FV(ctx->Current.RasterColor,
+               ctx->Current.Attrib[VERT_ATTRIB_COLOR0]);
    }
    else {
       ctx->Current.RasterIndex = ctx->Current.Index;
@@ -573,7 +572,7 @@ _mesa_WindowPos4fMESA( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
       GLuint texSet;
       for (texSet = 0; texSet < ctx->Const.MaxTextureUnits; texSet++) {
          COPY_4FV( ctx->Current.RasterMultiTexCoord[texSet],
-                  ctx->Current.Texcoord[texSet] );
+                  ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texSet] );
       }
    }
 
@@ -834,23 +833,27 @@ void _mesa_WindowPos3fARB(GLfloat x, GLfloat y, GLfloat z)
 
    ctx->Current.RasterPosValid = GL_TRUE;
    /* XXX might have to change this */
-   ctx->Current.RasterDistance = ctx->Current.FogCoord;
-   ctx->Current.RasterFogCoord = ctx->Current.FogCoord;
+   ctx->Current.RasterDistance = ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
+   ctx->Current.RasterFogCoord = ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
 
    /* raster color = current color or index */
    if (ctx->Visual.rgbMode) {
-      ctx->Current.RasterColor[0] = CLAMP(ctx->Current.Color[0], 0.0F, 1.0F);
-      ctx->Current.RasterColor[1] = CLAMP(ctx->Current.Color[1], 0.0F, 1.0F);
-      ctx->Current.RasterColor[2] = CLAMP(ctx->Current.Color[2], 0.0F, 1.0F);
-      ctx->Current.RasterColor[3] = CLAMP(ctx->Current.Color[3], 0.0F, 1.0F);
+      ctx->Current.RasterColor[0]
+         = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0], 0.0F, 1.0F);
+      ctx->Current.RasterColor[1]
+         = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1], 0.0F, 1.0F);
+      ctx->Current.RasterColor[2]
+         = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2], 0.0F, 1.0F);
+      ctx->Current.RasterColor[3]
+         = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3], 0.0F, 1.0F);
       ctx->Current.RasterSecondaryColor[0]
-         = CLAMP(ctx->Current.SecondaryColor[0], 0.0F, 1.0F);
+         = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0], 0.0F, 1.0F);
       ctx->Current.RasterSecondaryColor[1]
-         = CLAMP(ctx->Current.SecondaryColor[1], 0.0F, 1.0F);
+         = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1], 0.0F, 1.0F);
       ctx->Current.RasterSecondaryColor[2]
-         = CLAMP(ctx->Current.SecondaryColor[2], 0.0F, 1.0F);
+         = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2], 0.0F, 1.0F);
       ctx->Current.RasterSecondaryColor[3]
-         = CLAMP(ctx->Current.SecondaryColor[3], 0.0F, 1.0F);
+         = CLAMP(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3], 0.0F, 1.0F);
    }
    else {
       ctx->Current.RasterIndex = ctx->Current.Index;
@@ -861,7 +864,7 @@ void _mesa_WindowPos3fARB(GLfloat x, GLfloat y, GLfloat z)
       GLuint texSet;
       for (texSet = 0; texSet < ctx->Const.MaxTextureUnits; texSet++) {
          COPY_4FV( ctx->Current.RasterMultiTexCoord[texSet],
-                  ctx->Current.Texcoord[texSet] );
+                  ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texSet] );
       }
    }
 
index 4beaa07..d331d43 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: state.c,v 1.72 2001/12/04 23:43:31 brianp Exp $ */
+/* $Id: state.c,v 1.73 2001/12/14 02:50:02 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -69,6 +69,7 @@
 #include "texstate.h"
 #include "mtypes.h"
 #include "varray.h"
+#include "vpstate.h"
 
 #include "math/m_matrix.h"
 #include "math/m_xform.h"
@@ -456,6 +457,33 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize)
    exec->WindowPos4sMESA = _mesa_WindowPos4sMESA;
    exec->WindowPos4svMESA = _mesa_WindowPos4svMESA;
 
+   /* ###. GL_NV_vertex_program */
+   exec->BindProgramNV = _mesa_BindProgramNV;
+   exec->DeleteProgramsNV = _mesa_DeleteProgramsNV;
+   exec->ExecuteProgramNV = _mesa_ExecuteProgramNV;
+   exec->GenProgramsNV = _mesa_GenProgramsNV;
+   exec->AreProgramsResidentNV = _mesa_AreProgramsResidentNV;
+   exec->RequestResidentProgramsNV = _mesa_RequestResidentProgramsNV;
+   exec->GetProgramParameterfvNV = _mesa_GetProgramParameterfvNV;
+   exec->GetProgramParameterdvNV = _mesa_GetProgramParameterdvNV;
+   exec->GetProgramivNV = _mesa_GetProgramivNV;
+   exec->GetProgramStringNV = _mesa_GetProgramStringNV;
+   exec->GetTrackMatrixivNV = _mesa_GetTrackMatrixivNV;
+   exec->GetVertexAttribdvNV = _mesa_GetVertexAttribdvNV;
+   exec->GetVertexAttribfvNV = _mesa_GetVertexAttribfvNV;
+   exec->GetVertexAttribivNV = _mesa_GetVertexAttribivNV;
+   exec->GetVertexAttribPointervNV = _mesa_GetVertexAttribPointervNV;
+   exec->IsProgramNV = _mesa_IsProgramNV;
+   exec->LoadProgramNV = _mesa_LoadProgramNV;
+   exec->ProgramParameter4dNV = _mesa_ProgramParameter4dNV;
+   exec->ProgramParameter4dvNV = _mesa_ProgramParameter4dvNV;
+   exec->ProgramParameter4fNV = _mesa_ProgramParameter4fNV;
+   exec->ProgramParameter4fvNV = _mesa_ProgramParameter4fvNV;
+   exec->ProgramParameters4dvNV = _mesa_ProgramParameters4dvNV;
+   exec->ProgramParameters4fvNV = _mesa_ProgramParameters4fvNV;
+   exec->TrackMatrixNV = _mesa_TrackMatrixNV;
+   exec->VertexAttribPointerNV = _mesa_VertexAttribPointerNV;
+
    /* ARB 1. GL_ARB_multitexture */
    exec->ActiveTextureARB = _mesa_ActiveTextureARB;
    exec->ClientActiveTextureARB = _mesa_ClientActiveTextureARB;
index 73f54a0..29e57fc 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: vtxfmt.c,v 1.8 2001/12/04 23:43:31 brianp Exp $ */
+/* $Id: vtxfmt.c,v 1.9 2001/12/14 02:50:02 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -82,6 +82,7 @@
 
 static void install_vtxfmt( struct _glapi_table *tab, GLvertexformat *vfmt )
 {
+   printf("%s()\n", __FUNCTION__);
    tab->ArrayElement = vfmt->ArrayElement;
    tab->Color3f = vfmt->Color3f;
    tab->Color3fv = vfmt->Color3fv;
@@ -132,18 +133,17 @@ static void install_vtxfmt( struct _glapi_table *tab, GLvertexformat *vfmt )
    tab->Vertex3fv = vfmt->Vertex3fv;
    tab->Vertex4f = vfmt->Vertex4f;
    tab->Vertex4fv = vfmt->Vertex4fv;
+   tab->CallList = vfmt->CallList;
    tab->Begin = vfmt->Begin;
    tab->End = vfmt->End;
-
-/*     tab->NewList = vfmt->NewList; */
-   tab->CallList = vfmt->CallList;
-
+   tab->VertexAttrib4fNV = vfmt->VertexAttrib4fNV;
    tab->Rectf = vfmt->Rectf;
    tab->DrawArrays = vfmt->DrawArrays;
    tab->DrawElements = vfmt->DrawElements;
    tab->DrawRangeElements = vfmt->DrawRangeElements;
    tab->EvalMesh1 = vfmt->EvalMesh1;
    tab->EvalMesh2 = vfmt->EvalMesh2;
+   assert(tab->EvalMesh2);
 }
 
 
index 59a8b44..e946a85 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: vtxfmt_tmp.h,v 1.7 2001/12/04 23:43:31 brianp Exp $ */
+/* $Id: vtxfmt_tmp.h,v 1.8 2001/12/14 02:55:08 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -391,6 +391,18 @@ static void TAG(EvalMesh2)( GLenum mode, GLint i1, GLint i2,
    _glapi_Dispatch->EvalMesh2( mode, i1, i2, j1, j2 );
 }
 
+static void TAG(VertexAttrib4fNV)( GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w )
+{
+   PRE_LOOPBACK( VertexAttrib4fNV );
+   glVertexAttrib4fNV( index, x, y, z, w );
+}
+
+static void TAG(VertexAttrib4fvNV)( GLuint index, const GLfloat *v )
+{
+   PRE_LOOPBACK( VertexAttrib4fNV );
+   glVertexAttrib4fvNV( index, v );
+}
+
 
 static GLvertexformat TAG(vtxfmt) = {
    TAG(ArrayElement),
@@ -446,12 +458,14 @@ static GLvertexformat TAG(vtxfmt) = {
    TAG(CallList),
    TAG(Begin),
    TAG(End),
+   TAG(VertexAttrib4fNV),
+   TAG(VertexAttrib4fvNV),
    TAG(Rectf),
    TAG(DrawArrays),
    TAG(DrawElements),
    TAG(DrawRangeElements),
    TAG(EvalMesh1),
-   TAG(EvalMesh2),
+   TAG(EvalMesh2)
 };
 
 #undef TAG
index 300d5e8..be42dd4 100644 (file)
@@ -11542,13 +11542,13 @@ GL_PREFIX(PointParameterfSGIS):
        or      %g1, %lo(0x00000000), %g1
        sllx    %g2, 32, %g2
        ldx     [%g1 + %g2], %g1
-       sethi   %hi(8 * _gloffset_PointParameterfARB), %g2
-       or      %g2, %lo(8 * _gloffset_PointParameterfARB), %g2
+       sethi   %hi(8 * _gloffset_PointParameterfEXT), %g2
+       or      %g2, %lo(8 * _gloffset_PointParameterfEXT), %g2
        ldx     [%g1 + %g2], %g3
 #else
        sethi   %hi(0x00000000), %g1
        ld      [%g1 + %lo(0x00000000)], %g1
-       ld      [%g1 + (4 * _gloffset_PointParameterfARB)], %g3
+       ld      [%g1 + (4 * _gloffset_PointParameterfEXT)], %g3
 #endif
        jmpl    %g3, %g0
        nop
@@ -11563,13 +11563,13 @@ GL_PREFIX(PointParameterfvSGIS):
        or      %g1, %lo(0x00000000), %g1
        sllx    %g2, 32, %g2
        ldx     [%g1 + %g2], %g1
-       sethi   %hi(8 * _gloffset_PointParameterfvARB), %g2
-       or      %g2, %lo(8 * _gloffset_PointParameterfvARB), %g2
+       sethi   %hi(8 * _gloffset_PointParameterfvEXT), %g2
+       or      %g2, %lo(8 * _gloffset_PointParameterfvEXT), %g2
        ldx     [%g1 + %g2], %g3
 #else
        sethi   %hi(0x00000000), %g1
        ld      [%g1 + %lo(0x00000000)], %g1
-       ld      [%g1 + (4 * _gloffset_PointParameterfvARB)], %g3
+       ld      [%g1 + (4 * _gloffset_PointParameterfvEXT)], %g3
 #endif
        jmpl    %g3, %g0
        nop
@@ -14387,6 +14387,1350 @@ GL_PREFIX(WindowPos3svARB):
 #endif
        jmpl    %g3, %g0
        nop
+
+GLOBL_FN(GL_PREFIX(BindProgramNV))
+.type glBindProgramNV,#function
+GL_PREFIX(BindProgramNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_BindProgramNV), %g2
+       or      %g2, %lo(8 * _gloffset_BindProgramNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_BindProgramNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(DeleteProgramsNV))
+.type glDeleteProgramsNV,#function
+GL_PREFIX(DeleteProgramsNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_DeleteProgramsNV), %g2
+       or      %g2, %lo(8 * _gloffset_DeleteProgramsNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_DeleteProgramsNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(ExecuteProgramNV))
+.type glExecuteProgramNV,#function
+GL_PREFIX(ExecuteProgramNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_ExecuteProgramNV), %g2
+       or      %g2, %lo(8 * _gloffset_ExecuteProgramNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_ExecuteProgramNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(GenProgramsNV))
+.type glGenProgramsNV,#function
+GL_PREFIX(GenProgramsNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_GenProgramsNV), %g2
+       or      %g2, %lo(8 * _gloffset_GenProgramsNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_GenProgramsNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(AreProgramsResidentNV))
+.type glAreProgramsResidentNV,#function
+GL_PREFIX(AreProgramsResidentNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_AreProgramsResidentNV), %g2
+       or      %g2, %lo(8 * _gloffset_AreProgramsResidentNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_AreProgramsResidentNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(RequestResidentProgramsNV))
+.type glRequestResidentProgramsNV,#function
+GL_PREFIX(RequestResidentProgramsNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_RequestResidentProgramsNV), %g2
+       or      %g2, %lo(8 * _gloffset_RequestResidentProgramsNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_RequestResidentProgramsNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(GetProgramParameterfvNV))
+.type glGetProgramParameterfvNV,#function
+GL_PREFIX(GetProgramParameterfvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_GetProgramParameterfvNV), %g2
+       or      %g2, %lo(8 * _gloffset_GetProgramParameterfvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_GetProgramParameterfvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(GetProgramParameterdvNV))
+.type glGetProgramParameterdvNV,#function
+GL_PREFIX(GetProgramParameterdvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_GetProgramParameterdvNV), %g2
+       or      %g2, %lo(8 * _gloffset_GetProgramParameterdvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_GetProgramParameterdvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(GetProgramivNV))
+.type glGetProgramivNV,#function
+GL_PREFIX(GetProgramivNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_GetProgramivNV), %g2
+       or      %g2, %lo(8 * _gloffset_GetProgramivNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_GetProgramivNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(GetProgramStringNV))
+.type glGetProgramStringNV,#function
+GL_PREFIX(GetProgramStringNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_GetProgramStringNV), %g2
+       or      %g2, %lo(8 * _gloffset_GetProgramStringNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_GetProgramStringNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(GetTrackMatrixivNV))
+.type glGetTrackMatrixivNV,#function
+GL_PREFIX(GetTrackMatrixivNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_GetTrackMatrixivNV), %g2
+       or      %g2, %lo(8 * _gloffset_GetTrackMatrixivNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_GetTrackMatrixivNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(GetVertexAttribdvNV))
+.type glGetVertexAttribdvNV,#function
+GL_PREFIX(GetVertexAttribdvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_GetVertexAttribdvNV), %g2
+       or      %g2, %lo(8 * _gloffset_GetVertexAttribdvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_GetVertexAttribdvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(GetVertexAttribfvNV))
+.type glGetVertexAttribfvNV,#function
+GL_PREFIX(GetVertexAttribfvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_GetVertexAttribfvNV), %g2
+       or      %g2, %lo(8 * _gloffset_GetVertexAttribfvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_GetVertexAttribfvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(GetVertexAttribivNV))
+.type glGetVertexAttribivNV,#function
+GL_PREFIX(GetVertexAttribivNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_GetVertexAttribivNV), %g2
+       or      %g2, %lo(8 * _gloffset_GetVertexAttribivNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_GetVertexAttribivNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(GetVertexAttribPointervNV))
+.type glGetVertexAttribPointervNV,#function
+GL_PREFIX(GetVertexAttribPointervNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_GetVertexAttribPointervNV), %g2
+       or      %g2, %lo(8 * _gloffset_GetVertexAttribPointervNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_GetVertexAttribPointervNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(IsProgramNV))
+.type glIsProgramNV,#function
+GL_PREFIX(IsProgramNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_IsProgramNV), %g2
+       or      %g2, %lo(8 * _gloffset_IsProgramNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_IsProgramNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(LoadProgramNV))
+.type glLoadProgramNV,#function
+GL_PREFIX(LoadProgramNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_LoadProgramNV), %g2
+       or      %g2, %lo(8 * _gloffset_LoadProgramNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_LoadProgramNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(ProgramParameter4fNV))
+.type glProgramParameter4fNV,#function
+GL_PREFIX(ProgramParameter4fNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_ProgramParameter4fNV), %g2
+       or      %g2, %lo(8 * _gloffset_ProgramParameter4fNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_ProgramParameter4fNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(ProgramParameter4dNV))
+.type glProgramParameter4dNV,#function
+GL_PREFIX(ProgramParameter4dNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_ProgramParameter4dNV), %g2
+       or      %g2, %lo(8 * _gloffset_ProgramParameter4dNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_ProgramParameter4dNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(ProgramParameter4dvNV))
+.type glProgramParameter4dvNV,#function
+GL_PREFIX(ProgramParameter4dvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_ProgramParameter4dvNV), %g2
+       or      %g2, %lo(8 * _gloffset_ProgramParameter4dvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_ProgramParameter4dvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(ProgramParameter4fvNV))
+.type glProgramParameter4fvNV,#function
+GL_PREFIX(ProgramParameter4fvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_ProgramParameter4fvNV), %g2
+       or      %g2, %lo(8 * _gloffset_ProgramParameter4fvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_ProgramParameter4fvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(ProgramParameters4dvNV))
+.type glProgramParameters4dvNV,#function
+GL_PREFIX(ProgramParameters4dvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_ProgramParameters4dvNV), %g2
+       or      %g2, %lo(8 * _gloffset_ProgramParameters4dvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_ProgramParameters4dvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(ProgramParameters4fvNV))
+.type glProgramParameters4fvNV,#function
+GL_PREFIX(ProgramParameters4fvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_ProgramParameters4fvNV), %g2
+       or      %g2, %lo(8 * _gloffset_ProgramParameters4fvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_ProgramParameters4fvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(TrackMatrixNV))
+.type glTrackMatrixNV,#function
+GL_PREFIX(TrackMatrixNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_TrackMatrixNV), %g2
+       or      %g2, %lo(8 * _gloffset_TrackMatrixNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_TrackMatrixNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttribPointerNV))
+.type glVertexAttribPointerNV,#function
+GL_PREFIX(VertexAttribPointerNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttribPointerNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttribPointerNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttribPointerNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib1sNV))
+.type glVertexAttrib1sNV,#function
+GL_PREFIX(VertexAttrib1sNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib1sNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib1sNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib1sNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib1fNV))
+.type glVertexAttrib1fNV,#function
+GL_PREFIX(VertexAttrib1fNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib1fNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib1fNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib1fNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib1dNV))
+.type glVertexAttrib1dNV,#function
+GL_PREFIX(VertexAttrib1dNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib1dNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib1dNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib1dNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib2sNV))
+.type glVertexAttrib2sNV,#function
+GL_PREFIX(VertexAttrib2sNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib2sNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib2sNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib2sNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib2fNV))
+.type glVertexAttrib2fNV,#function
+GL_PREFIX(VertexAttrib2fNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib2fNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib2fNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib2fNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib2dNV))
+.type glVertexAttrib2dNV,#function
+GL_PREFIX(VertexAttrib2dNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib2dNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib2dNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib2dNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib3sNV))
+.type glVertexAttrib3sNV,#function
+GL_PREFIX(VertexAttrib3sNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib3sNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib3sNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib3sNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib3fNV))
+.type glVertexAttrib3fNV,#function
+GL_PREFIX(VertexAttrib3fNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib3fNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib3fNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib3fNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib3dNV))
+.type glVertexAttrib3dNV,#function
+GL_PREFIX(VertexAttrib3dNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib3dNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib3dNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib3dNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib4sNV))
+.type glVertexAttrib4sNV,#function
+GL_PREFIX(VertexAttrib4sNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib4sNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib4sNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib4sNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib4fNV))
+.type glVertexAttrib4fNV,#function
+GL_PREFIX(VertexAttrib4fNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib4fNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib4fNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib4fNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib4dNV))
+.type glVertexAttrib4dNV,#function
+GL_PREFIX(VertexAttrib4dNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib4dNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib4dNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib4dNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib4ubNV))
+.type glVertexAttrib4ubNV,#function
+GL_PREFIX(VertexAttrib4ubNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib4ubNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib4ubNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib4ubNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib1svNV))
+.type glVertexAttrib1svNV,#function
+GL_PREFIX(VertexAttrib1svNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib1svNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib1svNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib1svNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib1fvNV))
+.type glVertexAttrib1fvNV,#function
+GL_PREFIX(VertexAttrib1fvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib1fvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib1fvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib1fvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib1dvNV))
+.type glVertexAttrib1dvNV,#function
+GL_PREFIX(VertexAttrib1dvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib1dvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib1dvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib1dvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib2svNV))
+.type glVertexAttrib2svNV,#function
+GL_PREFIX(VertexAttrib2svNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib2svNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib2svNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib2svNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib2fvNV))
+.type glVertexAttrib2fvNV,#function
+GL_PREFIX(VertexAttrib2fvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib2fvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib2fvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib2fvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib2dvNV))
+.type glVertexAttrib2dvNV,#function
+GL_PREFIX(VertexAttrib2dvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib2dvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib2dvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib2dvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib3svNV))
+.type glVertexAttrib3svNV,#function
+GL_PREFIX(VertexAttrib3svNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib3svNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib3svNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib3svNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib3fvNV))
+.type glVertexAttrib3fvNV,#function
+GL_PREFIX(VertexAttrib3fvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib3fvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib3fvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib3fvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib3dvNV))
+.type glVertexAttrib3dvNV,#function
+GL_PREFIX(VertexAttrib3dvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib3dvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib3dvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib3dvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib4svNV))
+.type glVertexAttrib4svNV,#function
+GL_PREFIX(VertexAttrib4svNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib4svNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib4svNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib4svNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib4fvNV))
+.type glVertexAttrib4fvNV,#function
+GL_PREFIX(VertexAttrib4fvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib4fvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib4fvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib4fvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib4dvNV))
+.type glVertexAttrib4dvNV,#function
+GL_PREFIX(VertexAttrib4dvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib4dvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib4dvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib4dvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttrib4ubvNV))
+.type glVertexAttrib4ubvNV,#function
+GL_PREFIX(VertexAttrib4ubvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttrib4ubvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttrib4ubvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttrib4ubvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttribs1svNV))
+.type glVertexAttribs1svNV,#function
+GL_PREFIX(VertexAttribs1svNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttribs1svNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttribs1svNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttribs1svNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttribs1fvNV))
+.type glVertexAttribs1fvNV,#function
+GL_PREFIX(VertexAttribs1fvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttribs1fvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttribs1fvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttribs1fvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttribs1dvNV))
+.type glVertexAttribs1dvNV,#function
+GL_PREFIX(VertexAttribs1dvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttribs1dvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttribs1dvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttribs1dvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttribs2svNV))
+.type glVertexAttribs2svNV,#function
+GL_PREFIX(VertexAttribs2svNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttribs2svNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttribs2svNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttribs2svNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttribs2fvNV))
+.type glVertexAttribs2fvNV,#function
+GL_PREFIX(VertexAttribs2fvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttribs2fvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttribs2fvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttribs2fvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttribs2dvNV))
+.type glVertexAttribs2dvNV,#function
+GL_PREFIX(VertexAttribs2dvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttribs2dvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttribs2dvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttribs2dvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttribs3svNV))
+.type glVertexAttribs3svNV,#function
+GL_PREFIX(VertexAttribs3svNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttribs3svNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttribs3svNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttribs3svNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttribs3fvNV))
+.type glVertexAttribs3fvNV,#function
+GL_PREFIX(VertexAttribs3fvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttribs3fvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttribs3fvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttribs3fvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttribs3dvNV))
+.type glVertexAttribs3dvNV,#function
+GL_PREFIX(VertexAttribs3dvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttribs3dvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttribs3dvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttribs3dvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttribs4svNV))
+.type glVertexAttribs4svNV,#function
+GL_PREFIX(VertexAttribs4svNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttribs4svNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttribs4svNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttribs4svNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttribs4fvNV))
+.type glVertexAttribs4fvNV,#function
+GL_PREFIX(VertexAttribs4fvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttribs4fvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttribs4fvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttribs4fvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttribs4dvNV))
+.type glVertexAttribs4dvNV,#function
+GL_PREFIX(VertexAttribs4dvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttribs4dvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttribs4dvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttribs4dvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
+
+GLOBL_FN(GL_PREFIX(VertexAttribs4ubvNV))
+.type glVertexAttribs4ubvNV,#function
+GL_PREFIX(VertexAttribs4ubvNV):
+#ifdef __sparc_v9__
+       sethi   %hi(0x00000000), %g2
+       sethi   %hi(0x00000000), %g1
+       or      %g2, %lo(0x00000000), %g2
+       or      %g1, %lo(0x00000000), %g1
+       sllx    %g2, 32, %g2
+       ldx     [%g1 + %g2], %g1
+       sethi   %hi(8 * _gloffset_VertexAttribs4ubvNV), %g2
+       or      %g2, %lo(8 * _gloffset_VertexAttribs4ubvNV), %g2
+       ldx     [%g1 + %g2], %g3
+#else
+       sethi   %hi(0x00000000), %g1
+       ld      [%g1 + %lo(0x00000000)], %g1
+       ld      [%g1 + (4 * _gloffset_VertexAttribs4ubvNV)], %g3
+#endif
+       jmpl    %g3, %g0
+       nop
         nop
 
 .globl _mesa_sparc_glapi_end
index 5f12993..6252fad 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_bitmap.c,v 1.12 2001/06/26 21:15:36 brianp Exp $ */
+/* $Id: s_bitmap.c,v 1.13 2001/12/14 02:50:57 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -76,7 +76,7 @@ _swrast_Bitmap( GLcontext *ctx, GLint px, GLint py,
 
    if (ctx->Fog.Enabled) {
       if (ctx->Fog.FogCoordinateSource == GL_FOG_COORDINATE_EXT)
-         fog = _mesa_z_to_fogfactor(ctx, ctx->Current.FogCoord);
+         fog = _mesa_z_to_fogfactor(ctx, ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
       else
          fog = _mesa_z_to_fogfactor(ctx, ctx->Current.RasterDistance);
    }
index 1dd570a..f4d08f8 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_copypix.c,v 1.24 2001/07/23 16:07:39 brianp Exp $ */
+/* $Id: s_copypix.c,v 1.25 2001/12/14 02:50:57 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -748,10 +748,16 @@ static void copy_depth_pixels( GLcontext *ctx, GLint srcx, GLint srcy,
 
    /* setup colors or indexes */
    if (ctx->Visual.rgbMode) {
-      GLuint *rgba32 = (GLuint *) rgba;
-      GLuint color = *(GLuint*)( ctx->Current.Color );
+      GLchan r, g, b, a;
+      UNCLAMPED_FLOAT_TO_CHAN(r, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
+      UNCLAMPED_FLOAT_TO_CHAN(g, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
+      UNCLAMPED_FLOAT_TO_CHAN(b, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
+      UNCLAMPED_FLOAT_TO_CHAN(a, ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
       for (i = 0; i < width; i++) {
-         rgba32[i] = color;
+         rgba[i][RCOMP] = r;
+         rgba[i][GCOMP] = g;
+         rgba[i][BCOMP] = b;
+         rgba[i][ACOMP] = a;
       }
    }
    else {
index 513e893..3393ea1 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_array_import.c,v 1.18 2001/08/13 22:15:54 keithw Exp $ */
+/* $Id: t_array_import.c,v 1.19 2001/12/14 02:51:42 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -247,45 +247,45 @@ static void _tnl_upgrade_client_data( GLcontext *ctx,
    if (writeable || stride) ca_flags |= CA_CLIENT_DATA;
 
    if ((required & VERT_CLIP) && VB->ClipPtr == VB->ObjPtr)
-      required |= VERT_OBJ;
+      required |= VERT_OBJ_BIT;
 
 /*     _tnl_print_vert_flags("_tnl_upgrade_client_data", required); */
 
-   if ((required & VERT_OBJ) && (VB->ObjPtr->flags & flags)) {
+   if ((required & VERT_OBJ_BIT) && (VB->ObjPtr->flags & flags)) {
       ASSERT(VB->ObjPtr == &inputs->Obj);
       _tnl_import_vertex( ctx, writeable, stride );
-      VB->importable_data &= ~(VERT_OBJ|VERT_CLIP);
+      VB->importable_data &= ~(VERT_OBJ_BIT|VERT_CLIP);
    }
 
-   if ((required & VERT_NORM) && (VB->NormalPtr->flags & flags)) {
+   if ((required & VERT_NORMAL_BIT) && (VB->NormalPtr->flags & flags)) {
       ASSERT(VB->NormalPtr == &inputs->Normal);
       _tnl_import_normal( ctx, writeable, stride );
-      VB->importable_data &= ~VERT_NORM;
+      VB->importable_data &= ~VERT_NORMAL_BIT;
    }
 
-   if ((required & VERT_RGBA) && (VB->ColorPtr[0]->Flags & ca_flags)) {
+   if ((required & VERT_COLOR0_BIT) && (VB->ColorPtr[0]->Flags & ca_flags)) {
       ASSERT(VB->ColorPtr[0] == &inputs->Color);
       _tnl_import_color( ctx, GL_FLOAT, writeable, stride );
-      VB->importable_data &= ~VERT_RGBA;
+      VB->importable_data &= ~VERT_COLOR0_BIT;
    }
 
-   if ((required & VERT_SPEC_RGB) && 
+   if ((required & VERT_COLOR1_BIT) && 
        (VB->SecondaryColorPtr[0]->Flags & ca_flags)) {
       ASSERT(VB->SecondaryColorPtr[0] == &inputs->SecondaryColor);
       _tnl_import_secondarycolor( ctx, GL_FLOAT, writeable, stride );
-      VB->importable_data &= ~VERT_SPEC_RGB;
+      VB->importable_data &= ~VERT_COLOR1_BIT;
    }
 
-   if ((required & VERT_FOG_COORD) && (VB->FogCoordPtr->flags & flags)) {
+   if ((required & VERT_FOG_BIT) && (VB->FogCoordPtr->flags & flags)) {
       ASSERT(VB->FogCoordPtr == &inputs->FogCoord);
       _tnl_import_fogcoord( ctx, writeable, stride );
-      VB->importable_data &= ~VERT_FOG_COORD;
+      VB->importable_data &= ~VERT_FOG_BIT;
    }
 
-   if ((required & VERT_INDEX) && (VB->IndexPtr[0]->flags & flags)) {
+   if ((required & VERT_INDEX_BIT) && (VB->IndexPtr[0]->flags & flags)) {
       ASSERT(VB->IndexPtr[0] == &inputs->Index);
       _tnl_import_index( ctx, writeable, stride );
-      VB->importable_data &= ~VERT_INDEX;
+      VB->importable_data &= ~VERT_INDEX_BIT;
    }
 
    if (required & VERT_TEX_ANY)
@@ -332,19 +332,19 @@ void _tnl_vb_bind_arrays( GLcontext *ctx, GLint start, GLsizei count )
 
    _ac_import_range( ctx, start, count );
 
-   if (inputs & VERT_OBJ) {
+   if (inputs & VERT_OBJ_BIT) {
       _tnl_import_vertex( ctx, 0, 0 );
       tmp->Obj.count = VB->Count;
       VB->ObjPtr = &tmp->Obj;
    }
 
-   if (inputs & VERT_NORM) {
+   if (inputs & VERT_NORMAL_BIT) {
       _tnl_import_normal( ctx, 0, 0 );
       tmp->Normal.count = VB->Count;
       VB->NormalPtr = &tmp->Normal;
    }
 
-   if (inputs & VERT_RGBA) {
+   if (inputs & VERT_COLOR0_BIT) {
       _tnl_import_color( ctx, 0, 0, 0 );
       VB->ColorPtr[0] = &tmp->Color;
       VB->ColorPtr[1] = 0;
@@ -360,26 +360,26 @@ void _tnl_vb_bind_arrays( GLcontext *ctx, GLint start, GLsizei count )
       }
    }
 
-   if (inputs & (VERT_INDEX|VERT_FOG_COORD|VERT_EDGE|VERT_SPEC_RGB)) {
-      if (inputs & VERT_INDEX) {
+   if (inputs & (VERT_INDEX_BIT|VERT_FOG_BIT|VERT_EDGEFLAG_BIT|VERT_COLOR1_BIT)) {
+      if (inputs & VERT_INDEX_BIT) {
         _tnl_import_index( ctx, 0, 0 );
         tmp->Index.count = VB->Count;
         VB->IndexPtr[0] = &tmp->Index;
         VB->IndexPtr[1] = 0;
       }
 
-      if (inputs & VERT_FOG_COORD) {
+      if (inputs & VERT_FOG_BIT) {
         _tnl_import_fogcoord( ctx, 0, 0 );
         tmp->FogCoord.count = VB->Count;
         VB->FogCoordPtr = &tmp->FogCoord;
       }
 
-      if (inputs & VERT_EDGE) {
+      if (inputs & VERT_EDGEFLAG_BIT) {
         _tnl_import_edgeflag( ctx, GL_TRUE, sizeof(GLboolean) );
         VB->EdgeFlag = (GLboolean *) tmp->EdgeFlag.data;
       }
 
-      if (inputs & VERT_SPEC_RGB) {
+      if (inputs & VERT_COLOR1_BIT) {
         _tnl_import_secondarycolor( ctx, 0, 0, 0 );
         VB->SecondaryColorPtr[0] = &tmp->SecondaryColor;
         VB->SecondaryColorPtr[1] = 0;
index ed8eafe..dd0bfad 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_context.h,v 1.32 2001/09/14 21:30:31 brianp Exp $ */
+/* $Id: t_context.h,v 1.33 2001/12/14 02:51:44 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
  * 5 spare flags, rearrangement of eval flags can secure at least 3
  * more.
  */
-#define VERT_OBJ             _NEW_ARRAY_VERTEX
-#define VERT_RGBA            _NEW_ARRAY_COLOR
-#define VERT_NORM            _NEW_ARRAY_NORMAL
-#define VERT_INDEX           _NEW_ARRAY_INDEX
-#define VERT_EDGE            _NEW_ARRAY_EDGEFLAG
-#define VERT_SPEC_RGB        _NEW_ARRAY_SECONDARYCOLOR
-#define VERT_FOG_COORD       _NEW_ARRAY_FOGCOORD
-#define VERT_TEX0            _NEW_ARRAY_TEXCOORD_0
-#define VERT_TEX1            _NEW_ARRAY_TEXCOORD_1
-#define VERT_TEX2            _NEW_ARRAY_TEXCOORD_2
-#define VERT_TEX3            _NEW_ARRAY_TEXCOORD_3
-#define VERT_TEX4            _NEW_ARRAY_TEXCOORD_4
-#define VERT_TEX5            _NEW_ARRAY_TEXCOORD_5
-#define VERT_TEX6            _NEW_ARRAY_TEXCOORD_6
-#define VERT_TEX7            _NEW_ARRAY_TEXCOORD_7
-#define VERT_EVAL_C1         0x8000     /* imm only */
-#define VERT_EVAL_C2         0x10000    /* imm only */
-#define VERT_EVAL_P1         0x20000    /* imm only */
-#define VERT_EVAL_P2         0x40000    /* imm only */
-#define VERT_OBJ_3           0x80000    /* imm only */
-#define VERT_OBJ_4           0x100000   /* imm only */
-#define VERT_MATERIAL        0x200000   /* imm only, but tested in vb code */
-#define VERT_ELT             0x400000   /* imm only */
-#define VERT_BEGIN           0x800000   /* imm only, but tested in vb code */
-#define VERT_END             0x1000000  /* imm only, but tested in vb code */
-#define VERT_END_VB          0x2000000  /* imm only, but tested in vb code */
-#define VERT_POINT_SIZE      0x4000000  /* vb only, could reuse a bit */
+#define VERT_OBJ_BIT         _NEW_ARRAY_VERTEX
+#define VERT_WEIGHT_BIT      _NEW_ARRAY_WEIGHT  /* unused */
+#define VERT_NORMAL_BIT      _NEW_ARRAY_NORMAL
+#define VERT_COLOR0_BIT      _NEW_ARRAY_COLOR0
+#define VERT_COLOR1_BIT      _NEW_ARRAY_COLOR1
+#define VERT_FOG_BIT         _NEW_ARRAY_FOGCOORD
+#define VERT_INDEX_BIT       _NEW_ARRAY_INDEX
+#define VERT_EDGEFLAG_BIT    _NEW_ARRAY_EDGEFLAG
+#define VERT_TEX0_BIT        _NEW_ARRAY_TEXCOORD_0
+#define VERT_TEX1_BIT        _NEW_ARRAY_TEXCOORD_1
+#define VERT_TEX2_BIT        _NEW_ARRAY_TEXCOORD_2
+#define VERT_TEX3_BIT        _NEW_ARRAY_TEXCOORD_3
+#define VERT_TEX4_BIT        _NEW_ARRAY_TEXCOORD_4
+#define VERT_TEX5_BIT        _NEW_ARRAY_TEXCOORD_5
+#define VERT_TEX6_BIT        _NEW_ARRAY_TEXCOORD_6
+#define VERT_TEX7_BIT        _NEW_ARRAY_TEXCOORD_7
+#define VERT_EVAL_C1         0x10000    /* imm only */
+#define VERT_EVAL_C2         0x20000    /* imm only */
+#define VERT_EVAL_P1         0x40000    /* imm only */
+#define VERT_EVAL_P2         0x80000    /* imm only */
+#define VERT_OBJ_3           0x100000   /* imm only */
+#define VERT_OBJ_4           0x200000   /* imm only */
+#define VERT_MATERIAL        0x400000   /* imm only, but tested in vb code */
+#define VERT_ELT             0x800000   /* imm only */
+#define VERT_BEGIN           0x1000000  /* imm only, but tested in vb code */
+#define VERT_END             0x2000000  /* imm only, but tested in vb code */
+#define VERT_END_VB          0x4000000  /* imm only, but tested in vb code */
+#define VERT_POINT_SIZE      0x8000000  /* vb only, could reuse a bit */
 #define VERT_EYE             VERT_BEGIN /* vb only, reuse imm bit */
 #define VERT_CLIP            VERT_END   /* vb only, reuse imm bit*/
 
 
+
 /* Flags for IM->TexCoordSize.  Enough flags for 16 units.
  */
-#define TEX_0_SIZE_3          (GLuint) 0x1
-#define TEX_0_SIZE_4          (GLuint) 0x1001
-#define TEX_SIZE_3(unit)      (TEX_0_SIZE_3<<unit)
-#define TEX_SIZE_4(unit)      (TEX_0_SIZE_4<<unit)
+#define TEX_0_SIZE_3          0x1
+#define TEX_0_SIZE_4          0x10001
+#define TEX_SIZE_3(unit)      (TEX_0_SIZE_3 << (unit))
+#define TEX_SIZE_4(unit)      (TEX_0_SIZE_4 << (unit))
 
 
 /* Shorthands.
 #define VERT_EVAL_ANY      (VERT_EVAL_C1|VERT_EVAL_P1| \
                             VERT_EVAL_C2|VERT_EVAL_P2)
 
-#define VERT_OBJ_23       (VERT_OBJ_3|VERT_OBJ)
+#define VERT_OBJ_23       (VERT_OBJ_3|VERT_OBJ_BIT)
 #define VERT_OBJ_234      (VERT_OBJ_4|VERT_OBJ_23)
 
-#define VERT_TEX0_SHIFT 11
+#define VERT_TEX0_BIT_SHIFT 11
 
-#define VERT_TEX(i)        (VERT_TEX0 << i)
+#define VERT_TEX(i)        (VERT_TEX0_BIT << (i))
 
-#define VERT_TEX_ANY       (VERT_TEX0 |                \
-                            VERT_TEX1 |                \
-                            VERT_TEX2 |                \
-                            VERT_TEX3 |                \
-                            VERT_TEX4 |                \
-                            VERT_TEX5 |                \
-                            VERT_TEX6 |                \
-                            VERT_TEX7)
+#define VERT_TEX_ANY       (VERT_TEX0_BIT |            \
+                            VERT_TEX1_BIT |            \
+                            VERT_TEX2_BIT |            \
+                            VERT_TEX3_BIT |            \
+                            VERT_TEX4_BIT |            \
+                            VERT_TEX5_BIT |            \
+                            VERT_TEX6_BIT |            \
+                            VERT_TEX7_BIT)
 
 #define VERT_FIXUP        (VERT_TEX_ANY |      \
-                           VERT_RGBA |         \
-                           VERT_SPEC_RGB |     \
-                           VERT_FOG_COORD |    \
-                          VERT_INDEX |         \
-                           VERT_EDGE |         \
-                           VERT_NORM)
+                           VERT_COLOR0_BIT |           \
+                           VERT_COLOR1_BIT |   \
+                           VERT_FOG_BIT |      \
+                          VERT_INDEX_BIT |             \
+                           VERT_EDGEFLAG_BIT |         \
+                           VERT_NORMAL_BIT)
 
 #define VERT_CURRENT_DATA  (VERT_FIXUP |       \
                            VERT_MATERIAL)
 
 #define VERT_DATA          (VERT_TEX_ANY |     \
-                           VERT_RGBA |         \
-                           VERT_SPEC_RGB |     \
-                           VERT_FOG_COORD |    \
-                            VERT_INDEX |       \
-                            VERT_EDGE |                \
-                            VERT_NORM |                \
-                           VERT_OBJ |  \
+                           VERT_COLOR0_BIT |           \
+                           VERT_COLOR1_BIT |   \
+                           VERT_FOG_BIT |      \
+                            VERT_INDEX_BIT |   \
+                            VERT_EDGEFLAG_BIT |                \
+                            VERT_NORMAL_BIT |          \
+                           VERT_OBJ_BIT |      \
                             VERT_MATERIAL |    \
                             VERT_ELT |         \
                            VERT_EVAL_ANY)
@@ -200,21 +202,24 @@ struct immediate
    GLuint MaterialOrMask;
    GLuint MaterialAndMask;
 
-   GLfloat (*TexCoord[MAX_TEXTURE_UNITS])[4];
-
    GLuint  Primitive[IMM_SIZE];            /* BEGIN/END */
    GLuint  PrimitiveLength[IMM_SIZE]; /* BEGIN/END */
    GLuint  Flag[IMM_SIZE];         /* VERT_* flags */
-   GLfloat Color[IMM_SIZE][4];
-   GLfloat Obj[IMM_SIZE][4];
-   GLfloat Normal[IMM_SIZE][3];
+
+   GLfloat Obj[IMM_SIZE][4];             /* attrib 0 */
+   GLfloat Normal[IMM_SIZE][3];          /* attrib 2 */
    GLfloat *NormalLengthPtr;
-   GLfloat TexCoord0[IMM_SIZE][4];  /* just VERT_TEX0 */
+   GLfloat Color[IMM_SIZE][4];           /* attrib 3 */
+   GLfloat SecondaryColor[IMM_SIZE][4];  /* attrib 4 */
+   GLfloat FogCoord[IMM_SIZE];           /* attrib 5 */
+   GLfloat TexCoord0[IMM_SIZE][4];  /* just VERT_TEX0_BIT */
+   GLfloat (*TexCoord[MAX_TEXTURE_UNITS])[4];  /* attribs 8..15 */
+
    GLuint  Elt[IMM_SIZE];
    GLubyte EdgeFlag[IMM_SIZE];
    GLuint  Index[IMM_SIZE];
-   GLfloat SecondaryColor[IMM_SIZE][4];
-   GLfloat FogCoord[IMM_SIZE];
+
+   GLfloat Attrib[16][IMM_SIZE][4];  /* GL_NV_vertex_program */
 };
 
 
@@ -229,6 +234,7 @@ struct vertex_arrays
    GLvector4f  TexCoord[MAX_TEXTURE_UNITS];
    GLvector1ui Elt;
    GLvector1f  FogCoord;
+   GLvector4f  Attribs[16];
 };
 
 
@@ -244,27 +250,27 @@ typedef struct vertex_buffer
 
    /* Constant over the pipeline.
     */
-   GLuint     Count;                           /* for everything except Elts */
-   GLuint     FirstClipped;                    /* temp verts for clipping */
-   GLuint     FirstPrimitive;                  /* usually zero */
+   GLuint     Count;                         /* for everything except Elts */
+   GLuint     FirstClipped;                  /* temp verts for clipping */
+   GLuint     FirstPrimitive;                /* usually zero */
 
    /* Pointers to current data.
     */
    GLuint      *Elts;                          /* VERT_ELT */
-   GLvector4f  *ObjPtr;                                /* VERT_OBJ */
+   GLvector4f  *ObjPtr;                                /* VERT_OBJ_BIT */
    GLvector4f  *EyePtr;                                /* VERT_EYE */
    GLvector4f  *ClipPtr;                       /* VERT_CLIP */
    GLvector4f  *ProjectedClipPtr;               /* VERT_CLIP (2) */
    GLubyte     ClipOrMask;                     /* VERT_CLIP (3) */
    GLubyte     *ClipMask;                      /* VERT_CLIP (4) */
-   GLvector3f  *NormalPtr;                     /* VERT_NORM */
-   GLfloat     *NormalLengthPtr;               /* VERT_NORM */
-   GLboolean   *EdgeFlag;                      /* VERT_EDGE */
+   GLvector3f  *NormalPtr;                     /* VERT_NORMAL_BIT */
+   GLfloat     *NormalLengthPtr;               /* VERT_NORMAL_BIT */
+   GLboolean   *EdgeFlag;                      /* VERT_EDGEFLAG_BIT */
    GLvector4f  *TexCoordPtr[MAX_TEXTURE_UNITS];        /* VERT_TEX_0..n */
-   GLvector1ui *IndexPtr[2];                   /* VERT_INDEX */
-   struct gl_client_array *ColorPtr[2];                        /* VERT_RGBA */
-   struct gl_client_array *SecondaryColorPtr[2];         /* VERT_SPEC_RGB */
-   GLvector1f  *FogCoordPtr;                   /* VERT_FOG_COORD */
+   GLvector1ui *IndexPtr[2];                   /* VERT_INDEX_BIT */
+   struct gl_client_array *ColorPtr[2];                /* VERT_COLOR0_BIT */
+   struct gl_client_array *SecondaryColorPtr[2];/* VERT_COLOR1_BIT */
+   GLvector1f  *FogCoordPtr;                   /* VERT_FOG_BIT */
    GLvector1f  *PointSizePtr;                  /* VERT_POINT_SIZE */
    GLmaterial (*Material)[2];                   /* VERT_MATERIAL, optional */
    GLuint      *MaterialMask;                  /* VERT_MATERIAL, optional */
@@ -272,6 +278,7 @@ typedef struct vertex_buffer
    GLuint      *Primitive;                     /* GL_(mode)|PRIM_* flags */
    GLuint      *PrimitiveLength;               /* integers */
 
+   GLvector4f *AttribPtr[16];                   /* GL_NV_vertex_program */
 
    GLuint importable_data;
    void *import_source;
index 302d739..ff9c902 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_imm_alloc.c,v 1.10 2001/09/07 06:55:59 joukj Exp $ */
+/* $Id: t_imm_alloc.c,v 1.11 2001/12/14 02:51:44 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -62,7 +62,6 @@ static struct immediate *real_alloc_immediate( GLcontext *ctx )
    IM->CopyTexSize = 0;
    IM->CopyStart = IM->Start;
 
-
    /* TexCoord0 is special.
     */
    IM->TexCoord[0] = IM->TexCoord0;
index c4e7cfc..a4cb484 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_imm_api.c,v 1.19 2001/12/04 23:43:31 brianp Exp $ */
+/* $Id: t_imm_api.c,v 1.20 2001/12/14 02:51:44 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -46,6 +46,9 @@
 #include "t_imm_dlist.h"
 
 
+extern void _tnl_vprog_vtxfmt_init( GLcontext *ctx );
+
+
 /* A cassette is full or flushed on a statechange.
  */
 void _tnl_flush_immediate( struct immediate *IM )
@@ -96,6 +99,13 @@ _tnl_begin( GLcontext *ctx, GLenum p )
    if (ctx->NewState)
       _mesa_update_state(ctx);
 
+   /* Either install the normal vertex functions or the vertex program funcs */
+   if (ctx->VertexProgram.Enabled)
+      _tnl_vprog_vtxfmt_init(ctx);
+   else
+      _tnl_imm_vtxfmt_init(ctx);
+   _mesa_init_exec_vtxfmt(ctx);
+
    /* if only a very few slots left, might as well flush now
     */
    if (IM->Count > IMM_MAXDATA-8) {
@@ -161,7 +171,8 @@ _tnl_save_Begin( GLenum mode )
       ctx->Driver.CurrentSavePrimitive = mode;
 }
 
-static void
+
+void
 _tnl_Begin( GLenum mode )
 {
    GET_CURRENT_CONTEXT(ctx);
@@ -313,11 +324,11 @@ _tnl_end( GLcontext *ctx )
    /* You can set this flag to get the old 'flush_vb on glEnd()'
     * behaviour.
     */
-   if (1/*(MESA_DEBUG_FLAGS&DEBUG_ALWAYS_FLUSH)*/)
+   if (1 /*(MESA_DEBUG_FLAGS&DEBUG_ALWAYS_FLUSH)*/ )
       _tnl_flush_immediate( IM );
 }
 
-static void
+void
 _tnl_End(void)
 {
    GET_CURRENT_CONTEXT(ctx);
@@ -335,7 +346,7 @@ _tnl_End(void)
 #define COLOR( IM, r, g, b, a )                        \
 {                                              \
    GLuint count = IM->Count;                   \
-   IM->Flag[count] |= VERT_RGBA;               \
+   IM->Flag[count] |= VERT_COLOR0_BIT;         \
    IM->Color[count][0] = r;                    \
    IM->Color[count][1] = g;                    \
    IM->Color[count][2] = b;                    \
@@ -420,7 +431,7 @@ _tnl_Color4ubv( const GLubyte *v)
 #define SECONDARY_COLOR( IM, r, g, b )         \
 {                                              \
    GLuint count = IM->Count;                   \
-   IM->Flag[count] |= VERT_SPEC_RGB;           \
+   IM->Flag[count] |= VERT_COLOR1_BIT;         \
    IM->SecondaryColor[count][0] = r;           \
    IM->SecondaryColor[count][1] = g;           \
    IM->SecondaryColor[count][2] = b;           \
@@ -470,7 +481,7 @@ _tnl_EdgeFlag( GLboolean flag )
    GET_IMMEDIATE;
    count = IM->Count;
    IM->EdgeFlag[count] = flag;
-   IM->Flag[count] |= VERT_EDGE;
+   IM->Flag[count] |= VERT_EDGEFLAG_BIT;
 }
 
 
@@ -481,7 +492,7 @@ _tnl_EdgeFlagv( const GLboolean *flag )
    GET_IMMEDIATE;
    count = IM->Count;
    IM->EdgeFlag[count] = *flag;
-   IM->Flag[count] |= VERT_EDGE;
+   IM->Flag[count] |= VERT_EDGEFLAG_BIT;
 }
 
 
@@ -492,7 +503,7 @@ _tnl_FogCoordfEXT( GLfloat f )
    GET_IMMEDIATE;
    count = IM->Count;
    IM->FogCoord[count] = f;
-   IM->Flag[count] |= VERT_FOG_COORD;
+   IM->Flag[count] |= VERT_FOG_BIT;
 }
 
 static void
@@ -502,7 +513,7 @@ _tnl_FogCoordfvEXT( const GLfloat *v )
    GET_IMMEDIATE;
    count = IM->Count;
    IM->FogCoord[count] = v[0];
-   IM->Flag[count] |= VERT_FOG_COORD;
+   IM->Flag[count] |= VERT_FOG_BIT;
 }
 
 
@@ -513,7 +524,7 @@ _tnl_Indexi( GLint c )
    GET_IMMEDIATE;
    count = IM->Count;
    IM->Index[count] = c;
-   IM->Flag[count] |= VERT_INDEX;
+   IM->Flag[count] |= VERT_INDEX_BIT;
 }
 
 
@@ -524,7 +535,7 @@ _tnl_Indexiv( const GLint *c )
    GET_IMMEDIATE;
    count = IM->Count;
    IM->Index[count] = *c;
-   IM->Flag[count] |= VERT_INDEX;
+   IM->Flag[count] |= VERT_INDEX_BIT;
 }
 
 
@@ -534,7 +545,7 @@ _tnl_Indexiv( const GLint *c )
    GLfloat *normal;                            \
    GET_IMMEDIATE;                              \
    count = IM->Count;                          \
-   IM->Flag[count] |= VERT_NORM;               \
+   IM->Flag[count] |= VERT_NORMAL_BIT;         \
    normal = IM->Normal[count];                 \
    ASSIGN_3V(normal, x,y,z);                   \
 }
@@ -546,7 +557,7 @@ _tnl_Indexiv( const GLint *c )
    fi_type *normal;                                            \
    GET_IMMEDIATE;                                              \
    count = IM->Count;                                          \
-   IM->Flag[count] |= VERT_NORM;                               \
+   IM->Flag[count] |= VERT_NORMAL_BIT;                         \
    normal = (fi_type *)IM->Normal[count];                      \
    normal[0].i = ((fi_type *)&(x))->i;                         \
    normal[1].i = ((fi_type *)&(y))->i;                         \
@@ -577,7 +588,7 @@ _tnl_Normal3fv( const GLfloat *v )
    GLfloat *tc;                                        \
    GET_IMMEDIATE;                              \
    count = IM->Count;                          \
-   IM->Flag[count] |= VERT_TEX0;               \
+   IM->Flag[count] |= VERT_TEX0_BIT;           \
    tc = IM->TexCoord0[count];                  \
    ASSIGN_4V(tc,s,0,0,1);                      \
 }
@@ -588,7 +599,7 @@ _tnl_Normal3fv( const GLfloat *v )
    GLfloat *tc;                                        \
    GET_IMMEDIATE;                              \
    count = IM->Count;                          \
-   IM->Flag[count] |= VERT_TEX0;               \
+   IM->Flag[count] |= VERT_TEX0_BIT;           \
    tc = IM->TexCoord0[count];                  \
    ASSIGN_4V(tc, s,t,0,1);                     \
 }
@@ -599,7 +610,7 @@ _tnl_Normal3fv( const GLfloat *v )
    GLfloat *tc;                                        \
    GET_IMMEDIATE;                              \
    count = IM->Count;                          \
-   IM->Flag[count] |= VERT_TEX0;               \
+   IM->Flag[count] |= VERT_TEX0_BIT;           \
    IM->TexSize |= TEX_0_SIZE_3;                \
    tc = IM->TexCoord0[count];                  \
    ASSIGN_4V(tc, s,t,u,1);                     \
@@ -611,7 +622,7 @@ _tnl_Normal3fv( const GLfloat *v )
    GLfloat *tc;                                        \
    GET_IMMEDIATE;                              \
    count = IM->Count;                          \
-   IM->Flag[count] |= VERT_TEX0;               \
+   IM->Flag[count] |= VERT_TEX0_BIT;           \
    IM->TexSize |= TEX_0_SIZE_4;                \
    tc = IM->TexCoord0[count];                  \
    ASSIGN_4V(tc, s,t,u,v);                     \
@@ -624,7 +635,7 @@ _tnl_Normal3fv( const GLfloat *v )
    fi_type *tc;                                                \
    GET_IMMEDIATE;                                      \
    count = IM->Count;                                  \
-   IM->Flag[count] |= VERT_TEX0;                       \
+   IM->Flag[count] |= VERT_TEX0_BIT;                   \
    tc = (fi_type *)IM->TexCoord0[count];               \
    tc[0].i = ((fi_type *)&(s))->i;                     \
    tc[1].i = ((fi_type *)&(t))->i;                     \
@@ -694,7 +705,7 @@ _tnl_TexCoord4fv( const GLfloat *v )
 {                                              \
    GLuint count = IM->Count++;                 \
    GLfloat *dest = IM->Obj[count];             \
-   IM->Flag[count] |= VERT_OBJ;                        \
+   IM->Flag[count] |= VERT_OBJ_BIT;                    \
    ASSIGN_4V(dest, x, y, 0, 1);                        \
 /*     ASSERT(IM->Flag[IM->Count]==0);          */\
    if (count == IMM_MAXDATA - 1)               \
@@ -727,7 +738,7 @@ _tnl_TexCoord4fv( const GLfloat *v )
 {                                                      \
    GLuint count = IM->Count++;                         \
    fi_type *dest = (fi_type *)IM->Obj[count];          \
-   IM->Flag[count] |= VERT_OBJ;                        \
+   IM->Flag[count] |= VERT_OBJ_BIT;                    \
    dest[0].i = ((fi_type *)&(x))->i;                   \
    dest[1].i = ((fi_type *)&(y))->i;                   \
    dest[2].i = 0;                                      \
@@ -1100,6 +1111,30 @@ _tnl_vertex2f( GLcontext *ctx, GLfloat x, GLfloat y )
 
 
 
+/*
+ * NV_vertex_program
+ */
+
+static void
+_tnl_VertexAttrib4fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+   /* no-op? */
+   printf("%s(%d, %f, %f, %f, %f)\n", __FUNCTION__, index, x, y, z, w);
+   (void) index;
+   (void) x;
+   (void) y;
+   (void) z;
+   (void) w;
+}
+
+static void
+_tnl_VertexAttrib4fvNV(GLuint index, const GLfloat *v)
+{
+   /* no-op? */
+   (void) index;
+   (void) v;
+}
+
 
 
 /* Execute a glRectf() function.  _tnl_hard_begin() ensures the check
@@ -1206,6 +1241,8 @@ void _tnl_imm_vtxfmt_init( GLcontext *ctx )
 {
    GLvertexformat *vfmt = &(TNL_CONTEXT(ctx)->vtxfmt);
 
+   printf("%s()\n", __FUNCTION__);
+
    /* All begin/end operations are handled by this vertex format:
     */
    vfmt->ArrayElement = _tnl_ArrayElement;
@@ -1260,6 +1297,8 @@ void _tnl_imm_vtxfmt_init( GLcontext *ctx )
    vfmt->Vertex3fv = _tnl_Vertex3fv;
    vfmt->Vertex4f = _tnl_Vertex4f;
    vfmt->Vertex4fv = _tnl_Vertex4fv;
+   vfmt->VertexAttrib4fNV = _tnl_VertexAttrib4fNV;
+   vfmt->VertexAttrib4fvNV = _tnl_VertexAttrib4fvNV;
 
    /* Outside begin/end functions (from t_varray.c, t_eval.c, ...):
     */
index ad1827f..c13dde7 100644 (file)
@@ -1,8 +1,8 @@
-/* $Id: t_imm_api.h,v 1.3 2001/03/12 00:48:43 gareth Exp $ */
+/* $Id: t_imm_api.h,v 1.4 2001/12/14 02:51:44 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
- * Version:  3.5
+ * Version:  4.1
  *
  * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
  *
 
 extern void _tnl_save_Begin( GLenum mode );
 
+extern void _tnl_Begin( GLenum mode );
+
+extern void _tnl_End(void);
+
+
 /* TNL-private internal functions for building higher-level operations:
  */
 extern GLboolean _tnl_hard_begin( GLcontext *ctx, GLenum p );
index 78121f9..2bd36aa 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_imm_debug.c,v 1.4 2001/08/01 05:10:42 keithw Exp $ */
+/* $Id: t_imm_debug.c,v 1.5 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -35,29 +35,29 @@ void _tnl_print_vert_flags( const char *name, GLuint flags )
           name,
           flags,
           (flags & VERT_CLIP)       ? "clip/proj-clip/glend, " : "",
-          (flags & VERT_EDGE)       ? "edgeflag, " : "",
+          (flags & VERT_EDGEFLAG_BIT)       ? "edgeflag, " : "",
           (flags & VERT_ELT)        ? "array-elt, " : "",
           (flags & VERT_END_VB)     ? "end-vb, " : "",
           (flags & VERT_EVAL_ANY)   ? "eval-coord, " : "",
           (flags & VERT_EYE)        ? "eye/glbegin, " : "",
-          (flags & VERT_FOG_COORD)  ? "fog-coord, " : "",
-          (flags & VERT_INDEX)      ? "index, " : "",
+          (flags & VERT_FOG_BIT)  ? "fog-coord, " : "",
+          (flags & VERT_INDEX_BIT)      ? "index, " : "",
           (flags & VERT_MATERIAL)   ? "material, " : "",
-          (flags & VERT_NORM)       ? "normals, " : "",
-          (flags & VERT_OBJ)        ? "obj, " : "",
+          (flags & VERT_NORMAL_BIT)       ? "normals, " : "",
+          (flags & VERT_OBJ_BIT)        ? "obj, " : "",
           (flags & VERT_OBJ_3)      ? "obj-3, " : "",
           (flags & VERT_OBJ_4)      ? "obj-4, " : "",
           (flags & VERT_POINT_SIZE) ? "point-size, " : "",
-          (flags & VERT_RGBA)       ? "colors, " : "",
-          (flags & VERT_SPEC_RGB)   ? "specular, " : "",
-          (flags & VERT_TEX0)       ? "texcoord0, " : "",
-          (flags & VERT_TEX1)       ? "texcoord1, " : "",
-          (flags & VERT_TEX2)       ? "texcoord2, " : "",
-          (flags & VERT_TEX3)       ? "texcoord3, " : "",
-          (flags & VERT_TEX4)       ? "texcoord4, " : "",
-          (flags & VERT_TEX5)       ? "texcoord5, " : "",
-          (flags & VERT_TEX6)       ? "texcoord6, " : "",
-          (flags & VERT_TEX7)       ? "texcoord7, " : ""
+          (flags & VERT_COLOR0_BIT)       ? "colors, " : "",
+          (flags & VERT_COLOR1_BIT)   ? "specular, " : "",
+          (flags & VERT_TEX0_BIT)       ? "texcoord0, " : "",
+          (flags & VERT_TEX1_BIT)       ? "texcoord1, " : "",
+          (flags & VERT_TEX2_BIT)       ? "texcoord2, " : "",
+          (flags & VERT_TEX3_BIT)       ? "texcoord3, " : "",
+          (flags & VERT_TEX4_BIT)       ? "texcoord4, " : "",
+          (flags & VERT_TEX5_BIT)       ? "texcoord5, " : "",
+          (flags & VERT_TEX6_BIT)       ? "texcoord6, " : "",
+          (flags & VERT_TEX7_BIT)       ? "texcoord7, " : ""
       );
 }
 
@@ -107,7 +107,7 @@ void _tnl_print_cassette( struct immediate *IM )
       if (req & flags[i] & VERT_ELT)
         fprintf(stderr, " Elt %u\t", IM->Elt[i]);
 
-      if (req & flags[i] & VERT_NORM)
+      if (req & flags[i] & VERT_NORMAL_BIT)
         fprintf(stderr, " Norm %f %f %f ",
                IM->Normal[i][0], IM->Normal[i][1], IM->Normal[i][2]);
 
@@ -124,23 +124,23 @@ void _tnl_print_cassette( struct immediate *IM )
         }
       }
 
-      if (req & flags[i] & VERT_RGBA)
+      if (req & flags[i] & VERT_COLOR0_BIT)
         fprintf(stderr, " Rgba %f %f %f %f ",
                IM->Color[i][0], IM->Color[i][1],
                IM->Color[i][2], IM->Color[i][3]);
 
-      if (req & flags[i] & VERT_SPEC_RGB)
+      if (req & flags[i] & VERT_COLOR1_BIT)
         fprintf(stderr, " Spec %f %f %f ",
                IM->SecondaryColor[i][0], IM->SecondaryColor[i][1],
                IM->SecondaryColor[i][2]);
 
-      if (req & flags[i] & VERT_FOG_COORD)
+      if (req & flags[i] & VERT_FOG_BIT)
         fprintf(stderr, " Fog %f ", IM->FogCoord[i]);
 
-      if (req & flags[i] & VERT_INDEX)
+      if (req & flags[i] & VERT_INDEX_BIT)
         fprintf(stderr, " Index %u ", IM->Index[i]);
 
-      if (req & flags[i] & VERT_EDGE)
+      if (req & flags[i] & VERT_EDGEFLAG_BIT)
         fprintf(stderr, " Edgeflag %d ", IM->EdgeFlag[i]);
 
       if (req & flags[i] & VERT_MATERIAL)
index d89d929..04212a6 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_imm_dlist.c,v 1.32 2001/12/13 10:49:04 keithw Exp $ */
+/* $Id: t_imm_dlist.c,v 1.33 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -86,7 +86,7 @@ static void build_normal_lengths( struct immediate *IM )
    
    for (i = 0 ; i < count ; ) {
       dest[i] = len;
-      if (flags[++i] & VERT_NORM) {
+      if (flags[++i] & VERT_NORMAL_BIT) {
         len = (GLfloat) LEN_3FV( data[i] );
         if (len > 0.0F) len = 1.0F / len;
       }
@@ -108,7 +108,7 @@ static void fixup_normal_lengths( struct immediate *IM )
    } 
 
    if (i < IM->Count) {
-      while (!(flags[i] & (VERT_NORM|VERT_END_VB))) {
+      while (!(flags[i] & (VERT_NORMAL_BIT|VERT_END_VB))) {
         dest[i] = len;
         i++;
       }
@@ -611,28 +611,28 @@ static void loopback_compiled_cassette( GLcontext *ctx, struct immediate *IM )
            }
         }
 
-        if (flags[i] & VERT_NORM) {
+        if (flags[i] & VERT_NORMAL_BIT) {
 /*            fprintf(stderr, "normal %d: %f %f %f\n", i, */
 /*                    IM->Normal[i][0], IM->Normal[i][1], IM->Normal[i][2]);  */
            glNormal3fv(IM->Normal[i]);
         }
 
-        if (flags[i] & VERT_RGBA) {
+        if (flags[i] & VERT_COLOR0_BIT) {
 /*            fprintf(stderr, "color %d: %f %f %f\n", i, */
 /*                    IM->Color[i][0], IM->Color[i][1], IM->Color[i][2]);  */
            glColor4fv( IM->Color[i] );
         }
 
-        if (flags[i] & VERT_SPEC_RGB)
+        if (flags[i] & VERT_COLOR1_BIT)
            glSecondaryColor3fvEXT( IM->SecondaryColor[i] );
 
-        if (flags[i] & VERT_FOG_COORD)
+        if (flags[i] & VERT_FOG_BIT)
            glFogCoordfEXT( IM->FogCoord[i] );
 
-        if (flags[i] & VERT_INDEX)
+        if (flags[i] & VERT_INDEX_BIT)
            glIndexi( IM->Index[i] );
 
-        if (flags[i] & VERT_EDGE)
+        if (flags[i] & VERT_EDGEFLAG_BIT)
            glEdgeFlag( IM->EdgeFlag[i] );
 
         if (flags[i] & VERT_MATERIAL) 
index 0a89173..d585f63 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_imm_elt.c,v 1.12 2001/09/14 21:30:31 brianp Exp $ */
+/* $Id: t_imm_elt.c,v 1.13 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -757,10 +757,10 @@ void _tnl_translate_array_elts( GLcontext *ctx, struct immediate *IM,
    if (MESA_VERBOSE&VERBOSE_IMMEDIATE)
       fprintf(stderr, "exec_array_elements %d .. %d\n", start, count);
 
-   if (translate & VERT_OBJ) {
+   if (translate & VERT_OBJ_BIT) {
       _tnl_trans_elt_4f( IM->Obj,
                         &ctx->Array.Vertex,
-                        flags, elts, (VERT_ELT|VERT_OBJ),
+                        flags, elts, (VERT_ELT|VERT_OBJ_BIT),
                         start, count);
 
       if (ctx->Array.Vertex.Size == 4)
@@ -770,42 +770,42 @@ void _tnl_translate_array_elts( GLcontext *ctx, struct immediate *IM,
    }
 
 
-   if (translate & VERT_NORM)
+   if (translate & VERT_NORMAL_BIT)
       _tnl_trans_elt_3f( IM->Normal,
                         &ctx->Array.Normal,
-                        flags, elts, (VERT_ELT|VERT_NORM),
+                        flags, elts, (VERT_ELT|VERT_NORMAL_BIT),
                         start, count);
 
-   if (translate & VERT_EDGE)
+   if (translate & VERT_EDGEFLAG_BIT)
       _tnl_trans_elt_1ub( IM->EdgeFlag,
                          &ctx->Array.EdgeFlag,
-                         flags, elts, (VERT_ELT|VERT_EDGE),
+                         flags, elts, (VERT_ELT|VERT_EDGEFLAG_BIT),
                          start, count);
 
-   if (translate & VERT_RGBA) {
+   if (translate & VERT_COLOR0_BIT) {
       _tnl_trans_elt_4f( IM->Color,
                         &ctx->Array.Color,
-                        flags, elts, (VERT_ELT|VERT_RGBA),
+                        flags, elts, (VERT_ELT|VERT_COLOR0_BIT),
                         start, count);
    }
 
-   if (translate & VERT_SPEC_RGB) {
+   if (translate & VERT_COLOR1_BIT) {
       _tnl_trans_elt_4f( IM->SecondaryColor,
                         &ctx->Array.SecondaryColor,
-                        flags, elts, (VERT_ELT|VERT_SPEC_RGB),
+                        flags, elts, (VERT_ELT|VERT_COLOR1_BIT),
                         start, count);
    }
 
-   if (translate & VERT_FOG_COORD)
+   if (translate & VERT_FOG_BIT)
       _tnl_trans_elt_1f( IM->FogCoord,
                         &ctx->Array.FogCoord,
-                        flags, elts, (VERT_ELT|VERT_FOG_COORD),
+                        flags, elts, (VERT_ELT|VERT_FOG_BIT),
                         start, count);
 
-   if (translate & VERT_INDEX)
+   if (translate & VERT_INDEX_BIT)
       _tnl_trans_elt_1ui( IM->Index,
                          &ctx->Array.Index,
-                         flags, elts, (VERT_ELT|VERT_INDEX),
+                         flags, elts, (VERT_ELT|VERT_INDEX_BIT),
                          start, count);
 
    if (translate & VERT_TEX_ANY) {
index d90884d..662cfb9 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_imm_eval.c,v 1.18 2001/09/14 21:30:31 brianp Exp $ */
+/* $Id: t_imm_eval.c,v 1.19 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -379,34 +379,34 @@ static void update_eval( GLcontext *ctx )
    GLuint eval1 = 0, eval2 = 0;
 
    if (ctx->Eval.Map1Index)
-      eval1 |= VERT_INDEX;
+      eval1 |= VERT_INDEX_BIT;
 
    if (ctx->Eval.Map2Index)
-      eval2 |= VERT_INDEX;
+      eval2 |= VERT_INDEX_BIT;
 
    if (ctx->Eval.Map1Color4)
-      eval1 |= VERT_RGBA;
+      eval1 |= VERT_COLOR0_BIT;
 
    if (ctx->Eval.Map2Color4)
-      eval2 |= VERT_RGBA;
+      eval2 |= VERT_COLOR0_BIT;
 
    if (ctx->Eval.Map1Normal)
-      eval1 |= VERT_NORM;
+      eval1 |= VERT_NORMAL_BIT;
 
    if (ctx->Eval.Map2Normal)
-      eval2 |= VERT_NORM;
+      eval2 |= VERT_NORMAL_BIT;
 
    if (ctx->Eval.Map1TextureCoord4 ||
        ctx->Eval.Map1TextureCoord3 ||
        ctx->Eval.Map1TextureCoord2 ||
        ctx->Eval.Map1TextureCoord1)
-      eval1 |= VERT_TEX0;
+      eval1 |= VERT_TEX0_BIT;
 
    if (ctx->Eval.Map2TextureCoord4 ||
        ctx->Eval.Map2TextureCoord3 ||
        ctx->Eval.Map2TextureCoord2 ||
        ctx->Eval.Map2TextureCoord1)
-      eval2 |= VERT_TEX0;
+      eval2 |= VERT_TEX0_BIT;
 
    if (ctx->Eval.Map1Vertex4)
       eval1 |= VERT_OBJ_234;
@@ -416,13 +416,13 @@ static void update_eval( GLcontext *ctx )
 
    if (ctx->Eval.Map2Vertex4) {
       if (ctx->Eval.AutoNormal)
-        eval2 |= VERT_OBJ_234 | VERT_NORM;
+        eval2 |= VERT_OBJ_234 | VERT_NORMAL_BIT;
       else
         eval2 |= VERT_OBJ_234;
    }
    else if (ctx->Eval.Map2Vertex3) {
       if (ctx->Eval.AutoNormal)
-        eval2 |= VERT_OBJ_23 | VERT_NORM;
+        eval2 |= VERT_OBJ_23 | VERT_NORMAL_BIT;
       else
         eval2 |= VERT_OBJ_23;
    }
@@ -507,7 +507,7 @@ void _tnl_eval_immediate( GLcontext *ctx, struct immediate *IM )
 
    /* Perform the evaluations on active data elements.
     */
-   if (req & VERT_INDEX)
+   if (req & VERT_INDEX_BIT)
    {
       GLuint generated = 0;
 
@@ -528,7 +528,7 @@ void _tnl_eval_immediate( GLcontext *ctx, struct immediate *IM )
       }
    }
 
-   if (req & VERT_RGBA)
+   if (req & VERT_COLOR0_BIT)
    {
       GLuint generated = 0;
 
@@ -541,7 +541,7 @@ void _tnl_eval_immediate( GLcontext *ctx, struct immediate *IM )
       tmp->Color.Ptr = store->Color + IM->CopyStart;
       tmp->Color.StrideB = 4 * sizeof(GLfloat);
       tmp->Color.Flags = 0;
-      tnl->vb.importable_data &= ~VERT_RGBA;
+      tnl->vb.importable_data &= ~VERT_COLOR0_BIT;
 
       if (ctx->Eval.Map1Color4 && any_eval1) {
         eval1_4f_ca( &tmp->Color, coord, flags, 4, &ctx->EvalMap.Map1Color4 );
@@ -616,7 +616,7 @@ void _tnl_eval_immediate( GLcontext *ctx, struct immediate *IM )
    }
 
 
-   if (req & VERT_NORM)
+   if (req & VERT_NORMAL_BIT)
    {
       GLuint generated = 0;
 
@@ -647,7 +647,7 @@ void _tnl_eval_immediate( GLcontext *ctx, struct immediate *IM )
    /* In the AutoNormal case, the copy and assignment of tmp->NormalPtr
     * are done above.
     */
-   if (req & VERT_OBJ)
+   if (req & VERT_OBJ_BIT)
    {
       if (copycount) {
         /* This copy may already have occurred when eliminating
@@ -678,7 +678,7 @@ void _tnl_eval_immediate( GLcontext *ctx, struct immediate *IM )
       if (any_eval2) {
         if (ctx->Eval.Map2Vertex4)
         {
-           if (ctx->Eval.AutoNormal && (req & VERT_NORM))
+           if (ctx->Eval.AutoNormal && (req & VERT_NORMAL_BIT))
               eval2_obj_norm( &tmp->Obj, &tmp->Normal, coord, flags, 4,
                               &ctx->EvalMap.Map2Vertex4 );
            else
@@ -687,7 +687,7 @@ void _tnl_eval_immediate( GLcontext *ctx, struct immediate *IM )
         }
         else if (ctx->Eval.Map2Vertex3)
         {
-           if (ctx->Eval.AutoNormal && (req & VERT_NORM))
+           if (ctx->Eval.AutoNormal && (req & VERT_NORMAL_BIT))
               eval2_obj_norm( &tmp->Obj, &tmp->Normal, coord, flags, 3,
                               &ctx->EvalMap.Map2Vertex3 );
            else
@@ -704,7 +704,7 @@ void _tnl_eval_immediate( GLcontext *ctx, struct immediate *IM )
     * must be ignored.
     */
    if (purge_flags) {
-      GLuint vertex = VERT_OBJ|(VERT_EVAL_ANY & ~purge_flags);
+      GLuint vertex = VERT_OBJ_BIT|(VERT_EVAL_ANY & ~purge_flags);
       GLuint last_new_prim = 0;
       GLuint new_prim_length = 0;
       GLuint next_old_prim = 0;
index 5b6d5d3..58c46c4 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_imm_exec.c,v 1.30 2001/11/30 15:43:53 alanh Exp $ */
+/* $Id: t_imm_exec.c,v 1.31 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -96,6 +96,7 @@ void _tnl_reset_exec_input( GLcontext *ctx,
    reset_input( ctx, start, beginstate, savedbeginstate );
 
    IM->CopyStart = start - tnl->ExecCopyCount;
+
    IM->Primitive[IM->CopyStart] = ctx->Driver.CurrentExecPrimitive;
    if (tnl->ExecParity)
       IM->Primitive[IM->CopyStart] |= PRIM_PARITY;
@@ -117,40 +118,44 @@ void _tnl_reset_compile_input( GLcontext *ctx,
 }
   
 
+/*
+ * Copy the last specified normal, color, texcoord, edge flag, etc
+ * from the immediate struct into the ctx->Current attribute group.
+ */
 void _tnl_copy_to_current( GLcontext *ctx, struct immediate *IM,
                           GLuint flag, GLuint count )
 {
    if (MESA_VERBOSE&VERBOSE_IMMEDIATE)
       _tnl_print_vert_flags("copy to current", flag);
 
-   if (flag & VERT_NORM)
-      COPY_3FV( ctx->Current.Normal, IM->Normal[count]);
+   if (flag & VERT_NORMAL_BIT)
+      COPY_3FV( ctx->Current.Attrib[VERT_ATTRIB_NORMAL], IM->Normal[count]);
 
-   if (flag & VERT_INDEX)
+   if (flag & VERT_INDEX_BIT)
       ctx->Current.Index = IM->Index[count];
 
-   if (flag & VERT_EDGE)
+   if (flag & VERT_EDGEFLAG_BIT)
       ctx->Current.EdgeFlag = IM->EdgeFlag[count];
 
-   if (flag & VERT_RGBA) {
-      COPY_4FV(ctx->Current.Color, IM->Color[count]);
+   if (flag & VERT_COLOR0_BIT) {
+      COPY_4FV(ctx->Current.Attrib[VERT_ATTRIB_COLOR0], IM->Color[count]);
       if (ctx->Light.ColorMaterialEnabled) {
-        _mesa_update_color_material( ctx, ctx->Current.Color );
+        _mesa_update_color_material( ctx, ctx->Current.Attrib[VERT_ATTRIB_COLOR0] );
         _mesa_validate_all_lighting_tables( ctx );
       }
    }
 
-   if (flag & VERT_SPEC_RGB)
-      COPY_4FV(ctx->Current.SecondaryColor, IM->SecondaryColor[count]);
+   if (flag & VERT_COLOR1_BIT)
+      COPY_4FV(ctx->Current.Attrib[VERT_ATTRIB_COLOR1], IM->SecondaryColor[count]);
 
-   if (flag & VERT_FOG_COORD)
-      ctx->Current.FogCoord = IM->FogCoord[count];
+   if (flag & VERT_FOG_BIT)
+      ctx->Current.Attrib[VERT_ATTRIB_FOG][0] = IM->FogCoord[count];
 
    if (flag & VERT_TEX_ANY) {
       GLuint i;
       for (i = 0 ; i < ctx->Const.MaxTextureUnits ; i++) {
         if (flag & VERT_TEX(i)) {
-           COPY_4FV( ctx->Current.Texcoord[0], IM->TexCoord[0][count]);
+           COPY_4FV( ctx->Current.Attrib[VERT_ATTRIB_TEX0 + i], IM->TexCoord[i][count]);
         }
       }
    }
@@ -202,13 +207,11 @@ void _tnl_compute_orflag( struct immediate *IM, GLuint start )
 }
 
 
-
-
-
-
-
-
-/* Note: The 'start' member of the GLvector structs is now redundant
+/*
+ * This is where the vertex data is transfered from the 'struct immediate
+ * into the 'struct vertex_buffer'.
+ *
+ * Note: The 'start' member of the GLvector structs is now redundant
  * because we always re-transform copied vertices, and the vectors
  * below are set up so that the first copied vertex (if any) appears
  * at position zero.
@@ -263,7 +266,7 @@ static void _tnl_vb_bind_immediate( GLcontext *ctx, struct immediate *IM )
 
    /* Setup the initial values of array pointers in the vb.
     */
-   if (inputs & VERT_OBJ) {
+   if (inputs & VERT_OBJ_BIT) {
       tmp->Obj.data = IM->Obj + start;
       tmp->Obj.start = (GLfloat *)(IM->Obj + start);
       tmp->Obj.count = count;
@@ -276,7 +279,7 @@ static void _tnl_vb_bind_immediate( GLcontext *ctx, struct immediate *IM )
         tmp->Obj.size = 2;
    }
 
-   if (inputs & VERT_NORM) {
+   if (inputs & VERT_NORMAL_BIT) {
       tmp->Normal.data = IM->Normal + start;
       tmp->Normal.start = (GLfloat *)(IM->Normal + start);
       tmp->Normal.count = count;
@@ -285,40 +288,41 @@ static void _tnl_vb_bind_immediate( GLcontext *ctx, struct immediate *IM )
         VB->NormalLengthPtr = IM->NormalLengthPtr + start;
    }
 
-   if (inputs & VERT_INDEX) {
+   if (inputs & VERT_INDEX_BIT) {
       tmp->Index.count = count;
       tmp->Index.data = IM->Index + start;
       tmp->Index.start = IM->Index + start;
       VB->IndexPtr[0] = &tmp->Index;
    }
 
-   if (inputs & VERT_FOG_COORD) {
+   if (inputs & VERT_FOG_BIT) {
       tmp->FogCoord.data = IM->FogCoord + start;
       tmp->FogCoord.start = IM->FogCoord + start;
       tmp->FogCoord.count = count;
       VB->FogCoordPtr = &tmp->FogCoord;
    }
 
-   if (inputs & VERT_SPEC_RGB) {
+   if (inputs & VERT_COLOR1_BIT) {
       tmp->SecondaryColor.Ptr = IM->SecondaryColor + start;
       VB->SecondaryColorPtr[0] = &tmp->SecondaryColor;
    }
 
-   if (inputs & VERT_EDGE) {
+   if (inputs & VERT_EDGEFLAG_BIT) {
       VB->EdgeFlag = IM->EdgeFlag + start;
    }
 
-   if (inputs & VERT_RGBA) {
-      if (IM->CopyOrFlag & VERT_RGBA) {
+   if (inputs & VERT_COLOR0_BIT) {
+      if (IM->CopyOrFlag & VERT_COLOR0_BIT) {
         tmp->Color.Ptr = IM->Color + start;
         tmp->Color.StrideB = 4 * sizeof(GLfloat);
         tmp->Color.Flags = 0;
-      } else {
-        tmp->Color.Ptr = ctx->Current.Color;
+      }
+      else {
+        tmp->Color.Ptr = ctx->Current.Attrib[VERT_ATTRIB_COLOR0];
         tmp->Color.StrideB = 0;
         tmp->Color.Flags = CA_CLIENT_DATA; /* hack */
         VB->import_source = IM;
-        VB->importable_data |= VERT_RGBA;
+        VB->importable_data |= VERT_COLOR0_BIT;
         VB->import_data = _tnl_upgrade_current_data;
       }
       VB->ColorPtr[0] = &tmp->Color;
@@ -347,6 +351,18 @@ static void _tnl_vb_bind_immediate( GLcontext *ctx, struct immediate *IM )
       VB->MaterialMask = IM->MaterialMask + start;
       VB->Material = IM->Material + start;
    }
+
+   /* GL_NV_vertex_program */
+   if (ctx->VertexProgram.Enabled) {
+      GLuint attr;
+      for (attr = 0; attr < 16; attr++) {
+         tmp->Attribs[attr].count = count;
+         tmp->Attribs[attr].data = IM->Attrib[attr] + start;
+         tmp->Attribs[attr].start = (GLfloat *) (IM->Attrib[attr] + start);
+         tmp->Attribs[attr].size = 4;
+         VB->AttribPtr[attr] = &(tmp->Attribs[attr]);
+      }
+   }
 }
 
 
@@ -359,8 +375,6 @@ void _tnl_run_cassette( GLcontext *ctx, struct immediate *IM )
 {
    TNLcontext *tnl = TNL_CONTEXT(ctx);
 
-/*     fprintf(stderr, "%s\n", __FUNCTION__); */
-
    _tnl_vb_bind_immediate( ctx, IM );
 
    if (IM->OrFlag & VERT_EVAL_ANY)
@@ -449,6 +463,7 @@ void _tnl_execute_cassette( GLcontext *ctx, struct immediate *IM )
 {
    TNLcontext *tnl = TNL_CONTEXT(ctx);
 
+   printf("enter %s()\n", __FUNCTION__);
    _tnl_compute_orflag( IM, IM->Start );
    _tnl_copy_immediate_vertices( ctx, IM ); 
    _tnl_get_exec_copy_verts( ctx, IM );
@@ -456,6 +471,7 @@ void _tnl_execute_cassette( GLcontext *ctx, struct immediate *IM )
    if (tnl->pipeline.build_state_changes)
       _tnl_validate_pipeline( ctx );
 
+   printf("  CopyStart %d == Count %d ?\n", IM->CopyStart, IM->Count);
    if (IM->CopyStart == IM->Count) {
       exec_empty_cassette( ctx, IM );
    }
@@ -488,6 +504,7 @@ void _tnl_execute_cassette( GLcontext *ctx, struct immediate *IM )
 
    if (ctx->Driver.CurrentExecPrimitive == GL_POLYGON+1)
       ctx->Driver.NeedFlush &= ~FLUSH_STORED_VERTICES;
+   printf("leave %s()\n", __FUNCTION__);
 }
 
 
index ce59334..8da694a 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_imm_fixup.c,v 1.28 2001/12/03 17:47:04 keithw Exp $ */
+/* $Id: t_imm_fixup.c,v 1.29 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -194,37 +194,41 @@ fixup_first_1ub( GLubyte data[], GLuint flag[], GLuint match,
       data[i] = dflt;
 }
 
+/*
+ * Copy vertex attributes from the ctx->Current group into the immediate
+ * struct at the given position according to copyMask.
+ */
 static void copy_from_current( GLcontext *ctx, struct immediate *IM, 
-                             GLuint start, GLuint copy )
+                             GLuint pos, GLuint copyMask )
 {
    if (MESA_VERBOSE&VERBOSE_IMMEDIATE)
-      _tnl_print_vert_flags("copy from current", copy); 
+      _tnl_print_vert_flags("copy from current", copyMask); 
 
-   if (copy & VERT_NORM) {
-      COPY_3V( IM->Normal[start], ctx->Current.Normal );
+   if (copyMask & VERT_NORMAL_BIT) {
+      COPY_3V(IM->Normal[pos], ctx->Current.Attrib[VERT_ATTRIB_NORMAL]);
    }
 
-   if (copy & VERT_RGBA) {
-      COPY_4FV( IM->Color[start], ctx->Current.Color);
+   if (copyMask & VERT_COLOR0_BIT) {
+      COPY_4FV( IM->Color[pos], ctx->Current.Attrib[VERT_ATTRIB_COLOR0]);
    }
 
-   if (copy & VERT_SPEC_RGB)
-      COPY_4FV( IM->SecondaryColor[start], ctx->Current.SecondaryColor);
+   if (copyMask & VERT_COLOR1_BIT)
+      COPY_4FV( IM->SecondaryColor[pos], ctx->Current.Attrib[VERT_ATTRIB_COLOR1]);
 
-   if (copy & VERT_FOG_COORD)
-      IM->FogCoord[start] = ctx->Current.FogCoord;
+   if (copyMask & VERT_FOG_BIT)
+      IM->FogCoord[pos] = ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
 
-   if (copy & VERT_INDEX)
-      IM->Index[start] = ctx->Current.Index;
+   if (copyMask & VERT_INDEX_BIT)
+      IM->Index[pos] = ctx->Current.Index;
 
-   if (copy & VERT_EDGE)
-      IM->EdgeFlag[start] = ctx->Current.EdgeFlag;
+   if (copyMask & VERT_EDGEFLAG_BIT)
+      IM->EdgeFlag[pos] = ctx->Current.EdgeFlag;
 
-   if (copy & VERT_TEX_ANY) {
+   if (copyMask & VERT_TEX_ANY) {
       GLuint i;
       for (i = 0 ; i < ctx->Const.MaxTextureUnits ; i++) {
-        if (copy & VERT_TEX(i))
-           COPY_4FV( IM->TexCoord[i][start], ctx->Current.Texcoord[i] );
+        if (copyMask & VERT_TEX(i))
+            COPY_4FV(IM->TexCoord[i][pos], ctx->Current.Attrib[VERT_ATTRIB_TEX0 + i]);
       }
    }
 }
@@ -254,7 +258,7 @@ void _tnl_fixup_input( GLcontext *ctx, struct immediate *IM )
    if (!ctx->ExecuteFlag)
       fixup &= orflag;
 
-   if ((orflag & (VERT_OBJ|VERT_EVAL_ANY)) == 0)
+   if ((orflag & (VERT_OBJ_BIT|VERT_EVAL_ANY)) == 0)
       fixup = 0;
 
    if (fixup) {
@@ -285,50 +289,50 @@ void _tnl_fixup_input( GLcontext *ctx, struct immediate *IM )
       }
    
 
-      if (fixup & VERT_EDGE) {
-        if (orflag & VERT_EDGE)
-           _tnl_fixup_1ub( IM->EdgeFlag, IM->Flag, start, VERT_EDGE );
+      if (fixup & VERT_EDGEFLAG_BIT) {
+        if (orflag & VERT_EDGEFLAG_BIT)
+           _tnl_fixup_1ub( IM->EdgeFlag, IM->Flag, start, VERT_EDGEFLAG_BIT );
         else
            fixup_first_1ub( IM->EdgeFlag, IM->Flag, VERT_END_VB, start,
                             IM->EdgeFlag[start] );
       }
 
-      if (fixup & VERT_INDEX) {
-        if (orflag & VERT_INDEX)
-           _tnl_fixup_1ui( IM->Index, IM->Flag, start, VERT_INDEX );
+      if (fixup & VERT_INDEX_BIT) {
+        if (orflag & VERT_INDEX_BIT)
+           _tnl_fixup_1ui( IM->Index, IM->Flag, start, VERT_INDEX_BIT );
         else
            fixup_first_1ui( IM->Index, IM->Flag, VERT_END_VB, start, 
                             IM->Index[start] );
       }
 
-      if (fixup & VERT_RGBA) {
-        if (orflag & VERT_RGBA)
-           _tnl_fixup_4f( IM->Color, IM->Flag, start, VERT_RGBA );
+      if (fixup & VERT_COLOR0_BIT) {
+        if (orflag & VERT_COLOR0_BIT)
+           _tnl_fixup_4f( IM->Color, IM->Flag, start, VERT_COLOR0_BIT );
         /* No need for else case as the drivers understand stride
          * zero here.  (TODO - propogate this)
          */
       }
       
-      if (fixup & VERT_SPEC_RGB) {
-        if (orflag & VERT_SPEC_RGB)
+      if (fixup & VERT_COLOR1_BIT) {
+        if (orflag & VERT_COLOR1_BIT)
            _tnl_fixup_4f( IM->SecondaryColor, IM->Flag, start, 
-                          VERT_SPEC_RGB );
+                          VERT_COLOR1_BIT );
         else
            fixup_first_4f( IM->SecondaryColor, IM->Flag, VERT_END_VB, start,
                            IM->SecondaryColor[start] );
       }
       
-      if (fixup & VERT_FOG_COORD) {
-        if (orflag & VERT_FOG_COORD)
-           _tnl_fixup_1f( IM->FogCoord, IM->Flag, start, VERT_FOG_COORD );
+      if (fixup & VERT_FOG_BIT) {
+        if (orflag & VERT_FOG_BIT)
+           _tnl_fixup_1f( IM->FogCoord, IM->Flag, start, VERT_FOG_BIT );
         else
            fixup_first_1f( IM->FogCoord, IM->Flag, VERT_END_VB, start,
                            IM->FogCoord[start] );
       }
 
-      if (fixup & VERT_NORM) {
-        if (orflag & VERT_NORM)
-           _tnl_fixup_3f( IM->Normal, IM->Flag, start, VERT_NORM );
+      if (fixup & VERT_NORMAL_BIT) {
+        if (orflag & VERT_NORMAL_BIT)
+           _tnl_fixup_3f( IM->Normal, IM->Flag, start, VERT_NORMAL_BIT );
         else
            fixup_first_3f( IM->Normal, IM->Flag, VERT_END_VB, start,
                            IM->Normal[start] );
@@ -417,6 +421,7 @@ void _tnl_copy_immediate_vertices( GLcontext *ctx, struct immediate *next )
    }
 
    next->CopyStart = next->Start - count;
+   printf("%s() CopyStart = %d\n", __FUNCTION__, next->CopyStart);
 
    if ((prev->CopyOrFlag & VERT_DATA) == VERT_ELT &&
        ctx->Array.LockCount &&
@@ -472,7 +477,7 @@ void _tnl_copy_immediate_vertices( GLcontext *ctx, struct immediate *next )
          */
         COPY_4FV( next->Obj[dst], inputs->Obj.data[isrc] );
 
-        if (copy & VERT_NORM) {
+        if (copy & VERT_NORMAL_BIT) {
 /*         fprintf(stderr, "copy vert norm %d to %d (%p): %f %f %f\n", */
 /*                 isrc, dst,  */
 /*                 next->Normal[dst], */
@@ -482,11 +487,11 @@ void _tnl_copy_immediate_vertices( GLcontext *ctx, struct immediate *next )
            COPY_3FV( next->Normal[dst], inputs->Normal.data[isrc] );
         }
 
-        if (copy & VERT_RGBA)
+        if (copy & VERT_COLOR0_BIT)
            COPY_4FV( next->Color[dst], 
                      ((GLfloat (*)[4])inputs->Color.Ptr)[isrc] );
 
-        if (copy & VERT_INDEX)
+        if (copy & VERT_INDEX_BIT)
            next->Index[dst] = inputs->Index.data[isrc];
 
         if (copy & VERT_TEX_ANY) {
@@ -501,7 +506,7 @@ void _tnl_copy_immediate_vertices( GLcontext *ctx, struct immediate *next )
         /* Remaining values should be the same in the 'input' struct and the
          * original immediate.
          */
-        if (copy & (VERT_ELT|VERT_EDGE|VERT_SPEC_RGB|VERT_FOG_COORD|
+        if (copy & (VERT_ELT|VERT_EDGEFLAG_BIT|VERT_COLOR1_BIT|VERT_FOG_BIT|
                     VERT_MATERIAL)) {
 
            if (prev->Flag[src] & VERT_MATERIAL)
@@ -516,7 +521,7 @@ void _tnl_copy_immediate_vertices( GLcontext *ctx, struct immediate *next )
         next->Flag[dst] = flag;
         next->CopyOrFlag |= prev->Flag[src] & (VERT_FIXUP|
                                                VERT_MATERIAL|
-                                               VERT_OBJ);
+                                               VERT_OBJ_BIT);
       }
    }
 
@@ -580,37 +585,37 @@ void _tnl_fixup_compiled_cassette( GLcontext *ctx, struct immediate *IM )
         for (i = 0 ; i < ctx->Const.MaxTextureUnits ; i++) {
            if (fixup & VERT_TEX(i))
               fixup_first_4f( IM->TexCoord[i], IM->Flag, VERT_TEX(i), start,
-                              ctx->Current.Texcoord[i] );
+                              ctx->Current.Attrib[VERT_ATTRIB_TEX0 + i] );
         }
       }
 
-      if (fixup & VERT_EDGE)
-        fixup_first_1ub(IM->EdgeFlag, IM->Flag, VERT_EDGE, start,
+      if (fixup & VERT_EDGEFLAG_BIT)
+        fixup_first_1ub(IM->EdgeFlag, IM->Flag, VERT_EDGEFLAG_BIT, start,
                         ctx->Current.EdgeFlag );
 
-      if (fixup & VERT_INDEX)
-        fixup_first_1ui(IM->Index, IM->Flag, VERT_INDEX, start,
+      if (fixup & VERT_INDEX_BIT)
+        fixup_first_1ui(IM->Index, IM->Flag, VERT_INDEX_BIT, start,
                         ctx->Current.Index );
 
-      if (fixup & VERT_RGBA) {
-        if (IM->CopyOrFlag & VERT_RGBA)
-           fixup_first_4f(IM->Color, IM->Flag, VERT_RGBA, start,
-                          ctx->Current.Color );
+      if (fixup & VERT_COLOR0_BIT) {
+        if (IM->CopyOrFlag & VERT_COLOR0_BIT)
+           fixup_first_4f(IM->Color, IM->Flag, VERT_COLOR0_BIT, start,
+                          ctx->Current.Attrib[VERT_ATTRIB_COLOR0] );
         else
-           fixup &= ~VERT_RGBA;
+           fixup &= ~VERT_COLOR0_BIT;
       }
 
-      if (fixup & VERT_SPEC_RGB)
-        fixup_first_4f(IM->SecondaryColor, IM->Flag, VERT_SPEC_RGB, start,
-                       ctx->Current.SecondaryColor );
+      if (fixup & VERT_COLOR1_BIT)
+        fixup_first_4f(IM->SecondaryColor, IM->Flag, VERT_COLOR1_BIT, start,
+                       ctx->Current.Attrib[VERT_ATTRIB_COLOR1] );
 
-      if (fixup & VERT_FOG_COORD)
-        fixup_first_1f(IM->FogCoord, IM->Flag, VERT_FOG_COORD, start,
-                        ctx->Current.FogCoord );
+      if (fixup & VERT_FOG_BIT)
+        fixup_first_1f(IM->FogCoord, IM->Flag, VERT_FOG_BIT, start,
+                        ctx->Current.Attrib[VERT_ATTRIB_FOG][0] );
 
-      if (fixup & VERT_NORM) {
-        fixup_first_3f(IM->Normal, IM->Flag, VERT_NORM, start,
-                       ctx->Current.Normal );
+      if (fixup & VERT_NORMAL_BIT) {
+        fixup_first_3f(IM->Normal, IM->Flag, VERT_NORMAL_BIT, start,
+                       ctx->Current.Attrib[VERT_ATTRIB_NORMAL] );
       }
 
       IM->CopyOrFlag |= fixup;
@@ -795,7 +800,7 @@ void _tnl_upgrade_current_data( GLcontext *ctx,
 
 /*     _tnl_print_vert_flags("_tnl_upgrade_client_data", required); */
 
-   if ((required & VERT_RGBA) && (VB->ColorPtr[0]->Flags & CA_CLIENT_DATA)) {
+   if ((required & VERT_COLOR0_BIT) && (VB->ColorPtr[0]->Flags & CA_CLIENT_DATA)) {
       struct gl_client_array *tmp = &tnl->imm_inputs.Color;
       GLuint start = IM->CopyStart;
 
@@ -803,7 +808,7 @@ void _tnl_upgrade_current_data( GLcontext *ctx,
       tmp->StrideB = 4 * sizeof(GLfloat);
       tmp->Flags = 0;
 
-      COPY_4FV( IM->Color[start], ctx->Current.Color);   
+      COPY_4FV( IM->Color[start], ctx->Current.Attrib[VERT_ATTRIB_COLOR0]);   
 
       /*
       ASSERT(IM->Flag[IM->LastData+1] & VERT_END_VB);
@@ -812,7 +817,7 @@ void _tnl_upgrade_current_data( GLcontext *ctx,
       fixup_first_4f( IM->Color, IM->Flag, VERT_END_VB, start, 
                      IM->Color[start] );
 
-      VB->importable_data &= ~VERT_RGBA;
+      VB->importable_data &= ~VERT_COLOR0_BIT;
    }
 }
  
index acca9d8..6e39788 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_pipeline.c,v 1.19 2001/05/21 16:33:41 gareth Exp $ */
+/* $Id: t_pipeline.c,v 1.20 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -131,6 +131,8 @@ void _tnl_run_pipeline( GLcontext *ctx )
    pipe->run_state_changes = 0;
    pipe->run_input_changes = 0;
 
+   printf("%s()\n", __FUNCTION__);
+
    /* Done elsewhere.
     */
    ASSERT(pipe->build_state_changes == 0);
@@ -203,6 +205,7 @@ const struct gl_pipeline_stage *_tnl_default_pipeline[] = {
    &_tnl_texgen_stage,
    &_tnl_texture_transform_stage,
    &_tnl_point_attenuation_stage,
+   &_tnl_vertex_program_stage,
    &_tnl_render_stage,
    0
 };
index cb057df..6138df3 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_pipeline.h,v 1.8 2001/07/12 22:09:22 keithw Exp $ */
+/* $Id: t_pipeline.h,v 1.9 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -54,6 +54,7 @@ extern const struct gl_pipeline_stage _tnl_fog_coordinate_stage;
 extern const struct gl_pipeline_stage _tnl_texgen_stage;
 extern const struct gl_pipeline_stage _tnl_texture_transform_stage;
 extern const struct gl_pipeline_stage _tnl_point_attenuation_stage;
+extern const struct gl_pipeline_stage _tnl_vertex_program_stage;
 extern const struct gl_pipeline_stage _tnl_render_stage;
 
 /* Shorthand to plug in the default pipeline:
index 6fad952..9e3d440 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_vb_fog.c,v 1.12 2001/09/14 21:30:31 brianp Exp $ */
+/* $Id: t_vb_fog.c,v 1.13 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -166,8 +166,7 @@ static GLboolean run_fog_stage( GLcontext *ctx,
 
         input->count = VB->ObjPtr->count;
       }
-      else
-      {
+      else {
         input = &store->input;
 
         if (VB->EyePtr->size < 2)
@@ -178,7 +177,8 @@ static GLboolean run_fog_stage( GLcontext *ctx,
         input->stride = VB->EyePtr->stride;
         input->count = VB->EyePtr->count;
       }
-   } else {
+   }
+   else {
       /* use glFogCoord() coordinates */
       /* source = VB->FogCoordPtr */
       input = VB->FogCoordPtr;
@@ -190,14 +190,15 @@ static GLboolean run_fog_stage( GLcontext *ctx,
    return GL_TRUE;
 }
 
+
 static void check_fog_stage( GLcontext *ctx, struct gl_pipeline_stage *stage )
 {
-   stage->active = ctx->Fog.Enabled;
+   stage->active = ctx->Fog.Enabled && !ctx->VertexProgram.Enabled;
 
    if (ctx->Fog.FogCoordinateSource == GL_FRAGMENT_DEPTH_EXT)
       stage->inputs = VERT_EYE;
    else
-      stage->inputs = VERT_FOG_COORD;
+      stage->inputs = VERT_FOG_BIT;
 }
 
 
@@ -239,11 +240,14 @@ static void free_fog_data( struct gl_pipeline_stage *stage )
 
 const struct gl_pipeline_stage _tnl_fog_coordinate_stage =
 {
-   "build fog coordinates",
-   _NEW_FOG,
-   _NEW_FOG,
-   0, 0, VERT_FOG_COORD,       /* active, inputs, outputs */
-   0, 0,                       /* changed_inputs, private_data */
+   "build fog coordinates",    /* name */
+   _NEW_FOG,                   /* check_state */
+   _NEW_FOG,                   /* run_state */
+   GL_FALSE,                   /* active? */
+   0,                          /* inputs */
+   VERT_FOG_BIT,               /* outputs */
+   0,                          /* changed_inputs */
+   NULL,                       /* private_data */
    free_fog_data,              /* dtr */
    check_fog_stage,            /* check */
    alloc_fog_data              /* run -- initially set to init. */
index d0f4981..bbf4346 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_vb_light.c,v 1.15 2001/07/17 19:39:32 keithw Exp $ */
+/* $Id: t_vb_light.c,v 1.16 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -168,12 +168,12 @@ static GLboolean run_lighting( GLcontext *ctx, struct gl_pipeline_stage *stage )
    /* Make sure we can talk about elements 0..2 in the vector we are
     * lighting.
     */
-   if (stage->changed_inputs & (VERT_EYE|VERT_OBJ)) {
+   if (stage->changed_inputs & (VERT_EYE|VERT_OBJ_BIT)) {
       if (input->size <= 2) {
         if (input->flags & VEC_NOT_WRITEABLE) {
-           ASSERT(VB->importable_data & VERT_OBJ);
+           ASSERT(VB->importable_data & VERT_OBJ_BIT);
 
-           VB->import_data( ctx, VERT_OBJ, VEC_NOT_WRITEABLE );
+           VB->import_data( ctx, VERT_OBJ_BIT, VEC_NOT_WRITEABLE );
            input = ctx->_NeedEyeCoords ? VB->EyePtr : VB->ObjPtr;
 
            ASSERT((input->flags & VEC_NOT_WRITEABLE) == 0);
@@ -295,19 +295,19 @@ static GLboolean run_init_lighting( GLcontext *ctx,
  */
 static void check_lighting( GLcontext *ctx, struct gl_pipeline_stage *stage )
 {
-   stage->active = ctx->Light.Enabled;
+   stage->active = ctx->Light.Enabled && !ctx->VertexProgram.Enabled;
    if (stage->active) {
       if (stage->privatePtr)
         stage->run = run_validate_lighting;
-      stage->inputs = VERT_NORM|VERT_MATERIAL;
+      stage->inputs = VERT_NORMAL_BIT|VERT_MATERIAL;
       if (ctx->Light._NeedVertices)
         stage->inputs |= VERT_EYE; /* effectively, even when lighting in obj */
       if (ctx->Light.ColorMaterialEnabled)
-        stage->inputs |= VERT_RGBA;
+        stage->inputs |= VERT_COLOR0_BIT;
 
-      stage->outputs = VERT_RGBA;
+      stage->outputs = VERT_COLOR0_BIT;
       if (ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR)
-        stage->outputs |= VERT_SPEC_RGB;
+        stage->outputs |= VERT_COLOR1_BIT;
    }
 }
 
@@ -334,13 +334,16 @@ static void dtr( struct gl_pipeline_stage *stage )
 
 const struct gl_pipeline_stage _tnl_lighting_stage =
 {
-   "lighting",
+   "lighting",                 /* name */
    _NEW_LIGHT,                 /* recheck */
    _NEW_LIGHT|_NEW_MODELVIEW,  /* recalc -- modelview dependency
                                 * otherwise not captured by inputs
-                                * (which may be VERT_OBJ) */
-   0,0,0,                      /* active, inputs, outputs */
-   0,0,                                /* changed_inputs, private_data */
+                                * (which may be VERT_OBJ_BIT) */
+   GL_FALSE,                   /* active? */
+   0,                          /* inputs */
+   0,                          /* outputs */
+   0,                          /* changed_inputs */
+   NULL,                       /* private_data */
    dtr,                                /* destroy */
    check_lighting,             /* check */
    run_init_lighting           /* run -- initially set to ctr */
index 25e29ce..691d971 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_vb_lighttmp.h,v 1.19 2001/10/20 00:13:45 keithw Exp $ */
+/* $Id: t_vb_lighttmp.h,v 1.20 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
 #  define CHECK_END_VB(x)    (flags[x] & VERT_END_VB)
 #  if (IDX & LIGHT_COLORMATERIAL)
 #    define CMSTRIDE STRIDE_F(CMcolor, CMstride)
-#    define CHECK_COLOR_MATERIAL(x) (flags[x] & VERT_RGBA)
-#    define CHECK_VALIDATE(x) (flags[x] & (VERT_RGBA|VERT_MATERIAL))
+#    define CHECK_COLOR_MATERIAL(x) (flags[x] & VERT_COLOR0_BIT)
+#    define CHECK_VALIDATE(x) (flags[x] & (VERT_COLOR0_BIT|VERT_MATERIAL))
 #    define DO_ANOTHER_NORMAL(x) \
-     ((flags[x] & (VERT_RGBA|VERT_NORM|VERT_END_VB|VERT_MATERIAL)) == VERT_NORM)
+     ((flags[x] & (VERT_COLOR0_BIT|VERT_NORMAL_BIT|VERT_END_VB|VERT_MATERIAL)) == VERT_NORMAL_BIT)
 #    define REUSE_LIGHT_RESULTS(x) \
-     ((flags[x] & (VERT_RGBA|VERT_NORM|VERT_END_VB|VERT_MATERIAL)) == 0)
+     ((flags[x] & (VERT_COLOR0_BIT|VERT_NORMAL_BIT|VERT_END_VB|VERT_MATERIAL)) == 0)
 #  else
 #    define CMSTRIDE (void)0
 #    define CHECK_COLOR_MATERIAL(x) 0
 #    define CHECK_VALIDATE(x) (flags[x] & (VERT_MATERIAL))
 #    define DO_ANOTHER_NORMAL(x) \
-      ((flags[x] & (VERT_NORM|VERT_END_VB|VERT_MATERIAL)) == VERT_NORM)
+      ((flags[x] & (VERT_NORMAL_BIT|VERT_END_VB|VERT_MATERIAL)) == VERT_NORMAL_BIT)
 #    define REUSE_LIGHT_RESULTS(x) \
-      ((flags[x] & (VERT_NORM|VERT_END_VB|VERT_MATERIAL)) == 0)
+      ((flags[x] & (VERT_NORMAL_BIT|VERT_END_VB|VERT_MATERIAL)) == 0)
 #  endif
 #else
 #  define VSTRIDE vstride
index 1a71b13..aff84b0 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_vb_normals.c,v 1.9 2001/06/28 17:34:14 keithw Exp $ */
+/* $Id: t_vb_normals.c,v 1.10 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -128,7 +128,7 @@ static GLboolean run_validate_normal_stage( GLcontext *ctx,
 static void check_normal_transform( GLcontext *ctx,
                                    struct gl_pipeline_stage *stage )
 {
-   stage->active = ctx->_NeedNormals;
+   stage->active = ctx->_NeedNormals && !ctx->VertexProgram.Enabled;
    /* Don't clobber the initialize function:
     */
    if (stage->privatePtr)
@@ -175,11 +175,14 @@ static void free_normal_data( struct gl_pipeline_stage *stage )
 
 const struct gl_pipeline_stage _tnl_normal_transform_stage =
 {
-   "normal transform",
+   "normal transform",         /* name */
    _TNL_NEW_NORMAL_TRANSFORM,  /* re-check */
    _TNL_NEW_NORMAL_TRANSFORM,  /* re-run */
-   0,VERT_NORM,VERT_NORM,      /* active, inputs, outputs */
-   0, 0,                       /* changed_inputs, private */
+   GL_FALSE,                   /* active? */
+   VERT_NORMAL_BIT,            /* inputs */
+   VERT_NORMAL_BIT,            /* outputs */
+   0,                          /* changed_inputs */
+   NULL,                       /* private data */
    free_normal_data,           /* destructor */
    check_normal_transform,     /* check */
    alloc_normal_data           /* run -- initially set to alloc */
index 2c35d43..c60a0f5 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_vb_points.c,v 1.4 2001/03/12 00:48:44 gareth Exp $ */
+/* $Id: t_vb_points.c,v 1.5 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -113,11 +113,11 @@ const struct gl_pipeline_stage _tnl_point_attenuation_stage =
    "point size attenuation",   /* name */
    _NEW_POINT,                 /* build_state_change */
    _NEW_POINT,                 /* run_state_change */
-   0,                          /* active */
+   GL_FALSE,                   /* active */
    VERT_EYE,                   /* inputs */
    VERT_POINT_SIZE,            /* outputs */
    0,                          /* changed_inputs (temporary value) */
-   0,                          /* stage private data */
+   NULL,                       /* stage private data */
    free_point_data,            /* destructor */
    check_point_size,           /* check */
    alloc_point_data            /* run -- initially set to alloc data */
diff --git a/src/mesa/tnl/t_vb_program.c b/src/mesa/tnl/t_vb_program.c
new file mode 100644 (file)
index 0000000..29a6ca5
--- /dev/null
@@ -0,0 +1,1028 @@
+/* $Id: t_vb_program.c,v 1.1 2001/12/14 02:51:45 brianp Exp $ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version:  4.1
+ *
+ * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * -------- Regarding NV_vertex_program --------
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * 
+ * o Redistribution of the source code must contain a copyright notice
+ *   and this list of conditions;
+ * 
+ * o Redistribution in binary and source code form must contain the
+ *   following Notice in the software and any documentation and/or other
+ *   materials provided with the distribution; and
+ * 
+ * o The name of Nvidia may not be used to promote or endorse software
+ *   derived from the software.
+ * 
+ * NOTICE: Nvidia hereby grants to each recipient a non-exclusive worldwide
+ * royalty free patent license under patent claims that are licensable by
+ * Nvidia and which are necessarily required and for which no commercially
+ * viable non infringing alternative exists to make, use, sell, offer to sell,
+ * import and otherwise transfer the vertex extension for the Mesa 3D Graphics
+ * Library as distributed in source code and object code form.  No hardware or
+ * hardware implementation (including a semiconductor implementation and chips)
+ * are licensed hereunder. If a recipient makes a patent claim or institutes
+ * patent litigation against Nvidia or Nvidia's customers for use or sale of
+ * Nvidia products, then this license grant as to such recipient shall
+ * immediately terminate and recipient immediately agrees to cease use and
+ * distribution of the Mesa Program and derivatives thereof. 
+ * 
+ * THE MESA 3D GRAPHICS LIBRARY IS PROVIDED ON AN "AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+ * WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-NFRINGEMENT
+ * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ * 
+ * NVIDIA SHALL NOT HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION
+ * LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE MESA 3D GRAPHICS
+ * LIBRARY OR EVIDENCE OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDR, EVEN
+ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 
+ * If you do not comply with this agreement, then Nvidia may cancel the license
+ * and rights granted herein.
+ * ---------------------------------------------
+ */
+
+/*
+ * Authors:
+ *    Brian Paul
+ */
+
+
+#include "glheader.h"
+#include "api_noop.h"
+#include "colormac.h"
+#include "context.h"
+#include "dlist.h"
+#include "hash.h"
+#include "light.h"
+#include "macros.h"
+#include "mem.h"
+#include "mmath.h"
+#include "simple_list.h"
+#include "mtypes.h"
+#include "vpexec.h"
+
+#include "math/m_translate.h"
+
+#include "t_context.h"
+#include "t_pipeline.h"
+#include "t_imm_api.h"
+#include "t_imm_exec.h"
+
+
+
+static void
+_vp_ArrayElement( GLint i )
+{
+   /* XXX to do */
+}
+
+static void
+_vp_Color3f( GLfloat r, GLfloat g, GLfloat b )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_COLOR0][IM->Count];
+   ASSIGN_4V(attrib, r, g, b, 1.0F);
+   IM->Flag[IM->Count] |= VERT_COLOR0_BIT;
+}
+
+static void
+_vp_Color3fv( const GLfloat *color )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_COLOR0][IM->Count];
+   ASSIGN_4V(attrib, color[0], color[1], color[2], 1.0F);
+   IM->Flag[IM->Count] |= VERT_COLOR0_BIT;
+}
+
+static void
+_vp_Color3ub( GLubyte r, GLubyte g, GLubyte b )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_COLOR0][IM->Count];
+   attrib[0] = UBYTE_TO_FLOAT(r);
+   attrib[1] = UBYTE_TO_FLOAT(g);
+   attrib[2] = UBYTE_TO_FLOAT(b);
+   attrib[3] = 1.0F;
+   IM->Flag[IM->Count] |= VERT_COLOR0_BIT;
+}
+
+static void
+_vp_Color3ubv( const GLubyte *color )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_COLOR0][IM->Count];
+   attrib[0] = UBYTE_TO_FLOAT(color[0]);
+   attrib[1] = UBYTE_TO_FLOAT(color[1]);
+   attrib[2] = UBYTE_TO_FLOAT(color[2]);
+   attrib[3] = 1.0F;
+   IM->Flag[IM->Count] |= VERT_COLOR0_BIT;
+}
+
+static void
+_vp_Color4f( GLfloat r, GLfloat g, GLfloat b, GLfloat a )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_COLOR0][IM->Count];
+   ASSIGN_4V(attrib, r, g, b, a);
+   IM->Flag[IM->Count] |= VERT_COLOR0_BIT;
+}
+
+static void
+_vp_Color4fv( const GLfloat *color )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_COLOR0][IM->Count];
+   COPY_4V(attrib, color);
+   IM->Flag[IM->Count] |= VERT_COLOR0_BIT;
+}
+
+static void
+_vp_Color4ub( GLubyte r, GLubyte g, GLubyte b, GLubyte a )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_COLOR0][IM->Count];
+   attrib[0] = UBYTE_TO_FLOAT(r);
+   attrib[1] = UBYTE_TO_FLOAT(g);
+   attrib[2] = UBYTE_TO_FLOAT(b);
+   attrib[3] = UBYTE_TO_FLOAT(a);
+   IM->Flag[IM->Count] |= VERT_COLOR0_BIT;
+}
+
+static void
+_vp_Color4ubv( const GLubyte *color )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_COLOR0][IM->Count];
+   attrib[0] = UBYTE_TO_FLOAT(color[0]);
+   attrib[1] = UBYTE_TO_FLOAT(color[1]);
+   attrib[2] = UBYTE_TO_FLOAT(color[2]);
+   attrib[3] = UBYTE_TO_FLOAT(color[3]);
+   IM->Flag[IM->Count] |= VERT_COLOR0_BIT;
+}
+
+static void
+_vp_EdgeFlag( GLboolean flag )
+{
+   GET_IMMEDIATE;
+   IM->EdgeFlag[IM->Count] = flag;
+   IM->Flag[IM->Count] |= VERT_EDGEFLAG_BIT;
+}
+
+static void
+_vp_EdgeFlagv( const GLboolean *flag )
+{
+   GET_IMMEDIATE;
+   IM->EdgeFlag[IM->Count] = *flag;
+   IM->Flag[IM->Count] |= VERT_EDGEFLAG_BIT;
+}
+
+static void
+_vp_EvalCoord1f( GLfloat s )
+{
+   (void) s;
+   /* XXX no-op? */
+}
+
+static void
+_vp_EvalCoord1fv( const GLfloat *v )
+{
+   (void) v;
+   /* XXX no-op? */
+}
+
+static void
+_vp_EvalCoord2f( GLfloat s, GLfloat t )
+{
+   (void) s;
+   (void )t;
+   /* XXX no-op? */
+}
+
+static void
+_vp_EvalCoord2fv( const GLfloat *v )
+{
+   (void) v;
+   /* XXX no-op? */
+}
+
+static void
+_vp_EvalPoint1( GLint i )
+{
+   (void) i;
+}
+
+static void
+_vp_EvalPoint2( GLint i, GLint j )
+{
+   (void) i;
+   (void) j;
+}
+
+static void
+_vp_FogCoordf( GLfloat f )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_FOG][IM->Count];
+   ASSIGN_4V(attrib, f, 0.0F, 0.0F, 1.0F);
+   IM->Flag[IM->Count] |= VERT_FOG_BIT;
+}
+
+static void
+_vp_FogCoordfv( const GLfloat *f )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_FOG][IM->Count];
+   ASSIGN_4V(attrib, f[0], 0.0F, 0.0F, 1.0F);
+   IM->Flag[IM->Count] |= VERT_FOG_BIT;
+}
+
+static void
+_vp_Indexi( GLint i )
+{
+   (void) i;
+}
+
+static void
+_vp_Indexiv( const GLint *i )
+{
+   (void) i;
+}
+
+static void
+_vp_Materialfv( GLenum face, GLenum pname, const GLfloat *v)
+{
+   /* XXX no-op? */
+}
+
+static void
+_vp_MultiTexCoord1f( GLenum unit, GLfloat s )
+{
+   const GLint u = (GLint) unit - GL_TEXTURE0_ARB;
+   if (u >=0 && u < 8) {
+      GET_IMMEDIATE;
+      GLfloat *attrib = IM->Attrib[VERT_ATTRIB_TEX0 + u][IM->Count];
+      ASSIGN_4V(attrib, s, 0.0F, 0.0F, 1.0F);
+      IM->Flag[IM->Count] |= (VERT_TEX0_BIT << u);
+   }
+}
+
+static void
+_vp_MultiTexCoord1fv( GLenum unit, const GLfloat *c )
+{
+   const GLint u = unit - GL_TEXTURE0_ARB;
+   if (u >=0 && u < 8) {
+      GET_IMMEDIATE;
+      GLfloat *attrib = IM->Attrib[VERT_ATTRIB_TEX0 + u][IM->Count];
+      ASSIGN_4V(attrib, c[0], 0.0F, 0.0F, 1.0F);
+      IM->Flag[IM->Count] |= (VERT_TEX0_BIT << u);
+   }
+}
+
+static void
+_vp_MultiTexCoord2f( GLenum unit, GLfloat s, GLfloat t )
+{
+   const GLint u = unit - GL_TEXTURE0_ARB;
+   if (u >=0 && u < 8) {
+      GET_IMMEDIATE;
+      GLfloat *attrib = IM->Attrib[VERT_ATTRIB_TEX0 + u][IM->Count];
+      ASSIGN_4V(attrib, s, t, 0.0F, 1.0F);
+      IM->Flag[IM->Count] |= (VERT_TEX0_BIT << u);
+   }
+}
+
+static void
+_vp_MultiTexCoord2fv( GLenum unit, const GLfloat *c )
+{
+   const GLint u = unit - GL_TEXTURE0_ARB;
+   if (u >=0 && u < 8) {
+      GET_IMMEDIATE;
+      GLfloat *attrib = IM->Attrib[VERT_ATTRIB_TEX0 + u][IM->Count];
+      ASSIGN_4V(attrib, c[0], c[1], 0.0F, 1.0F);
+      IM->Flag[IM->Count] |= (VERT_TEX0_BIT << u);
+   }
+}
+
+static void
+_vp_MultiTexCoord3f( GLenum unit, GLfloat s, GLfloat t, GLfloat r )
+{
+   const GLint u = unit - GL_TEXTURE0_ARB;
+   if (u >=0 && u < 8) {
+      GET_IMMEDIATE;
+      GLfloat *attrib = IM->Attrib[VERT_ATTRIB_TEX0 + u][IM->Count];
+      ASSIGN_4V(attrib, s, t, r, 1.0F);
+      IM->Flag[IM->Count] |= (VERT_TEX0_BIT << u);
+   }
+}
+
+static void
+_vp_MultiTexCoord3fv( GLenum unit, const GLfloat *c )
+{
+   const GLint u = unit - GL_TEXTURE0_ARB;
+   if (u >=0 && u < 8) {
+      GET_IMMEDIATE;
+      GLfloat *attrib = IM->Attrib[VERT_ATTRIB_TEX0 + u][IM->Count];
+      ASSIGN_4V(attrib, c[0], c[1], c[2], 1.0F);
+      IM->Flag[IM->Count] |= (VERT_TEX0_BIT << u);
+   }
+}
+
+static void
+_vp_MultiTexCoord4f( GLenum unit, GLfloat s, GLfloat t, GLfloat r, GLfloat q )
+{
+   const GLint u = unit - GL_TEXTURE0_ARB;
+   if (u >=0 && u < 8) {
+      GET_IMMEDIATE;
+      GLfloat *attrib = IM->Attrib[VERT_ATTRIB_TEX0 + u][IM->Count];
+      ASSIGN_4V(attrib, s, t, r, q);
+      IM->Flag[IM->Count] |= (VERT_TEX0_BIT << u);
+   }
+}
+
+static void
+_vp_MultiTexCoord4fv( GLenum unit, const GLfloat *c )
+{
+   const GLint u = unit - GL_TEXTURE0_ARB;
+   if (u >=0 && u < 8) {
+      GET_IMMEDIATE;
+      GLfloat *attrib = IM->Attrib[VERT_ATTRIB_TEX0 + u][IM->Count];
+      COPY_4V(attrib, c);
+      IM->Flag[IM->Count] |= (VERT_TEX0_BIT << u);
+   }
+}
+
+static void
+_vp_Normal3f( GLfloat x, GLfloat y, GLfloat z )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_NORMAL][IM->Count];
+   ASSIGN_4V(attrib, x, y, z, 1.0F);
+   IM->Flag[IM->Count] |= VERT_NORMAL_BIT;
+}
+
+static void
+_vp_Normal3fv( const GLfloat *n )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_NORMAL][IM->Count];
+   ASSIGN_4V(attrib, n[0], n[1], n[2], 1.0F);
+   IM->Flag[IM->Count] |= VERT_NORMAL_BIT;
+}
+
+static void
+_vp_SecondaryColor3f( GLfloat r, GLfloat g, GLfloat b )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_COLOR1][IM->Count];
+   ASSIGN_4V(attrib, r, g, b, 1.0F);
+   IM->Flag[IM->Count] |= VERT_COLOR1_BIT;
+}
+
+static void
+_vp_SecondaryColor3fv( const GLfloat *color )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_COLOR1][IM->Count];
+   ASSIGN_4V(attrib, color[0], color[1], color[2], 1.0F);
+   IM->Flag[IM->Count] |= VERT_COLOR1_BIT;
+}
+
+static void
+_vp_SecondaryColor3ub( GLubyte r, GLubyte g, GLubyte b )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_COLOR1][IM->Count];
+   attrib[0] = UBYTE_TO_FLOAT(r);
+   attrib[1] = UBYTE_TO_FLOAT(g);
+   attrib[2] = UBYTE_TO_FLOAT(b);
+   attrib[3] = 1.0F;
+   IM->Flag[IM->Count] |= VERT_COLOR1_BIT;
+}
+
+static void
+_vp_SecondaryColor3ubv( const GLubyte *color )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_COLOR1][IM->Count];
+   attrib[0] = UBYTE_TO_FLOAT(color[0]);
+   attrib[1] = UBYTE_TO_FLOAT(color[1]);
+   attrib[2] = UBYTE_TO_FLOAT(color[2]);
+   attrib[3] = 1.0F;
+   IM->Flag[IM->Count] |= VERT_COLOR1_BIT;
+}
+
+static void
+_vp_TexCoord1f( GLfloat s )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_TEX0][IM->Count];
+   ASSIGN_4V(attrib, s, 0.0F, 0.0F, 1.0F);
+   IM->Flag[IM->Count] |= VERT_TEX0_BIT;
+}
+
+static void
+_vp_TexCoord1fv( const GLfloat *c )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_TEX0][IM->Count];
+   ASSIGN_4V(attrib, c[0], 0.0F, 0.0F, 1.0F);
+   IM->Flag[IM->Count] |= VERT_TEX0_BIT;
+}
+
+static void
+_vp_TexCoord2f( GLfloat s, GLfloat t )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_TEX0][IM->Count];
+   ASSIGN_4V(attrib, s, t, 0.0F, 1.0F);
+   IM->Flag[IM->Count] |= VERT_TEX0_BIT;
+}
+
+static void
+_vp_TexCoord2fv( const GLfloat *c )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_TEX0][IM->Count];
+   ASSIGN_4V(attrib, c[0], c[1], 0.0F, 1.0F);
+   IM->Flag[IM->Count] |= VERT_TEX0_BIT;
+}
+
+static void
+_vp_TexCoord3f( GLfloat s, GLfloat t, GLfloat r )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_TEX0][IM->Count];
+   ASSIGN_4V(attrib, s, t, r, 1.0F);
+   IM->Flag[IM->Count] |= VERT_TEX0_BIT;
+}
+
+static void
+_vp_TexCoord3fv( const GLfloat *c )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_TEX0][IM->Count];
+   ASSIGN_4V(attrib, c[0], c[1], c[2], 1.0F);
+   IM->Flag[IM->Count] |= VERT_TEX0_BIT;
+}
+
+static void
+_vp_TexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_TEX0][IM->Count];
+   ASSIGN_4V(attrib, s, t, r, 1.0F);
+   IM->Flag[IM->Count] |= VERT_TEX0_BIT;
+}
+
+static void
+_vp_TexCoord4fv( const GLfloat *c )
+{
+   GET_IMMEDIATE;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_TEX0][IM->Count];
+   COPY_4V(attrib, c);
+   IM->Flag[IM->Count] |= VERT_TEX0_BIT;
+}
+
+static void
+_vp_Vertex2f( GLfloat x, GLfloat y )
+{
+   GET_IMMEDIATE;
+   const GLuint count = IM->Count++;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_POS][count];
+   ASSIGN_4V(attrib, x, y, 0.0F, 1.0F);
+   IM->Flag[count] |= VERT_OBJ_BIT;
+   if (count == IMM_MAXDATA - 1)
+      _tnl_flush_immediate( IM );
+}
+
+static void
+_vp_Vertex2fv( const GLfloat *v )
+{
+   GET_IMMEDIATE;
+   const GLuint count = IM->Count++;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_POS][count];
+   ASSIGN_4V(attrib, v[0], v[1], 0.0F, 1.0F);
+   IM->Flag[count] |= VERT_OBJ_BIT;
+   if (count == IMM_MAXDATA - 1)
+      _tnl_flush_immediate( IM );
+}
+
+static void
+_vp_Vertex3f( GLfloat x, GLfloat y, GLfloat z )
+{
+   GET_IMMEDIATE;
+   const GLuint count = IM->Count++;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_POS][count];
+   ASSIGN_4V(attrib, x, y, z, 1.0F);
+   IM->Flag[count] |= VERT_OBJ_BIT;
+   if (count == IMM_MAXDATA - 1)
+      _tnl_flush_immediate( IM );
+}
+
+static void
+_vp_Vertex3fv( const GLfloat *v )
+{
+   GET_IMMEDIATE;
+   const GLuint count = IM->Count++;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_POS][count];
+   ASSIGN_4V(attrib, v[0], v[1], v[2], 1.0F);
+   IM->Flag[count] |= VERT_OBJ_BIT;
+   if (count == IMM_MAXDATA - 1)
+      _tnl_flush_immediate( IM );
+}
+
+static void
+_vp_Vertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
+{
+   GET_IMMEDIATE;
+   const GLuint count = IM->Count++;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_POS][count];
+   ASSIGN_4V(attrib, x, y, z, w);
+   IM->Flag[count] |= VERT_OBJ_BIT;
+   if (count == IMM_MAXDATA - 1)
+      _tnl_flush_immediate( IM );
+}
+
+static void
+_vp_Vertex4fv( const GLfloat *v )
+{
+   GET_IMMEDIATE;
+   const GLuint count = IM->Count++;
+   GLfloat *attrib = IM->Attrib[VERT_ATTRIB_POS][count];
+   COPY_4V(attrib, v);
+   IM->Flag[count] |= VERT_OBJ_BIT;
+   if (count == IMM_MAXDATA - 1)
+      _tnl_flush_immediate( IM );
+}
+
+static void
+_vp_VertexAttrib4f( GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w )
+{
+   if (index < 16) {
+      GET_IMMEDIATE;
+      const GLuint count = IM->Count;
+      GLfloat *attrib = IM->Attrib[index][count];
+      ASSIGN_4V(attrib, x, y, z, w);
+      IM->Flag[count] |= (1 << index);
+      if (index == 0) {
+         IM->Count++;
+         if (count == IMM_MAXDATA - 1)
+            _tnl_flush_immediate( IM );
+      }
+   }
+}   
+
+static void
+_vp_VertexAttrib4fv( GLuint index, const GLfloat *v )
+{
+   if (index < 16) {
+      GET_IMMEDIATE;
+      const GLuint count = IM->Count;
+      GLfloat *attrib = IM->Attrib[index][count];
+      COPY_4V(attrib, v);
+      IM->Flag[count] |= (1 << index);
+      if (index == 0) {
+         IM->Count++;
+         if (count == IMM_MAXDATA - 1)
+            _tnl_flush_immediate( IM );
+      }
+   }
+}   
+
+
+/*
+ * When vertex program mode is enabled we hook in different per-vertex
+ * functions.
+ */
+void _tnl_vprog_vtxfmt_init( GLcontext *ctx )
+{
+   GLvertexformat *vfmt = &(TNL_CONTEXT(ctx)->vtxfmt);
+
+   printf("%s()\n", __FUNCTION__);
+
+   /* All begin/end operations are handled by this vertex format:
+    */
+   vfmt->ArrayElement = _vp_ArrayElement;
+   vfmt->Begin = _tnl_Begin;
+   vfmt->Color3f = _vp_Color3f;
+   vfmt->Color3fv = _vp_Color3fv;
+   vfmt->Color3ub = _vp_Color3ub;
+   vfmt->Color3ubv = _vp_Color3ubv;
+   vfmt->Color4f = _vp_Color4f;
+   vfmt->Color4fv = _vp_Color4fv;
+   vfmt->Color4ub = _vp_Color4ub;
+   vfmt->Color4ubv = _vp_Color4ubv;
+   vfmt->EdgeFlag = _vp_EdgeFlag;
+   vfmt->EdgeFlagv = _vp_EdgeFlagv;
+   vfmt->End = _tnl_End;
+   vfmt->EvalCoord1f = _vp_EvalCoord1f;
+   vfmt->EvalCoord1fv = _vp_EvalCoord1fv;
+   vfmt->EvalCoord2f = _vp_EvalCoord2f;
+   vfmt->EvalCoord2fv = _vp_EvalCoord2fv;
+   vfmt->EvalPoint1 = _vp_EvalPoint1;
+   vfmt->EvalPoint2 = _vp_EvalPoint2;
+   vfmt->FogCoordfEXT = _vp_FogCoordf;
+   vfmt->FogCoordfvEXT = _vp_FogCoordfv;
+   vfmt->Indexi = _vp_Indexi;
+   vfmt->Indexiv = _vp_Indexiv;
+   vfmt->Materialfv = _vp_Materialfv;
+   vfmt->MultiTexCoord1fARB = _vp_MultiTexCoord1f;
+   vfmt->MultiTexCoord1fvARB = _vp_MultiTexCoord1fv;
+   vfmt->MultiTexCoord2fARB = _vp_MultiTexCoord2f;
+   vfmt->MultiTexCoord2fvARB = _vp_MultiTexCoord2fv;
+   vfmt->MultiTexCoord3fARB = _vp_MultiTexCoord3f;
+   vfmt->MultiTexCoord3fvARB = _vp_MultiTexCoord3fv;
+   vfmt->MultiTexCoord4fARB = _vp_MultiTexCoord4f;
+   vfmt->MultiTexCoord4fvARB = _vp_MultiTexCoord4fv;
+   vfmt->Normal3f = _vp_Normal3f;
+   vfmt->Normal3fv = _vp_Normal3fv;
+   vfmt->SecondaryColor3fEXT = _vp_SecondaryColor3f;
+   vfmt->SecondaryColor3fvEXT = _vp_SecondaryColor3fv;
+   vfmt->SecondaryColor3ubEXT = _vp_SecondaryColor3ub;
+   vfmt->SecondaryColor3ubvEXT = _vp_SecondaryColor3ubv;
+   vfmt->TexCoord1f = _vp_TexCoord1f;
+   vfmt->TexCoord1fv = _vp_TexCoord1fv;
+   vfmt->TexCoord2f = _vp_TexCoord2f;
+   vfmt->TexCoord2fv = _vp_TexCoord2fv;
+   vfmt->TexCoord3f = _vp_TexCoord3f;
+   vfmt->TexCoord3fv = _vp_TexCoord3fv;
+   vfmt->TexCoord4f = _vp_TexCoord4f;
+   vfmt->TexCoord4fv = _vp_TexCoord4fv;
+   vfmt->Vertex2f = _vp_Vertex2f;
+   vfmt->Vertex2fv = _vp_Vertex2fv;
+   vfmt->Vertex3f = _vp_Vertex3f;
+   vfmt->Vertex3fv = _vp_Vertex3fv;
+   vfmt->Vertex4f = _vp_Vertex4f;
+   vfmt->Vertex4fv = _vp_Vertex4fv;
+   vfmt->VertexAttrib4fNV = _vp_VertexAttrib4f;
+   vfmt->VertexAttrib4fvNV = _vp_VertexAttrib4fv;
+
+   /* Outside begin/end functions (from t_varray.c, t_eval.c, ...):
+    */
+   vfmt->Rectf = _mesa_noop_Rectf;
+
+   /* Just use the core function:
+    */
+   vfmt->CallList = _mesa_CallList;
+
+   vfmt->prefer_float_colors = GL_TRUE;
+}
+
+
+
+struct vp_stage_data {
+   GLvector4f clipCoords;             /* resulting vertex positions */
+   struct gl_client_array color0[2];  /* front and back */
+   struct gl_client_array color1[2];  /* front and back */
+   GLvector4f texCoord[MAX_TEXTURE_UNITS];
+   GLvector1f fogCoord;
+   GLvector1f pointSize;
+};
+
+
+#define VP_STAGE_DATA(stage) ((struct vp_stage_data *)(stage->privatePtr))
+
+
+static GLboolean run_vp( GLcontext *ctx, struct gl_pipeline_stage *stage )
+{
+   TNLcontext *tnl = TNL_CONTEXT(ctx);
+   struct vp_stage_data *store = VP_STAGE_DATA(stage);
+   struct vertex_buffer *VB = &tnl->vb;
+   struct vp_machine *machine = &(ctx->VertexProgram.Machine);
+   struct vp_program *program;
+   GLfloat (*clip)[4];
+   GLfloat (*color0)[4], (*color1)[4];
+   GLfloat (*bfcolor0)[4], (*bfcolor1)[4];
+   GLfloat *fog, *pointSize;
+   GLfloat (*texture0)[4];
+   GLfloat (*texture1)[4];
+   GLfloat (*texture2)[4];
+   GLfloat (*texture3)[4];
+   GLint i;
+
+   /* convenience pointers */
+   store->clipCoords.size = 4;
+   clip = (GLfloat (*)[4]) store->clipCoords.data;
+   color0 = (GLfloat (*)[4]) store->color0[0].Ptr;
+   color1 = (GLfloat (*)[4]) store->color1[0].Ptr;
+   bfcolor0 = (GLfloat (*)[4]) store->color0[1].Ptr;
+   bfcolor1 = (GLfloat (*)[4]) store->color1[1].Ptr;
+   fog = (GLfloat *) store->fogCoord.data;
+   pointSize = (GLfloat *) store->pointSize.data;
+   texture0 = (GLfloat (*)[4]) store->texCoord[0].data;
+   texture1 = (GLfloat (*)[4]) store->texCoord[1].data;
+   texture2 = (GLfloat (*)[4]) store->texCoord[2].data;
+   texture3 = (GLfloat (*)[4]) store->texCoord[3].data;
+
+
+   printf("In %s()\n", __FUNCTION__);
+
+   program = (struct vp_program *) _mesa_HashLookup(ctx->VertexProgram.HashTable, ctx->VertexProgram.Binding);
+   assert(program);
+
+   _mesa_init_tracked_matrices(ctx);
+   _mesa_init_vp_registers(ctx);  /* sets temp regs to (0,0,0,1) */
+
+   for (i = 0; i < VB->Count; i++) {
+      GLuint attr;
+
+      printf("Input  %d: %f, %f, %f, %f\n", i,
+             VB->AttribPtr[0]->data[i][0],
+             VB->AttribPtr[0]->data[i][1],
+             VB->AttribPtr[0]->data[i][2],
+             VB->AttribPtr[0]->data[i][3]);
+      printf("   color: %f, %f, %f, %f\n",
+             VB->AttribPtr[3]->data[i][0],
+             VB->AttribPtr[3]->data[i][1],
+             VB->AttribPtr[3]->data[i][2],
+             VB->AttribPtr[3]->data[i][3]);
+
+      /* load the input attribute registers */
+      for (attr = 0; attr < 16; attr++) {
+         if (VB->Flag[i] & (1 << attr)) {
+            COPY_4V(machine->Registers[VP_INPUT_REG_START + attr],
+                    VB->AttribPtr[attr]->data[i]);
+         }
+      }
+
+      /* execute the program */
+      _mesa_exec_program(ctx, program);
+
+      printf("Output %d: %f, %f, %f, %f\n", i,
+             machine->Registers[VP_OUTPUT_REG_START + 0][0],
+             machine->Registers[VP_OUTPUT_REG_START + 0][1],
+             machine->Registers[VP_OUTPUT_REG_START + 0][2],
+             machine->Registers[VP_OUTPUT_REG_START + 0][3]);
+      printf("   color: %f, %f, %f, %f\n",
+             machine->Registers[VP_OUTPUT_REG_START + 1][0],
+             machine->Registers[VP_OUTPUT_REG_START + 1][1],
+             machine->Registers[VP_OUTPUT_REG_START + 1][2],
+             machine->Registers[VP_OUTPUT_REG_START + 1][3]);
+
+      /* store the attribute output registers into the VB arrays */
+      COPY_4V(clip[i], machine->Registers[VP_OUT_HPOS]);
+      COPY_4V(color0[i], machine->Registers[VP_OUT_COL0]);
+      COPY_4V(color1[i], machine->Registers[VP_OUT_COL1]);
+      COPY_4V(bfcolor0[i], machine->Registers[VP_OUT_BFC0]);
+      COPY_4V(bfcolor1[i], machine->Registers[VP_OUT_BFC1]);
+      fog[i] = machine->Registers[VP_OUT_FOGC][0];
+      pointSize[i] = machine->Registers[VP_OUT_PSIZ][0];
+      COPY_4V(texture0[i], machine->Registers[VP_OUT_TEX0]);
+      COPY_4V(texture1[i], machine->Registers[VP_OUT_TEX0]);
+      COPY_4V(texture2[i], machine->Registers[VP_OUT_TEX0]);
+      COPY_4V(texture3[i], machine->Registers[VP_OUT_TEX0]);
+   }
+
+   VB->ColorPtr[0] = &store->color0[0];
+   VB->ColorPtr[1] = &store->color0[1];
+   VB->SecondaryColorPtr[0] = &store->color1[0];
+   VB->SecondaryColorPtr[1] = &store->color1[1];
+   VB->ProjectedClipPtr = &store->clipCoords;
+   VB->FogCoordPtr = &store->fogCoord;
+   VB->PointSizePtr = &store->pointSize;
+   VB->TexCoordPtr[0] = &store->texCoord[0];
+   VB->TexCoordPtr[1] = &store->texCoord[1];
+   VB->TexCoordPtr[2] = &store->texCoord[2];
+   VB->TexCoordPtr[3] = &store->texCoord[3];
+
+#if 000
+
+   GLvector4f *input = ctx->_NeedEyeCoords ? VB->EyePtr : VB->ObjPtr;
+   GLuint ind;
+
+/*     _tnl_print_vert_flags( __FUNCTION__, stage->changed_inputs ); */
+
+   /* Make sure we can talk about elements 0..2 in the vector we are
+    * lighting.
+    */
+   if (stage->changed_inputs & (VERT_EYE|VERT_OBJ_BIT)) {
+      if (input->size <= 2) {
+        if (input->flags & VEC_NOT_WRITEABLE) {
+           ASSERT(VB->importable_data & VERT_OBJ_BIT);
+
+           VB->import_data( ctx, VERT_OBJ_BIT, VEC_NOT_WRITEABLE );
+           input = ctx->_NeedEyeCoords ? VB->EyePtr : VB->ObjPtr;
+
+           ASSERT((input->flags & VEC_NOT_WRITEABLE) == 0);
+        }
+
+        _mesa_vector4f_clean_elem(input, VB->Count, 2);
+      }
+   }
+
+   if (VB->Flag)
+      ind = LIGHT_FLAGS;
+   else
+      ind = 0;
+
+   /* The individual functions know about replaying side-effects
+    * vs. full re-execution. 
+    */
+   store->light_func_tab[ind]( ctx, VB, stage, input );
+#endif
+
+   return GL_TRUE;
+}
+
+
+/* Called in place of do_lighting when the light table may have changed.
+ */
+static GLboolean run_validate_program( GLcontext *ctx,
+                                       struct gl_pipeline_stage *stage )
+{
+#if 000
+   GLuint ind = 0;
+   light_func *tab;
+
+   if (ctx->Visual.rgbMode) {
+      if (ctx->Light._NeedVertices) {
+        if (ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR)
+           tab = _tnl_light_spec_tab;
+        else
+           tab = _tnl_light_tab;
+      }
+      else {
+        if (ctx->Light.EnabledList.next == ctx->Light.EnabledList.prev)
+           tab = _tnl_light_fast_single_tab;
+        else
+           tab = _tnl_light_fast_tab;
+      }
+   }
+   else
+      tab = _tnl_light_ci_tab;
+
+   if (ctx->Light.ColorMaterialEnabled)
+      ind |= LIGHT_COLORMATERIAL;
+
+   if (ctx->Light.Model.TwoSide)
+      ind |= LIGHT_TWOSIDE;
+
+   VP_STAGE_DATA(stage)->light_func_tab = &tab[ind];
+
+   /* This and the above should only be done on _NEW_LIGHT:
+    */
+   _mesa_validate_all_lighting_tables( ctx );
+#endif
+
+   /* Now run the stage...
+    */
+   stage->run = run_vp;
+   return stage->run( ctx, stage );
+}
+
+
+
+#if 0
+static void alloc_4chan( struct gl_client_array *a, GLuint sz )
+{
+   a->Ptr = ALIGN_MALLOC( sz * sizeof(GLchan) * 4, 32 );
+   a->Size = 4;
+   a->Type = CHAN_TYPE;
+   a->Stride = 0;
+   a->StrideB = sizeof(GLchan) * 4;
+   a->Enabled = 0;
+   a->Flags = 0;
+}
+#endif
+
+static void alloc_4float( struct gl_client_array *a, GLuint sz )
+{
+   a->Ptr = ALIGN_MALLOC( sz * sizeof(GLfloat) * 4, 32 );
+   a->Size = 4;
+   a->Type = GL_FLOAT;
+   a->Stride = 0;
+   a->StrideB = sizeof(GLfloat) * 4;
+   a->Enabled = 0;
+   a->Flags = 0;
+}
+
+
+/* Called the first time stage->run is called.  In effect, don't
+ * allocate data until the first time the stage is run.
+ */
+static GLboolean run_init_vp( GLcontext *ctx,
+                              struct gl_pipeline_stage *stage )
+{
+   TNLcontext *tnl = TNL_CONTEXT(ctx);
+   struct vertex_buffer *VB = &(tnl->vb);
+   struct vp_stage_data *store;
+   const GLuint size = VB->Size;
+   GLuint i;
+
+   stage->privatePtr = MALLOC(sizeof(*store));
+   store = VP_STAGE_DATA(stage);
+   if (!store)
+      return GL_FALSE;
+
+   /* The output of a vertex program is: */
+   _mesa_vector4f_alloc( &store->clipCoords, 0, size, 32 );
+   alloc_4float( &store->color0[0], size );
+   alloc_4float( &store->color0[1], size );
+   alloc_4float( &store->color1[0], size );
+   alloc_4float( &store->color1[1], size );
+   for (i = 0 ; i < ctx->Const.MaxTextureUnits ; i++)
+      _mesa_vector4f_alloc( &store->texCoord[i], 0, VB->Size, 32 );
+   _mesa_vector1f_alloc( &store->fogCoord, 0, size, 32 );
+   _mesa_vector1f_alloc( &store->pointSize, 0, size, 32 );
+
+
+   /* Now validate the stage derived data...
+    */
+   stage->run = run_validate_program;
+   return stage->run( ctx, stage );
+}
+
+
+
+/*
+ * Check if vertex program mode is enabled. 
+ * If so, configure the pipeline stage's type, inputs, and outputs.
+ */
+static void check_vp( GLcontext *ctx, struct gl_pipeline_stage *stage )
+{
+   stage->active = ctx->VertexProgram.Enabled;
+   printf("check_vp() active = %d\n", stage->active);
+   if (stage->active) {
+#if 000
+      if (stage->privatePtr)
+        stage->run = run_validate_program;
+      stage->inputs = VERT_NORMAL_BIT|VERT_MATERIAL;
+      if (ctx->Light._NeedVertices)
+        stage->inputs |= VERT_EYE; /* effectively, even when lighting in obj */
+      if (ctx->Light.ColorMaterialEnabled)
+        stage->inputs |= VERT_COLOR0_BIT;
+
+      stage->outputs = VERT_COLOR0_BIT;
+      if (ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR)
+        stage->outputs |= VERT_COLOR1_BIT;
+#endif
+   }
+}
+
+
+static void dtr( struct gl_pipeline_stage *stage )
+{
+   struct vp_stage_data *store = VP_STAGE_DATA(stage);
+
+   if (store) {
+      GLuint i;
+      _mesa_vector4f_free( &store->clipCoords );
+      ALIGN_FREE( store->color0[0].Ptr );
+      ALIGN_FREE( store->color0[1].Ptr );
+      ALIGN_FREE( store->color1[0].Ptr );
+      ALIGN_FREE( store->color1[1].Ptr );
+      for (i = 0 ; i < MAX_TEXTURE_UNITS ; i++)
+        if (store->texCoord[i].data)
+            _mesa_vector4f_free( &store->texCoord[i] );
+      _mesa_vector1f_free( &store->fogCoord );
+      _mesa_vector1f_free( &store->pointSize );
+
+      FREE( store );
+      stage->privatePtr = 0;
+   }
+}
+
+const struct gl_pipeline_stage _tnl_vertex_program_stage =
+{
+   "vertex-program",
+   _NEW_ALL,   /*XXX FIX */    /* recheck */
+   _NEW_ALL,   /*XXX FIX */    /* recalc -- modelview dependency
+                                * otherwise not captured by inputs
+                                * (which may be VERT_OBJ_BIT) */
+   GL_FALSE,                   /* active */
+   0,                          /* inputs */
+   VERT_CLIP | VERT_COLOR0_BIT,                        /* outputs */
+   0,                          /* changed_inputs */
+   NULL,                       /* private_data */
+   dtr,                                /* destroy */
+   check_vp,                   /* check */
+   run_init_vp                 /* run -- initially set to ctr */
+};
index de57eaf..cc8deff 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_vb_render.c,v 1.24 2001/12/03 17:48:58 keithw Exp $ */
+/* $Id: t_vb_render.c,v 1.25 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -282,7 +282,6 @@ static GLboolean run_render( GLcontext *ctx,
    render_func *tab;
    GLint pass = 0;
 
-
    /* Allow the drivers to lock before projected verts are built so
     * that window coordinates are guarenteed not to change before
     * rendering.
@@ -354,10 +353,10 @@ static void check_render( GLcontext *ctx, struct gl_pipeline_stage *stage )
    GLuint i;
 
    if (ctx->Visual.rgbMode) {
-      inputs |= VERT_RGBA;
+      inputs |= VERT_COLOR0_BIT;
 
       if (ctx->_TriangleCaps & DD_SEPARATE_SPECULAR)
-        inputs |= VERT_SPEC_RGB;
+        inputs |= VERT_COLOR1_BIT;
 
       if (ctx->Texture._ReallyEnabled) {
         for (i = 0 ; i < ctx->Const.MaxTextureUnits ; i++) {
@@ -367,7 +366,7 @@ static void check_render( GLcontext *ctx, struct gl_pipeline_stage *stage )
       }
    }
    else {
-      inputs |= VERT_INDEX;
+      inputs |= VERT_INDEX_BIT;
    }
 
    if (ctx->Point._Attenuated)
@@ -376,10 +375,10 @@ static void check_render( GLcontext *ctx, struct gl_pipeline_stage *stage )
    /* How do drivers turn this off?
     */
    if (ctx->Fog.Enabled)
-      inputs |= VERT_FOG_COORD;
+      inputs |= VERT_FOG_BIT;
 
    if (ctx->_TriangleCaps & DD_TRI_UNFILLED)
-      inputs |= VERT_EDGE;
+      inputs |= VERT_EDGEFLAG_BIT;
 
    if (ctx->RenderMode==GL_FEEDBACK)
       inputs |= VERT_TEX_ANY;
@@ -397,7 +396,7 @@ static void dtr( struct gl_pipeline_stage *stage )
 
 const struct gl_pipeline_stage _tnl_render_stage =
 {
-   "render",
+   "render",                   /* name */
    (_NEW_BUFFERS |
     _DD_NEW_SEPARATE_SPECULAR |
     _DD_NEW_FLATSHADE |
@@ -408,9 +407,11 @@ const struct gl_pipeline_stage _tnl_render_stage =
     _DD_NEW_TRI_UNFILLED |
     _NEW_RENDERMODE),          /* re-check (new inputs, interp function) */
    0,                          /* re-run (always runs) */
-   GL_TRUE,                    /* active */
-   0, 0,                       /* inputs (set in check_render), outputs */
-   0, 0,                       /* changed_inputs, private */
+   GL_TRUE,                    /* active? */
+   0,                          /* inputs (set in check_render) */
+   0,                          /* outputs */
+   0,                          /* changed_inputs */
+   NULL,                       /* private data */
    dtr,                                /* destructor */
    check_render,               /* check */
    run_render                  /* run */
index bdf5c63..90dff30 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_vb_texgen.c,v 1.9 2001/04/26 14:53:48 keithw Exp $ */
+/* $Id: t_vb_texgen.c,v 1.10 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -529,7 +529,7 @@ static GLboolean run_texgen_stage( GLcontext *ctx,
 
    for (i = 0 ; i < ctx->Const.MaxTextureUnits ; i++)
       if (ctx->Texture._TexGenEnabled & ENABLE_TEXGEN(i)) {
-        if (stage->changed_inputs & (VERT_EYE | VERT_NORM | VERT_TEX(i)))
+        if (stage->changed_inputs & (VERT_EYE | VERT_NORMAL_BIT | VERT_TEX(i)))
            store->TexgenFunc[i]( ctx, store, i );
 
         VB->TexCoordPtr[i] = &store->texcoord[i];
@@ -591,18 +591,18 @@ static void check_texgen( GLcontext *ctx, struct gl_pipeline_stage *stage )
    GLuint i;
    stage->active = 0;
 
-   if (ctx->Texture._TexGenEnabled) {
+   if (ctx->Texture._TexGenEnabled && !ctx->VertexProgram.Enabled) {
       GLuint inputs = 0;
       GLuint outputs = 0;
 
       if (ctx->Texture._GenFlags & TEXGEN_OBJ_LINEAR)
-        inputs |= VERT_OBJ;
+        inputs |= VERT_OBJ_BIT;
 
       if (ctx->Texture._GenFlags & TEXGEN_NEED_EYE_COORD)
         inputs |= VERT_EYE;
 
       if (ctx->Texture._GenFlags & TEXGEN_NEED_NORMALS)
-        inputs |= VERT_NORM;
+        inputs |= VERT_NORMAL_BIT;
 
       for (i = 0 ; i < ctx->Const.MaxTextureUnits ; i++)
         if (ctx->Texture._TexGenEnabled & ENABLE_TEXGEN(i))
@@ -678,11 +678,14 @@ static void free_texgen_data( struct gl_pipeline_stage *stage )
 
 const struct gl_pipeline_stage _tnl_texgen_stage =
 {
-   "texgen",
+   "texgen",                   /* name */
    _NEW_TEXTURE,               /* when to call check() */
    _NEW_TEXTURE,               /* when to invalidate stored data */
-   0,0,0,                      /* active, inputs, outputs */
-   0,0,                                /* changed_inputs, private */
+   GL_FALSE,                   /* active? */
+   0,                          /* inputs */
+   0,                          /* outputs */
+   0,                          /* changed_inputs */
+   NULL,                       /* private data */
    free_texgen_data,           /* destructor */
    check_texgen,               /* check */
    alloc_texgen_data           /* run -- initially set to alloc data */
index 2eb6c94..a0ed3e5 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_vb_texmat.c,v 1.5 2001/03/29 21:16:26 keithw Exp $ */
+/* $Id: t_vb_texmat.c,v 1.6 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -60,7 +60,7 @@ static void check_texmat( GLcontext *ctx, struct gl_pipeline_stage *stage )
    GLuint i;
    stage->active = 0;
 
-   if (ctx->Texture._TexMatEnabled) {
+   if (ctx->Texture._TexMatEnabled && !ctx->VertexProgram.Enabled) {
       GLuint flags = 0;
 
       for (i = 0 ; i < ctx->Const.MaxTextureUnits ; i++)
@@ -137,12 +137,15 @@ static void free_texmat_data( struct gl_pipeline_stage *stage )
 
 const struct gl_pipeline_stage _tnl_texture_transform_stage =
 {
-   "texture transform",
-   _NEW_TEXTURE|_NEW_TEXTURE_MATRIX,
-   _NEW_TEXTURE|_NEW_TEXTURE_MATRIX,
-   0,0,0,                      /* active, inputs, outputs */
-   0,0,                                /* changed_inputs, private */
-   free_texmat_data,           /* destructor */
-   check_texmat,               /* check */
-   alloc_texmat_data,          /* run -- initially set to init */
+   "texture transform",                        /* name */
+   _NEW_TEXTURE|_NEW_TEXTURE_MATRIX,   /* check_state */
+   _NEW_TEXTURE|_NEW_TEXTURE_MATRIX,   /* run_state */
+   GL_FALSE,                           /* active? */
+   0,                                  /* inputs */
+   0,                                  /* outputs */
+   0,                                  /* changed_inputs */
+   NULL,                               /* private data */
+   free_texmat_data,                   /* destructor */
+   check_texmat,                       /* check */
+   alloc_texmat_data,                  /* run -- initially set to init */
 };
index d9baed3..f54d73b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: t_vb_vertex.c,v 1.9 2001/05/30 10:01:41 keithw Exp $ */
+/* $Id: t_vb_vertex.c,v 1.10 2001/12/14 02:51:45 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -170,7 +170,7 @@ static GLboolean run_vertex_stage( GLcontext *ctx,
       if (VB->ClipPtr->size < 4) {
         if (VB->ClipPtr->flags & VEC_NOT_WRITEABLE) {
            ASSERT(VB->ClipPtr == VB->ObjPtr);
-           VB->import_data( ctx, VERT_OBJ, VEC_NOT_WRITEABLE );
+           VB->import_data( ctx, VERT_OBJ_BIT, VEC_NOT_WRITEABLE );
            VB->ClipPtr = VB->ObjPtr;
         }
         if (VB->ClipPtr->size == 2)
@@ -222,7 +222,7 @@ static GLboolean run_vertex_stage( GLcontext *ctx,
       VB->ClipOrMask = store->ormask;
       VB->ClipMask = store->clipmask;
 
-      if (VB->ClipPtr == VB->ObjPtr && (VB->importable_data & VERT_OBJ))
+      if (VB->ClipPtr == VB->ObjPtr && (VB->importable_data & VERT_OBJ_BIT))
         VB->importable_data |= VERT_CLIP;
 
       store->save_eyeptr = VB->EyePtr;
@@ -237,7 +237,7 @@ static GLboolean run_vertex_stage( GLcontext *ctx,
       VB->ProjectedClipPtr = store->save_projptr;
       VB->ClipMask = store->clipmask;
       VB->ClipOrMask = store->ormask;
-      if (VB->ClipPtr == VB->ObjPtr && (VB->importable_data & VERT_OBJ))
+      if (VB->ClipPtr == VB->ObjPtr && (VB->importable_data & VERT_OBJ_BIT))
         VB->importable_data |= VERT_CLIP;
       if (store->andmask)
         return GL_FALSE;
@@ -249,8 +249,7 @@ static GLboolean run_vertex_stage( GLcontext *ctx,
 
 static void check_vertex( GLcontext *ctx, struct gl_pipeline_stage *stage )
 {
-   (void) ctx;
-   (void) stage;
+   stage->active = !ctx->VertexProgram.Enabled;
 }
 
 static GLboolean init_vertex_stage( GLcontext *ctx,
@@ -308,9 +307,10 @@ const struct gl_pipeline_stage _tnl_vertex_transform_stage =
    _NEW_PROJECTION|
    _NEW_TRANSFORM,             /* re-run */
    GL_TRUE,                    /* active */
-   VERT_OBJ,           /* inputs */
+   VERT_OBJ_BIT,               /* inputs */
    VERT_EYE|VERT_CLIP,         /* outputs */
-   0, 0,                       /* changed_inputs, private */
+   0,                          /* changed_inputs */
+   NULL,                       /* private data */
    dtr,                                /* destructor */
    check_vertex,               /* check */
    init_vertex_stage           /* run -- initially set to init */
index 1b43923..82d72ab 100644 (file)
@@ -4123,5 +4123,389 @@ GL_PREFIX(WindowPos3svARB):
        MOV_L(GLNAME(_glapi_Dispatch), EAX)
        JMP(GL_OFFSET(_gloffset_WindowPos3svARB))
 
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(BindProgramNV))
+GL_PREFIX(BindProgramNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_BindProgramNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(DeleteProgramsNV))
+GL_PREFIX(DeleteProgramsNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_DeleteProgramsNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(ExecuteProgramNV))
+GL_PREFIX(ExecuteProgramNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_ExecuteProgramNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(GenProgramsNV))
+GL_PREFIX(GenProgramsNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_GenProgramsNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(AreProgramsResidentNV))
+GL_PREFIX(AreProgramsResidentNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_AreProgramsResidentNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(RequestResidentProgramsNV))
+GL_PREFIX(RequestResidentProgramsNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_RequestResidentProgramsNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(GetProgramParameterfvNV))
+GL_PREFIX(GetProgramParameterfvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_GetProgramParameterfvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(GetProgramParameterdvNV))
+GL_PREFIX(GetProgramParameterdvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_GetProgramParameterdvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(GetProgramivNV))
+GL_PREFIX(GetProgramivNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_GetProgramivNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(GetProgramStringNV))
+GL_PREFIX(GetProgramStringNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_GetProgramStringNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(GetTrackMatrixivNV))
+GL_PREFIX(GetTrackMatrixivNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_GetTrackMatrixivNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(GetVertexAttribdvNV))
+GL_PREFIX(GetVertexAttribdvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_GetVertexAttribdvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(GetVertexAttribfvNV))
+GL_PREFIX(GetVertexAttribfvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_GetVertexAttribfvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(GetVertexAttribivNV))
+GL_PREFIX(GetVertexAttribivNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_GetVertexAttribivNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(GetVertexAttribPointervNV))
+GL_PREFIX(GetVertexAttribPointervNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_GetVertexAttribPointervNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(IsProgramNV))
+GL_PREFIX(IsProgramNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_IsProgramNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(LoadProgramNV))
+GL_PREFIX(LoadProgramNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_LoadProgramNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(ProgramParameter4fNV))
+GL_PREFIX(ProgramParameter4fNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_ProgramParameter4fNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(ProgramParameter4dNV))
+GL_PREFIX(ProgramParameter4dNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_ProgramParameter4dNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(ProgramParameter4dvNV))
+GL_PREFIX(ProgramParameter4dvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_ProgramParameter4dvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(ProgramParameter4fvNV))
+GL_PREFIX(ProgramParameter4fvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_ProgramParameter4fvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(ProgramParameters4dvNV))
+GL_PREFIX(ProgramParameters4dvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_ProgramParameters4dvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(ProgramParameters4fvNV))
+GL_PREFIX(ProgramParameters4fvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_ProgramParameters4fvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(TrackMatrixNV))
+GL_PREFIX(TrackMatrixNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_TrackMatrixNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttribPointerNV))
+GL_PREFIX(VertexAttribPointerNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttribPointerNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib1sNV))
+GL_PREFIX(VertexAttrib1sNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib1sNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib1fNV))
+GL_PREFIX(VertexAttrib1fNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib1fNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib1dNV))
+GL_PREFIX(VertexAttrib1dNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib1dNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib2sNV))
+GL_PREFIX(VertexAttrib2sNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib2sNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib2fNV))
+GL_PREFIX(VertexAttrib2fNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib2fNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib2dNV))
+GL_PREFIX(VertexAttrib2dNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib2dNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib3sNV))
+GL_PREFIX(VertexAttrib3sNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib3sNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib3fNV))
+GL_PREFIX(VertexAttrib3fNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib3fNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib3dNV))
+GL_PREFIX(VertexAttrib3dNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib3dNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib4sNV))
+GL_PREFIX(VertexAttrib4sNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib4sNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib4fNV))
+GL_PREFIX(VertexAttrib4fNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib4fNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib4dNV))
+GL_PREFIX(VertexAttrib4dNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib4dNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib4ubNV))
+GL_PREFIX(VertexAttrib4ubNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib4ubNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib1svNV))
+GL_PREFIX(VertexAttrib1svNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib1svNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib1fvNV))
+GL_PREFIX(VertexAttrib1fvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib1fvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib1dvNV))
+GL_PREFIX(VertexAttrib1dvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib1dvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib2svNV))
+GL_PREFIX(VertexAttrib2svNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib2svNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib2fvNV))
+GL_PREFIX(VertexAttrib2fvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib2fvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib2dvNV))
+GL_PREFIX(VertexAttrib2dvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib2dvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib3svNV))
+GL_PREFIX(VertexAttrib3svNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib3svNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib3fvNV))
+GL_PREFIX(VertexAttrib3fvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib3fvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib3dvNV))
+GL_PREFIX(VertexAttrib3dvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib3dvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib4svNV))
+GL_PREFIX(VertexAttrib4svNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib4svNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib4fvNV))
+GL_PREFIX(VertexAttrib4fvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib4fvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib4dvNV))
+GL_PREFIX(VertexAttrib4dvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib4dvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttrib4ubvNV))
+GL_PREFIX(VertexAttrib4ubvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttrib4ubvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttribs1svNV))
+GL_PREFIX(VertexAttribs1svNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttribs1svNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttribs1fvNV))
+GL_PREFIX(VertexAttribs1fvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttribs1fvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttribs1dvNV))
+GL_PREFIX(VertexAttribs1dvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttribs1dvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttribs2svNV))
+GL_PREFIX(VertexAttribs2svNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttribs2svNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttribs2fvNV))
+GL_PREFIX(VertexAttribs2fvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttribs2fvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttribs2dvNV))
+GL_PREFIX(VertexAttribs2dvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttribs2dvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttribs3svNV))
+GL_PREFIX(VertexAttribs3svNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttribs3svNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttribs3fvNV))
+GL_PREFIX(VertexAttribs3fvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttribs3fvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttribs3dvNV))
+GL_PREFIX(VertexAttribs3dvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttribs3dvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttribs4svNV))
+GL_PREFIX(VertexAttribs4svNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttribs4svNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttribs4fvNV))
+GL_PREFIX(VertexAttribs4fvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttribs4fvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttribs4dvNV))
+GL_PREFIX(VertexAttribs4dvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttribs4dvNV))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(VertexAttribs4ubvNV))
+GL_PREFIX(VertexAttribs4ubvNV):
+       MOV_L(GLNAME(_glapi_Dispatch), EAX)
+       JMP(GL_OFFSET(_gloffset_VertexAttribs4ubvNV))
+
 
 #endif  /* __WIN32__ */