67 const char *library = NULL;
72 if(!success)
return NULL;
78 module = dt_gmodule_open(library);
86 const char **iter =
ocllib;
90 module = dt_gmodule_open(library);
122 ocl->library =
module->library;
132 (
void (**)(
void)) & ocl->symbols->dt_clGetPlatformIDs);
134 (
void (**)(
void)) & ocl->symbols->dt_clGetPlatformInfo);
136 (
void (**)(
void)) & ocl->symbols->dt_clGetDeviceIDs);
138 (
void (**)(
void)) & ocl->symbols->dt_clGetDeviceInfo);
140 (
void (**)(
void)) & ocl->symbols->dt_clCreateContext);
142 (
void (**)(
void)) & ocl->symbols->dt_clCreateCommandQueue);
144 (
void (**)(
void)) & ocl->symbols->dt_clCreateProgramWithSource);
146 (
void (**)(
void)) & ocl->symbols->dt_clBuildProgram);
148 (
void (**)(
void)) & ocl->symbols->dt_clGetProgramBuildInfo);
150 (
void (**)(
void)) & ocl->symbols->dt_clCreateKernel);
152 (
void (**)(
void)) & ocl->symbols->dt_clCreateBuffer);
154 (
void (**)(
void)) & ocl->symbols->dt_clCreateImage2D);
156 (
void (**)(
void)) & ocl->symbols->dt_clEnqueueWriteBuffer);
158 (
void (**)(
void)) & ocl->symbols->dt_clSetKernelArg);
160 (
void (**)(
void)) & ocl->symbols->dt_clGetKernelWorkGroupInfo);
162 (
void (**)(
void)) & ocl->symbols->dt_clEnqueueNDRangeKernel);
164 (
void (**)(
void)) & ocl->symbols->dt_clEnqueueReadImage);
166 (
void (**)(
void)) & ocl->symbols->dt_clEnqueueWriteImage);
168 (
void (**)(
void)) & ocl->symbols->dt_clEnqueueCopyImage);
170 (
void (**)(
void)) & ocl->symbols->dt_clEnqueueCopyImageToBuffer);
172 (
void (**)(
void)) & ocl->symbols->dt_clEnqueueCopyBufferToImage);
173 success = success &&
dt_gmodule_symbol(module,
"clFinish", (
void (**)(
void)) & ocl->symbols->dt_clFinish);
175 (
void (**)(
void)) & ocl->symbols->dt_clEnqueueReadBuffer);
177 (
void (**)(
void)) & ocl->symbols->dt_clReleaseMemObject);
179 (
void (**)(
void)) & ocl->symbols->dt_clReleaseProgram);
181 (
void (**)(
void)) & ocl->symbols->dt_clReleaseKernel);
183 (
void (**)(
void)) & ocl->symbols->dt_clReleaseCommandQueue);
185 (
void (**)(
void)) & ocl->symbols->dt_clReleaseContext);
187 (
void (**)(
void)) & ocl->symbols->dt_clReleaseEvent);
189 (
void (**)(
void)) & ocl->symbols->dt_clWaitForEvents);
191 (
void (**)(
void)) & ocl->symbols->dt_clGetEventInfo);
193 (
void (**)(
void)) & ocl->symbols->dt_clGetEventProfilingInfo);
195 (
void (**)(
void)) & ocl->symbols->dt_clGetKernelInfo);
197 (
void (**)(
void)) & ocl->symbols->dt_clEnqueueBarrier);
199 (
void (**)(
void)) & ocl->symbols->dt_clFlush);
201 (
void (**)(
void)) & ocl->symbols->dt_clGetKernelWorkGroupInfo);
203 (
void (**)(
void)) & ocl->symbols->dt_clEnqueueReadBuffer);
205 (
void (**)(
void)) & ocl->symbols->dt_clEnqueueWriteBuffer);
207 (
void (**)(
void)) & ocl->symbols->dt_clGetProgramInfo);
209 (
void (**)(
void)) & ocl->symbols->dt_clCreateProgramWithBinary);
211 (
void (**)(
void)) & ocl->symbols->dt_clEnqueueCopyBuffer);
213 (
void (**)(
void)) & ocl->symbols->dt_clEnqueueMapBuffer);
215 (
void (**)(
void)) & ocl->symbols->dt_clEnqueueMapImage);
217 (
void (**)(
void)) & ocl->symbols->dt_clEnqueueUnmapMemObject);
219 (
void (**)(
void)) & ocl->symbols->dt_clGetMemObjectInfo);
221 ((
void (**)(
void)) & ocl->symbols->dt_clGetImageInfo));
223 ocl->have_opencl = success;