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]> --- src/gallium/state_trackers/va/buffer.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/gallium/state_trackers/va/buffer.c b/src/gallium/state_trackers/va/buffer.c index fb5b20e44b..deaeb1939f 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) -- 2.11.0 _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
