[Beignet] [PATCH] Apply image offset to read/write/map operations

Yang, Rong R rong.r.yang at intel.com
Thu Sep 1 06:03:04 UTC 2016


The patch LGTM, thanks.

> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Mark Thompson
> Sent: Thursday, September 1, 2016 2:55
> To: beignet at lists.freedesktop.org
> Subject: [Beignet] [PATCH] Apply image offset to read/write/map operations
> 
> If an image is created from a buffer, it need not start at the beginning of the
> containing mappable object (especially for an image with multiple planes,
> such as one created from VAAPI).  This fixes the implementation of the
> clEnqueue{Read,Write,Map}Image functions to take that offset into account.
> 
> Signed-off-by: Mark Thompson <sw at jkqxz.net>
> ---
> v2: Added a more descriptive commit message and s-o-b line.
> 
> Thanks,
> 
> - Mark
> 
>  src/cl_enqueue.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/src/cl_enqueue.c b/src/cl_enqueue.c index 081ffce..54c0ffa
> 100644
> --- a/src/cl_enqueue.c
> +++ b/src/cl_enqueue.c
> @@ -204,7 +204,7 @@ cl_int cl_enqueue_read_image(enqueue_data *data)
>      goto error;
>    }
> 
> -  size_t offset = image->bpp*origin[0] + image->row_pitch*origin[1] +
> image->slice_pitch*origin[2];
> +  size_t offset = image->offset + image->bpp*origin[0] +
> + image->row_pitch*origin[1] + image->slice_pitch*origin[2];
>    src_ptr = (char*)src_ptr + offset;
> 
>    if (!origin[0] && region[0] == image->w && data->row_pitch == image-
> >row_pitch && @@ -246,8 +246,8 @@ cl_int
> cl_enqueue_write_image(enqueue_data *data)
>      err = CL_MAP_FAILURE;
>      goto error;
>    }
> -  //dst need to add offset
> -  cl_mem_copy_image_region(data->origin, data->region, dst_ptr,
> +  cl_mem_copy_image_region(data->origin, data->region,
> +                           dst_ptr + image->offset,
>                             image->row_pitch, image->slice_pitch,
>                             data->const_ptr, data->row_pitch,
>                             data->slice_pitch, image, CL_TRUE, CL_FALSE); @@ -311,7
> +311,7 @@ cl_int cl_enqueue_map_image(enqueue_data *data)
>      err = CL_MAP_FAILURE;
>      goto error;
>    }
> -  data->ptr = ptr;
> +  data->ptr = (char*)ptr + image->offset;
>    if (image->image_type == CL_MEM_OBJECT_IMAGE1D_ARRAY)
>      row_pitch = image->slice_pitch;
>    else
> --
> 2.9.3
> 
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list