[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