[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