summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKeith Whitwell <keith@tungstengraphics.com>2005-06-09 18:59:41 +0000
committerKeith Whitwell <keith@tungstengraphics.com>2005-06-09 18:59:41 +0000
commit44367aab2a987a03ee1acfb7aa3a9116f3618af0 (patch)
treed68f7854a1ffd6b43760ee0a93e9a5a455eb7a60 /src
parent2c6e8e90ec848de0693919bf6c584b1111d6281f (diff)
Further clean up RoughApproxPow2 and disable the optimized version --
it's a very poor approximation.
Diffstat (limited to 'src')
-rw-r--r--src/mesa/tnl/t_vb_arbprogram.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/mesa/tnl/t_vb_arbprogram.c b/src/mesa/tnl/t_vb_arbprogram.c
index c569d93478..70e1048f14 100644
--- a/src/mesa/tnl/t_vb_arbprogram.c
+++ b/src/mesa/tnl/t_vb_arbprogram.c
@@ -96,16 +96,17 @@ static GLfloat RoughApproxLog2(GLfloat t)
static GLfloat RoughApproxPow2(GLfloat t)
{
- GLfloat q;
-#ifdef USE_IEEE
- GLint ii = (GLint) t;
- ii = (ii << 23) + 0x3f800000;
- SET_FLOAT_BITS(q, ii);
- q = *((GLfloat *) (void *)&ii);
+#if 0
+ /* This isn't nearly accurate enough - it discards all of t's
+ * fractional bits!
+ */
+ fi_type fi;
+ fi.i = (GLint) t;
+ fi.i = (fi.i << 23) + 0x3f800000;
+ return fi.f;
#else
- q = (GLfloat) pow(2.0, floor_t0);
+ return (GLfloat) _mesa_pow(2.0, floor_t0);
#endif
- return q;
}
static GLfloat RoughApproxPower(GLfloat x, GLfloat y)