[Mesa-dev] [PATCH] mesa: fix texture target mix-up in NV_fragment_program parser
Ian Romanick
idr at freedesktop.org
Thu Nov 3 13:26:52 PDT 2011
On 11/03/2011 09:44 AM, Brian Paul wrote:
> 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.
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-dev
mailing list