Commit 6ad07236 by Olli Etuaho Committed by Commit Bot

Fix texture and sampler state queries

Round MAX_LOD / MIN_LOD values correctly according to section 6.1.2 of GLES 3.0.4, and add code for COMPARE_MODE and COMPARE_FUNC. BUG=angleproject:1101 TEST=dEQP-GLES3.functional.state_query.texture.* (all pass), dEQP-GLES3.functional.state_query.sampler.* (all pass) Change-Id: I6043c308c23997513d5de70510a0267419dd1868 Reviewed-on: https://chromium-review.googlesource.com/330112Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
parent b1853096
......@@ -1930,8 +1930,8 @@ GLint Context::getSamplerParameteri(GLuint sampler, GLenum pname)
case GL_TEXTURE_WRAP_T: return static_cast<GLint>(samplerObject->getWrapT());
case GL_TEXTURE_WRAP_R: return static_cast<GLint>(samplerObject->getWrapR());
case GL_TEXTURE_MAX_ANISOTROPY_EXT: return static_cast<GLint>(samplerObject->getMaxAnisotropy());
case GL_TEXTURE_MIN_LOD: return uiround<GLint>(samplerObject->getMinLod());
case GL_TEXTURE_MAX_LOD: return uiround<GLint>(samplerObject->getMaxLod());
case GL_TEXTURE_MIN_LOD: return iround<GLint>(samplerObject->getMinLod());
case GL_TEXTURE_MAX_LOD: return iround<GLint>(samplerObject->getMaxLod());
case GL_TEXTURE_COMPARE_MODE: return static_cast<GLint>(samplerObject->getCompareMode());
case GL_TEXTURE_COMPARE_FUNC: return static_cast<GLint>(samplerObject->getCompareFunc());
default: UNREACHABLE(); return 0;
......
......@@ -2433,7 +2433,26 @@ void GL_APIENTRY GetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
}
*params = texture->getSamplerState().maxLod;
break;
case GL_TEXTURE_COMPARE_MODE:
if (context->getClientVersion() < 3)
{
context->recordError(
Error(GL_INVALID_ENUM,
"GL_TEXTURE_COMPARE_MODE not available in ES versions < 3.0"));
return;
}
*params = static_cast<GLfloat>(texture->getCompareMode());
break;
case GL_TEXTURE_COMPARE_FUNC:
if (context->getClientVersion() < 3)
{
context->recordError(
Error(GL_INVALID_ENUM,
"GL_TEXTURE_COMPARE_FUNC not available in ES versions < 3.0"));
return;
}
*params = static_cast<GLfloat>(texture->getCompareFunc());
break;
default:
context->recordError(Error(GL_INVALID_ENUM));
return;
......@@ -2561,7 +2580,7 @@ void GL_APIENTRY GetTexParameteriv(GLenum target, GLenum pname, GLint* params)
context->recordError(Error(GL_INVALID_ENUM));
return;
}
*params = (GLint)texture->getMinLod();
*params = iround<GLint>(texture->getMinLod());
break;
case GL_TEXTURE_MAX_LOD:
if (context->getClientVersion() < 3)
......@@ -2569,9 +2588,28 @@ void GL_APIENTRY GetTexParameteriv(GLenum target, GLenum pname, GLint* params)
context->recordError(Error(GL_INVALID_ENUM));
return;
}
*params = (GLint)texture->getMaxLod();
*params = iround<GLint>(texture->getMaxLod());
break;
case GL_TEXTURE_COMPARE_MODE:
if (context->getClientVersion() < 3)
{
context->recordError(
Error(GL_INVALID_ENUM,
"GL_TEXTURE_COMPARE_MODE not available in ES versions < 3.0"));
return;
}
*params = texture->getCompareMode();
break;
case GL_TEXTURE_COMPARE_FUNC:
if (context->getClientVersion() < 3)
{
context->recordError(
Error(GL_INVALID_ENUM,
"GL_TEXTURE_COMPARE_FUNC not available in ES versions < 3.0"));
return;
}
*params = texture->getCompareFunc();
break;
default:
context->recordError(Error(GL_INVALID_ENUM));
return;
......
......@@ -78,8 +78,6 @@
1093 WIN LINUX : dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.highp_fragment.vec4 = FAIL
1094 WIN LINUX : dEQP-GLES3.functional.shaders.builtin_variable.vertex_id = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.fbo.framebuffer_attachment_x_size_rbo = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.sampler.sampler_texture_min_lod_getsamplerparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.sampler.sampler_texture_max_lod_getsamplerparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.shader.program_attached_shaders = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.integers.sampler_binding_getboolean = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.integers.sampler_binding_getinteger = FAIL
......@@ -89,30 +87,6 @@
1101 WIN LINUX : dEQP-GLES3.functional.state_query.integers.read_buffer_getinteger = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.integers.read_buffer_getinteger64 = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.integers.read_buffer_getfloat = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_2d_texture_min_lod_gettexparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_2d_texture_max_lod_gettexparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_2d_texture_compare_mode_gettexparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_2d_texture_compare_mode_gettexparameterf = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_2d_texture_compare_func_gettexparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_2d_texture_compare_func_gettexparameterf = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_3d_texture_min_lod_gettexparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_3d_texture_max_lod_gettexparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_3d_texture_compare_mode_gettexparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_3d_texture_compare_mode_gettexparameterf = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_3d_texture_compare_func_gettexparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_3d_texture_compare_func_gettexparameterf = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_2d_array_texture_min_lod_gettexparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_2d_array_texture_max_lod_gettexparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_2d_array_texture_compare_mode_gettexparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_2d_array_texture_compare_mode_gettexparameterf = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_2d_array_texture_compare_func_gettexparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_2d_array_texture_compare_func_gettexparameterf = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_cube_map_texture_min_lod_gettexparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_cube_map_texture_max_lod_gettexparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_cube_map_texture_compare_mode_gettexparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_cube_map_texture_compare_mode_gettexparameterf = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_cube_map_texture_compare_func_gettexparameteri = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.state_query.texture.texture_cube_map_texture_compare_func_gettexparameterf = FAIL
1095 WIN LINUX : dEQP-GLES3.functional.texture.mipmap.2d.projected.nearest_nearest_clamp = FAIL
1095 WIN LINUX : dEQP-GLES3.functional.texture.mipmap.2d.projected.nearest_nearest_repeat = FAIL
1095 WIN LINUX : dEQP-GLES3.functional.texture.mipmap.2d.projected.nearest_nearest_mirror = FAIL
......
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