Mesa (master): i965: Handle the negate and abs swizzles on brw_wm_glsl. c immediate args.

Eric Anholt anholt at kemper.freedesktop.org
Wed Mar 24 10:29:22 PDT 2010


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

Author: Eric Anholt <eric at anholt.net>
Date:   Wed Mar 24 10:26:05 2010 -0700

i965: Handle the negate and abs swizzles on brw_wm_glsl.c immediate args.

Fixes piglit glsl-orangebook-ch06-bump, regressed with
4fc57322258a750c0a9cabc77372b5ccde1fa877

---

 src/mesa/drivers/dri/i965/brw_wm_glsl.c |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_wm_glsl.c b/src/mesa/drivers/dri/i965/brw_wm_glsl.c
index d78fb4e..3b7e421 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_glsl.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_glsl.c
@@ -583,11 +583,21 @@ static struct brw_reg get_src_reg(struct brw_wm_compile *c,
        if (component == SWIZZLE_ZERO) {
 	  return brw_imm_f(0.0F);
        } else if (component == SWIZZLE_ONE) {
-	  return brw_imm_f(1.0F);
+	  if (src->Negate)
+	     return brw_imm_f(-1.0F);
+	  else
+	     return brw_imm_f(1.0F);
        }
 
        if (src->File == PROGRAM_CONSTANT) {
-	  return brw_imm_f(params->ParameterValues[src->Index][component]);
+	  float f = params->ParameterValues[src->Index][component];
+
+	  if (src->Abs)
+	     f = fabs(f);
+	  if (src->Negate)
+	     f = -f;
+
+	  return brw_imm_f(f);
        }
     }
 



More information about the mesa-commit mailing list