summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZou Nan hai <nanhai.zou@intel.com>2007-07-17 16:52:03 +0800
committerZou Nan hai <nanhai.zou@intel.com>2007-07-17 16:52:03 +0800
commitc6d042acc94411b63f922ef68f24aa5426c0a69e (patch)
treed855598fd3e6a19289f033f78983686458ddeeb4
parent3c00cdc5f37856f303a6256677364ae89200c509 (diff)
Fix SOP in fragment shader, brick is ok now.
-rw-r--r--progs/glsl/CH06-brick.frag.txt6
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_glsl.c6
2 files changed, 5 insertions, 7 deletions
diff --git a/progs/glsl/CH06-brick.frag.txt b/progs/glsl/CH06-brick.frag.txt
index 388c5f9e66..06ef04e3af 100644
--- a/progs/glsl/CH06-brick.frag.txt
+++ b/progs/glsl/CH06-brick.frag.txt
@@ -23,11 +23,7 @@ void main()
position = MCposition / BrickSize;
-// if (fract(position.y * 0.5) > 0.5)
-// position.x += 0.5;
- float tmp;
- tmp = fract(position.y * 0.5);
- if (tmp > 0.5)
+ if (fract(position.y * 0.5) > 0.5)
position.x += 0.5;
position = fract(position);
diff --git a/src/mesa/drivers/dri/i965/brw_wm_glsl.c b/src/mesa/drivers/dri/i965/brw_wm_glsl.c
index 4988df2b0e..09e7590367 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_glsl.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_glsl.c
@@ -811,18 +811,20 @@ static void emit_sop(struct brw_wm_compile *c,
struct brw_reg dst, src0, src1;
int i;
+ brw_push_insn_state(p);
for (i = 0; i < 4; i++) {
if (mask & (1<<i)) {
dst = get_dst_reg(c, inst, i, 1);
src0 = get_src_reg(c, &inst->SrcReg[0], i, 1);
src1 = get_src_reg(c, &inst->SrcReg[1], i, 1);
- brw_MOV(p, dst, brw_imm_f(0));
brw_CMP(p, brw_null_reg(), cond, src0, src1);
+ brw_set_predicate_control(p, BRW_PREDICATE_NONE);
+ brw_MOV(p, dst, brw_imm_f(0.0));
brw_set_predicate_control(p, BRW_PREDICATE_NORMAL);
brw_MOV(p, dst, brw_imm_f(1.0));
- brw_set_predicate_control_flag_value(p, 0xff);
}
}
+ brw_pop_insn_state(p);
}
static void emit_slt(struct brw_wm_compile *c,