Fixed bug in MinMagThresh computation.
authorBrian Paul <brian.paul@tungstengraphics.com>
Fri, 5 Jan 2001 21:28:31 +0000 (21:28 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Fri, 5 Jan 2001 21:28:31 +0000 (21:28 +0000)
Renamed gl_texture_pixels() to _swrast_texture_fragments()

src/mesa/swrast/s_copypix.c
src/mesa/swrast/s_drawpix.c
src/mesa/swrast/s_span.c
src/mesa/swrast/s_texture.c
src/mesa/swrast/s_texture.h

index cf87b96bc08f8c544429869e614914cc538a3299..401b448a630e613afd0ed95c441bea26b720764f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_copypix.c,v 1.8 2000/12/26 05:09:32 keithw Exp $ */
+/* $Id: s_copypix.c,v 1.9 2001/01/05 21:28:31 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -247,8 +247,8 @@ copy_conv_rgba_pixels(GLcontext *ctx, GLint srcx, GLint srcy,
          for (unit = 0; unit < ctx->Const.MaxTextureUnits; unit++) {
             _mesa_pixeltexgen(ctx, width, (const GLchan (*)[4]) rgba,
                               s, t, r, q);
-            gl_texture_pixels(ctx, unit, width, s, t, r, NULL,
-                              primary_rgba, rgba);
+            _swrast_texture_fragments(ctx, unit, width, s, t, r, NULL,
+                                      primary_rgba, rgba);
          }
       }
 
@@ -493,8 +493,8 @@ copy_rgba_pixels(GLcontext *ctx, GLint srcx, GLint srcy,
          for (unit = 0; unit < ctx->Const.MaxTextureUnits; unit++) {
             _mesa_pixeltexgen(ctx, width, (const GLchan (*)[4]) rgba,
                               s, t, r, q);
-            gl_texture_pixels(ctx, unit, width, s, t, r, NULL,
-                              primary_rgba, rgba);
+            _swrast_texture_fragments(ctx, unit, width, s, t, r, NULL,
+                                      primary_rgba, rgba);
          }
       }
 
index 63281b2f7309af41afa4f9504babe02db09d07ed..766749e811f37c120f3782bcadfa03cc52929f1f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_drawpix.c,v 1.6 2001/01/03 15:59:30 brianp Exp $ */
+/* $Id: s_drawpix.c,v 1.7 2001/01/05 21:28:31 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -810,8 +810,8 @@ draw_rgba_pixels( GLcontext *ctx, GLint x, GLint y,
                if (ctx->Texture.Unit[unit]._ReallyEnabled) {
                   _mesa_pixeltexgen(ctx, width, (const GLchan (*)[4]) rgba,
                                     s, t, r, q);
-                  gl_texture_pixels(ctx, unit, width, s, t, r, NULL,
-                                    primary_rgba, rgba);
+                  _swrast_texture_fragments(ctx, unit, width, s, t, r, NULL,
+                                            primary_rgba, rgba);
                }
             }
          }
index fc2a1d66331d70ada508d97a7aa13e0efe8a5ade..062b4da348d56516204164139f12c5aa3750600f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_span.c,v 1.5 2000/12/12 00:27:51 brianp Exp $ */
+/* $Id: s_span.c,v 1.6 2001/01/05 21:28:31 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -818,7 +818,7 @@ void gl_write_texture_span( GLcontext *ctx,
       /* Texturing without alpha is done after depth-testing which
          gives a potential speed-up. */
       ASSERT(ctx->Texture._ReallyEnabled);
-      gl_texture_pixels( ctx, 0, n, s, t, u, lambda, rgba, rgba );
+      _swrast_texture_fragments( ctx, 0, n, s, t, u, lambda, rgba, rgba );
      
       /* Do the alpha test */
       if (_mesa_alpha_test( ctx, n, (const GLchan (*)[4]) rgba, mask ) == 0) {
@@ -851,7 +851,7 @@ void gl_write_texture_span( GLcontext *ctx,
    /* Texture without alpha test */
    if (! ctx->Color.AlphaEnabled) {
       ASSERT(ctx->Texture._ReallyEnabled);
-      gl_texture_pixels( ctx, 0, n, s, t, u, lambda, rgba, rgba );
+      _swrast_texture_fragments( ctx, 0, n, s, t, u, lambda, rgba, rgba );
    }
 
    /* Add base and specular colors */
@@ -965,7 +965,8 @@ gl_write_multitexture_span( GLcontext *ctx,
        */
       ASSERT(ctx->Texture._ReallyEnabled);
       for (i = 0; i < texUnits; i++)
-         gl_texture_pixels( ctx, i, n, s[i], t[i], u[i], lambda[i], rgbaIn, rgba );
+         _swrast_texture_fragments( ctx, i, n, s[i], t[i], u[i],
+                                    lambda[i], rgbaIn, rgba );
      
       /* Do the alpha test */
       if (_mesa_alpha_test( ctx, n, (const GLchan (*)[4])rgba, mask ) == 0) {
@@ -999,8 +1000,8 @@ gl_write_multitexture_span( GLcontext *ctx,
    if (! ctx->Color.AlphaEnabled) {
       ASSERT(ctx->Texture._ReallyEnabled);
       for (i = 0; i < texUnits; i++)
-         gl_texture_pixels( ctx, i, n, s[i], t[i], u[i],
-                            lambda[i], rgbaIn, rgba );
+         _swrast_texture_fragments( ctx, i, n, s[i], t[i], u[i],
+                                    lambda[i], rgbaIn, rgba );
    }
 
    /* Add base and specular colors */
index 29d6b46f4db223c6239a7901c3b202f30ca1a5a5..b4c81fad02e57e0d7b7a44a4eb8c3bb46c782043 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_texture.c,v 1.6 2001/01/03 15:59:30 brianp Exp $ */
+/* $Id: s_texture.c,v 1.7 2001/01/05 21:28:31 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -46,8 +46,9 @@
  *         index - the palette index (8-bit only)
  * Output:  red, green, blue, alpha - the texel color
  */
-static void palette_sample(const struct gl_texture_object *tObj,
-                           GLint index, GLchan rgba[4] )
+static void
+palette_sample(const struct gl_texture_object *tObj,
+               GLint index, GLchan rgba[4] )
 {
    GLcontext *ctx = _mesa_get_current_context();  /* THIS IS A HACK */
    const GLchan *palette;
@@ -219,9 +220,10 @@ static void palette_sample(const struct gl_texture_object *tObj,
  * Given 1-D texture image and an (i) texel column coordinate, return the
  * texel color.
  */
-static void get_1d_texel( const struct gl_texture_object *tObj,
-                          const struct gl_texture_image *img, GLint i,
-                          GLchan rgba[4] )
+static void
+get_1d_texel( const struct gl_texture_object *tObj,
+              const struct gl_texture_image *img, GLint i,
+              GLchan rgba[4] )
 {
    const GLchan *texel;
 
@@ -274,9 +276,10 @@ static void get_1d_texel( const struct gl_texture_object *tObj,
 /*
  * Return the texture sample for coordinate (s) using GL_NEAREST filter.
  */
-static void sample_1d_nearest( const struct gl_texture_object *tObj,
-                               const struct gl_texture_image *img,
-                               GLfloat s, GLchan rgba[4] )
+static void
+sample_1d_nearest( const struct gl_texture_object *tObj,
+                   const struct gl_texture_image *img,
+                   GLfloat s, GLchan rgba[4] )
 {
    const GLint width = img->Width2;  /* without border, power of two */
    const GLchan *texel;
@@ -330,10 +333,10 @@ static void sample_1d_nearest( const struct gl_texture_object *tObj,
 /*
  * Return the texture sample for coordinate (s) using GL_LINEAR filter.
  */
-static void sample_1d_linear( const struct gl_texture_object *tObj,
-                              const struct gl_texture_image *img,
-                              GLfloat s,
-                              GLchan rgba[4] )
+static void
+sample_1d_linear( const struct gl_texture_object *tObj,
+                  const struct gl_texture_image *img,
+                  GLfloat s, GLchan rgba[4] )
 {
    const GLint width = img->Width2;
    GLint i0, i1;
@@ -456,11 +459,12 @@ sample_1d_linear_mipmap_linear( const struct gl_texture_object *tObj,
 
 
 
-static void sample_nearest_1d( GLcontext *ctx, GLuint texUnit,
-                              const struct gl_texture_object *tObj, GLuint n,
-                               const GLfloat s[], const GLfloat t[],
-                               const GLfloat u[], const GLfloat lambda[],
-                               GLchan rgba[][4] )
+static void
+sample_nearest_1d( GLcontext *ctx, GLuint texUnit,
+                   const struct gl_texture_object *tObj, GLuint n,
+                   const GLfloat s[], const GLfloat t[],
+                   const GLfloat u[], const GLfloat lambda[],
+                   GLchan rgba[][4] )
 {
    GLuint i;
    struct gl_texture_image *image = tObj->Image[tObj->BaseLevel];
@@ -474,11 +478,12 @@ static void sample_nearest_1d( GLcontext *ctx, GLuint texUnit,
 
 
 
-static void sample_linear_1d( GLcontext *ctx, GLuint texUnit,
-                             const struct gl_texture_object *tObj, GLuint n,
-                              const GLfloat s[], const GLfloat t[],
-                              const GLfloat u[], const GLfloat lambda[],
-                              GLchan rgba[][4] )
+static void
+sample_linear_1d( GLcontext *ctx, GLuint texUnit,
+                  const struct gl_texture_object *tObj, GLuint n,
+                  const GLfloat s[], const GLfloat t[],
+                  const GLfloat u[], const GLfloat lambda[],
+                  GLchan rgba[][4] )
 {
    GLuint i;
    struct gl_texture_image *image = tObj->Image[tObj->BaseLevel];
@@ -496,11 +501,12 @@ static void sample_linear_1d( GLcontext *ctx, GLuint texUnit,
  * return a texture sample.
  *
  */
-static void sample_lambda_1d( GLcontext *ctx, GLuint texUnit,
-                             const struct gl_texture_object *tObj, GLuint n,
-                              const GLfloat s[], const GLfloat t[],
-                              const GLfloat u[], const GLfloat lambda[],
-                              GLchan rgba[][4] )
+static void
+sample_lambda_1d( GLcontext *ctx, GLuint texUnit,
+                  const struct gl_texture_object *tObj, GLuint n,
+                  const GLfloat s[], const GLfloat t[],
+                  const GLfloat u[], const GLfloat lambda[],
+                  GLchan rgba[][4] )
 {
    GLfloat MinMagThresh = SWRAST_CONTEXT(ctx)->_MinMagThresh[texUnit];
    GLuint i;
@@ -564,9 +570,10 @@ static void sample_lambda_1d( GLcontext *ctx, GLuint texUnit,
  * Given a texture image and an (i,j) integer texel coordinate, return the
  * texel color.
  */
-static void get_2d_texel( const struct gl_texture_object *tObj,
-                          const struct gl_texture_image *img, GLint i, GLint j,
-                          GLchan rgba[4] )
+static void
+get_2d_texel( const struct gl_texture_object *tObj,
+              const struct gl_texture_image *img, GLint i, GLint j,
+              GLchan rgba[4] )
 {
    const GLint width = img->Width;    /* includes border */
    const GLchan *texel;
@@ -621,10 +628,11 @@ static void get_2d_texel( const struct gl_texture_object *tObj,
 /*
  * Return the texture sample for coordinate (s,t) using GL_NEAREST filter.
  */
-static void sample_2d_nearest( const struct gl_texture_object *tObj,
-                               const struct gl_texture_image *img,
-                               GLfloat s, GLfloat t,
-                               GLchan rgba[] )
+static void
+sample_2d_nearest( const struct gl_texture_object *tObj,
+                   const struct gl_texture_image *img,
+                   GLfloat s, GLfloat t,
+                   GLchan rgba[] )
 {
    const GLint imgWidth = img->Width;  /* includes border */
    const GLint width = img->Width2;    /* without border, power of two */
@@ -682,10 +690,11 @@ static void sample_2d_nearest( const struct gl_texture_object *tObj,
  * Return the texture sample for coordinate (s,t) using GL_LINEAR filter.
  * New sampling code contributed by Lynn Quam <quam@ai.sri.com>.
  */
-static void sample_2d_linear( const struct gl_texture_object *tObj,
-                              const struct gl_texture_image *img,
-                              GLfloat s, GLfloat t,
-                              GLchan rgba[] )
+static void
+sample_2d_linear( const struct gl_texture_object *tObj,
+                  const struct gl_texture_image *img,
+                  GLfloat s, GLfloat t,
+                  GLchan rgba[] )
 {
    const GLint width = img->Width2;
    const GLint height = img->Height2;
@@ -834,11 +843,12 @@ sample_2d_linear_mipmap_linear( const struct gl_texture_object *tObj,
 
 
 
-static void sample_nearest_2d( GLcontext *ctx, GLuint texUnit,
-                              const struct gl_texture_object *tObj, GLuint n,
-                               const GLfloat s[], const GLfloat t[],
-                               const GLfloat u[], const GLfloat lambda[],
-                               GLchan rgba[][4] )
+static void
+sample_nearest_2d( GLcontext *ctx, GLuint texUnit,
+                   const struct gl_texture_object *tObj, GLuint n,
+                   const GLfloat s[], const GLfloat t[],
+                   const GLfloat u[], const GLfloat lambda[],
+                   GLchan rgba[][4] )
 {
    GLuint i;
    struct gl_texture_image *image = tObj->Image[tObj->BaseLevel];
@@ -851,11 +861,12 @@ static void sample_nearest_2d( GLcontext *ctx, GLuint texUnit,
 
 
 
-static void sample_linear_2d( GLcontext *ctx, GLuint texUnit,
-                             const struct gl_texture_object *tObj, GLuint n,
-                              const GLfloat s[], const GLfloat t[],
-                              const GLfloat u[], const GLfloat lambda[],
-                              GLchan rgba[][4] )
+static void
+sample_linear_2d( GLcontext *ctx, GLuint texUnit,
+                  const struct gl_texture_object *tObj, GLuint n,
+                  const GLfloat s[], const GLfloat t[],
+                  const GLfloat u[], const GLfloat lambda[],
+                  GLchan rgba[][4] )
 {
    GLuint i;
    struct gl_texture_image *image = tObj->Image[tObj->BaseLevel];
@@ -871,12 +882,13 @@ static void sample_linear_2d( GLcontext *ctx, GLuint texUnit,
  * Given an (s,t) texture coordinate and lambda (level of detail) value,
  * return a texture sample.
  */
-static void sample_lambda_2d( GLcontext *ctx, GLuint texUnit,
-                             const struct gl_texture_object *tObj,
-                              GLuint n,
-                              const GLfloat s[], const GLfloat t[],
-                              const GLfloat u[], const GLfloat lambda[],
-                              GLchan rgba[][4] )
+static void
+sample_lambda_2d( GLcontext *ctx, GLuint texUnit,
+                  const struct gl_texture_object *tObj,
+                  GLuint n,
+                  const GLfloat s[], const GLfloat t[],
+                  const GLfloat u[], const GLfloat lambda[],
+                  GLchan rgba[][4] )
 {
    GLfloat MinMagThresh = SWRAST_CONTEXT(ctx)->_MinMagThresh[texUnit];
    GLuint i;
@@ -932,11 +944,12 @@ static void sample_lambda_2d( GLcontext *ctx, GLuint texUnit,
  *    No border
  *    Format = GL_RGB
  */
-static void opt_sample_rgb_2d( GLcontext *ctx, GLuint texUnit,
-                              const struct gl_texture_object *tObj,
-                               GLuint n, const GLfloat s[], const GLfloat t[],
-                               const GLfloat u[], const GLfloat lambda[],
-                               GLchan rgba[][4] )
+static void
+opt_sample_rgb_2d( GLcontext *ctx, GLuint texUnit,
+                   const struct gl_texture_object *tObj,
+                   GLuint n, const GLfloat s[], const GLfloat t[],
+                   const GLfloat u[], const GLfloat lambda[],
+                   GLchan rgba[][4] )
 {
    const struct gl_texture_image *img = tObj->Image[tObj->BaseLevel];
    const GLfloat width = (GLfloat) img->Width;
@@ -974,11 +987,12 @@ static void opt_sample_rgb_2d( GLcontext *ctx, GLuint texUnit,
  *    No border
  *    Format = GL_RGBA
  */
-static void opt_sample_rgba_2d( GLcontext *ctx, GLuint texUnit,
-                               const struct gl_texture_object *tObj,
-                                GLuint n, const GLfloat s[], const GLfloat t[],
-                                const GLfloat u[], const GLfloat lambda[],
-                                GLchan rgba[][4] )
+static void
+opt_sample_rgba_2d( GLcontext *ctx, GLuint texUnit,
+                    const struct gl_texture_object *tObj,
+                    GLuint n, const GLfloat s[], const GLfloat t[],
+                    const GLfloat u[], const GLfloat lambda[],
+                    GLchan rgba[][4] )
 {
    const struct gl_texture_image *img = tObj->Image[tObj->BaseLevel];
    const GLfloat width = (GLfloat) img->Width;
@@ -1019,10 +1033,11 @@ static void opt_sample_rgba_2d( GLcontext *ctx, GLuint texUnit,
  * Given a texture image and an (i,j,k) integer texel coordinate, return the
  * texel color.
  */
-static void get_3d_texel( const struct gl_texture_object *tObj,
-                          const struct gl_texture_image *img,
-                          GLint i, GLint j, GLint k,
-                          GLchan rgba[4] )
+static void
+get_3d_texel( const struct gl_texture_object *tObj,
+              const struct gl_texture_image *img,
+              GLint i, GLint j, GLint k,
+              GLchan rgba[4] )
 {
    const GLint width = img->Width;    /* includes border */
    const GLint height = img->Height;  /* includes border */
@@ -1080,10 +1095,11 @@ static void get_3d_texel( const struct gl_texture_object *tObj,
 /*
  * Return the texture sample for coordinate (s,t,r) using GL_NEAREST filter.
  */
-static void sample_3d_nearest( const struct gl_texture_object *tObj,
-                               const struct gl_texture_image *img,
-                               GLfloat s, GLfloat t, GLfloat r,
-                               GLchan rgba[4] )
+static void
+sample_3d_nearest( const struct gl_texture_object *tObj,
+                   const struct gl_texture_image *img,
+                   GLfloat s, GLfloat t, GLfloat r,
+                   GLchan rgba[4] )
 {
    const GLint imgWidth = img->Width;   /* includes border, if any */
    const GLint imgHeight = img->Height; /* includes border, if any */
@@ -1140,10 +1156,11 @@ static void sample_3d_nearest( const struct gl_texture_object *tObj,
 /*
  * Return the texture sample for coordinate (s,t,r) using GL_LINEAR filter.
  */
-static void sample_3d_linear( const struct gl_texture_object *tObj,
-                              const struct gl_texture_image *img,
-                              GLfloat s, GLfloat t, GLfloat r,
-                              GLchan rgba[4] )
+static void
+sample_3d_linear( const struct gl_texture_object *tObj,
+                  const struct gl_texture_image *img,
+                  GLfloat s, GLfloat t, GLfloat r,
+                  GLchan rgba[4] )
 {
    const GLint width = img->Width2;
    const GLint height = img->Height2;
@@ -1335,11 +1352,12 @@ sample_3d_linear_mipmap_linear( const struct gl_texture_object *tObj,
 }
 
 
-static void sample_nearest_3d( GLcontext *ctx, GLuint texUnit,
-                              const struct gl_texture_object *tObj, GLuint n,
-                               const GLfloat s[], const GLfloat t[],
-                               const GLfloat u[], const GLfloat lambda[],
-                               GLchan rgba[][4] )
+static void
+sample_nearest_3d( GLcontext *ctx, GLuint texUnit,
+                   const struct gl_texture_object *tObj, GLuint n,
+                   const GLfloat s[], const GLfloat t[],
+                   const GLfloat u[], const GLfloat lambda[],
+                   GLchan rgba[][4] )
 {
    GLuint i;
    struct gl_texture_image *image = tObj->Image[tObj->BaseLevel];
@@ -1351,11 +1369,12 @@ static void sample_nearest_3d( GLcontext *ctx, GLuint texUnit,
 
 
 
-static void sample_linear_3d( GLcontext *ctx, GLuint texUnit,
-                             const struct gl_texture_object *tObj, GLuint n,
-                              const GLfloat s[], const GLfloat t[],
-                              const GLfloat u[], const GLfloat lambda[],
-                              GLchan rgba[][4] )
+static void
+sample_linear_3d( GLcontext *ctx, GLuint texUnit,
+                  const struct gl_texture_object *tObj, GLuint n,
+                  const GLfloat s[], const GLfloat t[],
+                  const GLfloat u[], const GLfloat lambda[],
+                  GLchan rgba[][4] )
 {
    GLuint i;
    struct gl_texture_image *image = tObj->Image[tObj->BaseLevel];
@@ -1370,11 +1389,12 @@ static void sample_linear_3d( GLcontext *ctx, GLuint texUnit,
  * Given an (s,t,r) texture coordinate and lambda (level of detail) value,
  * return a texture sample.
  */
-static void sample_lambda_3d( GLcontext *ctx, GLuint texUnit,
-                             const struct gl_texture_object *tObj, GLuint n,
-                              const GLfloat s[], const GLfloat t[],
-                              const GLfloat u[], const GLfloat lambda[],
-                              GLchan rgba[][4] )
+static void
+sample_lambda_3d( GLcontext *ctx, GLuint texUnit,
+                  const struct gl_texture_object *tObj, GLuint n,
+                  const GLfloat s[], const GLfloat t[],
+                  const GLfloat u[], const GLfloat lambda[],
+                  GLchan rgba[][4] )
 {
    GLuint i;
    GLfloat MinMagThresh = SWRAST_CONTEXT(ctx)->_MinMagThresh[texUnit];
@@ -1734,9 +1754,9 @@ _swrast_choose_texture_sample_func( GLcontext *ctx, GLuint texUnit,
 
       if (needLambda) {
          /* Compute min/mag filter threshold */
-         if (t->MagFilter==GL_LINEAR
-             && (t->MinFilter==GL_NEAREST_MIPMAP_NEAREST ||
-                 t->MinFilter==GL_LINEAR_MIPMAP_NEAREST)) {
+         if (t->MagFilter == GL_LINEAR
+             && (t->MinFilter == GL_NEAREST_MIPMAP_NEAREST ||
+                 t->MinFilter == GL_NEAREST_MIPMAP_LINEAR)) {
             swrast->_MinMagThresh[texUnit] = 0.5F;
          }
          else {
@@ -2500,10 +2520,11 @@ apply_texture( const GLcontext *ctx,
 /*
  * Apply a unit of texture mapping to the incoming fragments.
  */
-void gl_texture_pixels( GLcontext *ctx, GLuint texUnit, GLuint n,
-                        const GLfloat s[], const GLfloat t[],
-                        const GLfloat r[], GLfloat lambda[],
-                        GLchan primary_rgba[][4], GLchan rgba[][4] )
+void
+_swrast_texture_fragments( GLcontext *ctx, GLuint texUnit, GLuint n,
+                           const GLfloat s[], const GLfloat t[],
+                           const GLfloat r[], GLfloat lambda[],
+                           GLchan primary_rgba[][4], GLchan rgba[][4] )
 {
    const GLuint mask = TEXTURE0_ANY << (texUnit * 4);
 
index edb19691e71422c6691344648a8ef1dbb566d23d..9a64928b5d4751c4fa29a120f1057ee3bed505a8 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: s_texture.h,v 1.3 2000/11/22 07:32:18 joukj Exp $ */
+/* $Id: s_texture.h,v 1.4 2001/01/05 21:28:31 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -25,9 +25,6 @@
  */
 
 
-
-
-
 #ifndef S_TEXTURE_H
 #define S_TEXTURE_H
 
 #include "swrast.h"
 
 
-extern void gl_texture_pixels( GLcontext *ctx, GLuint texSet, GLuint n,
-                               const GLfloat s[], const GLfloat t[],
-                               const GLfloat r[], GLfloat lambda[],
-                               GLchan primary_rgba[][4], GLchan rgba[][4] );
-
 extern void
 _swrast_choose_texture_sample_func( GLcontext *ctx,
                                    GLuint texUnit,
                                    const struct gl_texture_object *tObj );
 
+
+extern void
+_swrast_texture_fragments( GLcontext *ctx, GLuint texSet, GLuint n,
+                           const GLfloat s[], const GLfloat t[],
+                           const GLfloat r[], GLfloat lambda[],
+                           GLchan primary_rgba[][4], GLchan rgba[][4] );
+
+
 #endif