The conditions of IF opcodes were not being counted as reads, which sometimes
led to the condition register being wrong or undefined.
memset(writes, 0, sizeof(*writes) * this->next_temp * 4);
break;
- case TGSI_OPCODE_IF:
- ++level;
- break;
-
case TGSI_OPCODE_ENDIF:
--level;
break;
}
break;
+ case TGSI_OPCODE_IF:
+ ++level;
+ /* fallthrough to default case to mark the condition as read */
+
default:
/* Continuing the block, clear any channels from the write array that
* are read by this instruction.