OSDN Git Service

swrast: fix redundant texture application in affine_textured_triangle().
authorBrian Paul <brianp@vmware.com>
Wed, 21 Jan 2009 16:05:02 +0000 (09:05 -0700)
committerBrian Paul <brianp@vmware.com>
Wed, 21 Jan 2009 16:05:02 +0000 (09:05 -0700)
This function does simple texture mapping so disable normal texture mapping
before we call _swrast_write_rgba_span() so that we don't do it twice.

src/mesa/swrast/s_triangle.c

index 2033ab5..a2e8433 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.5.3
+ * Version:  7.3
  *
  * Copyright (C) 1999-2007  Brian Paul   All Rights Reserved.
  *
@@ -263,6 +263,10 @@ affine_span(GLcontext *ctx, SWspan *span,
             struct affine_info *info)
 {
    GLchan sample[4];  /* the filtered texture sample */
+   const GLuint texEnableSave = ctx->Texture._EnabledUnits;
+
+   /* Disable tex units so they're not re-applied in swrast_write_rgba_span */
+   ctx->Texture._EnabledUnits = 0x0;
 
    /* Instead of defining a function for each mode, a test is done
     * between the outer and inner loops. This is to reduce code size
@@ -493,8 +497,12 @@ affine_span(GLcontext *ctx, SWspan *span,
    }
    span->interpMask &= ~SPAN_RGBA;
    ASSERT(span->arrayMask & SPAN_RGBA);
+
    _swrast_write_rgba_span(ctx, span);
 
+   /* re-enable texture units */
+   ctx->Texture._EnabledUnits = texEnableSave;
+
 #undef SPAN_NEAREST
 #undef SPAN_LINEAR
 }