From: Marek Olšák <marek.ol...@amd.com> The context may be used by texture_get_handle. --- src/gallium/state_trackers/va/buffer.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/gallium/state_trackers/va/buffer.c b/src/gallium/state_trackers/va/buffer.c index 3c9b9d1..93f012c 100644 --- a/src/gallium/state_trackers/va/buffer.c +++ b/src/gallium/state_trackers/va/buffer.c @@ -290,29 +290,32 @@ vlVaAcquireBufferHandle(VADriverContextP ctx, VABufferID buf_id, return VA_STATUS_ERROR_INVALID_PARAMETER; } else { VABufferInfo * const buf_info = &buf->export_state; switch (mem_type) { case VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME: { struct winsys_handle whandle; pipe_mutex_lock(drv->mutex); drv->pipe->flush(drv->pipe, NULL, 0); - pipe_mutex_unlock(drv->mutex); memset(&whandle, 0, sizeof(whandle)); whandle.type = DRM_API_HANDLE_TYPE_FD; if (!screen->resource_get_handle(screen, drv->pipe, buf->derived_surface.resource, - &whandle, PIPE_HANDLE_USAGE_READ_WRITE)) + &whandle, PIPE_HANDLE_USAGE_READ_WRITE)) { + pipe_mutex_unlock(drv->mutex); return VA_STATUS_ERROR_INVALID_BUFFER; + } + + pipe_mutex_unlock(drv->mutex); buf_info->handle = (intptr_t)whandle.handle; break; } default: return VA_STATUS_ERROR_UNSUPPORTED_MEMORY_TYPE; } buf_info->type = buf->type; buf_info->mem_type = mem_type; -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev