diff options
author | Leo Liu <[email protected]> | 2017-09-26 09:11:52 -0400 |
---|---|---|
committer | Leo Liu <[email protected]> | 2017-09-28 09:22:55 -0400 |
commit | 6ed61b8d3fa09f7b08505e62d5b92270aef3fb80 (patch) | |
tree | 7faf9e4f5065b81310de6b161a4ee5ddc24d12b5 /src/gallium/state_trackers | |
parent | c951976b506ebf347cac254cf1969cb289943a78 (diff) |
st/va: use pipe transfer_map to map upload buffer
The function pipe_buffer_map() is only for linear pipe buffer,
with height as 0, and it's not for any 2D textures.
Signed-off-by: Leo Liu <[email protected]>
Cc: [email protected]
Cc: Mark Thompson <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers')
-rw-r--r-- | src/gallium/state_trackers/va/buffer.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/gallium/state_trackers/va/buffer.c b/src/gallium/state_trackers/va/buffer.c index fb5b20e44bb..deaeb1939fe 100644 --- a/src/gallium/state_trackers/va/buffer.c +++ b/src/gallium/state_trackers/va/buffer.c @@ -125,9 +125,15 @@ vlVaMapBuffer(VADriverContextP ctx, VABufferID buf_id, void **pbuff) } if (buf->derived_surface.resource) { - *pbuff = pipe_buffer_map(drv->pipe, buf->derived_surface.resource, - PIPE_TRANSFER_WRITE, - &buf->derived_surface.transfer); + struct pipe_resource *resource; + struct pipe_box box = {}; + + resource = buf->derived_surface.resource; + box.width = resource->width0; + box.height = resource->height0; + box.depth = resource->depth0; + *pbuff = drv->pipe->transfer_map(drv->pipe, resource, 0, PIPE_TRANSFER_WRITE, + &box, &buf->derived_surface.transfer); mtx_unlock(&drv->mutex); if (!buf->derived_surface.transfer || !*pbuff) |