Apply r200 tcl fix to radeon - compiles but untested.
authorKeith Whitwell <keith@tungstengraphics.com>
Mon, 16 May 2005 08:36:28 +0000 (08:36 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Mon, 16 May 2005 08:36:28 +0000 (08:36 +0000)
src/mesa/drivers/dri/radeon/radeon_tcl.c

index d1b66c19a1ae88268670ea5d934ebcf89697b0ee..6eb35c0f27f74c4f89bf8b6d2c7f06f9f95e642c 100644 (file)
@@ -293,6 +293,7 @@ static GLboolean radeon_run_tcl_render( GLcontext *ctx,
    radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
    TNLcontext *tnl = TNL_CONTEXT(ctx);
    struct vertex_buffer *VB = &tnl->vb;
+   GLuint inputs = VERT_BIT_POS | VERT_BIT_COLOR0;
    GLuint i;
 
    /* TODO: separate this from the swtnl pipeline 
@@ -303,8 +304,31 @@ static GLboolean radeon_run_tcl_render( GLcontext *ctx,
    if (VB->Count == 0)
       return GL_FALSE;
 
+   /* NOTE: inputs != tnl->render_inputs - these are the untransformed
+    * inputs.
+    */
+   if (ctx->Light.Enabled) {
+      inputs |= VERT_BIT_NORMAL;
+      if (ctx->_TriangleCaps & DD_SEPARATE_SPECULAR) {
+        inputs |= VERT_BIT_COLOR1;
+      }
+   }
+
+   if ( ctx->Fog.FogCoordinateSource == GL_FOG_COORD ) {
+      inputs |= VERT_BIT_FOG;
+   }
+
+   for (i = 0 ; i < ctx->Const.MaxTextureUnits; i++) {
+      if (ctx->Texture.Unit[i]._ReallyEnabled) {
+        if (rmesa->TexGenNeedNormals[i]) {
+           inputs |= VERT_BIT_NORMAL;
+        }
+        inputs |= VERT_BIT_TEX(i);
+      }
+   }
+
    radeonReleaseArrays( ctx, ~0 );
-   radeonEmitArrays( ctx, tnl->render_inputs );
+   radeonEmitArrays( ctx, inputs );
 
    rmesa->tcl.Elts = VB->Elts;