Commit 53c36dfc authored by Dylan Baker's avatar Dylan Baker
Browse files

replace IROUND with util functions



This adds two new util functions to rounding.h, _mesa_iroundf and
mesa_lround, which are just wrappers around roundf and round, that cast
to int and long int respectively. This is possible since mesa recently
dropped support for VC2013, since 2015 and 2017 support roundf.
Reviewed-by: default avatarMarek Olšák <marek.olsak@amd.com>
Reviewed-by: Kristian H. Kristensen's avatarKristian H. Kristensen <hoegsberg@google.com>
Reviewed-by: Matt Turner's avatarMatt Turner <mattst88@gmail.com>
Part-of: <!3024>
parent df3ce8fb
......@@ -23,7 +23,6 @@
*/
#include "glheader.h"
#include "util/imports.h"
#include "draw_validate.h"
#include "bufferobj.h"
#include "context.h"
......@@ -37,6 +36,7 @@
#include "glformats.h"
#include "fbobject.h"
#include "util/u_math.h"
#include "util/rounding.h"
/*
......@@ -52,14 +52,14 @@ _mesa_DrawPixels( GLsizei width, GLsizei height,
FLUSH_VERTICES(ctx, 0);
if (MESA_VERBOSE & VERBOSE_API)
_mesa_debug(ctx, "glDrawPixels(%d, %d, %s, %s, %p) // to %s at %d, %d\n",
_mesa_debug(ctx, "glDrawPixels(%d, %d, %s, %s, %p) // to %s at %ld, %ld\n",
width, height,
_mesa_enum_to_string(format),
_mesa_enum_to_string(type),
pixels,
_mesa_enum_to_string(ctx->DrawBuffer->ColorDrawBuffer[0]),
IROUND(ctx->Current.RasterPos[0]),
IROUND(ctx->Current.RasterPos[1]));
lroundf(ctx->Current.RasterPos[0]),
lroundf(ctx->Current.RasterPos[1]));
if (width < 0 || height < 0) {
......@@ -141,8 +141,8 @@ _mesa_DrawPixels( GLsizei width, GLsizei height,
if (ctx->RenderMode == GL_RENDER) {
if (width > 0 && height > 0) {
/* Round, to satisfy conformance tests (matches SGI's OpenGL) */
GLint x = IROUND(ctx->Current.RasterPos[0]);
GLint y = IROUND(ctx->Current.RasterPos[1]);
GLint x = lroundf(ctx->Current.RasterPos[0]);
GLint y = lroundf(ctx->Current.RasterPos[1]);
if (ctx->Unpack.BufferObj) {
/* unpack from PBO */
......@@ -197,13 +197,13 @@ _mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, GLsizei height,
if (MESA_VERBOSE & VERBOSE_API)
_mesa_debug(ctx,
"glCopyPixels(%d, %d, %d, %d, %s) // from %s to %s at %d, %d\n",
"glCopyPixels(%d, %d, %d, %d, %s) // from %s to %s at %ld, %ld\n",
srcx, srcy, width, height,
_mesa_enum_to_string(type),
_mesa_enum_to_string(ctx->ReadBuffer->ColorReadBuffer),
_mesa_enum_to_string(ctx->DrawBuffer->ColorDrawBuffer[0]),
IROUND(ctx->Current.RasterPos[0]),
IROUND(ctx->Current.RasterPos[1]));
lroundf(ctx->Current.RasterPos[0]),
lroundf(ctx->Current.RasterPos[1]));
if (width < 0 || height < 0) {
_mesa_error(ctx, GL_INVALID_VALUE, "glCopyPixels(width or height < 0)");
......@@ -265,8 +265,8 @@ _mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, GLsizei height,
if (ctx->RenderMode == GL_RENDER) {
/* Round to satisfy conformance tests (matches SGI's OpenGL) */
if (width > 0 && height > 0) {
GLint destx = IROUND(ctx->Current.RasterPos[0]);
GLint desty = IROUND(ctx->Current.RasterPos[1]);
GLint destx = lroundf(ctx->Current.RasterPos[0]);
GLint desty = lroundf(ctx->Current.RasterPos[1]);
ctx->Driver.CopyPixels( ctx, srcx, srcy, width, height, destx, desty,
type );
}
......@@ -274,7 +274,7 @@ _mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, GLsizei height,
else if (ctx->RenderMode == GL_FEEDBACK) {
FLUSH_CURRENT( ctx, 0 );
_mesa_feedback_token( ctx, (GLfloat) (GLint) GL_COPY_PIXEL_TOKEN );
_mesa_feedback_vertex( ctx,
_mesa_feedback_vertex( ctx,
ctx->Current.RasterPos,
ctx->Current.RasterColor,
ctx->Current.RasterTexCoords[0] );
......
......@@ -38,7 +38,6 @@
#include "glheader.h"
#include "util/imports.h"
#include "context.h"
#include "eval.h"
#include "macros.h"
......@@ -480,7 +479,7 @@ _mesa_Map2d( GLenum target,
GLdouble v1, GLdouble v2, GLint vstride, GLint vorder,
const GLdouble *points )
{
map2(target, (GLfloat) u1, (GLfloat) u2, ustride, uorder,
map2(target, (GLfloat) u1, (GLfloat) u2, ustride, uorder,
(GLfloat) v1, (GLfloat) v2, vstride, vorder, points, GL_DOUBLE);
}
......@@ -704,7 +703,7 @@ _mesa_GetnMapivARB( GLenum target, GLenum query, GLsizei bufSize, GLint *v )
if (bufSize < numBytes)
goto overflow;
for (i=0;i<n;i++) {
v[i] = IROUND(data[i]);
v[i] = lroundf(data[i]);
}
}
break;
......@@ -728,17 +727,17 @@ _mesa_GetnMapivARB( GLenum target, GLenum query, GLsizei bufSize, GLint *v )
numBytes = 2 * sizeof *v;
if (bufSize < numBytes)
goto overflow;
v[0] = IROUND(map1d->u1);
v[1] = IROUND(map1d->u2);
v[0] = lroundf(map1d->u1);
v[1] = lroundf(map1d->u2);
}
else {
numBytes = 4 * sizeof *v;
if (bufSize < numBytes)
goto overflow;
v[0] = IROUND(map2d->u1);
v[1] = IROUND(map2d->u2);
v[2] = IROUND(map2d->v1);
v[3] = IROUND(map2d->v2);
v[0] = lroundf(map2d->u1);
v[1] = lroundf(map2d->u2);
v[2] = lroundf(map2d->v1);
v[3] = lroundf(map2d->v2);
}
break;
default:
......@@ -815,7 +814,7 @@ void GLAPIENTRY
_mesa_MapGrid2d( GLint un, GLdouble u1, GLdouble u2,
GLint vn, GLdouble v1, GLdouble v2 )
{
_mesa_MapGrid2f( un, (GLfloat) u1, (GLfloat) u2,
_mesa_MapGrid2f( un, (GLfloat) u1, (GLfloat) u2,
vn, (GLfloat) v1, (GLfloat) v2 );
}
......@@ -856,7 +855,7 @@ init_1d_map( struct gl_1d_map *map, int n, const float *initial )
/**
* Initialize a 2-D evaluator map
* Initialize a 2-D evaluator map
*/
static void
init_2d_map( struct gl_2d_map *map, int n, const float *initial )
......
......@@ -1959,18 +1959,18 @@ _mesa_GetIntegerv(GLenum pname, GLint *params)
break;
case TYPE_FLOAT_8:
params[7] = IROUND(((GLfloat *) p)[7]);
params[6] = IROUND(((GLfloat *) p)[6]);
params[5] = IROUND(((GLfloat *) p)[5]);
params[4] = IROUND(((GLfloat *) p)[4]);
params[7] = lroundf(((GLfloat *) p)[7]);
params[6] = lroundf(((GLfloat *) p)[6]);
params[5] = lroundf(((GLfloat *) p)[5]);
params[4] = lroundf(((GLfloat *) p)[4]);
case TYPE_FLOAT_4:
params[3] = IROUND(((GLfloat *) p)[3]);
params[3] = lroundf(((GLfloat *) p)[3]);
case TYPE_FLOAT_3:
params[2] = IROUND(((GLfloat *) p)[2]);
params[2] = lroundf(((GLfloat *) p)[2]);
case TYPE_FLOAT_2:
params[1] = IROUND(((GLfloat *) p)[1]);
params[1] = lroundf(((GLfloat *) p)[1]);
case TYPE_FLOAT:
params[0] = IROUND(((GLfloat *) p)[0]);
params[0] = lroundf(((GLfloat *) p)[0]);
break;
case TYPE_FLOATN_4:
......@@ -2074,18 +2074,18 @@ _mesa_GetInteger64v(GLenum pname, GLint64 *params)
break;
case TYPE_FLOAT_8:
params[7] = IROUND64(((GLfloat *) p)[7]);
params[6] = IROUND64(((GLfloat *) p)[6]);
params[5] = IROUND64(((GLfloat *) p)[5]);
params[4] = IROUND64(((GLfloat *) p)[4]);
params[7] = llround(((GLfloat *) p)[7]);
params[6] = llround(((GLfloat *) p)[6]);
params[5] = llround(((GLfloat *) p)[5]);
params[4] = llround(((GLfloat *) p)[4]);
case TYPE_FLOAT_4:
params[3] = IROUND64(((GLfloat *) p)[3]);
params[3] = llround(((GLfloat *) p)[3]);
case TYPE_FLOAT_3:
params[2] = IROUND64(((GLfloat *) p)[2]);
params[2] = llround(((GLfloat *) p)[2]);
case TYPE_FLOAT_2:
params[1] = IROUND64(((GLfloat *) p)[1]);
params[1] = llround(((GLfloat *) p)[1]);
case TYPE_FLOAT:
params[0] = IROUND64(((GLfloat *) p)[0]);
params[0] = llround(((GLfloat *) p)[0]);
break;
case TYPE_FLOATN_4:
......@@ -2922,22 +2922,22 @@ _mesa_GetIntegeri_v( GLenum pname, GLuint index, GLint *params )
switch (type) {
case TYPE_FLOAT_4:
case TYPE_FLOATN_4:
params[3] = IROUND(v.value_float_4[3]);
params[3] = lroundf(v.value_float_4[3]);
case TYPE_FLOAT_3:
case TYPE_FLOATN_3:
params[2] = IROUND(v.value_float_4[2]);
params[2] = lroundf(v.value_float_4[2]);
case TYPE_FLOAT_2:
case TYPE_FLOATN_2:
params[1] = IROUND(v.value_float_4[1]);
params[1] = lroundf(v.value_float_4[1]);
case TYPE_FLOAT:
case TYPE_FLOATN:
params[0] = IROUND(v.value_float_4[0]);
params[0] = lroundf(v.value_float_4[0]);
break;
case TYPE_DOUBLEN_2:
params[1] = IROUND(v.value_double_2[1]);
params[1] = lroundf(v.value_double_2[1]);
case TYPE_DOUBLEN:
params[0] = IROUND(v.value_double_2[0]);
params[0] = lroundf(v.value_double_2[0]);
break;
case TYPE_INT:
......
......@@ -26,7 +26,6 @@
#include "c99_math.h"
#include "glheader.h"
#include "util/imports.h"
#include "context.h"
#include "enums.h"
#include "light.h"
......@@ -613,7 +612,7 @@ _mesa_update_material( struct gl_context *ctx, GLuint bitmask )
{
GLfloat (*mat)[4] = ctx->Light.Material.Attrib;
if (MESA_VERBOSE & VERBOSE_MATERIAL)
if (MESA_VERBOSE & VERBOSE_MATERIAL)
_mesa_debug(ctx, "_mesa_update_material, mask 0x%x\n", bitmask);
if (!bitmask)
......@@ -625,7 +624,7 @@ _mesa_update_material( struct gl_context *ctx, GLuint bitmask )
while (mask) {
const int i = u_bit_scan(&mask);
struct gl_light *light = &ctx->Light.Light[i];
SCALE_3V( light->_MatAmbient[0], light->Ambient,
SCALE_3V( light->_MatAmbient[0], light->Ambient,
mat[MAT_ATTRIB_FRONT_AMBIENT]);
}
}
......@@ -635,7 +634,7 @@ _mesa_update_material( struct gl_context *ctx, GLuint bitmask )
while (mask) {
const int i = u_bit_scan(&mask);
struct gl_light *light = &ctx->Light.Light[i];
SCALE_3V( light->_MatAmbient[1], light->Ambient,
SCALE_3V( light->_MatAmbient[1], light->Ambient,
mat[MAT_ATTRIB_BACK_AMBIENT]);
}
}
......@@ -659,7 +658,7 @@ _mesa_update_material( struct gl_context *ctx, GLuint bitmask )
while (mask) {
const int i = u_bit_scan(&mask);
struct gl_light *light = &ctx->Light.Light[i];
SCALE_3V( light->_MatDiffuse[0], light->Diffuse,
SCALE_3V( light->_MatDiffuse[0], light->Diffuse,
mat[MAT_ATTRIB_FRONT_DIFFUSE] );
}
}
......@@ -669,7 +668,7 @@ _mesa_update_material( struct gl_context *ctx, GLuint bitmask )
while (mask) {
const int i = u_bit_scan(&mask);
struct gl_light *light = &ctx->Light.Light[i];
SCALE_3V( light->_MatDiffuse[1], light->Diffuse,
SCALE_3V( light->_MatDiffuse[1], light->Diffuse,
mat[MAT_ATTRIB_BACK_DIFFUSE] );
}
}
......@@ -680,7 +679,7 @@ _mesa_update_material( struct gl_context *ctx, GLuint bitmask )
while (mask) {
const int i = u_bit_scan(&mask);
struct gl_light *light = &ctx->Light.Light[i];
SCALE_3V( light->_MatSpecular[0], light->Specular,
SCALE_3V( light->_MatSpecular[0], light->Specular,
mat[MAT_ATTRIB_FRONT_SPECULAR]);
}
}
......@@ -857,12 +856,12 @@ _mesa_GetMaterialiv( GLenum face, GLenum pname, GLint *params )
params[3] = FLOAT_TO_INT( mat[MAT_ATTRIB_EMISSION(f)][3] );
break;
case GL_SHININESS:
*params = IROUND( mat[MAT_ATTRIB_SHININESS(f)][0] );
*params = lroundf( mat[MAT_ATTRIB_SHININESS(f)][0] );
break;
case GL_COLOR_INDEXES:
params[0] = IROUND( mat[MAT_ATTRIB_INDEXES(f)][0] );
params[1] = IROUND( mat[MAT_ATTRIB_INDEXES(f)][1] );
params[2] = IROUND( mat[MAT_ATTRIB_INDEXES(f)][2] );
params[0] = lroundf( mat[MAT_ATTRIB_INDEXES(f)][0] );
params[1] = lroundf( mat[MAT_ATTRIB_INDEXES(f)][1] );
params[2] = lroundf( mat[MAT_ATTRIB_INDEXES(f)][2] );
break;
default:
_mesa_error( ctx, GL_INVALID_ENUM, "glGetMaterialfv(pname)" );
......@@ -1117,7 +1116,7 @@ _mesa_allow_light_in_model( struct gl_context *ctx, GLboolean flag )
* Initialize the n-th light data structure.
*
* \param l pointer to the gl_light structure to be initialized.
* \param n number of the light.
* \param n number of the light.
* \note The defaults for light 0 are different than the other lights.
*/
static void
......@@ -1161,7 +1160,7 @@ init_lightmodel( struct gl_lightmodel *lm )
/**
* Initialize the material data structure.
*
*
* \param m pointer to the gl_material structure to be initialized.
*/
static void
......@@ -1173,7 +1172,7 @@ init_material( struct gl_material *m )
ASSIGN_4V( m->Attrib[MAT_ATTRIB_FRONT_EMISSION], 0.0F, 0.0F, 0.0F, 1.0F );
ASSIGN_4V( m->Attrib[MAT_ATTRIB_FRONT_SHININESS], 0.0F, 0.0F, 0.0F, 0.0F );
ASSIGN_4V( m->Attrib[MAT_ATTRIB_FRONT_INDEXES], 0.0F, 1.0F, 1.0F, 0.0F );
ASSIGN_4V( m->Attrib[MAT_ATTRIB_BACK_AMBIENT], 0.2F, 0.2F, 0.2F, 1.0F );
ASSIGN_4V( m->Attrib[MAT_ATTRIB_BACK_DIFFUSE], 0.8F, 0.8F, 0.8F, 1.0F );
ASSIGN_4V( m->Attrib[MAT_ATTRIB_BACK_SPECULAR], 0.0F, 0.0F, 0.0F, 1.0F );
......
......@@ -28,6 +28,7 @@
* Pixel transfer functions (glPixelZoom, glPixelMap, glPixelTransfer)
*/
#include "c99_math.h"
#include "glheader.h"
#include "bufferobj.h"
#include "context.h"
......@@ -113,7 +114,7 @@ store_pixelmap(struct gl_context *ctx, GLenum map, GLsizei mapsize,
/* special case */
ctx->PixelMaps.StoS.Size = mapsize;
for (i = 0; i < mapsize; i++) {
ctx->PixelMaps.StoS.Map[i] = (GLfloat)IROUND(values[i]);
ctx->PixelMaps.StoS.Map[i] = roundf(values[i]);
}
break;
case GL_PIXEL_MAP_I_TO_I:
......
......@@ -33,6 +33,7 @@
#include "context.h"
#include "pixelstore.h"
#include "mtypes.h"
#include "util/rounding.h"
static ALWAYS_INLINE void
......@@ -234,7 +235,7 @@ _mesa_PixelStorei(GLenum pname, GLint param)
void GLAPIENTRY
_mesa_PixelStoref(GLenum pname, GLfloat param)
{
_mesa_PixelStorei(pname, IROUND(param));
_mesa_PixelStorei(pname, lroundf(param));
}
......@@ -248,7 +249,7 @@ _mesa_PixelStorei_no_error(GLenum pname, GLint param)
void GLAPIENTRY
_mesa_PixelStoref_no_error(GLenum pname, GLfloat param)
{
_mesa_PixelStorei_no_error(pname, IROUND(param));
_mesa_PixelStorei_no_error(pname, lroundf(param));
}
......
......@@ -242,7 +242,7 @@ delete_samplers(struct gl_context *ctx, GLsizei count, const GLuint *samplers)
GLuint j;
struct gl_sampler_object *sampObj =
lookup_samplerobj_locked(ctx, samplers[i]);
if (sampObj) {
/* If the sampler is currently bound, unbind it. */
for (j = 0; j < ctx->Const.MaxCombinedTextureImageUnits; j++) {
......@@ -326,7 +326,7 @@ bind_sampler(struct gl_context *ctx, GLuint unit, GLuint sampler, bool no_error)
return;
}
}
/* bind new sampler */
_mesa_bind_sampler(ctx, unit, sampObj);
}
......@@ -472,7 +472,7 @@ _mesa_BindSamplers(GLuint first, GLsizei count, const GLuint *samplers)
* Check if a coordinate wrap mode is legal.
* \return GL_TRUE if legal, GL_FALSE otherwise
*/
static GLboolean
static GLboolean
validate_texture_wrap_mode(struct gl_context *ctx, GLenum wrap)
{
const struct gl_extensions * const e = &ctx->Extensions;
......@@ -1421,19 +1421,19 @@ _mesa_GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params)
/* GL spec 'Data Conversions' section specifies that floating-point
* value in integer Get function is rounded to nearest integer
*/
*params = IROUND(sampObj->MinLod);
*params = lroundf(sampObj->MinLod);
break;
case GL_TEXTURE_MAX_LOD:
/* GL spec 'Data Conversions' section specifies that floating-point
* value in integer Get function is rounded to nearest integer
*/
*params = IROUND(sampObj->MaxLod);
*params = lroundf(sampObj->MaxLod);
break;
case GL_TEXTURE_LOD_BIAS:
/* GL spec 'Data Conversions' section specifies that floating-point
* value in integer Get function is rounded to nearest integer
*/
*params = IROUND(sampObj->LodBias);
*params = lroundf(sampObj->LodBias);
break;
case GL_TEXTURE_COMPARE_MODE:
*params = sampObj->CompareMode;
......@@ -1445,7 +1445,7 @@ _mesa_GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params)
/* GL spec 'Data Conversions' section specifies that floating-point
* value in integer Get function is rounded to nearest integer
*/
*params = IROUND(sampObj->MaxAnisotropy);
*params = lroundf(sampObj->MaxAnisotropy);
break;
case GL_TEXTURE_BORDER_COLOR:
params[0] = FLOAT_TO_INT(sampObj->BorderColor.f[0]);
......
......@@ -1649,7 +1649,7 @@ get_tex_level_parameter_image(struct gl_context *ctx,
}
if (*params == 0 && pname == GL_TEXTURE_INTENSITY_SIZE) {
/* Gallium may store intensity as LA */
*params = _mesa_get_format_bits(texFormat,
*params = _mesa_get_format_bits(texFormat,
GL_TEXTURE_ALPHA_SIZE);
}
}
......@@ -2424,7 +2424,7 @@ get_tex_parameteriv(struct gl_context *ctx,
/* GL spec 'Data Conversions' section specifies that floating-point
* value in integer Get function is rounded to nearest integer
*/
*params = IROUND(obj->Sampler.MinLod);
*params = lroundf(obj->Sampler.MinLod);
break;
case GL_TEXTURE_MAX_LOD:
if (!_mesa_is_desktop_gl(ctx) && !_mesa_is_gles3(ctx))
......@@ -2432,7 +2432,7 @@ get_tex_parameteriv(struct gl_context *ctx,
/* GL spec 'Data Conversions' section specifies that floating-point
* value in integer Get function is rounded to nearest integer
*/
*params = IROUND(obj->Sampler.MaxLod);
*params = lroundf(obj->Sampler.MaxLod);
break;
case GL_TEXTURE_BASE_LEVEL:
if (!_mesa_is_desktop_gl(ctx) && !_mesa_is_gles3(ctx))
......@@ -2449,7 +2449,7 @@ get_tex_parameteriv(struct gl_context *ctx,
/* GL spec 'Data Conversions' section specifies that floating-point
* value in integer Get function is rounded to nearest integer
*/
*params = IROUND(obj->Sampler.MaxAnisotropy);
*params = lroundf(obj->Sampler.MaxAnisotropy);
break;
case GL_GENERATE_MIPMAP_SGIS:
if (ctx->API != API_OPENGL_COMPAT && ctx->API != API_OPENGLES)
......@@ -2487,7 +2487,7 @@ get_tex_parameteriv(struct gl_context *ctx,
/* GL spec 'Data Conversions' section specifies that floating-point
* value in integer Get function is rounded to nearest integer
*/
*params = IROUND(obj->Sampler.LodBias);
*params = lroundf(obj->Sampler.LodBias);
break;
case GL_TEXTURE_CROP_RECT_OES:
if (ctx->API != API_OPENGLES || !ctx->Extensions.OES_draw_texture)
......
......@@ -298,7 +298,7 @@ blit_nearest(struct gl_context *ctx,
for (dstRow = 0; dstRow < dstHeight; dstRow++) {
GLfloat srcRowF = (dstRow + 0.5F) / dstHeight * srcHeight - 0.5F;
GLint srcRow = IROUND(srcRowF);
GLint srcRow = lroundf(srcRowF);
GLubyte *dstRowStart = dstMap + dstRowStride * dstRow;
assert(srcRow >= 0);
......@@ -440,7 +440,7 @@ resample_linear_row_ub(GLint srcWidth, GLint dstWidth,
alpha = lerp_2d(colWeight, rowWeight,
srcColor0[srcCol0][ACOMP], srcColor0[srcCol1][ACOMP],
srcColor1[srcCol0][ACOMP], srcColor1[srcCol1][ACOMP]);
dstColor[dstCol][RCOMP] = util_ifloor(red);
dstColor[dstCol][GCOMP] = util_ifloor(green);
dstColor[dstCol][BCOMP] = util_ifloor(blue);
......@@ -495,7 +495,7 @@ resample_linear_row_float(GLint srcWidth, GLint dstWidth,
alpha = lerp_2d(colWeight, rowWeight,
srcColor0[srcCol0][ACOMP], srcColor0[srcCol1][ACOMP],
srcColor1[srcCol0][ACOMP], srcColor1[srcCol1][ACOMP]);
dstColor[dstCol][RCOMP] = red;
dstColor[dstCol][GCOMP] = green;
dstColor[dstCol][BCOMP] = blue;
......
......@@ -49,6 +49,7 @@
#include "swrast.h"
#include "s_fragprog.h"
#include "s_span.h"
#include "util/rounding.h"
typedef void (*texture_sample_func)(struct gl_context *ctx,
......@@ -433,7 +434,7 @@ _swrast_unmap_renderbuffers(struct gl_context *ctx);
#define FIXED_EPSILON 1
#define FIXED_SCALE ((float) FIXED_ONE)
#define FIXED_DBL_SCALE ((double) FIXED_ONE)
#define FloatToFixed(X) (IROUND((X) * FIXED_SCALE))
#define FloatToFixed(X) (lroundf((X) * FIXED_SCALE))
#define FixedToDouble(X) ((X) * (1.0 / FIXED_DBL_SCALE))
#define IntToFixed(I) ((I) << FIXED_SHIFT)
#define FixedToInt(X) ((X) >> FIXED_SHIFT)
......
......@@ -95,23 +95,6 @@ typedef union { float f; int i; unsigned u; } fi_type;
#endif
/**
* Convert float to int by rounding to nearest integer, away from zero.
*/
static inline int IROUND(float f)
{
return (int) ((f >= 0.0F) ? (f + 0.5F) : (f - 0.5F));
}
/**
* Convert float to int64 by rounding to nearest integer.
*/
static inline int64_t IROUND64(float f)
{
return (int64_t) ((f >= 0.0F) ? (f + 0.5F) : (f - 0.5F));
}
/**********************************************************************
* Functions
*/
......
......@@ -108,6 +108,7 @@ _mesa_lroundevenf(float x)
#endif
}
/**
* \brief Rounds \c x to the nearest integer, with ties to the even integer,
* and returns the value as a long int.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment