gallium/auxiliary: Use exp2(x) instead of pow(2.0, x).
This commit is contained in:
parent
b73782bf18
commit
c67ce2bd3b
|
@ -115,8 +115,8 @@ static inline unsigned float3_to_rgb9e5(const float rgb[3])
|
||||||
exp_shared = MAX2(-RGB9E5_EXP_BIAS-1, rgb9e5_FloorLog2(maxrgb)) + 1 + RGB9E5_EXP_BIAS;
|
exp_shared = MAX2(-RGB9E5_EXP_BIAS-1, rgb9e5_FloorLog2(maxrgb)) + 1 + RGB9E5_EXP_BIAS;
|
||||||
assert(exp_shared <= RGB9E5_MAX_VALID_BIASED_EXP);
|
assert(exp_shared <= RGB9E5_MAX_VALID_BIASED_EXP);
|
||||||
assert(exp_shared >= 0);
|
assert(exp_shared >= 0);
|
||||||
/* This pow function could be replaced by a table. */
|
/* This exp2 function could be replaced by a table. */
|
||||||
denom = pow(2, exp_shared - RGB9E5_EXP_BIAS - RGB9E5_MANTISSA_BITS);
|
denom = exp2(exp_shared - RGB9E5_EXP_BIAS - RGB9E5_MANTISSA_BITS);
|
||||||
|
|
||||||
maxm = (int) floor(maxrgb / denom + 0.5);
|
maxm = (int) floor(maxrgb / denom + 0.5);
|
||||||
if (maxm == MAX_RGB9E5_MANTISSA+1) {
|
if (maxm == MAX_RGB9E5_MANTISSA+1) {
|
||||||
|
@ -154,7 +154,7 @@ static inline void rgb9e5_to_float3(unsigned rgb, float retval[3])
|
||||||
|
|
||||||
v.raw = rgb;
|
v.raw = rgb;
|
||||||
exponent = v.field.biasedexponent - RGB9E5_EXP_BIAS - RGB9E5_MANTISSA_BITS;
|
exponent = v.field.biasedexponent - RGB9E5_EXP_BIAS - RGB9E5_MANTISSA_BITS;
|
||||||
scale = (float) pow(2, exponent);
|
scale = exp2f(exponent);
|
||||||
|
|
||||||
retval[0] = v.field.r * scale;
|
retval[0] = v.field.r * scale;
|
||||||
retval[1] = v.field.g * scale;
|
retval[1] = v.field.g * scale;
|
||||||
|
|
|
@ -48,7 +48,7 @@ init_pow2_table(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < POW2_TABLE_SIZE; i++)
|
for (i = 0; i < POW2_TABLE_SIZE; i++)
|
||||||
pow2_table[i] = (float) pow(2.0, (i - POW2_TABLE_OFFSET) / POW2_TABLE_SCALE);
|
pow2_table[i] = exp2f((i - POW2_TABLE_OFFSET) / POW2_TABLE_SCALE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue