diff options
author | Pan Xiuli <xiuli.pan@intel.com> | 2016-03-04 10:05:24 +0800 |
---|---|---|
committer | Yang Rong <rong.r.yang@intel.com> | 2016-03-15 15:17:04 +0800 |
commit | 8ffda4f9c2076dc98a4382cabe4cdb92f3b0621f (patch) | |
tree | 31bd937f6007b2c58726fa718d45bcf3e2c789a0 | |
parent | 142bc84aee6fe85bde985c46b1da9d618cbbf58b (diff) | |
download | beignet-8ffda4f9c2076dc98a4382cabe4cdb92f3b0621f.tar.gz |
Runtime: Add support for clGetMemObjectInfo
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@intel.com>
Reviewed-by: Yang Rong <rong.r.yang@intel.com>
-rw-r--r-- | src/cl_mem.c | 14 | ||||
-rw-r--r-- | 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 6d458284..6b2df9dd 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 6e729acc..2a47c46e 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 |