on r200, don't emit fog coords when fog isn't actually enabled. Fix bug with vtxfmt...
authorRoland Scheidegger <rscheidegger@gmx.ch>
Tue, 18 Oct 2005 13:09:53 +0000 (13:09 +0000)
committerRoland Scheidegger <rscheidegger@gmx.ch>
Tue, 18 Oct 2005 13:09:53 +0000 (13:09 +0000)
src/mesa/drivers/dri/r200/r200_tcl.c
src/mesa/drivers/dri/r200/r200_vtxfmt.c
src/mesa/drivers/dri/radeon/radeon_maos_arrays.c

index 55e7b490794564cc2766470ab5c2fbea3c314096..f6461a164e6a3f12c391ee1e509bf73b2b390d9f 100644 (file)
@@ -400,7 +400,7 @@ static GLboolean r200_run_tcl_render( GLcontext *ctx,
       }
    }
 
-   if ( ctx->Fog.FogCoordinateSource == GL_FOG_COORD ) {
+   if ( (ctx->Fog.FogCoordinateSource == GL_FOG_COORD) && ctx->Fog.Enabled ) {
       inputs |= VERT_BIT_FOG;
    }
 
index c5d1f131d06d6eb483299210fff080d272c23e58..d9af6bf5f85951da298dbeee144fa04660c06ce6 100644 (file)
@@ -662,9 +662,10 @@ static GLboolean check_vtx_fmt( GLcontext *ctx )
    GLuint i;
    GLuint count[R200_MAX_TEXTURE_UNITS];
 
-   if (rmesa->TclFallback || rmesa->vb.fell_back || ctx->CompileFlag)
+   if (rmesa->TclFallback || rmesa->vb.fell_back || ctx->CompileFlag ||
+      (ctx->Fog.Enabled && (ctx->Fog.FogCoordinateSource == GL_FOG_COORD)))
       return GL_FALSE;
-   
+
    if (ctx->Driver.NeedFlush & FLUSH_UPDATE_CURRENT) 
       ctx->Driver.FlushVertices( ctx, FLUSH_UPDATE_CURRENT );
    
index 49d64148ca19bdad2696ef923fd4e788e62c6782..49118b5e37bd1b29f2965fdca8be123ad06b62f2 100644 (file)
@@ -566,7 +566,9 @@ void radeonEmitArrays( GLcontext *ctx, GLuint inputs )
       component[nr++] = &rmesa->tcl.spec;
    }
 
-
+/* FIXME: not sure if this is correct. May need to stitch this together with
+   secondary color. It seems odd that for primary color color and alpha values
+   are emitted together but for secondary color not. */
    if (inputs & VERT_BIT_FOG) {
       if (!rmesa->tcl.fog.buf)
         emit_vecfog( ctx,