[Libva] multi-threading

Julien Isorce julien.isorce at gmail.com
Tue Dec 22 00:56:13 PST 2015


On 22 December 2015 at 00:13, Zhao Yakui <yakui.zhao at intel.com> wrote:

> On 12/22/2015 06:51 AM, Julien Isorce wrote:
>
>> Hi,
>>
>> Should the application assume that vaapi is thread safe ? Like for vdpau:
>> http://cgit.freedesktop.org/vdpau/libvdpau/tree/include/vdpau/vdpau.h#n209
>> .
>> Or is the thread safety delegated to the vaapi user like many libraries ?
>>
>
> What is the scenario of using multi-thread?
>

https://github.com/mpv-player/mpv or  gstvaapidecode ! queue !
gstvaapipostproc ! queue ! vaapisink

Currently it relatively easy to crash the Gallium vaapi backend with these
2 examples. It does not crash with the intel-vaapi-driver.
That's why Christian submitted a patch recently:
http://patchwork.freedesktop.org/patch/68461/ (It is the v1 but there will
be a v2 to address small remarks)


>
>
>> I cannot see anything about thread in
>> http://cgit.freedesktop.org/vaapi/libva/tree/va/va.h .
>> Though in the intel driver
>> http://cgit.freedesktop.org/vaapi/intel-driver/ there are some mutex:
>>
>> i965->pp_mutex : post processing
>> i965->render_mutex : vaPutSurface
>> intel->ctxmutex : does not seem to be used
>> heap->mutex: (object_heap_allocate / object_heap_lookup ... )
>>
>>
> As we know, the va is mainly used for the decoding/encoding/VPP, which is
> executed in one context(This is created by calling vaCreateContext).
> And it will be better that the operation related with the specific context
> is handled in one thread(For example: the creation/release of the parameter
> buffer).


Thx for the clarification, I believe these recommendations (for user and
provider) should be in the libva doc.


>
> And the mutex is used for the container of object IDs. So the object Ids
> is thread safe. This is as what you mentioned.
>
> But the object is not thread-safe. For example: one thread creates one
> object buffer and another thread tries to access it. If the buffer is
> destroyed, maybe the access will fail.
>

Make sense, also this is what Christian did in the above patch, thx.

Cheers
Julien


>
> Thanks
>
>  From that it means that the operations on the container of object IDs
>> is thread safe. But no assumptions on the objects them-self.
>>
>> Any clarification in general ?
>>
>> Thx in advance
>> Julien
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> Libva mailing list
>> Libva at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/libva
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/libva/attachments/20151222/227426bc/attachment.html>


More information about the Libva mailing list