[Beignet] [PATCH OCL20 5/5] Runtime: Add support for clGetMemObjectInfo

Yang, Rong R rong.r.yang at intel.com
Tue Mar 15 07:25:46 UTC 2016


Patchset LGTM, pushed, thanks.

> -----Original Message-----
> From: Beignet [mailto:beignet-bounces at lists.freedesktop.org] On Behalf Of
> Xiuli Pan
> Sent: Friday, March 4, 2016 10:05
> To: beignet at lists.freedesktop.org
> Cc: Pan, Xiuli <xiuli.pan at intel.com>
> Subject: [Beignet] [PATCH OCL20 5/5] Runtime: Add support for
> clGetMemObjectInfo
> 
> From: Pan Xiuli <xiuli.pan at intel.com>
> 
> clGetMemObjectInfo with CL_MEM_ASSOCIATED_MEMOBJECT should
> return the mem in cl_image_desc. As in
> CL_MEM_OBJECT_IMAGE1D_BUFFER we copy the buffer, add a workaround
> for it.
> 
> Signed-off-by: Pan Xiuli <xiuli.pan at intel.com>
> ---
>  src/cl_mem.c | 14 ++++++++++----
>  src/cl_mem.h |  1 +
>  2 files changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/src/cl_mem.c b/src/cl_mem.c index c41417c..eebe8da 100644
> --- a/src/cl_mem.c
> +++ b/src/cl_mem.c
> @@ -118,12 +118,16 @@ cl_get_mem_object_info(cl_mem mem,
>      *((cl_context *)param_value) = mem->ctx;
>      break;
>    case CL_MEM_ASSOCIATED_MEMOBJECT:
> -    if(mem->type != CL_MEM_SUBBUFFER_TYPE) {
> -      *((cl_mem *)param_value) = NULL;
> -    } else {
> +    if(mem->type == CL_MEM_SUBBUFFER_TYPE) {
>        struct _cl_mem_buffer* buf = (struct _cl_mem_buffer*)mem;
>        *((cl_mem *)param_value) = (cl_mem)(buf->parent);
> -    }
> +    } else if (mem->type == CL_MEM_IMAGE_TYPE) {
> +      *((cl_mem *)param_value) = mem;
> +    } else if (mem->type == CL_MEM_BUFFER1D_IMAGE_TYPE) {
> +      struct _cl_mem_buffer1d_image* image_buffer = (struct
> _cl_mem_buffer1d_image*)mem;
> +      *((cl_mem *)param_value) = image_buffer->descbuffer;
> +    } else
> +      *((cl_mem *)param_value) = NULL;
>      break;
>    case CL_MEM_OFFSET:
>      if(mem->type != CL_MEM_SUBBUFFER_TYPE) { @@ -1282,6 +1286,8 @@
> _cl_mem_new_image_from_buffer(cl_context ctx,
>      memcpy(dst, src, mem_buffer->base.size);
>      cl_mem_unmap(image);
>      cl_mem_unmap(buffer);
> +    struct _cl_mem_buffer1d_image* image_buffer = (struct
> _cl_mem_buffer1d_image*)image;
> +    image_buffer->descbuffer = buffer;
>    }
>    else
>      assert(0);
> diff --git a/src/cl_mem.h b/src/cl_mem.h index 6e729ac..2a47c46 100644
> --- a/src/cl_mem.h
> +++ b/src/cl_mem.h
> @@ -138,6 +138,7 @@ struct _cl_mem_gl_image {  struct
> _cl_mem_buffer1d_image {
>    struct _cl_mem_image base;
>    uint32_t size;
> +  _cl_mem * descbuffer;
>  };
> 
>  inline static void
> --
> 2.5.0
> 
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/beignet


More information about the Beignet mailing list