Mesa (master): gallivm: (trivial) use constant instead of exp2f() function

Roland Scheidegger sroland at kemper.freedesktop.org
Sun Jul 14 00:39:51 UTC 2013


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

Author: Roland Scheidegger <sroland at vmware.com>
Date:   Sun Jul 14 02:38:13 2013 +0200

gallivm: (trivial) use constant instead of exp2f() function

Some lame compilers can't do exp2f() and as far as I can tell they can't do
exp2() (with doubles) neither so instead of providing some workaround for
that (wouldn't actually be too bad just replace with pow) and since it is
used with a constant only just use the precalculated constant.

---

 src/gallium/auxiliary/gallivm/lp_bld_format_srgb.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_format_srgb.c b/src/gallium/auxiliary/gallivm/lp_bld_format_srgb.c
index 217aaa9..f949a8d 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_format_srgb.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_format_srgb.c
@@ -170,6 +170,8 @@ lp_build_linear_to_srgb(struct gallivm_state *gallivm,
        */
 
       float exp_f = 2.0f / 3.0f;
+      /* some compilers can't do exp2f, so this is exp2f(127.0f/exp_f - 127.0f) */
+      float exp2f_c = 1.30438178253e+19f;
       float coeff_f = 0.62996f;
       LLVMValueRef pow_approx, coeff, x2, exponent, pow_1, pow_2;
       struct lp_type int_type = lp_int_type(src_type);
@@ -179,8 +181,7 @@ lp_build_linear_to_srgb(struct gallivm_state *gallivm,
        */
       exponent = lp_build_const_vec(gallivm, src_type, exp_f);
       coeff = lp_build_const_vec(gallivm, src_type,
-                                 exp2f(127.0f / exp_f - 127.0f) *
-                                 powf(coeff_f, 1.0f / exp_f));
+                                 exp2f_c * powf(coeff_f, 1.0f / exp_f));
 
       /* premultiply src */
       tmp = lp_build_mul(&f32_bld, coeff, src);




More information about the mesa-commit mailing list