[Mesa-dev] [PATCH 03/17] mesa: fix deletion of inactive bound transform feedback object
Ian Romanick
idr at freedesktop.org
Wed Jul 29 12:31:56 PDT 2015
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 <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);
> }
>
More information about the mesa-dev
mailing list