bump up MAX_INSTRUCTIONS and add an assertion to catch emitting too many instructions
authorBrian <brian.paul@tungstengraphics.com>
Tue, 23 Oct 2007 16:24:53 +0000 (10:24 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Tue, 23 Oct 2007 16:24:53 +0000 (10:24 -0600)
src/mesa/main/texenvprogram.c

index 9c84da985e006f9082d764aef09e60cc52663214..935eb44a3210f29c14e21aace5841e78881546dc 100644 (file)
 #include "texenvprogram.h"
 
 /**
- * According to Glean's texCombine test, no more than 21 instructions
- * are needed.  Allow a few extra just in case.
+ * This MAX is probably a bit generous, but that's OK.  There can be
+ * up to four instructions per texture unit (TEX + 3 for combine),
+ * then there's fog and specular add.
  */
-#define MAX_INSTRUCTIONS ((MAX_TEXTURE_UNITS * 6) + 10) /* see bug 9829 */
+#define MAX_INSTRUCTIONS ((MAX_TEXTURE_UNITS * 4) + 12)
 
 #define DISASSEM (MESA_VERBOSE & VERBOSE_DISASSEM)
 
@@ -476,7 +477,9 @@ emit_op(struct texenv_fragment_program *p,
 {
    GLuint nr = p->program->Base.NumInstructions++;
    struct prog_instruction *inst = &p->program->Base.Instructions[nr];
-      
+
+   assert(nr < MAX_INSTRUCTIONS);
+
    _mesa_init_instructions(inst, 1);
    inst->Opcode = op;