Change the commit message to "mesa: fix target error checking in glGetTexLevelParameter" and Reviewed-by: Timothy Arceri <t_arc...@yahoo.com.au>
On Thu, 2015-08-13 at 17:03 +0300, Tapani Pälli wrote: > With non-dsa functions we need to do target error checking before > _mesa_get_current_tex_object which would just call _mesa_problem > without > raising GL_INVALID_ENUM error. In other places of Mesa, target gets > checked > before this call. > > Fixes failures in: > ES31 > -CTS.texture_storage_multisample.APIGLGetTexLevelParameterifv.* > > v2: do the check also for dsa functions (Timothy) > > Signed-off-by: Tapani Pälli <tapani.pa...@intel.com> > --- > src/mesa/main/texparam.c | 32 +++++++++++++++++++++++++------- > 1 file changed, 25 insertions(+), 7 deletions(-) > > diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c > index d9efd15..76edcca 100644 > --- a/src/mesa/main/texparam.c > +++ b/src/mesa/main/texparam.c > @@ -1574,6 +1574,19 @@ invalid_pname: > _mesa_enum_to_string(pname)); > } > > +static bool > +valid_tex_level_parameteriv_target(struct gl_context *ctx, GLenum > target, > + bool dsa) > +{ > + const char *suffix = dsa ? "ture" : ""; > + if (!legal_get_tex_level_parameter_target(ctx, target, dsa)) { > + _mesa_error(ctx, GL_INVALID_ENUM, > + "glGetTex%sLevelParameter[if]v(target=%s)", > suffix, > + _mesa_enum_to_string(target)); > + return false; > + } > + return true; > +} > > /** > * This isn't exposed to the rest of the driver because it is a part > of the > @@ -1597,13 +1610,6 @@ get_tex_level_parameteriv(struct gl_context > *ctx, > return; > } > > - if (!legal_get_tex_level_parameter_target(ctx, target, dsa)) { > - _mesa_error(ctx, GL_INVALID_ENUM, > - "glGetTex%sLevelParameter[if]v(target=%s)", > suffix, > - _mesa_enum_to_string(target)); > - return; > - } > - > maxLevels = _mesa_max_texture_levels(ctx, target); > assert(maxLevels != 0); > > @@ -1631,6 +1637,9 @@ _mesa_GetTexLevelParameterfv( GLenum target, > GLint level, > GLint iparam; > GET_CURRENT_CONTEXT(ctx); > > + if (!valid_tex_level_parameteriv_target(ctx, target, false)) > + return; > + > texObj = _mesa_get_current_tex_object(ctx, target); > if (!texObj) > return; > @@ -1648,6 +1657,9 @@ _mesa_GetTexLevelParameteriv( GLenum target, > GLint level, > struct gl_texture_object *texObj; > GET_CURRENT_CONTEXT(ctx); > > + if (!valid_tex_level_parameteriv_target(ctx, target, false)) > + return; > + > texObj = _mesa_get_current_tex_object(ctx, target); > if (!texObj) > return; > @@ -1669,6 +1681,9 @@ _mesa_GetTextureLevelParameterfv(GLuint > texture, GLint level, > if (!texObj) > return; > > + if (!valid_tex_level_parameteriv_target(ctx, texObj->Target, > true)) > + return; > + > get_tex_level_parameteriv(ctx, texObj, texObj->Target, level, > pname, &iparam, true); > > @@ -1687,6 +1702,9 @@ _mesa_GetTextureLevelParameteriv(GLuint > texture, GLint level, > if (!texObj) > return; > > + if (!valid_tex_level_parameteriv_target(ctx, texObj->Target, > true)) > + return; > + > get_tex_level_parameteriv(ctx, texObj, texObj->Target, level, > pname, params, true); > } _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev