From 12a4f2c1328f31954f9bf70d255f9d3e7bb010d4 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Sun, 30 Jul 2023 14:06:11 +0200 Subject: [PATCH] frontends/va: Also map VAImageBufferType for reading VAImageBufferType can be used for both reading and writing, so map it as such. Reviewed-by: Ruijing Dong Part-of: --- src/gallium/frontends/va/buffer.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/gallium/frontends/va/buffer.c b/src/gallium/frontends/va/buffer.c index 6a8ca44..6d40add 100644 --- a/src/gallium/frontends/va/buffer.c +++ b/src/gallium/frontends/va/buffer.c @@ -131,6 +131,7 @@ vlVaMapBuffer(VADriverContextP ctx, VABufferID buf_id, void **pbuff) if (buf->derived_surface.resource) { struct pipe_resource *resource; struct pipe_box box; + unsigned usage; void *(*map_func)(struct pipe_context *, struct pipe_resource *resource, unsigned level, @@ -149,9 +150,19 @@ vlVaMapBuffer(VADriverContextP ctx, VABufferID buf_id, void **pbuff) else map_func = drv->pipe->texture_map; - *pbuff = map_func(drv->pipe, resource, 0, - buf->type == VAEncCodedBufferType ? - PIPE_MAP_READ : PIPE_MAP_WRITE, + switch (buf->type) { + case VAEncCodedBufferType: + usage = PIPE_MAP_READ; + break; + case VAImageBufferType: + usage = PIPE_MAP_READ_WRITE; + break; + default: + usage = PIPE_MAP_WRITE; + break; + } + + *pbuff = map_func(drv->pipe, resource, 0, usage, &box, &buf->derived_surface.transfer); mtx_unlock(&drv->mutex); -- 2.7.4