diff options
author | Eric Anholt <eric@anholt.net> | 2010-03-10 13:51:24 -0800 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2010-03-10 15:17:47 -0800 |
commit | dc8c0359448cdae7b367552ba58783c04b199778 (patch) | |
tree | 690845d6e87daa224bac3d74ae795b1a3d36681c /src/mesa/drivers | |
parent | d42229707ad4be9be5a8e122354be7102d6ec348 (diff) |
i965: Set up the execution size before relying on it.
Fixes hangs with texturing in the non-GLSL path since
f6d210c284751ac50a8d6358de7e75a1ff1e4ac7
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_eu_emit.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c index 40c1b71998..82f2fdab2f 100644 --- a/src/mesa/drivers/dri/i965/brw_eu_emit.c +++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c @@ -1290,10 +1290,6 @@ void brw_SAMPLE(struct brw_compile *p, GLuint simd_mode) { GLboolean need_stall = 0; - GLboolean dispatch_16 = GL_FALSE; - - if (p->current->header.execution_size == BRW_EXECUTE_16) - dispatch_16 = GL_TRUE; if (writemask == 0) { /*printf("%s: zero writemask??\n", __FUNCTION__); */ @@ -1331,8 +1327,14 @@ void brw_SAMPLE(struct brw_compile *p, /* printf("need stall %x %x\n", newmask , writemask); */ } else { + GLboolean dispatch_16 = GL_FALSE; + struct brw_reg m1 = brw_message_reg(msg_reg_nr); - + + guess_execution_size(p->current, dest); + if (p->current->header.execution_size == BRW_EXECUTE_16) + dispatch_16 = GL_TRUE; + newmask = ~newmask & WRITEMASK_XYZW; brw_push_insn_state(p); |