[Mesa-stable] Fwd: [PATCH] main: Fix target checking for CopyTexSubImage*D.

Laura Ekstrand laura at jlekstrand.net
Wed Mar 4 09:09:31 PST 2015


No, there's no need for a backport.

On Tue, Mar 3, 2015 at 6:00 PM, Emil Velikov <emil.l.velikov at gmail.com>
wrote:

> Hi Laura,
>
> This commit does not pick cleanly against the 10.4 tree. Upon closer
> look it seems that it depends on your Texture{Sub,}Image rework from
> earlier this year. Can you confirm if want this for 10.4 and if so
> send over a backport.
>
> Thanks
> Emil
>
> On 28 February 2015 at 00:38, Laura Ekstrand <laura at jlekstrand.net> wrote:
> > CC: 10.4, 10.5
> >
> >
> > ---------- Forwarded message ----------
> > From: Laura Ekstrand <laura at jlekstrand.net>
> > Date: Wed, Feb 25, 2015 at 6:04 PM
> > Subject: [PATCH] main: Fix target checking for CopyTexSubImage*D.
> > To: mesa-dev at lists.freedesktop.org
> > Cc: Laura Ekstrand <laura at jlekstrand.net>
> >
> >
> > This fixes a dEQP test failure.  In the test,
> > glCopyTexSubImage2D was called with target = 0 and failed to throw
> > INVALID ENUM. This failure was caused by
> _mesa_get_current_tex_object(ctx,
> > target) being called before the target checking.  To remedy this, target
> > checking was separated from the main error-checking function and
> > called prior to _mesa_get_current_tex_object.
> >
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89312
> > ---
> >  src/mesa/main/teximage.c | 62
> > +++++++++++++++++++++++++++++++++++++++++-------
> >  1 file changed, 54 insertions(+), 8 deletions(-)
> >
> > diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
> > index 87231df..475dc54 100644
> > --- a/src/mesa/main/teximage.c
> > +++ b/src/mesa/main/teximage.c
> > @@ -2815,14 +2815,6 @@ copytexsubimage_error_check(struct gl_context
> *ctx,
> > GLuint dimensions,
> >        }
> >     }
> >
> > -   /* check target (proxies not allowed) */
> > -   if (!legal_texsubimage_target(ctx, dimensions, target, dsa)) {
> > -      _mesa_error(ctx, GL_INVALID_ENUM,
> > "glCopyTex%sSubImage%uD(target=%s)",
> > -                  suffix, dimensions,
> > -                  _mesa_lookup_enum_by_nr(target));
> > -      return GL_TRUE;
> > -   }
> > -
> >     /* Check level */
> >     if (level < 0 || level >= _mesa_max_texture_levels(ctx, target)) {
> >        _mesa_error(ctx, GL_INVALID_VALUE,
> > @@ -4090,6 +4082,16 @@ _mesa_CopyTexSubImage1D( GLenum target, GLint
> level,
> >     struct gl_texture_object* texObj;
> >     GET_CURRENT_CONTEXT(ctx);
> >
> > +   /* Check target (proxies not allowed). Target must be checked prior
> to
> > +    * calling _mesa_get_current_tex_object.
> > +    */
> > +   if (!legal_texsubimage_target(ctx, 1, target, false)) {
> > +      _mesa_error(ctx, GL_INVALID_ENUM,
> > +                  "glCopyTexSubImage1D(invalid target %s)",
> > +                  _mesa_lookup_enum_by_nr(target));
> > +      return;
> > +   }
> > +
> >     texObj = _mesa_get_current_tex_object(ctx, target);
> >     if (!texObj)
> >        return;
> > @@ -4108,6 +4110,16 @@ _mesa_CopyTexSubImage2D( GLenum target, GLint
> level,
> >     struct gl_texture_object* texObj;
> >     GET_CURRENT_CONTEXT(ctx);
> >
> > +   /* Check target (proxies not allowed). Target must be checked prior
> to
> > +    * calling _mesa_get_current_tex_object.
> > +    */
> > +   if (!legal_texsubimage_target(ctx, 2, target, false)) {
> > +      _mesa_error(ctx, GL_INVALID_ENUM,
> > +                  "glCopyTexSubImage2D(invalid target %s)",
> > +                  _mesa_lookup_enum_by_nr(target));
> > +      return;
> > +   }
> > +
> >     texObj = _mesa_get_current_tex_object(ctx, target);
> >     if (!texObj)
> >        return;
> > @@ -4127,6 +4139,16 @@ _mesa_CopyTexSubImage3D( GLenum target, GLint
> level,
> >     struct gl_texture_object* texObj;
> >     GET_CURRENT_CONTEXT(ctx);
> >
> > +   /* Check target (proxies not allowed). Target must be checked prior
> to
> > +    * calling _mesa_get_current_tex_object.
> > +    */
> > +   if (!legal_texsubimage_target(ctx, 3, target, false)) {
> > +      _mesa_error(ctx, GL_INVALID_ENUM,
> > +                  "glCopyTexSubImage3D(invalid target %s)",
> > +                  _mesa_lookup_enum_by_nr(target));
> > +      return;
> > +   }
> > +
> >     texObj = _mesa_get_current_tex_object(ctx, target);
> >     if (!texObj)
> >        return;
> > @@ -4147,6 +4169,14 @@ _mesa_CopyTextureSubImage1D(GLuint texture, GLint
> > level,
> >     if (!texObj)
> >        return;
> >
> > +   /* Check target (proxies not allowed). */
> > +   if (!legal_texsubimage_target(ctx, 1, texObj->Target, true)) {
> > +      _mesa_error(ctx, GL_INVALID_ENUM,
> > +                  "glCopyTextureSubImage1D(invalid target %s)",
> > +                  _mesa_lookup_enum_by_nr(texObj->Target));
> > +      return;
> > +   }
> > +
> >     _mesa_copy_texture_sub_image(ctx, 1, texObj, texObj->Target, level,
> >                                  xoffset, 0, 0, x, y, width, 1, true);
> >  }
> > @@ -4163,6 +4193,14 @@ _mesa_CopyTextureSubImage2D(GLuint texture, GLint
> > level,
> >     if (!texObj)
> >        return;
> >
> > +   /* Check target (proxies not allowed). */
> > +   if (!legal_texsubimage_target(ctx, 2, texObj->Target, true)) {
> > +      _mesa_error(ctx, GL_INVALID_ENUM,
> > +                  "glCopyTextureSubImage2D(invalid target %s)",
> > +                  _mesa_lookup_enum_by_nr(texObj->Target));
> > +      return;
> > +   }
> > +
> >     _mesa_copy_texture_sub_image(ctx, 2, texObj, texObj->Target, level,
> >                                  xoffset, yoffset, 0,
> >                                  x, y, width, height, true);
> > @@ -4182,6 +4220,14 @@ _mesa_CopyTextureSubImage3D(GLuint texture, GLint
> > level,
> >     if (!texObj)
> >        return;
> >
> > +   /* Check target (proxies not allowed). */
> > +   if (!legal_texsubimage_target(ctx, 3, texObj->Target, true)) {
> > +      _mesa_error(ctx, GL_INVALID_ENUM,
> > +                  "glCopyTextureSubImage3D(invalid target %s)",
> > +                  _mesa_lookup_enum_by_nr(texObj->Target));
> > +      return;
> > +   }
> > +
> >     _mesa_copy_texture_sub_image(ctx, 3, texObj, texObj->Target, level,
> >                                  xoffset, yoffset, zoffset,
> >                                  x, y, width, height, true);
> > --
> > 2.1.0
> >
> >
> >
> > _______________________________________________
> > mesa-stable mailing list
> > mesa-stable at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/mesa-stable
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-stable/attachments/20150304/6d76799d/attachment.html>


More information about the mesa-stable mailing list