[Mesa-dev] [PATCH] mesa: fix texture target mix-up in NV_fragment_program parser

Brian Paul brianp at vmware.com
Thu Nov 3 09:44:46 PDT 2011


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.
---
 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.");
    }
-- 
1.7.3.4



More information about the mesa-dev mailing list