Reviewed-by: Leo Liu <leo....@amd.com> -----Original Message----- From: Zhang, Boyuan Sent: Friday, October 05, 2018 12:01 PM To: mesa-dev@lists.freedesktop.org Cc: Liu, Leo <leo....@amd.com>; imir...@alum.mit.edu; ckoenig.leichtzumer...@gmail.com; Zhang, Boyuan <boyuan.zh...@amd.com> Subject: [PATCH] st/va: use provided sizes and coords for getimage
From: Boyuan Zhang <boyuan.zh...@amd.com> vlVaGetImage should respect the width, height, and coordinates x and y that passed in. Therefore, pipe_box should be created with the passed in values instead of surface width/height. Signed-off-by: Boyuan Zhang <boyuan.zh...@amd.com> --- src/gallium/state_trackers/va/image.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/gallium/state_trackers/va/image.c b/src/gallium/state_trackers/va/image.c index 3f892c9..c9f6f18 100644 --- a/src/gallium/state_trackers/va/image.c +++ b/src/gallium/state_trackers/va/image.c @@ -400,11 +400,14 @@ vlVaGetImage(VADriverContextP ctx, VASurfaceID surface, int x, int y, } for (i = 0; i < vaimage->num_planes; i++) { - unsigned width, height; + unsigned w = align(width, 2); + unsigned h = align(height, 2); if (!views[i]) continue; - vlVaVideoSurfaceSize(surf, i, &width, &height); + vl_video_buffer_adjust_size(&w, &h, i, + surf->templat.chroma_format, + surf->templat.interlaced); for (j = 0; j < views[i]->texture->array_size; ++j) { - struct pipe_box box = {0, 0, j, width, height, 1}; + struct pipe_box box = {x, y, j, w, h, 1}; struct pipe_transfer *transfer; uint8_t *map; map = drv->pipe->transfer_map(drv->pipe, views[i]->texture, 0, -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev