diff options
| author | Eric Anholt <eric@anholt.net> | 2008-01-16 15:07:10 -0800 | 
|---|---|---|
| committer | Eric Anholt <eric@anholt.net> | 2008-01-16 15:19:29 -0800 | 
| commit | 9bae03a583fc6d2d0b916961279abe9156078d1e (patch) | |
| tree | 36c55c943739d418ba62b226f342a09f423b7981 | |
| parent | 6a5e86b3444b4228c5232bf5a297159e66f02077 (diff) | |
[965] Fix inversion of SLT/SGE results in vertex programs.
The WM code had this right, so copy its behavior.  This reverts a flipping
of the arguments to SLT in brw_vs_tnl which came in with the GLSL code that
probably occurred to work around the flipped results, and brings the code back
in line with t_vp_build.c.
| -rw-r--r-- | src/mesa/drivers/dri/i965/brw_vs_emit.c | 7 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/i965/brw_vs_tnl.c | 2 | 
2 files changed, 3 insertions, 6 deletions
| diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c index 7322123fb4..447e1182b3 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_emit.c +++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c @@ -229,13 +229,10 @@ static void emit_sop( struct brw_compile *p,                        struct brw_reg arg1,   		      GLuint cond)  { -   brw_push_insn_state(p); +   brw_MOV(p, dst, brw_imm_f(0.0f));     brw_CMP(p, brw_null_reg(), cond, arg0, arg1); -   brw_set_predicate_control(p, BRW_PREDICATE_NONE);     brw_MOV(p, dst, brw_imm_f(1.0f)); -   brw_set_predicate_control(p, BRW_PREDICATE_NORMAL); -   brw_MOV(p, dst, brw_imm_f(0.0f)); -   brw_pop_insn_state(p); +   brw_set_predicate_control_flag_value(p, 0xff);  }  static void emit_seq( struct brw_compile *p, diff --git a/src/mesa/drivers/dri/i965/brw_vs_tnl.c b/src/mesa/drivers/dri/i965/brw_vs_tnl.c index aecdd4bc31..27210d1a37 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_tnl.c +++ b/src/mesa/drivers/dri/i965/brw_vs_tnl.c @@ -855,7 +855,7 @@ static struct ureg calculate_light_attenuation( struct tnl_program *p,        struct ureg slt = get_temp(p);        emit_op2(p, OPCODE_DP3, spot, 0, ureg_negate(VPpli), spot_dir_norm); -      emit_op2(p, OPCODE_SLT, slt, 0, spot, swizzle1(spot_dir_norm,W)); +      emit_op2(p, OPCODE_SLT, slt, 0, swizzle1(spot_dir_norm,W), spot);        emit_op2(p, OPCODE_POW, spot, 0, spot, swizzle1(attenuation, W));        emit_op2(p, OPCODE_MUL, att, 0, slt, spot); | 
