summaryrefslogtreecommitdiffstats
path: root/src/mesa/state_tracker
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2009-12-07 09:00:57 -0700
committerBrian Paul <[email protected]>2009-12-07 09:00:59 -0700
commit8ce17134431ec27666e8fba2fa4bd22ba3f3ed18 (patch)
treea5ecdb8d6c2b9d0c6c0391bcb19d9f989c4bdb0a /src/mesa/state_tracker
parent8468234bfa98be77cbceecc8e91325c00e4e424b (diff)
st/mesa: negate DDY to match GL semantics
This fixes the regression from commit 884007546c98b1779bf266ec5111b1e7e2b68b2e Fixes bug 25456 (piglit derivs regression).
Diffstat (limited to 'src/mesa/state_tracker')
-rw-r--r--src/mesa/state_tracker/st_mesa_to_tgsi.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/mesa/state_tracker/st_mesa_to_tgsi.c b/src/mesa/state_tracker/st_mesa_to_tgsi.c
index 5e76f4db4eb..bf80274c444 100644
--- a/src/mesa/state_tracker/st_mesa_to_tgsi.c
+++ b/src/mesa/state_tracker/st_mesa_to_tgsi.c
@@ -396,6 +396,23 @@ static void emit_swz( struct st_translate *t,
}
+/**
+ * Negate the value of DDY to match GL semantics where (0,0) is the
+ * lower-left corner of the window.
+ * Note that the GL_ARB_fragment_coord_conventions extension will
+ * effect this someday.
+ */
+static void emit_ddy( struct st_translate *t,
+ struct ureg_dst dst,
+ const struct prog_src_register *SrcReg )
+{
+ struct ureg_program *ureg = t->ureg;
+ struct ureg_src src = translate_src( t, SrcReg );
+ if(1) src = ureg_negate( src );
+ ureg_DDY( ureg, dst, src );
+}
+
+
static unsigned
translate_opcode( unsigned op )
@@ -619,7 +636,9 @@ compile_instruction(
ureg_MOV( ureg, dst[0], ureg_imm1f(ureg, 0.5) );
break;
-
+ case OPCODE_DDY:
+ emit_ddy( t, dst[0], &inst->SrcReg[0] );
+ break;
default:
ureg_insn( ureg,