support CL_MEM_USE_HOST_PTR with userptr for cl buffer
authorGuo Yejun <yejun.guo@intel.com>
Fri, 7 Nov 2014 08:18:54 +0000 (16:18 +0800)
committerZhigang Gong <zhigang.gong@intel.com>
Fri, 7 Nov 2014 07:50:41 +0000 (15:50 +0800)
commit075390db926de7bfd2ac853404ab1bcfc8b9c650
tree9f70873dae000f4374025cfd27b3714562242b4d
parent54594b626c31a68956af97f69dc29132dc545f7c
support CL_MEM_USE_HOST_PTR with userptr for cl buffer

userptr is used to wrap a memory pointer (page aligned) supplied
by user space into a buffer object accessed by GPU, and so no extra
copy is needed. It is supported starting from linux kernel 3.16
and libdrm 2.4.58.

This patch is originally finished by Zhenyu Wang <zhenyuw@linux.intel.com>,
I did a little change and some code clean.

No regression issue found on IVB+Ubuntu14.10 with libdrm upgraded with tests:
beignet/utests, piglit, OpenCV/test&perf, conformance/basic&mem_host_flags&buffers

V2: add page align limit for data size, add comments for kernel without MMU_NOTIFIER
V3: add runtime check with host_unified_memory, return CL_MEM_OBJECT_ALLOCATION_FAILURE if failed
Signed-off-by: Guo Yejun <yejun.guo@intel.com>
Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com>
CMakeLists.txt
src/CMakeLists.txt
src/cl_api.c
src/cl_driver.h
src/cl_driver_defs.c
src/cl_enqueue.c
src/cl_mem.c
src/cl_mem.h
src/cl_mem_gl.c
src/intel/intel_driver.c