Reviewed-by: Marek Olšák <[email protected]> If a 3D or array texture can't occur here, it would be better to set box.depth = 1. If a 3D texture can't occur here but an array texture can, it needs to be box.depth = resource->array_size.
Marek On Tue, Sep 26, 2017 at 5:04 PM, Leo Liu <[email protected]> wrote: > 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-stable mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-stable _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
