[Mesa-dev] [PATCH] st/va: use provided sizes and coords for getimage
Christian König
ckoenig.leichtzumerken at gmail.com
Fri Oct 5 16:49:22 UTC 2018
If that also fixes the problem, then yeah that makes perfect sense to me
as well.
Christian.
Am 05.10.2018 um 18:11 schrieb Ilia Mirkin:
> This is an improvement, but I think you need to clip the box to
>
> 1. Size of the surface
> 2. Size of the image
>
> I think that there are clipping helpers available to do that (maybe
> pipe_box_clip or so? I forget, check the auxiliary dir). Christian -
> does that make sense to you?
>
> Cheers,
>
> -ilia
> On Fri, Oct 5, 2018 at 12:01 PM <boyuan.zhang at amd.com> wrote:
>> From: Boyuan Zhang <boyuan.zhang at 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.zhang at 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
>>
More information about the mesa-dev
mailing list