[Mesa-dev] [PATCH] st/va: it is valid to release the VABuffer of an exported resource
Julien Isorce
julien.isorce at gmail.com
Wed Jun 8 11:13:40 UTC 2016
Hi Christian,
Thx for the review.
pipe_resource_reference(&res, NULL) will decrement reference counting
(p_atomic_dec res->count). But the va surface still has the initial
reference since it created that resource.
So calling vaDestroyImage on a derived image will call VaDestroyBuffer but
the decrementation wont't reach 0.
It is just wrong that vlVaDestroyBuffer relies on the export_refcount flag.
I also compared with vaapi intel driver and they have same flag and it is
not present in their vaDestroyBuffer.
Cheers
Julien
On 8 June 2016 at 09:22, Christian König <deathsimple at vodafone.de> wrote:
> Am 02.06.2016 um 16:03 schrieb Julien Isorce:
>
>> Signed-off-by: Julien Isorce <j.isorce at samsung.com>
>>
>
> Actually I'm not sure if that is correct.
>
> If you release the VABuffer of an exported resource you won't be able to
> properly close the handle with vlVaReleaseBufferHandle().
>
> On the other hand the semantic VA requires for vlVaAcquireBufferHandle()
> and vlVaReleaseBufferHandle() is complete nonsense for DMA-buf handles.
>
> Christian.
>
> ---
>> src/gallium/state_trackers/va/buffer.c | 8 +-------
>> 1 file changed, 1 insertion(+), 7 deletions(-)
>>
>> diff --git a/src/gallium/state_trackers/va/buffer.c
>> b/src/gallium/state_trackers/va/buffer.c
>> index 2fd8661..7d3167b 100644
>> --- a/src/gallium/state_trackers/va/buffer.c
>> +++ b/src/gallium/state_trackers/va/buffer.c
>> @@ -192,14 +192,8 @@ vlVaDestroyBuffer(VADriverContextP ctx, VABufferID
>> buf_id)
>> return VA_STATUS_ERROR_INVALID_BUFFER;
>> }
>> - if (buf->derived_surface.resource) {
>> - if (buf->export_refcount > 0) {
>> - pipe_mutex_unlock(drv->mutex);
>> - return VA_STATUS_ERROR_INVALID_BUFFER;
>> - }
>> -
>> + if (buf->derived_surface.resource)
>> pipe_resource_reference(&buf->derived_surface.resource, NULL);
>> - }
>> FREE(buf->data);
>> FREE(buf);
>>
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160608/bdb64d3a/attachment-0001.html>
More information about the mesa-dev
mailing list