Minor tweaks to help out at a driver level.
[mesa.git] / src / mesa / main / dlist.c
index c547a2c74db0276bf982b0f733d7e6208156c3cd..386744fdea918c4131d2f041fe3aada6a4593745 100644 (file)
@@ -5,9 +5,9 @@
 
 /*
  * Mesa 3-D graphics library
- * Version:  5.1
+ * Version:  6.0
  *
- * Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2004  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"),
@@ -170,7 +170,6 @@ typedef enum {
        OPCODE_BITMAP,
        OPCODE_BLEND_COLOR,
        OPCODE_BLEND_EQUATION,
-       OPCODE_BLEND_FUNC,
        OPCODE_BLEND_FUNC_SEPARATE,
         OPCODE_CALL_LIST,
         OPCODE_CALL_LIST_OFFSET,
@@ -629,7 +628,6 @@ void _mesa_init_lists( void )
       InstSize[OPCODE_BITMAP] = 8;
       InstSize[OPCODE_BLEND_COLOR] = 5;
       InstSize[OPCODE_BLEND_EQUATION] = 2;
-      InstSize[OPCODE_BLEND_FUNC] = 3;
       InstSize[OPCODE_BLEND_FUNC_SEPARATE] = 5;
       InstSize[OPCODE_CALL_LIST] = 2;
       InstSize[OPCODE_CALL_LIST_OFFSET] = 3;
@@ -958,22 +956,6 @@ static void GLAPIENTRY save_BlendEquation( GLenum mode )
 }
 
 
-static void GLAPIENTRY save_BlendFunc( GLenum sfactor, GLenum dfactor )
-{
-   GET_CURRENT_CONTEXT(ctx);
-   Node *n;
-   ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
-   n = ALLOC_INSTRUCTION( ctx, OPCODE_BLEND_FUNC, 2 );
-   if (n) {
-      n[1].e = sfactor;
-      n[2].e = dfactor;
-   }
-   if (ctx->ExecuteFlag) {
-      (*ctx->Exec->BlendFunc)( sfactor, dfactor );
-   }
-}
-
-
 static void GLAPIENTRY save_BlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB,
                                       GLenum sfactorA, GLenum dfactorA)
 {
@@ -4670,7 +4652,7 @@ static void save_Attr4f( GLenum attr, GLfloat x, GLfloat y, GLfloat z,
    }
 }
 
-static void save_EvalCoord1f( GLfloat x )
+static void GLAPIENTRY save_EvalCoord1f( GLfloat x )
 {
    GET_CURRENT_CONTEXT(ctx);
    Node *n;
@@ -4684,12 +4666,12 @@ static void save_EvalCoord1f( GLfloat x )
    }
 }
 
-static void save_EvalCoord1fv( const GLfloat *v )
+static void GLAPIENTRY save_EvalCoord1fv( const GLfloat *v )
 {
    save_EvalCoord1f( v[0] );
 }
 
-static void save_EvalCoord2f( GLfloat x, GLfloat y )
+static void GLAPIENTRY save_EvalCoord2f( GLfloat x, GLfloat y )
 {
    GET_CURRENT_CONTEXT(ctx);
    Node *n;
@@ -4704,13 +4686,13 @@ static void save_EvalCoord2f( GLfloat x, GLfloat y )
    }
 }
 
-static void save_EvalCoord2fv( const GLfloat *v )
+static void GLAPIENTRY save_EvalCoord2fv( const GLfloat *v )
 {
    save_EvalCoord2f( v[0], v[1] );
 }
 
 
-static void save_EvalPoint1( GLint x )
+static void GLAPIENTRY save_EvalPoint1( GLint x )
 {
    GET_CURRENT_CONTEXT(ctx);
    Node *n;
@@ -4724,7 +4706,7 @@ static void save_EvalPoint1( GLint x )
    }
 }
 
-static void save_EvalPoint2( GLint x, GLint y )
+static void GLAPIENTRY save_EvalPoint2( GLint x, GLint y )
 {
    GET_CURRENT_CONTEXT(ctx);
    Node *n;
@@ -4739,7 +4721,7 @@ static void save_EvalPoint2( GLint x, GLint y )
    }
 }
 
-static void save_Indexf( GLfloat x )
+static void GLAPIENTRY save_Indexf( GLfloat x )
 {
    GET_CURRENT_CONTEXT(ctx);
    Node *n;
@@ -4753,16 +4735,16 @@ static void save_Indexf( GLfloat x )
    ctx->ListState.CurrentIndex = x;
 
    if (ctx->ExecuteFlag) {
-      (*ctx->Exec->Indexi)( x );
+      (*ctx->Exec->Indexi)( (GLint) x );
    }
 }
 
-static void save_Indexfv( const GLfloat *v )
+static void GLAPIENTRY save_Indexfv( const GLfloat *v )
 {
    save_Indexf( v[0] );
 }
 
-static void save_EdgeFlag( GLboolean x )
+static void GLAPIENTRY save_EdgeFlag( GLboolean x )
 {
    GET_CURRENT_CONTEXT(ctx);
    Node *n;
@@ -4780,12 +4762,12 @@ static void save_EdgeFlag( GLboolean x )
    }
 }
 
-static void save_EdgeFlagv( const GLboolean *v )
+static void GLAPIENTRY save_EdgeFlagv( const GLboolean *v )
 {
    save_EdgeFlag( v[0] );
 }
 
-static void save_Materialfv( GLenum face, GLenum pname, const GLfloat *param )
+static void GLAPIENTRY save_Materialfv( GLenum face, GLenum pname, const GLfloat *param )
 {
    GET_CURRENT_CONTEXT(ctx);
    Node *n;
@@ -4844,7 +4826,7 @@ static void save_Materialfv( GLenum face, GLenum pname, const GLfloat *param )
    }
 }
 
-static void save_Begin( GLenum mode )
+static void GLAPIENTRY save_Begin( GLenum mode )
 {
    GET_CURRENT_CONTEXT(ctx);
    Node *n;
@@ -4888,7 +4870,7 @@ static void save_Begin( GLenum mode )
    }
 }
 
-static void save_End( void )
+static void GLAPIENTRY save_End( void )
 {
    GET_CURRENT_CONTEXT(ctx);
    SAVE_FLUSH_VERTICES( ctx );
@@ -4899,7 +4881,7 @@ static void save_End( void )
    }
 }
 
-static void save_Rectf( GLfloat a, GLfloat b,
+static void GLAPIENTRY save_Rectf( GLfloat a, GLfloat b,
                        GLfloat c, GLfloat d )
 {
    GET_CURRENT_CONTEXT(ctx);
@@ -4919,122 +4901,122 @@ static void save_Rectf( GLfloat a, GLfloat b,
 
 /*
  */
-static void save_Vertex2f( GLfloat x, GLfloat y )
+static void GLAPIENTRY save_Vertex2f( GLfloat x, GLfloat y )
 {
    save_Attr2f( VERT_ATTRIB_POS, x, y );
 }
 
-static void save_Vertex2fv( const GLfloat *v )
+static void GLAPIENTRY save_Vertex2fv( const GLfloat *v )
 {
    save_Attr2f( VERT_ATTRIB_POS, v[0], v[1] );
 }
 
-static void save_Vertex3f( GLfloat x, GLfloat y, GLfloat z )
+static void GLAPIENTRY save_Vertex3f( GLfloat x, GLfloat y, GLfloat z )
 {
    save_Attr3f( VERT_ATTRIB_POS, x, y, z );
 }
 
-static void save_Vertex3fv( const GLfloat *v )
+static void GLAPIENTRY save_Vertex3fv( const GLfloat *v )
 {
    save_Attr3f( VERT_ATTRIB_POS, v[0], v[1], v[2] );
 }
 
-static void save_Vertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
+static void GLAPIENTRY save_Vertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
 {
    save_Attr4f( VERT_ATTRIB_POS, x, y, z, w );
 }
 
-static void save_Vertex4fv( const GLfloat *v )
+static void GLAPIENTRY save_Vertex4fv( const GLfloat *v )
 {
    save_Attr4f( VERT_ATTRIB_POS, v[0], v[1], v[2], v[3] );
 }
 
-static void save_TexCoord1f( GLfloat x )
+static void GLAPIENTRY save_TexCoord1f( GLfloat x )
 {
    save_Attr1f( VERT_ATTRIB_TEX0, x );
 }
 
-static void save_TexCoord1fv( const GLfloat *v )
+static void GLAPIENTRY save_TexCoord1fv( const GLfloat *v )
 {
    save_Attr1f( VERT_ATTRIB_TEX0, v[0] );
 }
 
-static void save_TexCoord2f( GLfloat x, GLfloat y )
+static void GLAPIENTRY save_TexCoord2f( GLfloat x, GLfloat y )
 {
    save_Attr2f( VERT_ATTRIB_TEX0, x, y );
 }
 
-static void save_TexCoord2fv( const GLfloat *v )
+static void GLAPIENTRY save_TexCoord2fv( const GLfloat *v )
 {
    save_Attr2f( VERT_ATTRIB_TEX0, v[0], v[1] );
 }
 
-static void save_TexCoord3f( GLfloat x, GLfloat y, GLfloat z )
+static void GLAPIENTRY save_TexCoord3f( GLfloat x, GLfloat y, GLfloat z )
 {
    save_Attr3f( VERT_ATTRIB_TEX0, x, y, z );
 }
 
-static void save_TexCoord3fv( const GLfloat *v )
+static void GLAPIENTRY save_TexCoord3fv( const GLfloat *v )
 {
    save_Attr3f( VERT_ATTRIB_TEX0, v[0], v[1], v[2] );
 }
 
-static void save_TexCoord4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
+static void GLAPIENTRY save_TexCoord4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
 {
    save_Attr4f( VERT_ATTRIB_TEX0, x, y, z, w );
 }
 
-static void save_TexCoord4fv( const GLfloat *v )
+static void GLAPIENTRY save_TexCoord4fv( const GLfloat *v )
 {
    save_Attr4f( VERT_ATTRIB_TEX0, v[0], v[1], v[2], v[3] );
 }
 
-static void save_Normal3f( GLfloat x, GLfloat y, GLfloat z )
+static void GLAPIENTRY save_Normal3f( GLfloat x, GLfloat y, GLfloat z )
 {
    save_Attr3f( VERT_ATTRIB_NORMAL, x, y, z );
 }
 
-static void save_Normal3fv( const GLfloat *v )
+static void GLAPIENTRY save_Normal3fv( const GLfloat *v )
 {
    save_Attr3f( VERT_ATTRIB_NORMAL, v[0], v[1], v[2] );
 }
 
-static void save_FogCoordfEXT( GLfloat x )
+static void GLAPIENTRY save_FogCoordfEXT( GLfloat x )
 {
    save_Attr1f( VERT_ATTRIB_FOG, x );
 }
 
-static void save_FogCoordfvEXT( const GLfloat *v )
+static void GLAPIENTRY save_FogCoordfvEXT( const GLfloat *v )
 {
    save_Attr1f( VERT_ATTRIB_FOG, v[0] );
 }
 
-static void save_Color3f( GLfloat x, GLfloat y, GLfloat z )
+static void GLAPIENTRY save_Color3f( GLfloat x, GLfloat y, GLfloat z )
 {
    save_Attr3f( VERT_ATTRIB_COLOR0, x, y, z );
 }
 
-static void save_Color3fv( const GLfloat *v )
+static void GLAPIENTRY save_Color3fv( const GLfloat *v )
 {
    save_Attr3f( VERT_ATTRIB_COLOR0, v[0], v[1], v[2] );
 }
 
-static void save_Color4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
+static void GLAPIENTRY save_Color4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
 {
    save_Attr4f( VERT_ATTRIB_COLOR0, x, y, z, w );
 }
 
-static void save_Color4fv( const GLfloat *v )
+static void GLAPIENTRY save_Color4fv( const GLfloat *v )
 {
    save_Attr4f( VERT_ATTRIB_COLOR0, v[0], v[1], v[2], v[3] );
 }
 
-static void save_SecondaryColor3fEXT( GLfloat x, GLfloat y, GLfloat z )
+static void GLAPIENTRY save_SecondaryColor3fEXT( GLfloat x, GLfloat y, GLfloat z )
 {
    save_Attr3f( VERT_ATTRIB_COLOR1, x, y, z );
 }
 
-static void save_SecondaryColor3fvEXT( const GLfloat *v )
+static void GLAPIENTRY save_SecondaryColor3fvEXT( const GLfloat *v )
 {
    save_Attr3f( VERT_ATTRIB_COLOR1, v[0], v[1], v[2] );
 }
@@ -5042,58 +5024,58 @@ static void save_SecondaryColor3fvEXT( const GLfloat *v )
 
 /* Just call the respective ATTR for texcoord
  */
-static void save_MultiTexCoord1f( GLenum target, GLfloat x  )
+static void GLAPIENTRY save_MultiTexCoord1f( GLenum target, GLfloat x  )
 {
    GLuint attr = (target & 0x7) + VERT_ATTRIB_TEX0;
    save_Attr1f( attr, x );
 }
 
-static void save_MultiTexCoord1fv( GLenum target, const GLfloat *v )
+static void GLAPIENTRY save_MultiTexCoord1fv( GLenum target, const GLfloat *v )
 {
    GLuint attr = (target & 0x7) + VERT_ATTRIB_TEX0;
    save_Attr1f( attr, v[0] );
 }
 
-static void save_MultiTexCoord2f( GLenum target, GLfloat x, GLfloat y )
+static void GLAPIENTRY save_MultiTexCoord2f( GLenum target, GLfloat x, GLfloat y )
 {
    GLuint attr = (target & 0x7) + VERT_ATTRIB_TEX0;
    save_Attr2f( attr, x, y );
 }
 
-static void save_MultiTexCoord2fv( GLenum target, const GLfloat *v )
+static void GLAPIENTRY save_MultiTexCoord2fv( GLenum target, const GLfloat *v )
 {
    GLuint attr = (target & 0x7) + VERT_ATTRIB_TEX0;
    save_Attr2f( attr, v[0], v[1] );
 }
 
-static void save_MultiTexCoord3f( GLenum target, GLfloat x, GLfloat y,
+static void GLAPIENTRY save_MultiTexCoord3f( GLenum target, GLfloat x, GLfloat y,
                                    GLfloat z)
 {
    GLuint attr = (target & 0x7) + VERT_ATTRIB_TEX0;
    save_Attr3f( attr, x, y, z );
 }
 
-static void save_MultiTexCoord3fv( GLenum target, const GLfloat *v )
+static void GLAPIENTRY save_MultiTexCoord3fv( GLenum target, const GLfloat *v )
 {
    GLuint attr = (target & 0x7) + VERT_ATTRIB_TEX0;
    save_Attr3f( attr, v[0], v[1], v[2] );
 }
 
-static void save_MultiTexCoord4f( GLenum target, GLfloat x, GLfloat y,
+static void GLAPIENTRY save_MultiTexCoord4f( GLenum target, GLfloat x, GLfloat y,
                                  GLfloat z, GLfloat w )
 {
    GLuint attr = (target & 0x7) + VERT_ATTRIB_TEX0;
    save_Attr4f( attr, x, y, z, w );
 }
 
-static void save_MultiTexCoord4fv( GLenum target, const GLfloat *v )
+static void GLAPIENTRY save_MultiTexCoord4fv( GLenum target, const GLfloat *v )
 {
    GLuint attr = (target & 0x7) + VERT_ATTRIB_TEX0;
    save_Attr4f( attr, v[0], v[1], v[2], v[3] );
 }
 
 
-static void enum_error(
+static void enum_error( void )
 {
    GET_CURRENT_CONTEXT( ctx );
    _mesa_error( ctx, GL_INVALID_ENUM, "VertexAttribfNV" );
@@ -5103,7 +5085,7 @@ static void enum_error()
  *
  * Check for errors at compile time?.
  */
-static void save_VertexAttrib1fNV( GLuint index, GLfloat x )
+static void GLAPIENTRY save_VertexAttrib1fNV( GLuint index, GLfloat x )
 {
    if (index < VERT_ATTRIB_MAX)
       save_Attr1f( index, x );
@@ -5111,7 +5093,7 @@ static void save_VertexAttrib1fNV( GLuint index, GLfloat x )
       enum_error(); 
 }
 
-static void save_VertexAttrib1fvNV( GLuint index, const GLfloat *v )
+static void GLAPIENTRY save_VertexAttrib1fvNV( GLuint index, const GLfloat *v )
 {
    if (index < VERT_ATTRIB_MAX)
       save_Attr1f( index, v[0] );
@@ -5119,7 +5101,7 @@ static void save_VertexAttrib1fvNV( GLuint index, const GLfloat *v )
       enum_error();
 }
 
-static void save_VertexAttrib2fNV( GLuint index, GLfloat x, GLfloat y )
+static void GLAPIENTRY save_VertexAttrib2fNV( GLuint index, GLfloat x, GLfloat y )
 {
    if (index < VERT_ATTRIB_MAX)
       save_Attr2f( index, x, y );
@@ -5127,7 +5109,7 @@ static void save_VertexAttrib2fNV( GLuint index, GLfloat x, GLfloat y )
       enum_error();
 }
 
-static void save_VertexAttrib2fvNV( GLuint index, const GLfloat *v )
+static void GLAPIENTRY save_VertexAttrib2fvNV( GLuint index, const GLfloat *v )
 {
    if (index < VERT_ATTRIB_MAX)
       save_Attr2f( index, v[0], v[1] );
@@ -5135,7 +5117,7 @@ static void save_VertexAttrib2fvNV( GLuint index, const GLfloat *v )
       enum_error();
 }
 
-static void save_VertexAttrib3fNV( GLuint index, GLfloat x, GLfloat y, 
+static void GLAPIENTRY save_VertexAttrib3fNV( GLuint index, GLfloat x, GLfloat y, 
                                   GLfloat z )
 {
    if (index < VERT_ATTRIB_MAX)
@@ -5144,7 +5126,7 @@ static void save_VertexAttrib3fNV( GLuint index, GLfloat x, GLfloat y,
       enum_error();
 }
 
-static void save_VertexAttrib3fvNV( GLuint index, const GLfloat *v )
+static void GLAPIENTRY save_VertexAttrib3fvNV( GLuint index, const GLfloat *v )
 {
    if (index < VERT_ATTRIB_MAX)
       save_Attr3f( index, v[0], v[1], v[2] );
@@ -5152,7 +5134,7 @@ static void save_VertexAttrib3fvNV( GLuint index, const GLfloat *v )
       enum_error();
 }
 
-static void save_VertexAttrib4fNV( GLuint index, GLfloat x, GLfloat y,
+static void GLAPIENTRY save_VertexAttrib4fNV( GLuint index, GLfloat x, GLfloat y,
                                   GLfloat z, GLfloat w )
 {
    if (index < VERT_ATTRIB_MAX)
@@ -5161,7 +5143,7 @@ static void save_VertexAttrib4fNV( GLuint index, GLfloat x, GLfloat y,
       enum_error();
 }
 
-static void save_VertexAttrib4fvNV( GLuint index, const GLfloat *v )
+static void GLAPIENTRY save_VertexAttrib4fvNV( GLuint index, const GLfloat *v )
 {
    if (index < VERT_ATTRIB_MAX)
       save_Attr4f( index, v[0], v[1], v[2], v[3] );
@@ -5284,9 +5266,6 @@ execute_list( GLcontext *ctx, GLuint list )
         case OPCODE_BLEND_EQUATION:
            (*ctx->Exec->BlendEquation)( n[1].e );
            break;
-        case OPCODE_BLEND_FUNC:
-           (*ctx->Exec->BlendFunc)( n[1].e, n[2].e );
-           break;
         case OPCODE_BLEND_FUNC_SEPARATE:
            (*ctx->Exec->BlendFuncSeparateEXT)(n[1].e, n[2].e, n[3].e, n[4].e);
            break;
@@ -6129,7 +6108,7 @@ _mesa_NewList( GLuint list, GLenum mode )
 
    /* Allocate new display list */
    ctx->ListState.CurrentListNum = list;
-   ctx->ListState.CurrentBlock = (Node *) MALLOC( sizeof(Node) * BLOCK_SIZE );
+   ctx->ListState.CurrentBlock = (Node *) CALLOC( sizeof(Node) * BLOCK_SIZE );
    ctx->ListState.CurrentListPtr = ctx->ListState.CurrentBlock;
    ctx->ListState.CurrentPos = 0;
 
@@ -6994,7 +6973,6 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize )
    table->Accum = save_Accum;
    table->AlphaFunc = save_AlphaFunc;
    table->Bitmap = save_Bitmap;
-   table->BlendFunc = save_BlendFunc;
    table->CallList = _mesa_save_CallList;
    table->CallLists = _mesa_save_CallLists;
    table->Clear = save_Clear;