diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mesa/drivers/dri/i965/brw_wm.c | 14 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/i965/brw_wm.h | 8 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/i965/brw_wm_fp.c | 2 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/i965/brw_wm_pass0.c | 3 | 
4 files changed, 23 insertions, 4 deletions
| diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c index 964ee104c2..d8971321f3 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.c +++ b/src/mesa/drivers/dri/i965/brw_wm.c @@ -152,8 +152,22 @@ static void do_wm_prog( struct brw_context *brw,            */           return;        } +      c->instruction = _mesa_calloc(BRW_WM_MAX_INSN * sizeof(*c->instruction)); +      c->prog_instructions = _mesa_calloc(BRW_WM_MAX_INSN * +					  sizeof(*c->prog_instructions)); +      c->vreg = _mesa_calloc(BRW_WM_MAX_VREG * sizeof(*c->vreg)); +      c->refs = _mesa_calloc(BRW_WM_MAX_REF * sizeof(*c->refs)); +      c->vreg = _mesa_calloc(BRW_WM_MAX_VREG * sizeof(*c->vreg));     } else { +      void *instruction = c->instruction; +      void *prog_instructions = c->prog_instructions; +      void *vreg = c->vreg; +      void *refs = c->refs;        memset(c, 0, sizeof(*brw->wm.compile_data)); +      c->instruction = instruction; +      c->prog_instructions = prog_instructions; +      c->vreg = vreg; +      c->refs = refs;     }     memcpy(&c->key, key, sizeof(*key)); diff --git a/src/mesa/drivers/dri/i965/brw_wm.h b/src/mesa/drivers/dri/i965/brw_wm.h index 1fa2f1c06c..7db212e392 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.h +++ b/src/mesa/drivers/dri/i965/brw_wm.h @@ -202,7 +202,7 @@ struct brw_wm_compile {      * simplifying and adding instructions for interpolation and      * framebuffer writes.      */ -   struct prog_instruction prog_instructions[BRW_WM_MAX_INSN]; +   struct prog_instruction *prog_instructions;     GLuint nr_fp_insns;     GLuint fp_temp;     GLuint fp_interp_emitted; @@ -213,7 +213,7 @@ struct brw_wm_compile {     struct prog_src_register pixel_w; -   struct brw_wm_value vreg[BRW_WM_MAX_VREG]; +   struct brw_wm_value *vreg;     GLuint nr_vreg;     struct brw_wm_value creg[BRW_WM_MAX_PARAM]; @@ -230,10 +230,10 @@ struct brw_wm_compile {     struct brw_wm_ref undef_ref;     struct brw_wm_value undef_value; -   struct brw_wm_ref refs[BRW_WM_MAX_REF]; +   struct brw_wm_ref *refs;     GLuint nr_refs; -   struct brw_wm_instruction instruction[BRW_WM_MAX_INSN]; +   struct brw_wm_instruction *instruction;     GLuint nr_insns;     struct brw_wm_constref constref[BRW_WM_MAX_CONST]; diff --git a/src/mesa/drivers/dri/i965/brw_wm_fp.c b/src/mesa/drivers/dri/i965/brw_wm_fp.c index 549afd31de..1c4f62ba48 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_fp.c +++ b/src/mesa/drivers/dri/i965/brw_wm_fp.c @@ -182,6 +182,8 @@ static void release_temp( struct brw_wm_compile *c, struct prog_dst_register tem  static struct prog_instruction *get_fp_inst(struct brw_wm_compile *c)  {     assert(c->nr_fp_insns < BRW_WM_MAX_INSN); +   memset(&c->prog_instructions[c->nr_fp_insns], 0, +	  sizeof(*c->prog_instructions));     return &c->prog_instructions[c->nr_fp_insns++];  } diff --git a/src/mesa/drivers/dri/i965/brw_wm_pass0.c b/src/mesa/drivers/dri/i965/brw_wm_pass0.c index 602b1351ef..ff4c082d5e 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_pass0.c +++ b/src/mesa/drivers/dri/i965/brw_wm_pass0.c @@ -42,12 +42,14 @@  static struct brw_wm_ref *get_ref( struct brw_wm_compile *c )  {     assert(c->nr_refs < BRW_WM_MAX_REF); +   memset(&c->refs[c->nr_refs], 0, sizeof(*c->refs));     return &c->refs[c->nr_refs++];  }  static struct brw_wm_value *get_value( struct brw_wm_compile *c)  {     assert(c->nr_refs < BRW_WM_MAX_VREG); +   memset(&c->vreg[c->nr_vreg], 0, sizeof(*c->vreg));     return &c->vreg[c->nr_vreg++];  } @@ -55,6 +57,7 @@ static struct brw_wm_value *get_value( struct brw_wm_compile *c)  static struct brw_wm_instruction *get_instruction( struct brw_wm_compile *c )  {     assert(c->nr_insns < BRW_WM_MAX_INSN); +   memset(&c->instruction[c->nr_insns], 0, sizeof(*c->instruction));     return &c->instruction[c->nr_insns++];  } | 
