diff options
author | Dave Airlie <airliedfreedesktop.org> | 2004-06-09 02:29:22 +0000 |
---|---|---|
committer | Dave Airlie <airliedfreedesktop.org> | 2004-06-09 02:29:22 +0000 |
commit | 37a94995cfa062d41b311e035f65af980bf57bec (patch) | |
tree | e3917029e6124571439c7a53b72231e175569ba4 | |
parent | 0590895ea78cb3e7be25ca833bfeca5f56dc7e21 (diff) |
fix bug with emitting spec/fog report by Eric Anholt, this isn't the prettiest
fix but it does work
-rw-r--r-- | src/mesa/drivers/dri/i830/i830_tris.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i830/i830_tris.c b/src/mesa/drivers/dri/i830/i830_tris.c index 6dcaa73f18c..8421897cfea 100644 --- a/src/mesa/drivers/dri/i830/i830_tris.c +++ b/src/mesa/drivers/dri/i830/i830_tris.c @@ -731,6 +731,7 @@ static void i830RenderStart( GLcontext *ctx ) GLuint index = tnl->render_inputs; GLuint v0 = STATE3D_VERTEX_FORMAT_CMD; GLuint v2 = STATE3D_VERTEX_FORMAT_2_CMD; + GLuint force_emit = 0; /* Important: */ @@ -750,15 +751,31 @@ static void i830RenderStart( GLcontext *ctx ) EMIT_ATTR( _TNL_ATTRIB_COLOR0, EMIT_4UB_4F_BGRA, VRTX_HAS_DIFFUSE ); if (index & (_TNL_BIT_COLOR1|_TNL_BIT_FOG)) { + if (index & _TNL_BIT_COLOR1) + { + if (imesa->vertex_attrs[imesa->vertex_attr_count].format != EMIT_3UB_3F_BGR) + force_emit=1; EMIT_ATTR( _TNL_ATTRIB_COLOR1, EMIT_3UB_3F_BGR, VRTX_HAS_SPEC ); + } else + { + if (imesa->vertex_attrs[imesa->vertex_attr_count].format != EMIT_PAD) + force_emit=1; EMIT_PAD( 3 ); - + } if (index & _TNL_BIT_FOG) + { + if (imesa->vertex_attrs[imesa->vertex_attr_count].format != EMIT_1UB_1F) + force_emit=1; EMIT_ATTR( _TNL_ATTRIB_FOG, EMIT_1UB_1F, VRTX_HAS_SPEC ); + } else + { + if (imesa->vertex_attrs[imesa->vertex_attr_count].format != EMIT_PAD) + force_emit=1; EMIT_PAD( 1 ); + } } if (index & _TNL_BITS_TEX_ANY) { @@ -807,7 +824,8 @@ static void i830RenderStart( GLcontext *ctx ) * statechange to a new hardware vertex format: */ if (v0 != imesa->Setup[I830_CTXREG_VF] || - v2 != imesa->Setup[I830_CTXREG_VF2] ) { + v2 != imesa->Setup[I830_CTXREG_VF2] || + force_emit == 1) { I830_STATECHANGE( imesa, I830_UPLOAD_CTX ); |