--- a/src/mesa/drivers/dri/i965/brw_wm_glsl.c.orig 2011-07-28 20:09:34.533951464 +0100 +++ a/src/mesa/drivers/dri/i965/brw_wm_glsl.c 2011-07-28 20:10:57.856027779 +0100 @@ -237,11 +237,12 @@ * This is called if we run out of GRF registers. Examine the live intervals * of temp regs in the program and free those which won't be used again. */ +#define REG_ALLOCATE_MAX_PROGRAM_TEMPS ((1<prog_instructions, c->nr_fp_insns, intBegin, intEnd); - for (index = 0; index < MAX_PROGRAM_TEMPS; index++) { + for (index = 0; index < REG_ALLOCATE_MAX_PROGRAM_TEMPS; index++) { if (intEnd[index] != -1 && intEnd[index] < c->cur_inst) { /* program temp[i] can be freed */ int component;