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
> 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. > 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 <sigles...@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); > } > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev