From: Brian Paul Date: Tue, 16 Sep 2014 21:14:19 +0000 (-0600) Subject: mesa: fix prog_optimize.c assertions triggered by SWZ opcode X-Git-Tag: upstream/17.1.0~23489 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7b2c7032446da4138dedeee8feaa79d741f1f108;p=platform%2Fupstream%2Fmesa.git mesa: fix prog_optimize.c assertions triggered by SWZ opcode 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" Reviewed-by: Charmaine Lee --- 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; + } } } }