From: David Rosca Date: Sun, 30 Jul 2023 12:06:11 +0000 (+0200) Subject: frontends/va: Also map VAImageBufferType for reading X-Git-Tag: upstream/23.3.3~4883 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=12a4f2c1328f31954f9bf70d255f9d3e7bb010d4;p=platform%2Fupstream%2Fmesa.git 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: --- 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);