Mesa (master): st/mesa: fix bug in emit_adjusted_wpos()

Brian Paul brianp at kemper.freedesktop.org
Fri Jul 23 19:43:22 UTC 2010


Module: Mesa
Branch: master
Commit: e393350904a48d332d832881af9549400194608c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e393350904a48d332d832881af9549400194608c

Author: Brian Paul <brianp at vmware.com>
Date:   Fri Jul 23 13:39:36 2010 -0600

st/mesa: fix bug in emit_adjusted_wpos()

If we bias x,y we still need to pass through z,w in case the shader
reads gl_FragCoord.z or .w.

Fixes fd.o bug 29183 (piglit glsl-bug-22603).

NOTE: This is a candidate for the 7.8 branch.

---

 src/mesa/state_tracker/st_mesa_to_tgsi.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/mesa/state_tracker/st_mesa_to_tgsi.c b/src/mesa/state_tracker/st_mesa_to_tgsi.c
index bacd091..686ccb9 100644
--- a/src/mesa/state_tracker/st_mesa_to_tgsi.c
+++ b/src/mesa/state_tracker/st_mesa_to_tgsi.c
@@ -738,9 +738,12 @@ emit_adjusted_wpos( struct st_translate *t,
    struct ureg_dst wpos_temp = ureg_DECL_temporary(ureg);
    struct ureg_src wpos_input = t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]];
 
+   /* Note that we bias X and Y and pass Z and W through unchanged.
+    * The shader might also use gl_FragCoord.w and .z.
+    */
    ureg_ADD(ureg,
-            ureg_writemask(wpos_temp, TGSI_WRITEMASK_X | TGSI_WRITEMASK_Y),
-            wpos_input, ureg_imm1f(ureg, value));
+            ureg_writemask(wpos_temp, TGSI_WRITEMASK_XYZW),
+            wpos_input, ureg_imm4f(ureg, value, value, 0.0f, 0.0f));
 
    t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]] = ureg_src(wpos_temp);
 }




More information about the mesa-commit mailing list