Commit 37477918 by Olli Etuaho

Fix samplerParameter validation

Refactor the validation out from the API and into a separate Validate function. Also check the sampler parameter first to match dEQP expectations. BUG=angleproject:1101 TEST=dEQP-GLES3.functional.negative_api.shader.sampler* (all pass) Change-Id: I5f4072d9e52d37f741bd4c90f1bffe13371af3f5 Reviewed-on: https://chromium-review.googlesource.com/336162Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
parent 9e3c615e
......@@ -1970,4 +1970,37 @@ bool ValidateBeginTransformFeedback(Context *context, GLenum primitiveMode)
return true;
}
bool ValidateSamplerParameteri(Context *context, GLuint sampler, GLenum pname, GLint param)
{
if (context->getClientVersion() < 3)
{
context->recordError(Error(GL_INVALID_OPERATION, "Context does not support GLES3."));
return false;
}
if (!context->isSampler(sampler))
{
context->recordError(Error(GL_INVALID_OPERATION));
return false;
}
if (!ValidateSamplerObjectParameter(context, pname))
{
return false;
}
if (!ValidateTexParamParameters(context, pname, param))
{
return false;
}
return true;
}
bool ValidateSamplerParameterf(Context *context, GLuint sampler, GLenum pname, GLfloat param)
{
// The only float parameters are MIN_LOD and MAX_LOD. For these any value is permissible, so
// ValidateSamplerParameteri can be used for validation here.
return ValidateSamplerParameteri(context, sampler, pname, static_cast<GLint>(param));
}
} // namespace gl
......@@ -291,6 +291,9 @@ bool ValidateGenOrDeleteCountES3(Context *context, GLint count);
bool ValidateBeginTransformFeedback(Context *context, GLenum primitiveMode);
bool ValidateSamplerParameteri(Context *context, GLuint sampler, GLenum pname, GLint param);
bool ValidateSamplerParameterf(Context *context, GLuint sampler, GLenum pname, GLfloat param);
} // namespace gl
#endif // LIBANGLE_VALIDATION_ES3_H_
......@@ -2374,25 +2374,9 @@ void GL_APIENTRY SamplerParameteri(GLuint sampler, GLenum pname, GLint param)
Context *context = GetValidGlobalContext();
if (context)
{
if (context->getClientVersion() < 3)
{
context->recordError(Error(GL_INVALID_OPERATION));
return;
}
if (!ValidateSamplerObjectParameter(context, pname))
{
return;
}
if (!ValidateTexParamParameters(context, pname, param))
{
return;
}
if (!context->isSampler(sampler))
if (!context->skipValidation() &&
!ValidateSamplerParameteri(context, sampler, pname, param))
{
context->recordError(Error(GL_INVALID_OPERATION));
return;
}
......@@ -2412,25 +2396,9 @@ void GL_APIENTRY SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param)
Context *context = GetValidGlobalContext();
if (context)
{
if (context->getClientVersion() < 3)
{
context->recordError(Error(GL_INVALID_OPERATION));
return;
}
if (!ValidateSamplerObjectParameter(context, pname))
{
return;
}
if (!ValidateTexParamParameters(context, pname, static_cast<GLint>(param)))
{
return;
}
if (!context->isSampler(sampler))
if (!context->skipValidation() &&
!ValidateSamplerParameterf(context, sampler, pname, param))
{
context->recordError(Error(GL_INVALID_OPERATION));
return;
}
......
......@@ -54,7 +54,6 @@
1101 WIN LINUX : dEQP-GLES3.functional.negative_api.texture.compressedtexsubimage2d_invalid_size = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.negative_api.texture.compressedtexsubimage3d = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.negative_api.texture.compressedtexsubimage3d_invalid_buffer_target = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.negative_api.shader.sampler_parameterfv = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.negative_api.fragment.begin_query = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.negative_api.vertex_array.vertex_attrib_i_pointer = FAIL
1101 WIN LINUX : dEQP-GLES3.functional.negative_api.vertex_array.draw_range_elements = 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