Mesa (master): mesa: fix texture target mix-up in NV_fragment_program parser

Brian Paul brianp at kemper.freedesktop.org
Thu Nov 3 21:32:50 UTC 2011


Module: Mesa
Branch: master
Commit: bf5255fb30d9d9832f93616016c94782469d43ad
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=bf5255fb30d9d9832f93616016c94782469d43ad

Author: Brian Paul <brianp at vmware.com>
Date:   Thu Nov  3 10:39:26 2011 -0600

mesa: fix texture target mix-up in NV_fragment_program parser

The returned value should be a texture target index, not a bit.
I spotted this from seeing a new compiler warning caused by the increase
in the number of texture targets.  This has been broken for a long time.

Note: This is a candidate for the 7.11 branch.

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

---

 src/mesa/program/nvfragparse.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/mesa/program/nvfragparse.c b/src/mesa/program/nvfragparse.c
index ce72c61..bcc553a 100644
--- a/src/mesa/program/nvfragparse.c
+++ b/src/mesa/program/nvfragparse.c
@@ -568,7 +568,7 @@ Parse_VectorOrScalarConstant(struct parse_state *parseState, GLfloat *vec)
  */
 static GLboolean
 Parse_TextureImageId(struct parse_state *parseState,
-                     GLubyte *texUnit, GLubyte *texTargetBit)
+                     GLubyte *texUnit, GLubyte *texTarget)
 {
    GLubyte imageSrc[100];
    GLint unit;
@@ -592,26 +592,26 @@ Parse_TextureImageId(struct parse_state *parseState,
       RETURN_ERROR1("Expected ,");
 
    if (Parse_String(parseState, "1D")) {
-      *texTargetBit = TEXTURE_1D_BIT;
+      *texTarget = TEXTURE_1D_INDEX;
    }
    else if (Parse_String(parseState, "2D")) {
-      *texTargetBit = TEXTURE_2D_BIT;
+      *texTarget = TEXTURE_2D_INDEX;
    }
    else if (Parse_String(parseState, "3D")) {
-      *texTargetBit = TEXTURE_3D_BIT;
+      *texTarget = TEXTURE_3D_INDEX;
    }
    else if (Parse_String(parseState, "CUBE")) {
-      *texTargetBit = TEXTURE_CUBE_BIT;
+      *texTarget = TEXTURE_CUBE_INDEX;
    }
    else if (Parse_String(parseState, "RECT")) {
-      *texTargetBit = TEXTURE_RECT_BIT;
+      *texTarget = TEXTURE_RECT_INDEX;
    }
    else {
       RETURN_ERROR1("Invalid texture target token");
    }
 
    /* update record of referenced texture units */
-   parseState->texturesUsed[*texUnit] |= *texTargetBit;
+   parseState->texturesUsed[*texUnit] |= (1 << *texTarget);
    if (_mesa_bitcount(parseState->texturesUsed[*texUnit]) > 1) {
       RETURN_ERROR1("Only one texture target can be used per texture unit.");
    }




More information about the mesa-commit mailing list