summaryrefslogtreecommitdiff
path: root/src/mesa
diff options
context:
space:
mode:
authorOliver McFadden <z3ro.geek@gmail.com>2007-05-11 23:32:03 +0000
committerOliver McFadden <z3ro.geek@gmail.com>2007-05-11 23:32:03 +0000
commitdac5303692726582d2fac2d9e9b620e3105ff8c3 (patch)
treec016eab556e82c59cd4e2cf6753cd52a78aabd6d /src/mesa
parent64b03f33eeb2f57f1c7a528d011137c6f2612fb0 (diff)
r300: Moved r300PackFloat24 near r300PackFloat32.
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/drivers/dri/r300/r300_context.h31
-rw-r--r--src/mesa/drivers/dri/r300/r300_state.c31
2 files changed, 31 insertions, 31 deletions
diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h
index c287871b37..2408497c48 100644
--- a/src/mesa/drivers/dri/r300/r300_context.h
+++ b/src/mesa/drivers/dri/r300/r300_context.h
@@ -102,6 +102,37 @@ static __inline__ uint32_t r300PackFloat32(float fl)
return u.u;
}
+/* This is probably wrong for some values, I need to test this
+ * some more. Range checking would be a good idea also..
+ *
+ * But it works for most things. I'll fix it later if someone
+ * else with a better clue doesn't
+ */
+static __inline__ uint32_t r300PackFloat24(float f)
+{
+ float mantissa;
+ int exponent;
+ uint32_t float24 = 0;
+
+ if (f == 0.0)
+ return 0;
+
+ mantissa = frexpf(f, &exponent);
+
+ /* Handle -ve */
+ if (mantissa < 0) {
+ float24 |= (1 << 23);
+ mantissa = mantissa * -1.0;
+ }
+ /* Handle exponent, bias of 63 */
+ exponent += 62;
+ float24 |= (exponent << 16);
+ /* Kill 7 LSB of mantissa */
+ float24 |= (r300PackFloat32(mantissa) & 0x7FFFFF) >> 7;
+
+ return float24;
+}
+
/************ DMA BUFFERS **************/
/* Need refcounting on dma buffers:
diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c
index 625797b4b9..c45c571d7b 100644
--- a/src/mesa/drivers/dri/r300/r300_state.c
+++ b/src/mesa/drivers/dri/r300/r300_state.c
@@ -1873,37 +1873,6 @@ void r300UpdateShaderStates(r300ContextPtr rmesa)
r300SetupRSUnit(ctx);
}
-/* This is probably wrong for some values, I need to test this
- * some more. Range checking would be a good idea also..
- *
- * But it works for most things. I'll fix it later if someone
- * else with a better clue doesn't
- */
-static unsigned int r300PackFloat24(float f)
-{
- float mantissa;
- int exponent;
- unsigned int float24 = 0;
-
- if (f == 0.0)
- return 0;
-
- mantissa = frexpf(f, &exponent);
-
- /* Handle -ve */
- if (mantissa < 0) {
- float24 |= (1 << 23);
- mantissa = mantissa * -1.0;
- }
- /* Handle exponent, bias of 63 */
- exponent += 62;
- float24 |= (exponent << 16);
- /* Kill 7 LSB of mantissa */
- float24 |= (r300PackFloat32(mantissa) & 0x7FFFFF) >> 7;
-
- return float24;
-}
-
void r300SetupPixelShader(r300ContextPtr rmesa)
{
GLcontext *ctx = rmesa->radeon.glCtx;