diff options
author | Patrice Mandin <patmandin@gmail.com> | 2009-08-01 11:03:30 +0200 |
---|---|---|
committer | Patrice Mandin <patmandin@gmail.com> | 2009-08-01 11:03:30 +0200 |
commit | c1785c19ca0716a7e85777242949a0c33e28988f (patch) | |
tree | 7d4441fd6685b86668431f8a975b32634972234c /src/gallium/auxiliary | |
parent | 801c3fcbca69a17f0696522b91cbfc378094974b (diff) |
mesa st: Move logbase2 function to util/u_math.h
Diffstat (limited to 'src/gallium/auxiliary')
-rw-r--r-- | src/gallium/auxiliary/util/u_math.h | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/gallium/auxiliary/util/u_math.h b/src/gallium/auxiliary/util/u_math.h index e5003af01d..30e6e2f6b3 100644 --- a/src/gallium/auxiliary/util/u_math.h +++ b/src/gallium/auxiliary/util/u_math.h @@ -216,23 +216,23 @@ util_fast_exp2(float x) int32_t ipart; float fpart, mpart; union fi epart; - + if(x > 129.00000f) return 3.402823466e+38f; - + if(x < -126.99999f) return 0.0f; ipart = (int32_t) x; fpart = x - (float) ipart; - + /* same as * epart.f = (float) (1 << ipart) * but faster and without integer overflow for ipart > 31 */ epart.i = (ipart + 127 ) << 23; - + mpart = pow2_table[POW2_TABLE_OFFSET + (int)(fpart * POW2_TABLE_SCALE)]; - + return epart.f * mpart; } @@ -409,6 +409,19 @@ float_to_ubyte(float f) } +/** + * Calc log base 2 + */ +static INLINE unsigned +util_logbase2(unsigned n) +{ + unsigned log2 = 0; + while (n >>= 1) + ++log2; + return log2; +} + + #define CLAMP( X, MIN, MAX ) ( (X)<(MIN) ? (MIN) : ((X)>(MAX) ? (MAX) : (X)) ) |