sometimes, application invokes read buffer, instead of map buffer,
even if userptr is enabled. memcpy is not necessary for such case.

Signed-off-by: Guo Yejun <[email protected]>
---
 src/cl_enqueue.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/cl_enqueue.c b/src/cl_enqueue.c
index cec368c..081ffce 100644
--- a/src/cl_enqueue.c
+++ b/src/cl_enqueue.c
@@ -48,7 +48,10 @@ cl_int cl_enqueue_read_buffer(enqueue_data* data)
     if (src_ptr == NULL)
       err = CL_MAP_FAILURE;
     else {
-      memcpy(data->ptr, (char*)src_ptr + data->offset + buffer->sub_offset, 
data->size);
+      //sometimes, application invokes read buffer, instead of map buffer, 
even if userptr is enabled
+      //memcpy is not necessary for this case
+      if (data->ptr != (char*)src_ptr + data->offset + buffer->sub_offset)
+        memcpy(data->ptr, (char*)src_ptr + data->offset + buffer->sub_offset, 
data->size);
       cl_mem_unmap_auto(mem);
     }
   }
-- 
1.9.1

_______________________________________________
Beignet mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/beignet

Reply via email to