mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
replace IFLOOR with util_ifloor
which are exactly the same function with exactly the same implementation Reviewed-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com> Reviewed-by: Matt Turner <mattst88@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3024>
This commit is contained in:
parent
72acb66527
commit
9d9a2819ee
7 changed files with 47 additions and 77 deletions
|
|
@ -36,6 +36,7 @@
|
|||
#include "state.h"
|
||||
#include "glformats.h"
|
||||
#include "fbobject.h"
|
||||
#include "util/u_math.h"
|
||||
|
||||
|
||||
/*
|
||||
|
|
@ -323,8 +324,8 @@ _mesa_Bitmap( GLsizei width, GLsizei height,
|
|||
/* Truncate, to satisfy conformance tests (matches SGI's OpenGL). */
|
||||
if (width > 0 && height > 0) {
|
||||
const GLfloat epsilon = 0.0001F;
|
||||
GLint x = IFLOOR(ctx->Current.RasterPos[0] + epsilon - xorig);
|
||||
GLint y = IFLOOR(ctx->Current.RasterPos[1] + epsilon - yorig);
|
||||
GLint x = util_ifloor(ctx->Current.RasterPos[0] + epsilon - xorig);
|
||||
GLint y = util_ifloor(ctx->Current.RasterPos[1] + epsilon - yorig);
|
||||
|
||||
if (ctx->Unpack.BufferObj) {
|
||||
/* unpack from PBO */
|
||||
|
|
|
|||
|
|
@ -434,7 +434,7 @@ _mesa_execute_program(struct gl_context * ctx,
|
|||
{
|
||||
GLfloat t[4];
|
||||
fetch_vector4(&inst->SrcReg[0], machine, t);
|
||||
machine->AddressReg[0][0] = IFLOOR(t[0]);
|
||||
machine->AddressReg[0][0] = util_ifloor(t[0]);
|
||||
if (DEBUG_PROG) {
|
||||
printf("ARL %d\n", machine->AddressReg[0][0]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -698,8 +698,8 @@ st_DrawAtlasBitmaps(struct gl_context *ctx,
|
|||
const float xorig = g->xorig, yorig = g->yorig;
|
||||
const float s0 = g->x, t0 = g->y;
|
||||
const float s1 = s0 + g->w, t1 = t0 + g->h;
|
||||
const float x0 = IFLOOR(ctx->Current.RasterPos[0] - xorig + epsilon);
|
||||
const float y0 = IFLOOR(ctx->Current.RasterPos[1] - yorig + epsilon);
|
||||
const float x0 = util_ifloor(ctx->Current.RasterPos[0] - xorig + epsilon);
|
||||
const float y0 = util_ifloor(ctx->Current.RasterPos[1] - yorig + epsilon);
|
||||
const float x1 = x0 + g->w, y1 = y0 + g->h;
|
||||
const float clip_x0 = x0 * clip_x_scale - 1.0f;
|
||||
const float clip_y0 = y0 * clip_y_scale - 1.0f;
|
||||
|
|
|
|||
|
|
@ -409,7 +409,7 @@ resample_linear_row_ub(GLint srcWidth, GLint dstWidth,
|
|||
|
||||
for (dstCol = 0; dstCol < dstWidth; dstCol++) {
|
||||
const GLfloat srcCol = (dstCol + 0.5F) / dstWidth * srcWidth - 0.5F;
|
||||
GLint srcCol0 = MAX2(0, IFLOOR(srcCol));
|
||||
GLint srcCol0 = MAX2(0, util_ifloor(srcCol));
|
||||
GLint srcCol1 = srcCol0 + 1;
|
||||
GLfloat colWeight = srcCol - srcCol0; /* fractional part of srcCol */
|
||||
GLfloat red, green, blue, alpha;
|
||||
|
|
@ -441,10 +441,10 @@ resample_linear_row_ub(GLint srcWidth, GLint dstWidth,
|
|||
srcColor0[srcCol0][ACOMP], srcColor0[srcCol1][ACOMP],
|
||||
srcColor1[srcCol0][ACOMP], srcColor1[srcCol1][ACOMP]);
|
||||
|
||||
dstColor[dstCol][RCOMP] = IFLOOR(red);
|
||||
dstColor[dstCol][GCOMP] = IFLOOR(green);
|
||||
dstColor[dstCol][BCOMP] = IFLOOR(blue);
|
||||
dstColor[dstCol][ACOMP] = IFLOOR(alpha);
|
||||
dstColor[dstCol][RCOMP] = util_ifloor(red);
|
||||
dstColor[dstCol][GCOMP] = util_ifloor(green);
|
||||
dstColor[dstCol][BCOMP] = util_ifloor(blue);
|
||||
dstColor[dstCol][ACOMP] = util_ifloor(alpha);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -464,7 +464,7 @@ resample_linear_row_float(GLint srcWidth, GLint dstWidth,
|
|||
|
||||
for (dstCol = 0; dstCol < dstWidth; dstCol++) {
|
||||
const GLfloat srcCol = (dstCol + 0.5F) / dstWidth * srcWidth - 0.5F;
|
||||
GLint srcCol0 = MAX2(0, IFLOOR(srcCol));
|
||||
GLint srcCol0 = MAX2(0, util_ifloor(srcCol));
|
||||
GLint srcCol1 = srcCol0 + 1;
|
||||
GLfloat colWeight = srcCol - srcCol0; /* fractional part of srcCol */
|
||||
GLfloat red, green, blue, alpha;
|
||||
|
|
@ -630,7 +630,7 @@ blit_linear(struct gl_context *ctx,
|
|||
for (dstRow = 0; dstRow < dstHeight; dstRow++) {
|
||||
const GLint dstY = dstYpos + dstRow;
|
||||
GLfloat srcRow = (dstRow + 0.5F) / dstHeight * srcHeight - 0.5F;
|
||||
GLint srcRow0 = MAX2(0, IFLOOR(srcRow));
|
||||
GLint srcRow0 = MAX2(0, util_ifloor(srcRow));
|
||||
GLint srcRow1 = srcRow0 + 1;
|
||||
GLfloat rowWeight = srcRow - srcRow0; /* fractional part of srcRow */
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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) );
|
||||
|
|
|
|||
|
|
@ -621,8 +621,8 @@ fast_persp_span(struct gl_context *ctx, SWspan *span,
|
|||
(1.0 / tex_coord[2]) : 1.0; \
|
||||
GLfloat s_tmp = (GLfloat) (tex_coord[0] * invQ); \
|
||||
GLfloat t_tmp = (GLfloat) (tex_coord[1] * invQ); \
|
||||
GLint s = IFLOOR(s_tmp) & info->smask; \
|
||||
GLint t = IFLOOR(t_tmp) & info->tmask; \
|
||||
GLint s = util_ifloor(s_tmp) & info->smask; \
|
||||
GLint t = util_ifloor(t_tmp) & info->tmask; \
|
||||
GLint pos = (t << info->twidth_log2) + s; \
|
||||
const GLchan *tex00 = info->texture + COMP * pos; \
|
||||
DO_TEX; \
|
||||
|
|
|
|||
|
|
@ -129,37 +129,6 @@ static inline int IROUND_POS(float f)
|
|||
return (int) (f + 0.5F);
|
||||
}
|
||||
|
||||
/** Return (as an integer) floor of float */
|
||||
static inline int IFLOOR(float f)
|
||||
{
|
||||
#if defined(USE_X86_ASM) && defined(__GNUC__) && defined(__i386__)
|
||||
/*
|
||||
* IEEE floor for computers that round to nearest or even.
|
||||
* 'f' must be between -4194304 and 4194303.
|
||||
* This floor operation is done by "(iround(f + .5) + iround(f - .5)) >> 1",
|
||||
* but uses some IEEE specific tricks for better speed.
|
||||
* Contributed by Josh Vanderhoof
|
||||
*/
|
||||
int ai, bi;
|
||||
double af, bf;
|
||||
af = (3 << 22) + 0.5 + (double)f;
|
||||
bf = (3 << 22) + 0.5 - (double)f;
|
||||
/* GCC generates an extra fstp/fld without this. */
|
||||
__asm__ ("fstps %0" : "=m" (ai) : "t" (af) : "st");
|
||||
__asm__ ("fstps %0" : "=m" (bi) : "t" (bf) : "st");
|
||||
return (ai - bi) >> 1;
|
||||
#else
|
||||
int ai, bi;
|
||||
double af, bf;
|
||||
fi_type u;
|
||||
af = (3 << 22) + 0.5 + (double)f;
|
||||
bf = (3 << 22) + 0.5 - (double)f;
|
||||
u.f = (float) af; ai = u.i;
|
||||
u.f = (float) bf; bi = u.i;
|
||||
return (ai - bi) >> 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* Functions
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue