Mesa (master): st/nine: Remove usage of SQRT in ff code

Axel Davy axeldavy at kemper.freedesktop.org
Fri Feb 12 22:27:25 UTC 2016


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

Author: Axel Davy <axel.davy at ens.fr>
Date:   Sat Feb  6 19:55:54 2016 +0100

st/nine: Remove usage of SQRT in ff code

SQRT is not supported everywhere, so replace
it by RSQ + MUL and handle case <= 0.

Signed-off-by: Axel Davy <axel.davy at ens.fr>

---

 src/gallium/state_trackers/nine/nine_ff.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/gallium/state_trackers/nine/nine_ff.c b/src/gallium/state_trackers/nine/nine_ff.c
index a5466a7..e79d0b4 100644
--- a/src/gallium/state_trackers/nine/nine_ff.c
+++ b/src/gallium/state_trackers/nine/nine_ff.c
@@ -563,7 +563,9 @@ nine_ff_build_vs(struct NineDevice9 *device, struct vs_build_ctx *vs)
         struct ureg_src cPsz2 = ureg_DECL_constant(ureg, 27);
 
         ureg_DP3(ureg, tmp_x, ureg_src(r[1]), ureg_src(r[1]));
-        ureg_SQRT(ureg, tmp_y, _X(tmp));
+        ureg_RSQ(ureg, tmp_y, _X(tmp));
+        ureg_MUL(ureg, tmp_y, _Y(tmp), _X(tmp));
+        ureg_CMP(ureg, tmp_y, ureg_negate(_Y(tmp)), _Y(tmp), ureg_imm1f(ureg, 0.0f));
         ureg_MAD(ureg, tmp_x, _Y(tmp), _YYYY(cPsz2), _XXXX(cPsz2));
         ureg_MAD(ureg, tmp_x, _Y(tmp), _X(tmp), _WWWW(cPsz1));
         ureg_RCP(ureg, tmp_x, ureg_src(tmp));




More information about the mesa-commit mailing list