diff options
Diffstat (limited to 'src/mesa')
| -rw-r--r-- | src/mesa/drivers/dri/i965/brw_wm_glsl.c | 6 | 
1 files changed, 4 insertions, 2 deletions
| diff --git a/src/mesa/drivers/dri/i965/brw_wm_glsl.c b/src/mesa/drivers/dri/i965/brw_wm_glsl.c index e3e6f66339..315b030484 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_glsl.c +++ b/src/mesa/drivers/dri/i965/brw_wm_glsl.c @@ -2015,11 +2015,13 @@ static void brw_wm_emit_glsl(struct brw_context *brw, struct brw_wm_compile *c)                    /* patch all the BREAK/CONT instructions from last BGNLOOP */                    while (inst0 > loop_inst[loop_depth]) {                       inst0--; -                     if (inst0->header.opcode == BRW_OPCODE_BREAK) { +                     if (inst0->header.opcode == BRW_OPCODE_BREAK && +			 inst0->bits3.if_else.jump_count == 0) {  			inst0->bits3.if_else.jump_count = br * (inst1 - inst0 + 1);  			inst0->bits3.if_else.pop_count = 0;                       } -                     else if (inst0->header.opcode == BRW_OPCODE_CONTINUE) { +                     else if (inst0->header.opcode == BRW_OPCODE_CONTINUE && +			      inst0->bits3.if_else.jump_count == 0) {                          inst0->bits3.if_else.jump_count = br * (inst1 - inst0);                          inst0->bits3.if_else.pop_count = 0;                       } | 
