summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPan Xiuli <xiuli.pan@intel.com>2016-03-04 10:05:24 +0800
committerYang Rong <rong.r.yang@intel.com>2016-03-15 15:17:04 +0800
commit8ffda4f9c2076dc98a4382cabe4cdb92f3b0621f (patch)
tree31bd937f6007b2c58726fa718d45bcf3e2c789a0
parent142bc84aee6fe85bde985c46b1da9d618cbbf58b (diff)
downloadbeignet-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.c14
-rw-r--r--src/cl_mem.h1
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