st/mesa: negate DDY to match GL semantics
authorBrian Paul <brianp@vmware.com>
Mon, 7 Dec 2009 16:00:57 +0000 (09:00 -0700)
committerBrian Paul <brianp@vmware.com>
Mon, 7 Dec 2009 16:00:59 +0000 (09:00 -0700)
This fixes the regression from commit 884007546c98b1779bf266ec5111b1e7e2b68b2e
Fixes bug 25456 (piglit derivs regression).

src/mesa/state_tracker/st_mesa_to_tgsi.c

index 5e76f4db4ebd4f32fc37ed99ca95490d5c68b01b..bf80274c4440aa8d628048b02837de3e24ef4fea 100644 (file)
@@ -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,