[Mesa-dev] [PATCH 1/9] st/va: make the implementation thread save

Emil Velikov emil.l.velikov at gmail.com
Fri Dec 18 06:30:45 PST 2015


Hi Christian,

An alternative solution would be to refcount on handle_table_get/put
(first we need the latter even :-P) although I think that route will
be longer (i.e. larger patch). Just thinking out loud, than a
suggestion really.

On 16 December 2015 at 20:14, Christian K├Ânig <deathsimple at vodafone.de> wrote:

> @@ -165,18 +178,25 @@ vlVaUnmapBuffer(VADriverContextP ctx, VABufferID buf_id)
>  VAStatus
>  vlVaDestroyBuffer(VADriverContextP ctx, VABufferID buf_id)
>  {
> +   vlVaDriver *drv;
>     vlVaBuffer *buf;
>
>     if (!ctx)
>        return VA_STATUS_ERROR_INVALID_CONTEXT;
>
> +   drv = VL_VA_DRIVER(ctx);
> +   pipe_mutex_lock(drv->mutex);
>     buf = handle_table_get(VL_VA_DRIVER(ctx)->htab, buf_id);
Reuse drv ?


> @@ -227,7 +252,12 @@ vlVaAcquireBufferHandle(VADriverContextP ctx, VABufferID buf_id,
>     if (!ctx)
>        return VA_STATUS_ERROR_INVALID_CONTEXT;
>
> +   drv = VL_VA_DRIVER(ctx);
> +   screen = VL_VA_PSCREEN(ctx);
> +   pipe_mutex_lock(drv->mutex);
> +   drv->pipe->flush(drv->pipe, NULL, 0);
>     buf = handle_table_get(VL_VA_DRIVER(ctx)->htab, buf_id);
> +   pipe_mutex_unlock(drv->mutex);
>
Let's not bury the flush() movement in this patch.

-Emil


More information about the mesa-dev mailing list