This patch is Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
It seems like we could use some refactoring so there isn't so much duplicated code between GetSamplerParameter* and GetTexParameter*. On 12/11/2014 02:34 PM, Eduardo Lima Mitev wrote: > From: Samuel Iglesias Gonsalvez <sigles...@igalia.com> > > 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 2 dEQP tests: > > dEQP-GLES3.functional.state_query.sampler.sampler_texture_min_lod_getsamplerparameteri > dEQP-GLES3.functional.state_query.sampler.sampler_texture_max_lod_getsamplerparameteri > > Signed-off-by: Samuel Iglesias Gonsalvez <sigles...@igalia.com> > --- > src/mesa/main/samplerobj.c | 20 ++++++++++++++++---- > 1 file changed, 16 insertions(+), 4 deletions(-) > > diff --git a/src/mesa/main/samplerobj.c b/src/mesa/main/samplerobj.c > index 18a14d8..cadc9cc 100644 > --- a/src/mesa/main/samplerobj.c > +++ b/src/mesa/main/samplerobj.c > @@ -1271,13 +1271,22 @@ _mesa_GetSamplerParameteriv(GLuint sampler, GLenum > pname, GLint *params) > *params = sampObj->MagFilter; > break; > case GL_TEXTURE_MIN_LOD: > - *params = (GLint) sampObj->MinLod; > + /* GL spec 'Data Conversions' section specifies that floating-point > + * value in integer Get function is rounded to nearest integer > + */ > + *params = IROUND(sampObj->MinLod); > break; > case GL_TEXTURE_MAX_LOD: > - *params = (GLint) sampObj->MaxLod; > + /* GL spec 'Data Conversions' section specifies that floating-point > + * value in integer Get function is rounded to nearest integer > + */ > + *params = IROUND(sampObj->MaxLod); > break; > case GL_TEXTURE_LOD_BIAS: > - *params = (GLint) sampObj->LodBias; > + /* GL spec 'Data Conversions' section specifies that floating-point > + * value in integer Get function is rounded to nearest integer > + */ > + *params = IROUND(sampObj->LodBias); > break; > case GL_TEXTURE_COMPARE_MODE: > if (!ctx->Extensions.ARB_shadow) > @@ -1290,7 +1299,10 @@ _mesa_GetSamplerParameteriv(GLuint sampler, GLenum > pname, GLint *params) > *params = sampObj->CompareFunc; > break; > case GL_TEXTURE_MAX_ANISOTROPY_EXT: > - *params = (GLint) sampObj->MaxAnisotropy; > + /* GL spec 'Data Conversions' section specifies that floating-point > + * value in integer Get function is rounded to nearest integer > + */ > + *params = IROUND(sampObj->MaxAnisotropy); > break; > case GL_TEXTURE_BORDER_COLOR: > params[0] = FLOAT_TO_INT(sampObj->BorderColor.f[0]); > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev