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

Samuel Iglesias Gonsálvez siglesias at igalia.com
Wed Sep 23 03:31:52 PDT 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256



On 30/07/15 07:02, Samuel Iglesias Gonsálvez wrote:
> 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.
> 

Is there any news?

Sam

> 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); }
>>> 
>> 
>> 
>> 
>> 
>> _______________________________________________ mesa-dev mailing
>> list mesa-dev at lists.freedesktop.org 
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJWAn+XAAoJEH/0ujLxfcNDw1AQAMZAFuMeedA+UbB1kPbJrE7f
rs34UOXd2Pj85C1dEchaa0nK89Qd5SvfdiynMnLQMnu/1E3VqJxguOW27OlOQa5X
gGKeiDnDrq/Njm5FKSmEUHKyWJWtbONGXQwXeXkGP/LmHEinK9I2ZnLMM7gkB5QD
RmQKtnfJyXKGDdJFSLJwoAIx/zv78oWjxXLm+tp9mOzTTl8LCNiQtuxKXMTuAOzK
rg0TyqAbTPd4OhAt+HAtZaruaI7TgOc+Vk8wqYSmDZzS10vlmRjtlGwkADEx2fd1
RbRmcJLZyYztxaJn+Zik6QWdI3xaNxNOZ8GcDiHaIkD0mf6USo8rl4XRk3h6KVWc
Brk3uR3J7+rkxFTvONZVFhQeRQ8/abhncKt9P4jGjFlvATUJRyg+V57FiL1FGiAB
bKhoFM1skHfLvTkYLv8kqqGlowK8CHjN5IvwfU6LVjjaQo0TpltX4iNoUxB9IzFv
fCeg2RovHb2Zwrdj2aAtnowrB2+/NHvPzn+VIwTpGvEt/wYcK+nuByUpMQOyRKSY
gcHNNDcF8ob8KciPlAdsHGw4k3+qorzMaE4K34YnmsBF34XSLxtbEl6oGawKSBts
KfO35NZOzLTezTWZ75I9DazgCpFN9Bz20ugpwYUaEgRzmGLfOheYeNinx1KFrjK9
eDXT+xb8YSnyuIbMKo/A
=eEws
-----END PGP SIGNATURE-----


More information about the mesa-dev mailing list