[Mesa-dev] [Mesa-stable] [PATCH] mesa: fix prog_optimize.c assertions triggered by SWZ opcode

Charmaine Lee charmainel at vmware.com
Wed Sep 17 17:13:26 PDT 2014


Reviewed-by: Charmaine Lee <charmainel at vmware.com>
________________________________________
From: mesa-dev <mesa-dev-bounces at lists.freedesktop.org> on behalf of Brian Paul <brianp at vmware.com>
Sent: Wednesday, September 17, 2014 2:56 PM
To: mesa-dev at lists.freedesktop.org
Subject: Re: [Mesa-dev] [Mesa-stable] [PATCH] mesa: fix prog_optimize.c assertions triggered by SWZ opcode

Ping.  Anyone?

On 09/16/2014 03:19 PM, Brian Paul wrote:
> The SWZ instruction can have swizzle terms >4 (SWIZZLE_ZERO, SWIZZLE_ONE).
> These swizzle terms caused a few assertions to fail.
> This started happening after the commit "mesa: Actually use the Mesa IR
> optimizer for ARB programs." when replaying some apitrace files.
>
> A new piglit test (tests/asmparsertest/shaders/ARBfp1.0/swz-08.txt)
> exercises this.
>
> Cc: "10.3" <mesa-stable at lists.freedesktop.org>
> ---
>   src/mesa/program/prog_optimize.c |    9 ++++-----
>   1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/src/mesa/program/prog_optimize.c b/src/mesa/program/prog_optimize.c
> index 08c1c30..60530eb 100644
> --- a/src/mesa/program/prog_optimize.c
> +++ b/src/mesa/program/prog_optimize.c
> @@ -114,7 +114,6 @@ get_src_arg_mask(const struct prog_instruction *inst,
>      read_mask = 0x0;
>      for (comp = 0; comp < 4; ++comp) {
>         const GLuint coord = GET_SWZ(inst->SrcReg[arg].Swizzle, comp);
> -      ASSERT(coord < 4);
>         if (channel_mask & (1 << comp) && coord <= SWIZZLE_W)
>            read_mask |= 1 << coord;
>      }
> @@ -284,11 +283,11 @@ _mesa_remove_dead_code_global(struct gl_program *prog)
>
>           for (comp = 0; comp < 4; comp++) {
>              const GLuint swz = GET_SWZ(inst->SrcReg[j].Swizzle, comp);
> -            ASSERT(swz < 4);
> -               if ((read_mask & (1 << swz)) == 0)
> -               continue;
> -               if (swz <= SWIZZLE_W)
> +               if (swz <= SWIZZLE_W) {
> +                  if ((read_mask & (1 << swz)) == 0)
> +                     continue;
>                     tempRead[index][swz] = GL_TRUE;
> +               }
>           }
>            }
>         }
>

_______________________________________________
mesa-dev mailing list
mesa-dev at lists.freedesktop.org
https://urldefense.proofpoint.com/v1/url?u=http://lists.freedesktop.org/mailman/listinfo/mesa-dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=iVNYIcCaC9TDvyNBQU%2F5q5NVsC01tSgJb3oX27T14ck%3D%0A&m=3uQ%2FzrBnEVvp%2F4BkUGoEv2m55qILfsqhq8w4nNqOrq0%3D%0A&s=be2156d4b7ae5e1a5a5145845aa0b152da9a86515439487a65a1769bf9430df5


More information about the mesa-dev mailing list