aboutsummaryrefslogtreecommitdiff
path: root/arm_compute/core/CL/OpenCL.h
diff options
context:
space:
mode:
authorAnthony Barbier <anthony.barbier@arm.com>2017-11-09 09:15:32 +0000
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:35:24 +0000
commit58c4ff1ddd2db5eb9977d99708e5722951c34526 (patch)
treeebf0c0b829ec410cea4866d927ee281f6d9a7cea /arm_compute/core/CL/OpenCL.h
parentaf6204c331eed7894ec4c5fd4e98ec22b6dac676 (diff)
downloadComputeLibrary-58c4ff1ddd2db5eb9977d99708e5722951c34526.tar.gz
COMPMID-663: Updated CLSymbols to use std::function
This will allow us to use it as an interceptor for some instruments in the benchmark infrastructure Change-Id: Iccde638c8db6312a74d343ad9f6e369e05230736 Reviewed-on: http://mpd-gerrit.cambridge.arm.com/95014 Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com> Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Diffstat (limited to 'arm_compute/core/CL/OpenCL.h')
-rw-r--r--arm_compute/core/CL/OpenCL.h97
1 files changed, 35 insertions, 62 deletions
diff --git a/arm_compute/core/CL/OpenCL.h b/arm_compute/core/CL/OpenCL.h
index 6780e23c2d..8a2d30bb83 100644
--- a/arm_compute/core/CL/OpenCL.h
+++ b/arm_compute/core/CL/OpenCL.h
@@ -54,69 +54,42 @@ public:
bool load(const std::string &library);
bool load_default();
- using clBuildProgram_func = cl_int (*)(cl_program, cl_uint, const cl_device_id *, const char *, void (*pfn_notify)(cl_program, void *), void *);
- using clEnqueueNDRangeKernel_func = cl_int (*)(cl_command_queue, cl_kernel, cl_uint, const size_t *, const size_t *, const size_t *, cl_uint, const cl_event *, cl_event *);
- using clSetKernelArg_func = cl_int (*)(cl_kernel, cl_uint, size_t, const void *);
- using clRetainMemObject_func = cl_int (*)(cl_mem);
- using clReleaseMemObject_func = cl_int (*)(cl_mem);
- using clEnqueueUnmapMemObject_func = cl_int (*)(cl_command_queue, cl_mem, void *, cl_uint, const cl_event *, cl_event *);
- using clRetainCommandQueue_func = cl_int (*)(cl_command_queue command_queue);
- using clReleaseContext_func = cl_int (*)(cl_context);
- using clReleaseEvent_func = cl_int (*)(cl_event);
- using clEnqueueWriteBuffer_func = cl_int (*)(cl_command_queue, cl_mem, cl_bool, size_t, size_t, const void *, cl_uint, const cl_event *, cl_event *);
- using clEnqueueReadBuffer_func = cl_int (*)(cl_command_queue, cl_mem, cl_bool, size_t, size_t, void *, cl_uint, const cl_event *, cl_event *);
- using clGetProgramBuildInfo_func = cl_int (*)(cl_program, cl_device_id, cl_program_build_info, size_t, void *, size_t *);
- using clRetainProgram_func = cl_int (*)(cl_program program);
- using clEnqueueMapBuffer_func = void *(*)(cl_command_queue, cl_mem, cl_bool, cl_map_flags, size_t, size_t, cl_uint, const cl_event *, cl_event *, cl_int *);
- using clReleaseCommandQueue_func = cl_int (*)(cl_command_queue);
- using clCreateProgramWithBinary_func = cl_program (*)(cl_context, cl_uint, const cl_device_id *, const size_t *, const unsigned char **, cl_int *, cl_int *);
- using clRetainContext_func = cl_int (*)(cl_context context);
- using clReleaseProgram_func = cl_int (*)(cl_program program);
- using clFlush_func = cl_int (*)(cl_command_queue command_queue);
- using clFinish_func = cl_int (*)(cl_command_queue command_queue);
- using clGetProgramInfo_func = cl_int (*)(cl_program, cl_program_info, size_t, void *, size_t *);
- using clCreateKernel_func = cl_kernel (*)(cl_program, const char *, cl_int *);
- using clRetainKernel_func = cl_int (*)(cl_kernel kernel);
- using clCreateBuffer_func = cl_mem (*)(cl_context, cl_mem_flags, size_t, void *, cl_int *);
- using clCreateProgramWithSource_func = cl_program (*)(cl_context, cl_uint, const char **, const size_t *, cl_int *);
- using clReleaseKernel_func = cl_int (*)(cl_kernel kernel);
- using clGetDeviceInfo_func = cl_int (*)(cl_device_id, cl_device_info, size_t, void *, size_t *);
- using clGetDeviceIDs_func = cl_int (*)(cl_platform_id, cl_device_type, cl_uint, cl_device_id *, cl_uint *);
- using clRetainEvent_func = cl_int (*)(cl_event);
- using clGetPlatformIDs_func = cl_int (*)(cl_uint, cl_platform_id *, cl_uint *);
- using clGetKernelWorkGroupInfo_func = cl_int (*)(cl_kernel, cl_device_id, cl_kernel_work_group_info, size_t, void *, size_t *);
+#define DECLARE_FUNCTION_PTR(func_name) \
+ std::function<decltype(func_name)> func_name##_ptr = nullptr
- clBuildProgram_func clBuildProgram = nullptr;
- clEnqueueNDRangeKernel_func clEnqueueNDRangeKernel = nullptr;
- clSetKernelArg_func clSetKernelArg = nullptr;
- clReleaseKernel_func clReleaseKernel = nullptr;
- clCreateProgramWithSource_func clCreateProgramWithSource = nullptr;
- clCreateBuffer_func clCreateBuffer = nullptr;
- clRetainKernel_func clRetainKernel = nullptr;
- clCreateKernel_func clCreateKernel = nullptr;
- clGetProgramInfo_func clGetProgramInfo = nullptr;
- clFlush_func clFlush = nullptr;
- clFinish_func clFinish = nullptr;
- clReleaseProgram_func clReleaseProgram = nullptr;
- clRetainContext_func clRetainContext = nullptr;
- clCreateProgramWithBinary_func clCreateProgramWithBinary = nullptr;
- clReleaseCommandQueue_func clReleaseCommandQueue = nullptr;
- clEnqueueMapBuffer_func clEnqueueMapBuffer = nullptr;
- clRetainProgram_func clRetainProgram = nullptr;
- clGetProgramBuildInfo_func clGetProgramBuildInfo = nullptr;
- clEnqueueReadBuffer_func clEnqueueReadBuffer = nullptr;
- clEnqueueWriteBuffer_func clEnqueueWriteBuffer = nullptr;
- clReleaseEvent_func clReleaseEvent = nullptr;
- clReleaseContext_func clReleaseContext = nullptr;
- clRetainCommandQueue_func clRetainCommandQueue = nullptr;
- clEnqueueUnmapMemObject_func clEnqueueUnmapMemObject = nullptr;
- clRetainMemObject_func clRetainMemObject = nullptr;
- clReleaseMemObject_func clReleaseMemObject = nullptr;
- clGetDeviceInfo_func clGetDeviceInfo = nullptr;
- clGetDeviceIDs_func clGetDeviceIDs = nullptr;
- clRetainEvent_func clRetainEvent = nullptr;
- clGetPlatformIDs_func clGetPlatformIDs = nullptr;
- clGetKernelWorkGroupInfo_func clGetKernelWorkGroupInfo = nullptr;
+ DECLARE_FUNCTION_PTR(clBuildProgram);
+ DECLARE_FUNCTION_PTR(clEnqueueNDRangeKernel);
+ DECLARE_FUNCTION_PTR(clSetKernelArg);
+ DECLARE_FUNCTION_PTR(clReleaseKernel);
+ DECLARE_FUNCTION_PTR(clCreateProgramWithSource);
+ DECLARE_FUNCTION_PTR(clCreateBuffer);
+ DECLARE_FUNCTION_PTR(clRetainKernel);
+ DECLARE_FUNCTION_PTR(clCreateKernel);
+ DECLARE_FUNCTION_PTR(clGetProgramInfo);
+ DECLARE_FUNCTION_PTR(clFlush);
+ DECLARE_FUNCTION_PTR(clFinish);
+ DECLARE_FUNCTION_PTR(clReleaseProgram);
+ DECLARE_FUNCTION_PTR(clRetainContext);
+ DECLARE_FUNCTION_PTR(clCreateProgramWithBinary);
+ DECLARE_FUNCTION_PTR(clReleaseCommandQueue);
+ DECLARE_FUNCTION_PTR(clEnqueueMapBuffer);
+ DECLARE_FUNCTION_PTR(clRetainProgram);
+ DECLARE_FUNCTION_PTR(clGetProgramBuildInfo);
+ DECLARE_FUNCTION_PTR(clEnqueueReadBuffer);
+ DECLARE_FUNCTION_PTR(clEnqueueWriteBuffer);
+ DECLARE_FUNCTION_PTR(clReleaseEvent);
+ DECLARE_FUNCTION_PTR(clReleaseContext);
+ DECLARE_FUNCTION_PTR(clRetainCommandQueue);
+ DECLARE_FUNCTION_PTR(clEnqueueUnmapMemObject);
+ DECLARE_FUNCTION_PTR(clRetainMemObject);
+ DECLARE_FUNCTION_PTR(clReleaseMemObject);
+ DECLARE_FUNCTION_PTR(clGetDeviceInfo);
+ DECLARE_FUNCTION_PTR(clGetDeviceIDs);
+ DECLARE_FUNCTION_PTR(clRetainEvent);
+ DECLARE_FUNCTION_PTR(clGetPlatformIDs);
+ DECLARE_FUNCTION_PTR(clGetKernelWorkGroupInfo);
+
+#undef DECLARE_FUNCTION_PTR
private:
std::pair<bool, bool> _loaded{ false, false };