Fix a CL_MEM_HOST_PTR bug.
authorYang Rong <rong.r.yang@intel.com>
Mon, 23 Jun 2014 14:38:35 +0000 (22:38 +0800)
committerZhigang Gong <zhigang.gong@intel.com>
Mon, 23 Jun 2014 06:45:01 +0000 (14:45 +0800)
Can't add sub_offset if mem is image.

Signed-off-by: Yang Rong <rong.r.yang@intel.com>
Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
src/cl_mem.c

index e0c4ec9..46d9af1 100644 (file)
@@ -71,7 +71,6 @@ cl_get_mem_object_info(cl_mem mem,
                 void *param_value,
                 size_t *param_value_size_ret)
 {
-  struct _cl_mem_buffer* buf = (struct _cl_mem_buffer*)mem;
   switch(param_name)
   {
     FIELD_SIZE(MEM_TYPE, cl_mem_object_type);
@@ -99,7 +98,12 @@ cl_get_mem_object_info(cl_mem mem,
     *((size_t *)param_value) = mem->size;
     break;
   case CL_MEM_HOST_PTR:
-    *((size_t *)param_value) = (size_t)mem->host_ptr + buf->sub_offset;
+    if(mem->type == CL_MEM_IMAGE_TYPE) {
+      *((size_t *)param_value) = (size_t)mem->host_ptr;
+    } else {
+      struct _cl_mem_buffer* buf = (struct _cl_mem_buffer*)mem;
+      *((size_t *)param_value) = (size_t)mem->host_ptr + buf->sub_offset;
+    }
     break;
   case CL_MEM_MAP_COUNT:
     *((cl_uint *)param_value) = mem->map_ref;