remove final imports.h and imports.c bits
[mesa.git] / src / mesa / swrast / s_texfilter.c
index abc1727cf29d9aafff9b36cafaad9f575d6713c8..7f1354785a4d9e783b0935ebe2f2ba8e8ca99c8d 100644 (file)
@@ -26,7 +26,7 @@
 #include "c99_math.h"
 #include "main/glheader.h"
 #include "main/context.h"
-#include "main/imports.h"
+
 #include "main/macros.h"
 #include "main/samplerobj.h"
 #include "main/teximage.h"
@@ -43,7 +43,7 @@
  * Also note, FRAC(x) doesn't truly return the fractional part of x for x < 0.
  * Instead, if x < 0 then FRAC(x) = 1 - true_frac(x).
  */
-#define FRAC(f)  ((f) - IFLOOR(f))
+#define FRAC(f)  ((f) - util_ifloor(f))
 
 
 
@@ -169,11 +169,11 @@ linear_texel_locations(GLenum wrapMode,
    case GL_REPEAT:
       u = s * size - 0.5F;
       if (swImg->_IsPowerOfTwo) {
-         *i0 = IFLOOR(u) & (size - 1);
+         *i0 = util_ifloor(u) & (size - 1);
          *i1 = (*i0 + 1) & (size - 1);
       }
       else {
-         *i0 = REMAINDER(IFLOOR(u), size);
+         *i0 = REMAINDER(util_ifloor(u), size);
          *i1 = REMAINDER(*i0 + 1, size);
       }
       break;
@@ -185,7 +185,7 @@ linear_texel_locations(GLenum wrapMode,
       else
          u = s * size;
       u -= 0.5F;
-      *i0 = IFLOOR(u);
+      *i0 = util_ifloor(u);
       *i1 = *i0 + 1;
       if (*i0 < 0)
          *i0 = 0;
@@ -203,19 +203,19 @@ linear_texel_locations(GLenum wrapMode,
          else
             u = s * size;
          u -= 0.5F;
-         *i0 = IFLOOR(u);
+         *i0 = util_ifloor(u);
          *i1 = *i0 + 1;
       }
       break;
    case GL_MIRRORED_REPEAT:
       {
-         const GLint flr = IFLOOR(s);
+         const GLint flr = util_ifloor(s);
          if (flr & 1)
             u = 1.0F - (s - (GLfloat) flr);
          else
             u = s - (GLfloat) flr;
          u = (u * size) - 0.5F;
-         *i0 = IFLOOR(u);
+         *i0 = util_ifloor(u);
          *i1 = *i0 + 1;
          if (*i0 < 0)
             *i0 = 0;
@@ -230,7 +230,7 @@ linear_texel_locations(GLenum wrapMode,
       else
          u *= size;
       u -= 0.5F;
-      *i0 = IFLOOR(u);
+      *i0 = util_ifloor(u);
       *i1 = *i0 + 1;
       break;
    case GL_MIRROR_CLAMP_TO_EDGE_EXT:
@@ -240,7 +240,7 @@ linear_texel_locations(GLenum wrapMode,
       else
          u *= size;
       u -= 0.5F;
-      *i0 = IFLOOR(u);
+      *i0 = util_ifloor(u);
       *i1 = *i0 + 1;
       if (*i0 < 0)
          *i0 = 0;
@@ -259,7 +259,7 @@ linear_texel_locations(GLenum wrapMode,
          else
             u *= size;
          u -= 0.5F;
-         *i0 = IFLOOR(u);
+         *i0 = util_ifloor(u);
          *i1 = *i0 + 1;
       }
       break;
@@ -271,7 +271,7 @@ linear_texel_locations(GLenum wrapMode,
       else
          u = s * size;
       u -= 0.5F;
-      *i0 = IFLOOR(u);
+      *i0 = util_ifloor(u);
       *i1 = *i0 + 1;
       break;
    default:
@@ -299,7 +299,7 @@ nearest_texel_location(GLenum wrapMode,
    case GL_REPEAT:
       /* s limited to [0,1) */
       /* i limited to [0,size-1] */
-      i = IFLOOR(s * size);
+      i = util_ifloor(s * size);
       if (swImg->_IsPowerOfTwo)
          i &= (size - 1);
       else
@@ -316,7 +316,7 @@ nearest_texel_location(GLenum wrapMode,
          else if (s > max)
             i = size - 1;
          else
-            i = IFLOOR(s * size);
+            i = util_ifloor(s * size);
       }
       return i;
    case GL_CLAMP_TO_BORDER:
@@ -330,14 +330,14 @@ nearest_texel_location(GLenum wrapMode,
          else if (s >= max)
             i = size;
          else
-            i = IFLOOR(s * size);
+            i = util_ifloor(s * size);
       }
       return i;
    case GL_MIRRORED_REPEAT:
       {
          const GLfloat min = 1.0F / (2.0F * size);
          const GLfloat max = 1.0F - min;
-         const GLint flr = IFLOOR(s);
+         const GLint flr = util_ifloor(s);
          GLfloat u;
          if (flr & 1)
             u = 1.0F - (s - (GLfloat) flr);
@@ -348,7 +348,7 @@ nearest_texel_location(GLenum wrapMode,
          else if (u > max)
             i = size - 1;
          else
-            i = IFLOOR(u * size);
+            i = util_ifloor(u * size);
       }
       return i;
    case GL_MIRROR_CLAMP_EXT:
@@ -361,7 +361,7 @@ nearest_texel_location(GLenum wrapMode,
          else if (u >= 1.0F)
             i = size - 1;
          else
-            i = IFLOOR(u * size);
+            i = util_ifloor(u * size);
       }
       return i;
    case GL_MIRROR_CLAMP_TO_EDGE_EXT:
@@ -376,7 +376,7 @@ nearest_texel_location(GLenum wrapMode,
          else if (u > max)
             i = size - 1;
          else
-            i = IFLOOR(u * size);
+            i = util_ifloor(u * size);
       }
       return i;
    case GL_MIRROR_CLAMP_TO_BORDER_EXT:
@@ -391,7 +391,7 @@ nearest_texel_location(GLenum wrapMode,
          else if (u > max)
             i = size;
          else
-            i = IFLOOR(u * size);
+            i = util_ifloor(u * size);
       }
       return i;
    case GL_CLAMP:
@@ -402,7 +402,7 @@ nearest_texel_location(GLenum wrapMode,
       else if (s >= 1.0F)
          i = size - 1;
       else
-         i = IFLOOR(s * size);
+         i = util_ifloor(s * size);
       return i;
    default:
       _mesa_problem(NULL, "Bad wrap mode");
@@ -417,7 +417,7 @@ linear_repeat_texel_location(GLuint size, GLfloat s,
                              GLint *i0, GLint *i1, GLfloat *weight)
 {
    GLfloat u = s * size - 0.5F;
-   *i0 = IFLOOR(u) & (size - 1);
+   *i0 = util_ifloor(u) & (size - 1);
    *i1 = (*i0 + 1) & (size - 1);
    *weight = FRAC(u);
 }
@@ -431,11 +431,11 @@ clamp_rect_coord_nearest(GLenum wrapMode, GLfloat coord, GLint max)
 {
    switch (wrapMode) {
    case GL_CLAMP:
-      return IFLOOR( CLAMP(coord, 0.0F, max - 1) );
+      return util_ifloor( CLAMP(coord, 0.0F, max - 1) );
    case GL_CLAMP_TO_EDGE:
-      return IFLOOR( CLAMP(coord, 0.5F, max - 0.5F) );
+      return util_ifloor( CLAMP(coord, 0.5F, max - 0.5F) );
    case GL_CLAMP_TO_BORDER:
-      return IFLOOR( CLAMP(coord, -0.5F, max + 0.5F) );
+      return util_ifloor( CLAMP(coord, -0.5F, max + 0.5F) );
    default:
       _mesa_problem(NULL, "bad wrapMode in clamp_rect_coord_nearest");
       return 0;
@@ -456,13 +456,13 @@ clamp_rect_coord_linear(GLenum wrapMode, GLfloat coord, GLint max,
    case GL_CLAMP:
       /* Not exactly what the spec says, but it matches NVIDIA output */
       fcol = CLAMP(coord - 0.5F, 0.0F, max - 1);
-      i0 = IFLOOR(fcol);
+      i0 = util_ifloor(fcol);
       i1 = i0 + 1;
       break;
    case GL_CLAMP_TO_EDGE:
       fcol = CLAMP(coord, 0.5F, max - 0.5F);
       fcol -= 0.5F;
-      i0 = IFLOOR(fcol);
+      i0 = util_ifloor(fcol);
       i1 = i0 + 1;
       if (i1 > max - 1)
          i1 = max - 1;
@@ -470,7 +470,7 @@ clamp_rect_coord_linear(GLenum wrapMode, GLfloat coord, GLint max,
    case GL_CLAMP_TO_BORDER:
       fcol = CLAMP(coord, -0.5F, max + 0.5F);
       fcol -= 0.5F;
-      i0 = IFLOOR(fcol);
+      i0 = util_ifloor(fcol);
       i1 = i0 + 1;
       break;
    default:
@@ -491,7 +491,7 @@ clamp_rect_coord_linear(GLenum wrapMode, GLfloat coord, GLint max,
 static GLint
 tex_array_slice(GLfloat coord, GLsizei size)
 {
-   GLint slice = IFLOOR(coord + 0.5f);
+   GLint slice = util_ifloor(coord + 0.5f);
    slice = CLAMP(slice, 0, size - 1);
    return slice;
 }
@@ -1406,7 +1406,7 @@ sample_linear_2d(struct gl_context *ctx,
  * Optimized 2-D texture sampling:
  *    S and T wrap mode == GL_REPEAT
  *    GL_NEAREST min/mag filter
- *    No border, 
+ *    No border,
  *    RowStride == Width,
  *    Format = GL_RGB
  */
@@ -1435,8 +1435,8 @@ opt_sample_rgb_2d(struct gl_context *ctx,
    (void) swImg;
 
    for (k=0; k<n; k++) {
-      GLint i = IFLOOR(texcoords[k][0] * width) & colMask;
-      GLint j = IFLOOR(texcoords[k][1] * height) & rowMask;
+      GLint i = util_ifloor(texcoords[k][0] * width) & colMask;
+      GLint j = util_ifloor(texcoords[k][1] * height) & rowMask;
       GLint pos = (j << shift) | i;
       GLubyte *texel = (GLubyte *) swImg->ImageSlices[0] + 3 * pos;
       rgba[k][RCOMP] = UBYTE_TO_FLOAT(texel[2]);
@@ -1480,8 +1480,8 @@ opt_sample_rgba_2d(struct gl_context *ctx,
    (void) swImg;
 
    for (i = 0; i < n; i++) {
-      const GLint col = IFLOOR(texcoords[i][0] * width) & colMask;
-      const GLint row = IFLOOR(texcoords[i][1] * height) & rowMask;
+      const GLint col = util_ifloor(texcoords[i][0] * width) & colMask;
+      const GLint row = util_ifloor(texcoords[i][1] * height) & rowMask;
       const GLint pos = (row << shift) | col;
       const GLuint texel = *((GLuint *) swImg->ImageSlices[0] + pos);
       rgba[i][RCOMP] = UBYTE_TO_FLOAT( (texel >> 24)        );
@@ -1628,7 +1628,7 @@ create_filter_table(void)
       for (i = 0; i < WEIGHT_LUT_SIZE; ++i) {
          GLfloat alpha = 2;
          GLfloat r2 = (GLfloat) i / (GLfloat) (WEIGHT_LUT_SIZE - 1);
-         GLfloat weight = (GLfloat) exp(-alpha * r2);
+         GLfloat weight = expf(-alpha * r2);
          weightLut[i] = weight;
       }
    }
@@ -1666,7 +1666,7 @@ sample_2d_ewa(struct gl_context *ctx,
    GLfloat uy = dudy * scaling;
    GLfloat vy = dvdy * scaling;
 
-   /* compute ellipse coefficients to bound the region: 
+   /* compute ellipse coefficients to bound the region:
     * A*x*x + B*x*y + C*y*y = F.
     */
    GLfloat A = vx*vx+vy*vy+1;
@@ -1847,7 +1847,7 @@ texture_unit_index(const struct gl_context *ctx,
    }
    if (u >= maxUnit)
       u = 0; /* not found, use 1st one; should never happen */
-   
+
    return u;
 }
 
@@ -1871,7 +1871,7 @@ sample_lambda_2d_aniso(struct gl_context *ctx,
    const struct swrast_texture_image *swImg = swrast_texture_image_const(tImg);
    const GLfloat maxEccentricity =
       samp->MaxAnisotropy * samp->MaxAnisotropy;
-   
+
    /* re-calculate the lambda values so that they are usable with anisotropic
     * filtering
     */
@@ -1880,7 +1880,7 @@ sample_lambda_2d_aniso(struct gl_context *ctx,
    /* based on interpolate_texcoords(struct gl_context *ctx, SWspan *span)
     * in swrast/s_span.c
     */
-   
+
    /* find the texture unit index by looking up the current texture object
     * from the context list of available texture objects.
     */
@@ -1902,10 +1902,10 @@ sample_lambda_2d_aniso(struct gl_context *ctx,
    const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[u];
    const GLboolean adjustLOD =
       (texUnit->LodBias + samp->LodBias != 0.0F)
-      || (samp->MinLod != -1000.0 || samp->MaxLod != 1000.0);
+      || (samp->MinLod != -1000.0F || samp->MaxLod != 1000.0F);
 
    GLuint i;
-   
+
    /* on first access create the lookup table containing the filter weights. */
    if (!weightLut) {
       create_filter_table();
@@ -1916,13 +1916,13 @@ sample_lambda_2d_aniso(struct gl_context *ctx,
 
    for (i = 0; i < n; i++) {
       const GLfloat invQ = (q == 0.0F) ? 1.0F : (1.0F / q);
-      
+
       GLfloat dudx = texW * ((s + dsdx) / (q + dqdx) - s * invQ);
       GLfloat dvdx = texH * ((t + dtdx) / (q + dqdx) - t * invQ);
       GLfloat dudy = texW * ((s + dsdy) / (q + dqdy) - s * invQ);
       GLfloat dvdy = texH * ((t + dtdy) / (q + dqdy) - t * invQ);
-      
-      /* note: instead of working with Px and Py, we will use the 
+
+      /* note: instead of working with Px and Py, we will use the
        * squared length instead, to avoid sqrt.
        */
       GLfloat Px2 = dudx * dudx + dvdx * dvdx;
@@ -1936,7 +1936,7 @@ sample_lambda_2d_aniso(struct gl_context *ctx,
       s += dsdx;
       t += dtdx;
       q += dqdx;
-      
+
       if (Px2 < Py2) {
          Pmax2 = Py2;
          Pmin2 = Px2;
@@ -1945,7 +1945,7 @@ sample_lambda_2d_aniso(struct gl_context *ctx,
          Pmax2 = Px2;
          Pmin2 = Py2;
       }
-      
+
       /* if the eccentricity of the ellipse is too big, scale up the shorter
        * of the two vectors to limit the maximum amount of work per pixel
        */
@@ -1957,12 +1957,12 @@ sample_lambda_2d_aniso(struct gl_context *ctx,
             Pmin2 *= s; */
          Pmin2 = Pmax2 / maxEccentricity;
       }
-      
+
       /* note: we need to have Pmin=sqrt(Pmin2) here, but we can avoid
        * this since 0.5*log(x) = log(sqrt(x))
        */
-      lod = 0.5f * LOG2(Pmin2);
-      
+      lod = 0.5f * util_fast_log2(Pmin2);
+
       if (adjustLOD) {
          /* from swrast/s_texcombine.c _swrast_texture_span */
          if (texUnit->LodBias + samp->LodBias != 0.0F) {
@@ -1973,14 +1973,14 @@ sample_lambda_2d_aniso(struct gl_context *ctx,
                      ctx->Const.MaxTextureLodBias);
             lod += bias;
 
-            if (samp->MinLod != -1000.0 ||
-                samp->MaxLod != 1000.0) {
+            if (samp->MinLod != -1000.0F ||
+                samp->MaxLod != 1000.0F) {
                /* apply LOD clamping to lambda */
                lod = CLAMP(lod, samp->MinLod, samp->MaxLod);
             }
          }
       }
-      
+
       /* If the ellipse covers the whole image, we can
        * simply return the average of the whole image.
        */
@@ -2406,7 +2406,7 @@ choose_cube_face(const struct gl_texture_object *texObj,
       }
    }
 
-   { 
+   {
       const float ima = 1.0F / ma;
       newCoord[0] = ( sc * ima + 1.0F ) * 0.5F;
       newCoord[1] = ( tc * ima + 1.0F ) * 0.5F;
@@ -2917,7 +2917,7 @@ sample_2d_array_linear(struct gl_context *ctx,
       else {
         swImg->FetchTexel(swImg, i1, j1, array, t11);
       }
-      
+
       /* trilinear interpolation of samples */
       lerp_rgba_2d(rgba, a, b, t00, t10, t01, t11);
    }
@@ -3099,7 +3099,7 @@ sample_lambda_2d_array(struct gl_context *ctx,
       case GL_LINEAR_MIPMAP_LINEAR:
          sample_2d_array_linear_mipmap_linear(ctx, samp, tObj, m,
                                               texcoords + minStart,
-                                              lambda + minStart, 
+                                              lambda + minStart,
                                               rgba + minStart);
          break;
       default:
@@ -3373,7 +3373,7 @@ sample_lambda_1d_array(struct gl_context *ctx,
                                                 lambda + minStart, rgba + minStart);
          break;
       case GL_LINEAR_MIPMAP_NEAREST:
-         sample_1d_array_linear_mipmap_nearest(ctx, samp, tObj, m, 
+         sample_1d_array_linear_mipmap_nearest(ctx, samp, tObj, m,
                                                texcoords + minStart,
                                                lambda + minStart,
                                                rgba + minStart);
@@ -3383,9 +3383,9 @@ sample_lambda_1d_array(struct gl_context *ctx,
                                                lambda + minStart, rgba + minStart);
          break;
       case GL_LINEAR_MIPMAP_LINEAR:
-         sample_1d_array_linear_mipmap_linear(ctx, samp, tObj, m, 
+         sample_1d_array_linear_mipmap_linear(ctx, samp, tObj, m,
                                               texcoords + minStart,
-                                              lambda + minStart, 
+                                              lambda + minStart,
                                               rgba + minStart);
          break;
       default:
@@ -3579,7 +3579,7 @@ sample_depth_texture( struct gl_context *ctx,
 
          nearest_texcoord(samp, tObj, level, texcoords[i], &col, &row, &slice);
 
-         if (col >= 0 && row >= 0 && col < width && row < height && 
+         if (col >= 0 && row >= 0 && col < width && row < height &&
              slice >= 0 && slice < depth) {
             swImg->FetchTexel(swImg, col, row, slice, &depthSample);
          }
@@ -3713,7 +3713,7 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx,
                                     const struct gl_sampler_object *sampler)
 {
    if (!t || !_mesa_is_texture_complete(t, sampler)) {
-      return &null_sample_func;
+      return null_sample_func;
    }
    else {
       const GLboolean needLambda =
@@ -3722,32 +3722,32 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx,
       switch (t->Target) {
       case GL_TEXTURE_1D:
          if (is_depth_texture(t)) {
-            return &sample_depth_texture;
+            return sample_depth_texture;
          }
          else if (needLambda) {
-            return &sample_lambda_1d;
+            return sample_lambda_1d;
          }
          else if (sampler->MinFilter == GL_LINEAR) {
-            return &sample_linear_1d;
+            return sample_linear_1d;
          }
          else {
             assert(sampler->MinFilter == GL_NEAREST);
-            return &sample_nearest_1d;
+            return sample_nearest_1d;
          }
       case GL_TEXTURE_2D:
          if (is_depth_texture(t)) {
-            return &sample_depth_texture;
+            return sample_depth_texture;
          }
          else if (needLambda) {
             /* Anisotropic filtering extension. Activated only if mipmaps are used */
-            if (sampler->MaxAnisotropy > 1.0 &&
+            if (sampler->MaxAnisotropy > 1.0F &&
                 sampler->MinFilter == GL_LINEAR_MIPMAP_LINEAR) {
-               return &sample_lambda_2d_aniso;
+               return sample_lambda_2d_aniso;
             }
-            return &sample_lambda_2d;
+            return sample_lambda_2d;
          }
          else if (sampler->MinFilter == GL_LINEAR) {
-            return &sample_linear_2d;
+            return sample_linear_2d;
          }
          else {
             /* check for a few optimized cases */
@@ -3772,72 +3772,72 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx,
          }
       case GL_TEXTURE_3D:
          if (needLambda) {
-            return &sample_lambda_3d;
+            return sample_lambda_3d;
          }
          else if (sampler->MinFilter == GL_LINEAR) {
-            return &sample_linear_3d;
+            return sample_linear_3d;
          }
          else {
             assert(sampler->MinFilter == GL_NEAREST);
-            return &sample_nearest_3d;
+            return sample_nearest_3d;
          }
       case GL_TEXTURE_CUBE_MAP:
          if (needLambda) {
-            return &sample_lambda_cube;
+            return sample_lambda_cube;
          }
          else if (sampler->MinFilter == GL_LINEAR) {
-            return &sample_linear_cube;
+            return sample_linear_cube;
          }
          else {
             assert(sampler->MinFilter == GL_NEAREST);
-            return &sample_nearest_cube;
+            return sample_nearest_cube;
          }
       case GL_TEXTURE_RECTANGLE_NV:
          if (is_depth_texture(t)) {
-            return &sample_depth_texture;
+            return sample_depth_texture;
          }
          else if (needLambda) {
-            return &sample_lambda_rect;
+            return sample_lambda_rect;
          }
          else if (sampler->MinFilter == GL_LINEAR) {
-            return &sample_linear_rect;
+            return sample_linear_rect;
          }
          else {
             assert(sampler->MinFilter == GL_NEAREST);
-            return &sample_nearest_rect;
+            return sample_nearest_rect;
          }
       case GL_TEXTURE_1D_ARRAY_EXT:
          if (is_depth_texture(t)) {
-            return &sample_depth_texture;
+            return sample_depth_texture;
          }
         else if (needLambda) {
-            return &sample_lambda_1d_array;
+            return sample_lambda_1d_array;
          }
          else if (sampler->MinFilter == GL_LINEAR) {
-            return &sample_linear_1d_array;
+            return sample_linear_1d_array;
          }
          else {
             assert(sampler->MinFilter == GL_NEAREST);
-            return &sample_nearest_1d_array;
+            return sample_nearest_1d_array;
          }
       case GL_TEXTURE_2D_ARRAY_EXT:
          if (is_depth_texture(t)) {
-            return &sample_depth_texture;
+            return sample_depth_texture;
          }
         else if (needLambda) {
-            return &sample_lambda_2d_array;
+            return sample_lambda_2d_array;
          }
          else if (sampler->MinFilter == GL_LINEAR) {
-            return &sample_linear_2d_array;
+            return sample_linear_2d_array;
          }
          else {
             assert(sampler->MinFilter == GL_NEAREST);
-            return &sample_nearest_2d_array;
+            return sample_nearest_2d_array;
          }
       default:
          _mesa_problem(ctx,
                        "invalid target in _swrast_choose_texture_sample_func");
-         return &null_sample_func;
+         return null_sample_func;
       }
    }
 }