radeon: share common fog code between radeon and r200
authorAlex Deucher <alexander.deucher@amd.com>
Tue, 17 Jan 2012 23:09:25 +0000 (18:09 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 17 Jan 2012 23:09:25 +0000 (18:09 -0500)
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
17 files changed:
src/mesa/drivers/dri/r200/Makefile
src/mesa/drivers/dri/r200/r200_context.c
src/mesa/drivers/dri/r200/r200_maos_arrays.c
src/mesa/drivers/dri/r200/r200_tcl.c
src/mesa/drivers/dri/r200/r200_tcl.h
src/mesa/drivers/dri/r200/radeon_fog.c [new symlink]
src/mesa/drivers/dri/r200/radeon_fog.h [new symlink]
src/mesa/drivers/dri/radeon/Makefile
src/mesa/drivers/dri/radeon/radeon_context.c
src/mesa/drivers/dri/radeon/radeon_dma.c
src/mesa/drivers/dri/radeon/radeon_dma.h
src/mesa/drivers/dri/radeon/radeon_fog.c [new file with mode: 0644]
src/mesa/drivers/dri/radeon/radeon_fog.h [new file with mode: 0644]
src/mesa/drivers/dri/radeon/radeon_maos_arrays.c
src/mesa/drivers/dri/radeon/radeon_maos_verts.c
src/mesa/drivers/dri/radeon/radeon_tcl.c
src/mesa/drivers/dri/radeon/radeon_tcl.h

index 3362d04543bc52521bd370f9b8fd8eada25eecb2..e53d64bf21522ee752d66cae7fbe08b072ae840a 100644 (file)
@@ -20,7 +20,8 @@ RADEON_COMMON_SOURCES = \
        radeon_span.c \
        radeon_texture.c \
        radeon_tex_copy.c \
-       radeon_tile.c
+       radeon_tile.c \
+       radeon_fog.c
 
 DRIVER_SOURCES = r200_context.c \
                 r200_ioctl.c \
index d7a648981f60f27e877546feedc041500a523731..244973e84757ca5e3f54d4c73d90b20022b914d3 100644 (file)
@@ -60,6 +60,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "r200_vertprog.h"
 #include "radeon_queryobj.h"
 #include "r200_blit.h"
+#include "radeon_fog.h"
 
 #include "radeon_span.h"
 
@@ -230,7 +231,7 @@ GLboolean r200CreateContext( gl_api api,
    rmesa->radeon.radeonScreen = screen;
    r200_init_vtbl(&rmesa->radeon);
    /* init exp fog table data */
-   r200InitStaticFogData();
+   radeonInitStaticFogData();
 
    /* Parse configuration files.
     * Do this here so that initialMaxAnisotropy is set before we create
index dee730351062418bb4acceabe2e294b1e7118e34..973dcaf07d990a15c7ae1c165ece18d7c1c0c30b 100644 (file)
@@ -70,36 +70,6 @@ do {                                         \
 } while (0)
 #endif
 
-static void r200_emit_vecfog(struct gl_context *ctx, struct radeon_aos *aos,
-                            GLvoid *data, int stride, int count)
-{
-       radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
-       GLfloat *out;
-       int i;
-       int size = 1;
-
-       if (stride == 0) {
-               radeonAllocDmaRegion(rmesa, &aos->bo, &aos->offset, size * 4, 32);
-               count = 1;
-               aos->stride = 0;
-       } else {
-               radeonAllocDmaRegion(rmesa, &aos->bo, &aos->offset, size * count * 4, 32);
-               aos->stride = size;
-       }
-
-       aos->components = size;
-       aos->count = count;
-
-       radeon_bo_map(aos->bo, 1);
-       out = (GLfloat*)((char*)aos->bo->ptr + aos->offset);
-       for (i = 0; i < count; i++) {
-         out[0] = r200ComputeFogBlendFactor( ctx, *(GLfloat *)data );
-         out++;
-         data += stride;
-       }
-       radeon_bo_unmap(aos->bo);
-}
-
 /* Emit any changed arrays to new GART memory, re-emit a packet to
  * update the arrays.  
  */
@@ -153,11 +123,11 @@ void r200EmitArrays( struct gl_context *ctx, GLubyte *vimap_rev )
                                       VB->AttribPtr[attrib]->stride,
                                       count);
               else
-                r200_emit_vecfog( ctx,
-                                  &(rmesa->radeon.tcl.aos[nr]),
-                                  (char *)VB->AttribPtr[attrib]->data,
-                                  VB->AttribPtr[attrib]->stride,
-                                  count);
+                rcommon_emit_vecfog( ctx,
+                                     &(rmesa->radeon.tcl.aos[nr]),
+                                     (char *)VB->AttribPtr[attrib]->data,
+                                     VB->AttribPtr[attrib]->stride,
+                                     count);
            }
            vfmt0 |= R200_VTX_DISCRETE_FOG;
            goto after_emit;
index 3ece7a3d7121971ac4c811db0a66566b498218d4..ba8d0db449bad3878825c165d1045c9a89baa74c 100644 (file)
@@ -284,90 +284,6 @@ void r200TclPrimitive( struct gl_context *ctx,
    }
 }
 
-
-/**********************************************************************/
-/*             Fog blend factor computation for hw tcl                */
-/*             same calculation used as in t_vb_fog.c                 */
-/**********************************************************************/
-
-#define FOG_EXP_TABLE_SIZE 256
-#define FOG_MAX (10.0)
-#define EXP_FOG_MAX .0006595
-#define FOG_INCR (FOG_MAX/FOG_EXP_TABLE_SIZE)
-static GLfloat exp_table[FOG_EXP_TABLE_SIZE];
-
-#if 1
-#define NEG_EXP( result, narg )                                                \
-do {                                                                   \
-   GLfloat f = (GLfloat) (narg * (1.0/FOG_INCR));                      \
-   GLint k = (GLint) f;                                                        \
-   if (k > FOG_EXP_TABLE_SIZE-2)                                       \
-      result = (GLfloat) EXP_FOG_MAX;                                  \
-   else                                                                        \
-      result = exp_table[k] + (f-k)*(exp_table[k+1]-exp_table[k]);     \
-} while (0)
-#else
-#define NEG_EXP( result, narg )                                        \
-do {                                                           \
-   result = exp(-narg);                                                \
-} while (0)
-#endif
-
-
-/**
- * Initialize the exp_table[] lookup table for approximating exp().
- */
-void
-r200InitStaticFogData( void )
-{
-   GLfloat f = 0.0F;
-   GLint i = 0;
-   for ( ; i < FOG_EXP_TABLE_SIZE ; i++, f += FOG_INCR) {
-      exp_table[i] = (GLfloat) exp(-f);
-   }
-}
-
-
-/**
- * Compute per-vertex fog blend factors from fog coordinates by
- * evaluating the GL_LINEAR, GL_EXP or GL_EXP2 fog function.
- * Fog coordinates are distances from the eye (typically between the
- * near and far clip plane distances).
- * Note the fog (eye Z) coords may be negative so we use ABS(z) below.
- * Fog blend factors are in the range [0,1].
- */
-float
-r200ComputeFogBlendFactor( struct gl_context *ctx, GLfloat fogcoord )
-{
-   GLfloat end  = ctx->Fog.End;
-   GLfloat d, temp;
-   const GLfloat z = FABSF(fogcoord);
-
-   switch (ctx->Fog.Mode) {
-   case GL_LINEAR:
-      if (ctx->Fog.Start == ctx->Fog.End)
-         d = 1.0F;
-      else
-         d = 1.0F / (ctx->Fog.End - ctx->Fog.Start);
-      temp = (end - z) * d;
-      return CLAMP(temp, 0.0F, 1.0F);
-      break;
-   case GL_EXP:
-      d = ctx->Fog.Density;
-      NEG_EXP( temp, d * z );
-      return temp;
-      break;
-   case GL_EXP2:
-      d = ctx->Fog.Density*ctx->Fog.Density;
-      NEG_EXP( temp, d * z * z );
-      return temp;
-      break;
-   default:
-      _mesa_problem(ctx, "Bad fog mode in make_fog_coord");
-      return 0;
-   }
-}
-
 /**
  * Predict total emit size for next rendering operation so there is no flush in middle of rendering
  * Prediction has to aim towards the best possible value that is worse than worst case scenario
index 53a1f11e9db20b06f4bc297b45a035d87767ead4..d324d5fc8ceacae9e1520355f0559aed33ad9e6c 100644 (file)
@@ -45,10 +45,6 @@ extern void r200EmitPrimitive( struct gl_context *ctx, GLuint first, GLuint last
 
 extern void r200TclFallback( struct gl_context *ctx, GLuint bit, GLboolean mode );
 
-extern void r200InitStaticFogData( void );
-
-extern float r200ComputeFogBlendFactor( struct gl_context *ctx, GLfloat fogcoord );
-                                             
 #define R200_TCL_FALLBACK_RASTER            0x1 /* rasterization */
 #define R200_TCL_FALLBACK_UNFILLED          0x2 /* unfilled tris */
 #define R200_TCL_FALLBACK_LIGHT_TWOSIDE     0x4 /* twoside tris */
diff --git a/src/mesa/drivers/dri/r200/radeon_fog.c b/src/mesa/drivers/dri/r200/radeon_fog.c
new file mode 120000 (symlink)
index 0000000..231aa4f
--- /dev/null
@@ -0,0 +1 @@
+../radeon/radeon_fog.c
\ No newline at end of file
diff --git a/src/mesa/drivers/dri/r200/radeon_fog.h b/src/mesa/drivers/dri/r200/radeon_fog.h
new file mode 120000 (symlink)
index 0000000..76c40f6
--- /dev/null
@@ -0,0 +1 @@
+../radeon/radeon_fog.h
\ No newline at end of file
index 3cb1dc54ab7b6be7a1bd3c2700b767829072f5b3..87af26ec220edeebd61853ac6bb440700d985d3f 100644 (file)
@@ -21,7 +21,8 @@ RADEON_COMMON_SOURCES = \
        radeon_span.c \
        radeon_texture.c \
        radeon_tex_copy.c \
-       radeon_tile.c
+       radeon_tile.c \
+       radeon_fog.c
 
 DRIVER_SOURCES = \
        radeon_context.c \
index 40fd4dcd275fdb8068e66c3365cfc5c9f3618468..9881d002faddf16aa8b5afa0ae8198a4a07ea27e 100644 (file)
@@ -63,6 +63,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "radeon_tcl.h"
 #include "radeon_queryobj.h"
 #include "radeon_blit.h"
+#include "radeon_fog.h"
 
 #include "utils.h"
 #include "xmlpool.h" /* for symbolic values of enum-type options */
index b49486f1f924c3682acb6b58e234e910179c6db6..61cddda5dc1d30f4dd1a2bee58545e2781f874ee 100644 (file)
@@ -32,6 +32,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 #include <errno.h>
 #include "radeon_common.h"
+#include "radeon_fog.h"
 #include "main/simple_list.h"
 
 #if defined(USE_X86_ASM)
@@ -165,6 +166,41 @@ void rcommon_emit_vector(struct gl_context * ctx, struct radeon_aos *aos,
        radeon_bo_unmap(aos->bo);
 }
 
+void rcommon_emit_vecfog(struct gl_context *ctx, struct radeon_aos *aos,
+                        GLvoid *data, int stride, int count)
+{
+       int i;
+       float *out;
+       int size = 1;
+       radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
+
+       if (RADEON_DEBUG & RADEON_VERTS)
+               fprintf(stderr, "%s count %d stride %d\n",
+                       __FUNCTION__, count, stride);
+
+       if (stride == 0) {
+               radeonAllocDmaRegion( rmesa, &aos->bo, &aos->offset, size * 4, 32 );
+               count = 1;
+               aos->stride = 0;
+       } else {
+               radeonAllocDmaRegion(rmesa, &aos->bo, &aos->offset, size * count * 4, 32);
+               aos->stride = size;
+       }
+
+       aos->components = size;
+       aos->count = count;
+
+       /* Emit the data */
+       radeon_bo_map(aos->bo, 1);
+       out = (float*)((char*)aos->bo->ptr + aos->offset);
+       for (i = 0; i < count; i++) {
+               out[0] = radeonComputeFogBlendFactor( ctx, *(GLfloat *)data );
+               out++;
+               data += stride;
+       }
+       radeon_bo_unmap(aos->bo);
+}
+
 void radeon_init_dma(radeonContextPtr rmesa)
 {
        make_empty_list(&rmesa->dma.free);
index ad6a3b8baab30761889dceb33d7f51bf6fd03168..db7b84ebd1e6745222d853f593b2a8f58c44ca95 100644 (file)
@@ -40,6 +40,8 @@ void radeonEmitVec16(uint32_t *out, const GLvoid * data, int stride, int count);
 
 void rcommon_emit_vector(struct gl_context * ctx, struct radeon_aos *aos,
                         const GLvoid * data, int size, int stride, int count);
+void rcommon_emit_vecfog(struct gl_context *ctx, struct radeon_aos *aos,
+                        GLvoid *data, int stride, int count);
 
 void radeonReturnDmaRegion(radeonContextPtr rmesa, int return_bytes);
 void radeonRefillCurrentDmaRegion(radeonContextPtr rmesa, int size);
diff --git a/src/mesa/drivers/dri/radeon/radeon_fog.c b/src/mesa/drivers/dri/radeon/radeon_fog.c
new file mode 100644 (file)
index 0000000..bd2642b
--- /dev/null
@@ -0,0 +1,125 @@
+/**************************************************************************
+
+Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
+                     Tungsten Graphics Inc., Austin, Texas.
+
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+**************************************************************************/
+
+/*
+ * Authors:
+ *   Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+#include "main/glheader.h"
+#include "main/imports.h"
+#include "main/context.h"
+#include "main/mtypes.h"
+#include "main/enums.h"
+#include "main/macros.h"
+
+#include "radeon_fog.h"
+
+/**********************************************************************/
+/*             Fog blend factor computation for hw tcl                */
+/*             same calculation used as in t_vb_fog.c                 */
+/**********************************************************************/
+
+#define FOG_EXP_TABLE_SIZE 256
+#define FOG_MAX (10.0)
+#define EXP_FOG_MAX .0006595
+#define FOG_INCR (FOG_MAX/FOG_EXP_TABLE_SIZE)
+static GLfloat exp_table[FOG_EXP_TABLE_SIZE];
+
+#if 1
+#define NEG_EXP( result, narg )                                                \
+do {                                                                   \
+   GLfloat f = (GLfloat) (narg * (1.0/FOG_INCR));                      \
+   GLint k = (GLint) f;                                                        \
+   if (k > FOG_EXP_TABLE_SIZE-2)                                       \
+      result = (GLfloat) EXP_FOG_MAX;                                  \
+   else                                                                        \
+      result = exp_table[k] + (f-k)*(exp_table[k+1]-exp_table[k]);     \
+} while (0)
+#else
+#define NEG_EXP( result, narg )                                        \
+do {                                                           \
+   result = exp(-narg);                                                \
+} while (0)
+#endif
+
+
+/**
+ * Initialize the exp_table[] lookup table for approximating exp().
+ */
+void
+radeonInitStaticFogData( void )
+{
+   GLfloat f = 0.0F;
+   GLint i = 0;
+   for ( ; i < FOG_EXP_TABLE_SIZE ; i++, f += FOG_INCR) {
+      exp_table[i] = (GLfloat) exp(-f);
+   }
+}
+
+/**
+ * Compute per-vertex fog blend factors from fog coordinates by
+ * evaluating the GL_LINEAR, GL_EXP or GL_EXP2 fog function.
+ * Fog coordinates are distances from the eye (typically between the
+ * near and far clip plane distances).
+ * Note the fog (eye Z) coords may be negative so we use ABS(z) below.
+ * Fog blend factors are in the range [0,1].
+ */
+float
+radeonComputeFogBlendFactor( struct gl_context *ctx, GLfloat fogcoord )
+{
+       GLfloat end  = ctx->Fog.End;
+       GLfloat d, temp;
+       const GLfloat z = FABSF(fogcoord);
+
+       switch (ctx->Fog.Mode) {
+       case GL_LINEAR:
+               if (ctx->Fog.Start == ctx->Fog.End)
+                       d = 1.0F;
+               else
+                       d = 1.0F / (ctx->Fog.End - ctx->Fog.Start);
+               temp = (end - z) * d;
+               return CLAMP(temp, 0.0F, 1.0F);
+               break;
+       case GL_EXP:
+               d = ctx->Fog.Density;
+               NEG_EXP( temp, d * z );
+               return temp;
+               break;
+       case GL_EXP2:
+               d = ctx->Fog.Density*ctx->Fog.Density;
+               NEG_EXP( temp, d * z * z );
+               return temp;
+               break;
+       default:
+               _mesa_problem(ctx, "Bad fog mode in make_fog_coord");
+               return 0;
+       }
+}
+
diff --git a/src/mesa/drivers/dri/radeon/radeon_fog.h b/src/mesa/drivers/dri/radeon/radeon_fog.h
new file mode 100644 (file)
index 0000000..0c3b8d5
--- /dev/null
@@ -0,0 +1,44 @@
+/**************************************************************************
+
+Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
+                     Tungsten Graphics Inc., Austin, Texas.
+
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+**************************************************************************/
+
+/*
+ * Authors:
+ *   Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+#ifndef RADEON_FOG_H
+#define RADEON_FOG_H
+
+void
+radeonInitStaticFogData( void );
+
+float
+radeonComputeFogBlendFactor( struct gl_context *ctx, GLfloat fogcoord );
+
+#endif
index 05aa2cbd33a68bff3822c042f1705e543c986a73..3f69105dae2040fd980a727491fc47201baac160 100644 (file)
@@ -48,44 +48,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "radeon_maos.h"
 #include "radeon_tcl.h"
 
-static void emit_vecfog(struct gl_context *ctx, struct radeon_aos *aos,
-                       GLvoid *data, int stride, int count)
-{
-   int i;
-   uint32_t *out;
-   int size = 1;
-   radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
-
-   if (RADEON_DEBUG & RADEON_VERTS)
-      fprintf(stderr, "%s count %d stride %d\n",
-             __FUNCTION__, count, stride);
-
-   if (stride == 0) {
-      radeonAllocDmaRegion( rmesa, &aos->bo, &aos->offset, size * 4, 32 );
-      count = 1;
-      aos->stride = 0;
-   }
-   else {
-      radeonAllocDmaRegion(rmesa, &aos->bo, &aos->offset, size * count * 4, 32);
-      aos->stride = size;
-   }
-
-   aos->components = size;
-   aos->count = count;
-
-
-   /* Emit the data
-    */
-   radeon_bo_map(aos->bo, 1);
-   out = (uint32_t*)((char*)aos->bo->ptr + aos->offset);
-   for (i = 0; i < count; i++) {
-      out[0] = radeonComputeFogBlendFactor( ctx, *(GLfloat *)data );
-      out++;
-      data += stride;
-   }
-   radeon_bo_unmap(aos->bo);
-}
-
 static void emit_s0_vec(uint32_t *out, GLvoid *data, int stride, int count)
 {
    int i;
@@ -118,9 +80,6 @@ static void emit_stq_vec(uint32_t *out, GLvoid *data, int stride, int count)
    }
 }
 
-
-
-
 static void emit_tex_vector(struct gl_context *ctx, struct radeon_aos *aos,
                            GLvoid *data, int size, int stride, int count)
 {
@@ -275,11 +234,11 @@ void radeonEmitArrays( struct gl_context *ctx, GLuint inputs )
    are emitted together but for secondary color not. */
    if (inputs & VERT_BIT_FOG) {
       if (!rmesa->tcl.fog.buf)
-        emit_vecfog( ctx,
-                     &(rmesa->tcl.aos[nr]),
-                     (char *)VB->AttribPtr[_TNL_ATTRIB_FOG]->data,
-                     VB->AttribPtr[_TNL_ATTRIB_FOG]->stride,
-                     count);
+        rcommon_emit_vecfog( ctx,
+                             &(rmesa->tcl.aos[nr]),
+                             (char *)VB->AttribPtr[_TNL_ATTRIB_FOG]->data,
+                             VB->AttribPtr[_TNL_ATTRIB_FOG]->stride,
+                             count);
 
       vfmt |= RADEON_CP_VC_FRMT_FPFOG;
       nr++;
index 5dac2a362b23405fa710c961e9d1778f1d83137f..985ad663c6db0a4a43c5af0037a9bc01c9eeb56b 100644 (file)
@@ -47,7 +47,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "radeon_tcl.h"
 #include "radeon_swtcl.h"
 #include "radeon_maos.h"
-
+#include "radeon_fog.h"
 
 #define RADEON_TCL_MAX_SETUP 19
 
index 06cb8075da19049d1f826b65a9ad68ea81d6327c..dee25ae3602cfe96fc663265e9785052b109d9bb 100644 (file)
@@ -276,89 +276,6 @@ void radeonTclPrimitive( struct gl_context *ctx,
    }
 }
 
-/**********************************************************************/
-/*             Fog blend factor computation for hw tcl                */
-/*             same calculation used as in t_vb_fog.c                 */
-/**********************************************************************/
-
-#define FOG_EXP_TABLE_SIZE 256
-#define FOG_MAX (10.0)
-#define EXP_FOG_MAX .0006595
-#define FOG_INCR (FOG_MAX/FOG_EXP_TABLE_SIZE)
-static GLfloat exp_table[FOG_EXP_TABLE_SIZE];
-
-#if 1
-#define NEG_EXP( result, narg )                                                \
-do {                                                                   \
-   GLfloat f = (GLfloat) (narg * (1.0/FOG_INCR));                      \
-   GLint k = (GLint) f;                                                        \
-   if (k > FOG_EXP_TABLE_SIZE-2)                                       \
-      result = (GLfloat) EXP_FOG_MAX;                                  \
-   else                                                                        \
-      result = exp_table[k] + (f-k)*(exp_table[k+1]-exp_table[k]);     \
-} while (0)
-#else
-#define NEG_EXP( result, narg )                                        \
-do {                                                           \
-   result = exp(-narg);                                                \
-} while (0)
-#endif
-
-
-/**
- * Initialize the exp_table[] lookup table for approximating exp().
- */
-void
-radeonInitStaticFogData( void )
-{
-   GLfloat f = 0.0F;
-   GLint i = 0;
-   for ( ; i < FOG_EXP_TABLE_SIZE ; i++, f += FOG_INCR) {
-      exp_table[i] = (GLfloat) exp(-f);
-   }
-}
-
-
-/**
- * Compute per-vertex fog blend factors from fog coordinates by
- * evaluating the GL_LINEAR, GL_EXP or GL_EXP2 fog function.
- * Fog coordinates are distances from the eye (typically between the
- * near and far clip plane distances).
- * Note the fog (eye Z) coords may be negative so we use ABS(z) below.
- * Fog blend factors are in the range [0,1].
- */
-float
-radeonComputeFogBlendFactor( struct gl_context *ctx, GLfloat fogcoord )
-{
-   GLfloat end  = ctx->Fog.End;
-   GLfloat d, temp;
-   const GLfloat z = FABSF(fogcoord);
-
-   switch (ctx->Fog.Mode) {
-   case GL_LINEAR:
-      if (ctx->Fog.Start == ctx->Fog.End)
-         d = 1.0F;
-      else
-         d = 1.0F / (ctx->Fog.End - ctx->Fog.Start);
-      temp = (end - z) * d;
-      return CLAMP(temp, 0.0F, 1.0F);
-      break;
-   case GL_EXP:
-      d = ctx->Fog.Density;
-      NEG_EXP( temp, d * z );
-      return temp;
-      break;
-   case GL_EXP2:
-      d = ctx->Fog.Density*ctx->Fog.Density;
-      NEG_EXP( temp, d * z * z );
-      return temp;
-      break;
-   default:
-      _mesa_problem(ctx, "Bad fog mode in make_fog_coord");
-      return 0;
-   }
-}
-
 /**
  * Predict total emit size for next rendering operation so there is no flush in middle of rendering
  * Prediction has to aim towards the best possible value that is worse than worst case scenario
index cf19766b9f249dcebb0f914db29c7b9a83c50cea..7f38fe68f94ecdba1430ce280fcc02ab451aa674 100644 (file)
@@ -46,9 +46,6 @@ extern void radeonEmitPrimitive( struct gl_context *ctx, GLuint first, GLuint la
 
 extern void radeonTclFallback( struct gl_context *ctx, GLuint bit, GLboolean mode );
 
-extern void radeonInitStaticFogData( void );
-extern float radeonComputeFogBlendFactor( struct gl_context *ctx, GLfloat fogcoord );
-
 #define RADEON_TCL_FALLBACK_RASTER            0x1 /* rasterization */
 #define RADEON_TCL_FALLBACK_UNFILLED          0x2 /* unfilled tris */
 #define RADEON_TCL_FALLBACK_LIGHT_TWOSIDE     0x4 /* twoside tris */