gles3 conformance sgis_texture_lod_basic_getter.test expects base and max texture levels to be rounded to nearest integer. e.g. round 2.3 to 2 and 2.6 to 3. OpenGL 3.0 and OpenGL ES 3.0 specifications suggest similar rounding to select level when filtering mode is GL_NEAREST.
This patch makes sgis_texture_lod_basic_getter.test pass. Signed-off-by: Anuj Phogat <anuj.pho...@gmail.com> --- src/mesa/main/texparam.c | 24 ++++++++++++++++++++++-- 1 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index ca5a21f..f3f97ca 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -654,8 +654,6 @@ _mesa_TexParameterf(GLenum target, GLenum pname, GLfloat param) case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: case GL_TEXTURE_WRAP_R: - case GL_TEXTURE_BASE_LEVEL: - case GL_TEXTURE_MAX_LEVEL: case GL_GENERATE_MIPMAP_SGIS: case GL_TEXTURE_COMPARE_MODE_ARB: case GL_TEXTURE_COMPARE_FUNC_ARB: @@ -670,6 +668,28 @@ _mesa_TexParameterf(GLenum target, GLenum pname, GLfloat param) need_update = set_tex_parameteri(ctx, texObj, pname, p); } break; + case GL_TEXTURE_BASE_LEVEL: + case GL_TEXTURE_MAX_LEVEL: + { + GLint p[4]; + /* Check if param exceeds maximum value an integer can hold */ + if (param > 2147483647.0f) { + p[0] = (GLint) 2147483647.0f; + } + else if (param < 0.0f) { + p[0] = 0; + } + else { + /* Round float param to nearest integer. e.g round 2.3 to 2 + * and 2.8 to 3. + */ + p[0] = (GLint) (param + 0.5); + } + + p[1] = p[2] = p[3] = 0; + need_update = set_tex_parameteri(ctx, texObj, pname, p); + } + break; case GL_TEXTURE_SWIZZLE_R_EXT: case GL_TEXTURE_SWIZZLE_G_EXT: case GL_TEXTURE_SWIZZLE_B_EXT: -- 1.7.7.6 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev