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,
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);