This patch is Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
This patch should definitely be tagged for the 10.6.x series. I suspect this problem was introduced when the DSA work landed. On 07/29/2015 07:01 AM, Samuel Iglesias Gonsalvez wrote: > From: Eduardo Lima Mitev <el...@igalia.com> > > Currently, glTexSubImageXD attempt to resolve the texture object > (by calling _mesa_get_current_tex_object()) before validating the given > target. However, that method explicitly states that target must have been > validated before calling it, so it never returns a user error. > > The target validation occurs later when texsubimage_error_check() is called. > > This patch reorganizes target validation, taking it out from the error check > function and into a point before the texture object is resolved. > --- > src/mesa/main/teximage.c | 29 ++++++++++++++--------------- > 1 file changed, 14 insertions(+), 15 deletions(-) > > diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c > index 949eef0..c71b818 100644 > --- a/src/mesa/main/teximage.c > +++ b/src/mesa/main/teximage.c > @@ -2487,13 +2487,6 @@ texsubimage_error_check(struct gl_context *ctx, GLuint > dimensions, > return GL_TRUE; > } > > - /* check target (proxies not allowed) */ > - if (!legal_texsubimage_target(ctx, dimensions, target, dsa)) { > - _mesa_error(ctx, GL_INVALID_ENUM, "%s(target=%s)", > - callerName, _mesa_enum_to_string(target)); > - return GL_TRUE; > - } > - > /* level check */ > if (level < 0 || level >= _mesa_max_texture_levels(ctx, target)) { > _mesa_error(ctx, GL_INVALID_VALUE, "%s(level=%d)", callerName, level); > @@ -3522,14 +3515,6 @@ _mesa_texture_sub_image(struct gl_context *ctx, GLuint > dims, > { > FLUSH_VERTICES(ctx, 0); > > - /* check target (proxies not allowed) */ > - if (!legal_texsubimage_target(ctx, dims, target, dsa)) { > - _mesa_error(ctx, GL_INVALID_ENUM, "glTex%sSubImage%uD(target=%s)", > - dsa ? "ture" : "", > - dims, _mesa_enum_to_string(target)); > - return; > - } > - > if (ctx->NewState & _NEW_PIXEL) > _mesa_update_state(ctx); > > @@ -3579,6 +3564,13 @@ texsubimage(struct gl_context *ctx, GLuint dims, > GLenum target, GLint level, > struct gl_texture_object *texObj; > struct gl_texture_image *texImage; > > + /* check target (proxies not allowed) */ > + if (!legal_texsubimage_target(ctx, dims, target, false)) { > + _mesa_error(ctx, GL_INVALID_ENUM, "glTexSubImage%uD(target=%s)", > + dims, _mesa_enum_to_string(target)); > + return; > + } > + > texObj = _mesa_get_current_tex_object(ctx, target); > if (!texObj) > return; > @@ -3639,6 +3631,13 @@ texturesubimage(struct gl_context *ctx, GLuint dims, > return; > } > > + /* check target (proxies not allowed) */ > + if (!legal_texsubimage_target(ctx, dims, texObj->Target, true)) { > + _mesa_error(ctx, GL_INVALID_ENUM, "%s(target=%s)", > + callerName, _mesa_enum_to_string(texObj->Target)); > + return; > + } > + > if (texsubimage_error_check(ctx, dims, texObj, texObj->Target, level, > xoffset, yoffset, zoffset, > width, height, depth, format, type, > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev