mesa: Make GenerateMipmap check the target before finding an object.
If glGenerateMipmap was called with a bogus target, then it would pass that to _mesa_get_current_tex_object(), which would raise a _mesa_problem() telling people to file bugs. We'd then do the proper error checking, raise an error, and bail. Doing the check first avoids the _mesa_problem(). The DSA variant doesn't take a target parameter, so we leave the target validation exactly as it was in that case. Fixes one dEQP GLES2 test: dEQP-GLES2.functional.negative_api.texture.generatemipmap.invalid_target. v2: Rebase on Antia's recent patch to this area. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Brian Paul <brianp@vmware.com> [v1] Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
8f99c1bbce
commit
2f8a43586e
|
@ -99,12 +99,6 @@ _mesa_generate_texture_mipmap(struct gl_context *ctx,
|
|||
|
||||
FLUSH_VERTICES(ctx, 0);
|
||||
|
||||
if (!_mesa_is_valid_generate_texture_mipmap_target(ctx, target)) {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glGenerate%sMipmap(target=%s)",
|
||||
suffix, _mesa_enum_to_string(target));
|
||||
return;
|
||||
}
|
||||
|
||||
if (texObj->BaseLevel >= texObj->MaxLevel) {
|
||||
/* nothing to do */
|
||||
return;
|
||||
|
@ -159,6 +153,12 @@ _mesa_GenerateMipmap(GLenum target)
|
|||
struct gl_texture_object *texObj;
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
if (!_mesa_is_valid_generate_texture_mipmap_target(ctx, target)) {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glGenerateMipmap(target=%s)",
|
||||
_mesa_enum_to_string(target));
|
||||
return;
|
||||
}
|
||||
|
||||
texObj = _mesa_get_current_tex_object(ctx, target);
|
||||
if (!texObj)
|
||||
return;
|
||||
|
@ -179,5 +179,11 @@ _mesa_GenerateTextureMipmap(GLuint texture)
|
|||
if (!texObj)
|
||||
return;
|
||||
|
||||
if (!_mesa_is_valid_generate_texture_mipmap_target(ctx, texObj->Target)) {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glGenerateTextureMipmap(target=%s)",
|
||||
_mesa_enum_to_string(texObj->Target));
|
||||
return;
|
||||
}
|
||||
|
||||
_mesa_generate_texture_mipmap(ctx, texObj, texObj->Target, true);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue