From 05e1a49ab4b0d34aba4bdf55ed7ffe5b6d4411f8 Mon Sep 17 00:00:00 2001 From: Roland Scheidegger Date: Tue, 18 Oct 2005 13:09:53 +0000 Subject: on r200, don't emit fog coords when fog isn't actually enabled. Fix bug with vtxfmt not causing a fallback when fog coords are active. --- src/mesa/drivers/dri/r200/r200_tcl.c | 2 +- src/mesa/drivers/dri/r200/r200_vtxfmt.c | 5 +++-- src/mesa/drivers/dri/radeon/radeon_maos_arrays.c | 4 +++- 3 files changed, 7 insertions(+), 4 deletions(-) (limited to 'src/mesa/drivers/dri') diff --git a/src/mesa/drivers/dri/r200/r200_tcl.c b/src/mesa/drivers/dri/r200/r200_tcl.c index 55e7b49079..f6461a164e 100644 --- a/src/mesa/drivers/dri/r200/r200_tcl.c +++ b/src/mesa/drivers/dri/r200/r200_tcl.c @@ -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; } diff --git a/src/mesa/drivers/dri/r200/r200_vtxfmt.c b/src/mesa/drivers/dri/r200/r200_vtxfmt.c index c5d1f131d0..d9af6bf5f8 100644 --- a/src/mesa/drivers/dri/r200/r200_vtxfmt.c +++ b/src/mesa/drivers/dri/r200/r200_vtxfmt.c @@ -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 ); diff --git a/src/mesa/drivers/dri/radeon/radeon_maos_arrays.c b/src/mesa/drivers/dri/radeon/radeon_maos_arrays.c index 49d64148ca..49118b5e37 100644 --- a/src/mesa/drivers/dri/radeon/radeon_maos_arrays.c +++ b/src/mesa/drivers/dri/radeon/radeon_maos_arrays.c @@ -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, -- cgit v1.2.3