mesa: fix texture target mix-up in NV_fragment_program parser
authorBrian Paul <brianp@vmware.com>
Thu, 3 Nov 2011 16:39:26 +0000 (10:39 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 3 Nov 2011 21:32:19 +0000 (15:32 -0600)
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@intel.com>
src/mesa/program/nvfragparse.c

index ce72c610d891220cefbb95726074163094bf5faa..bcc553a9bc67af738007cb4ab0cc468437d504ca 100644 (file)
@@ -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.");
    }