[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