[Mesa-dev] [PATCH 03/17] mesa: fix deletion of inactive bound transform feedback object

Samuel Iglesias Gonsálvez siglesias at igalia.com
Wed Jul 29 22:02:40 PDT 2015


On Wed, 2015-07-29 at 12:31 -0700, Ian Romanick wrote:
> On 07/29/2015 07:01 AM, Samuel Iglesias Gonsalvez wrote:
> > When a transform feedback object is bound and not active, the 
> > OpenGL ES
> > 3.0 and GL_ARB_transform_feedback2 specs don't explicitly disallow 
> > its
> > deletion. Only the deletion of the default framebuffer object is
>                                              ^^^^^^^^^^^
> transform feedback
> 

OK

> > forbidden.
> 
> This sounds like a spec bug or a test bug.  I've submitted a Khronos
> spec bug.  I'd like to get some input from Khronos first.  Assuming 
> this
> is the correct behavior, this patch looks good.
> 

OK, thanks. I will wait for the answer then.

Sam

> > This patch follows what it is done for glDeleteTextures(), i.e.
> > the binding reverts to 0 (the default framebuffer object).
> > 
> > Fixes:
> > 
> > dEQP-GLES3.functional.lifetime.delete_bound.transform_feedback
> > 
> > Signed-off-by: Samuel Iglesias Gonsalvez <siglesias at igalia.com>
> > ---
> >  src/mesa/main/transformfeedback.c | 13 ++++++++++++-
> >  1 file changed, 12 insertions(+), 1 deletion(-)
> > 
> > diff --git a/src/mesa/main/transformfeedback.c 
> > b/src/mesa/main/transformfeedback.c
> > index 103011c..9944c62 100644
> > --- a/src/mesa/main/transformfeedback.c
> > +++ b/src/mesa/main/transformfeedback.c
> > @@ -96,8 +96,19 @@ reference_transform_feedback_object(struct 
> > gl_transform_feedback_object **ptr,
> >        assert(oldObj->RefCount > 0);
> >        oldObj->RefCount--;
> >  
> > +      /* If the transform feedback object to delete (obj == NULL) 
> > is bound
> > +       * then revert the binding to the default transform feedback 
> > object.
> > +       */
> > +      GET_CURRENT_CONTEXT(ctx);
> > +      if (ctx && obj == NULL &&
> > +          oldObj == ctx->TransformFeedback.CurrentObject &&
> > +          oldObj != ctx->TransformFeedback.DefaultObject) {
> > +         ctx->TransformFeedback.CurrentObject = NULL;
> > +         reference_transform_feedback_object(&ctx
> > ->TransformFeedback.CurrentObject,
> > +                                             ctx
> > ->TransformFeedback.DefaultObject);
> > +      }
> > +
> >        if (oldObj->RefCount == 0) {
> > -         GET_CURRENT_CONTEXT(ctx);
> >           if (ctx)
> >              ctx->Driver.DeleteTransformFeedback(ctx, oldObj);
> >        }
> > 
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150730/2bf01e41/attachment.sig>


More information about the mesa-dev mailing list