[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