summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/i965/brw_wm_pass1.c
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2009-09-11 14:09:03 -0700
committerEric Anholt <eric@anholt.net>2009-09-11 14:13:47 -0700
commit57d16c4cc37689710f951cb13981e2efc160cd23 (patch)
treedb32d0e4604cb951f2a3ddca51ca558bf236d70b /src/mesa/drivers/dri/i965/brw_wm_pass1.c
parenta79eecb9139169fa8c99c0f9cf26db95f3983a36 (diff)
i965: Move OPCODE_DDX/DDY to brw_wm_emit.c and make it actually work.
Previously, it was trying to mess around with the varying's WM setup data to produce a result. Along with not actually working when passed a varying, this wouldn't work if you did dFd[xy]() on a temporary. Instead, just calculate the derivative using the neighbors in the subspan.
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_wm_pass1.c')
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_pass1.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_wm_pass1.c b/src/mesa/drivers/dri/i965/brw_wm_pass1.c
index 9c68bfd78b..b449394029 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_pass1.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_pass1.c
@@ -178,6 +178,11 @@ void brw_wm_pass1( struct brw_wm_compile *c )
read1 = writemask;
break;
+ case OPCODE_DDX:
+ case OPCODE_DDY:
+ read0 = writemask;
+ break;
+
case OPCODE_MAD:
case OPCODE_CMP:
case OPCODE_LRP: