mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
main: round floating-point value to nearest integer in glGetTexParameteriv()
Previously, a cast was done to convert from float to int but there were rounding errors. The spec specificies in Data Conversion chapter that Floating-point values are rounded to the nearest integer. This patch fixes the following 8 dEQP tests: dEQP-GLES3.functional.state_query.texture.texture_2d_texture_min_lod_gettexparameteri dEQP-GLES3.functional.state_query.texture.texture_2d_texture_max_lod_gettexparameteri dEQP-GLES3.functional.state_query.texture.texture_3d_texture_min_lod_gettexparameteri dEQP-GLES3.functional.state_query.texture.texture_3d_texture_max_lod_gettexparameteri dEQP-GLES3.functional.state_query.texture.texture_2d_array_texture_min_lod_gettexparameteri dEQP-GLES3.functional.state_query.texture.texture_2d_array_texture_max_lod_gettexparameteri dEQP-GLES3.functional.state_query.texture.texture_cube_map_texture_min_lod_gettexparameteri dEQP-GLES3.functional.state_query.texture.texture_cube_map_texture_max_lod_gettexparameteri Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
8e49a3e028
commit
d8d59202af
1 changed files with 12 additions and 5 deletions
|
|
@ -1957,14 +1957,18 @@ get_tex_parameteriv(struct gl_context *ctx,
|
|||
case GL_TEXTURE_MIN_LOD:
|
||||
if (!_mesa_is_desktop_gl(ctx) && !_mesa_is_gles3(ctx))
|
||||
goto invalid_pname;
|
||||
|
||||
*params = (GLint) obj->Sampler.MinLod;
|
||||
/* GL spec 'Data Conversions' section specifies that floating-point
|
||||
* value in integer Get function is rounded to nearest integer
|
||||
*/
|
||||
*params = IROUND(obj->Sampler.MinLod);
|
||||
break;
|
||||
case GL_TEXTURE_MAX_LOD:
|
||||
if (!_mesa_is_desktop_gl(ctx) && !_mesa_is_gles3(ctx))
|
||||
goto invalid_pname;
|
||||
|
||||
*params = (GLint) obj->Sampler.MaxLod;
|
||||
/* GL spec 'Data Conversions' section specifies that floating-point
|
||||
* value in integer Get function is rounded to nearest integer
|
||||
*/
|
||||
*params = IROUND(obj->Sampler.MaxLod);
|
||||
break;
|
||||
case GL_TEXTURE_BASE_LEVEL:
|
||||
if (!_mesa_is_desktop_gl(ctx) && !_mesa_is_gles3(ctx))
|
||||
|
|
@ -1978,7 +1982,10 @@ get_tex_parameteriv(struct gl_context *ctx,
|
|||
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
|
||||
if (!ctx->Extensions.EXT_texture_filter_anisotropic)
|
||||
goto invalid_pname;
|
||||
*params = (GLint) obj->Sampler.MaxAnisotropy;
|
||||
/* GL spec 'Data Conversions' section specifies that floating-point
|
||||
* value in integer Get function is rounded to nearest integer
|
||||
*/
|
||||
*params = IROUND(obj->Sampler.MaxAnisotropy);
|
||||
break;
|
||||
case GL_GENERATE_MIPMAP_SGIS:
|
||||
if (ctx->API != API_OPENGL_COMPAT && ctx->API != API_OPENGLES)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue