@@ -179,7 +179,8 @@ cl_mem (CL_API_CALL *web_clCreateFromGLTexture)(cl_context context, cl_mem_flags
179
179
cl_int (CL_API_CALL *web_clGetGLTextureInfo)(cl_mem, cl_gl_texture_info, size_t , void *, size_t *);
180
180
181
181
#if defined(WTF_OS_LINUX) || OS(ANDROID)
182
- #define MAP_FUNC (fn ) { *(void **)(&fn) = dlsym (handle, #fn); if (!fn) return false ; }
182
+ #define MAP_FUNC (fn ) { *(void **)(&fn) = dlsym (handle, #fn); }
183
+ #define MAP_FUNC_OR_BAIL (fn ) { *(void **)(&fn) = dlsym (handle, #fn); if (!fn) return false ; }
183
184
184
185
static const char * DEFAULT_SO[] = LIBS;
185
186
static const int DEFAULT_SO_LEN = SO_LEN;
@@ -204,70 +205,81 @@ bool init(const char** libs, int length)
204
205
205
206
if (!getCLHandle (mLibs , mLength ))
206
207
return false ;
207
- MAP_FUNC (clGetImageInfo);
208
- MAP_FUNC (clCreateBuffer);
209
- MAP_FUNC (clCreateSubBuffer);
210
- MAP_FUNC (clGetCommandQueueInfo);
211
- MAP_FUNC (clEnqueueWriteBuffer);
212
- MAP_FUNC (clFinish);
213
- MAP_FUNC (clFlush);
214
- MAP_FUNC (clEnqueueReadBuffer);
215
- MAP_FUNC (clReleaseCommandQueue);
216
- MAP_FUNC (clEnqueueWriteImage);
217
- MAP_FUNC (clEnqueueCopyBuffer);
218
- MAP_FUNC (clEnqueueBarrierWithWaitList);
208
+
209
+ MAP_FUNC_OR_BAIL (clBuildProgram);
210
+ MAP_FUNC_OR_BAIL (clCreateBuffer);
211
+ MAP_FUNC_OR_BAIL (clCreateCommandQueue);
212
+ MAP_FUNC_OR_BAIL (clCreateContext);
213
+ MAP_FUNC_OR_BAIL (clCreateContextFromType);
214
+ MAP_FUNC_OR_BAIL (clCreateImage);
215
+ MAP_FUNC_OR_BAIL (clCreateKernel);
216
+ MAP_FUNC_OR_BAIL (clCreateKernelsInProgram);
217
+ MAP_FUNC_OR_BAIL (clCreateProgramWithSource);
218
+ MAP_FUNC_OR_BAIL (clCreateSampler);
219
+ MAP_FUNC_OR_BAIL (clCreateSubBuffer);
220
+ MAP_FUNC_OR_BAIL (clCreateUserEvent);
221
+
222
+ MAP_FUNC_OR_BAIL (clEnqueueCopyBuffer);
223
+ MAP_FUNC_OR_BAIL (clEnqueueReadBuffer);
224
+ MAP_FUNC_OR_BAIL (clEnqueueWriteBuffer);
225
+ MAP_FUNC_OR_BAIL (clEnqueueCopyImage);
226
+ MAP_FUNC_OR_BAIL (clEnqueueReadImage);
227
+ MAP_FUNC_OR_BAIL (clEnqueueWriteImage);
228
+ MAP_FUNC_OR_BAIL (clEnqueueCopyBufferRect);
229
+ MAP_FUNC_OR_BAIL (clEnqueueCopyBufferToImage);
230
+ MAP_FUNC_OR_BAIL (clEnqueueCopyImageToBuffer);
231
+ MAP_FUNC_OR_BAIL (clEnqueueReadBufferRect);
232
+ MAP_FUNC_OR_BAIL (clEnqueueWriteBufferRect);
233
+ MAP_FUNC_OR_BAIL (clEnqueueBarrierWithWaitList);
234
+ MAP_FUNC_OR_BAIL (clEnqueueMarkerWithWaitList);
235
+ MAP_FUNC_OR_BAIL (clEnqueueNDRangeKernel);
236
+ MAP_FUNC_OR_BAIL (clEnqueueTask);
237
+
238
+ MAP_FUNC_OR_BAIL (clFinish);
239
+ MAP_FUNC_OR_BAIL (clFlush);
240
+
241
+ MAP_FUNC_OR_BAIL (clGetContextInfo);
242
+ MAP_FUNC_OR_BAIL (clGetCommandQueueInfo);
243
+ MAP_FUNC_OR_BAIL (clGetDeviceIDs);
244
+ MAP_FUNC_OR_BAIL (clGetDeviceInfo);
245
+ MAP_FUNC_OR_BAIL (clGetEventInfo);
246
+ MAP_FUNC_OR_BAIL (clGetEventProfilingInfo);
247
+ MAP_FUNC_OR_BAIL (clGetImageInfo);
248
+ MAP_FUNC_OR_BAIL (clGetKernelInfo);
249
+ MAP_FUNC_OR_BAIL (clGetKernelWorkGroupInfo);
250
+ MAP_FUNC_OR_BAIL (clGetPlatformIDs);
251
+ MAP_FUNC_OR_BAIL (clGetSamplerInfo);
252
+ MAP_FUNC_OR_BAIL (clGetSupportedImageFormats);
253
+
254
+ MAP_FUNC_OR_BAIL (clGetMemObjectInfo);
255
+ MAP_FUNC_OR_BAIL (clGetPlatformInfo);
256
+ MAP_FUNC_OR_BAIL (clGetProgramBuildInfo);
257
+ MAP_FUNC_OR_BAIL (clGetProgramInfo);
258
+
259
+ MAP_FUNC_OR_BAIL (clReleaseCommandQueue);
260
+ MAP_FUNC_OR_BAIL (clReleaseContext);
261
+ MAP_FUNC_OR_BAIL (clReleaseDevice);
262
+ MAP_FUNC_OR_BAIL (clReleaseEvent);
263
+ MAP_FUNC_OR_BAIL (clReleaseKernel);
264
+ MAP_FUNC_OR_BAIL (clReleaseMemObject);
265
+ MAP_FUNC_OR_BAIL (clReleaseProgram);
266
+ MAP_FUNC_OR_BAIL (clReleaseSampler);
267
+
268
+ MAP_FUNC_OR_BAIL (clSetEventCallback);
269
+ MAP_FUNC_OR_BAIL (clSetKernelArg);
270
+ MAP_FUNC_OR_BAIL (clSetUserEventStatus);
271
+
272
+ MAP_FUNC_OR_BAIL (clUnloadPlatformCompiler);
273
+ MAP_FUNC_OR_BAIL (clWaitForEvents);
274
+
275
+ // They depends on whether OpenCL library support gl_sharing extension.
276
+ // which aren't required mandatorily for OpenCL spec.
219
277
MAP_FUNC (clEnqueueAcquireGLObjects);
220
278
MAP_FUNC (clEnqueueReleaseGLObjects);
221
- MAP_FUNC (clEnqueueMarkerWithWaitList);
222
- MAP_FUNC (clEnqueueTask);
223
- MAP_FUNC (clEnqueueWriteBufferRect);
224
- MAP_FUNC (clEnqueueReadBufferRect);
225
- MAP_FUNC (clEnqueueReadImage);
226
- MAP_FUNC (clEnqueueNDRangeKernel);
227
- MAP_FUNC (clEnqueueCopyBufferRect);
228
- MAP_FUNC (clEnqueueCopyImage);
229
- MAP_FUNC (clEnqueueCopyImageToBuffer);
230
- MAP_FUNC (clEnqueueCopyBufferToImage);
231
- MAP_FUNC (clCreateCommandQueue);
232
- MAP_FUNC (clGetContextInfo);
233
- MAP_FUNC (clCreateProgramWithSource);
234
- MAP_FUNC (clCreateImage);
235
279
MAP_FUNC (clCreateFromGLBuffer);
236
280
MAP_FUNC (clCreateFromGLRenderbuffer);
237
- MAP_FUNC (clCreateSampler);
238
281
MAP_FUNC (clCreateFromGLTexture);
239
- MAP_FUNC (clCreateUserEvent);
240
- MAP_FUNC (clWaitForEvents);
241
- MAP_FUNC (clReleaseContext);
242
- MAP_FUNC (clGetSupportedImageFormats);
243
- MAP_FUNC (clCreateContext);
244
- MAP_FUNC (clCreateContextFromType);
245
- MAP_FUNC (clGetPlatformIDs);
246
- MAP_FUNC (clUnloadPlatformCompiler);
247
- MAP_FUNC (clGetDeviceIDs);
248
- MAP_FUNC (clGetDeviceInfo);
249
- MAP_FUNC (clReleaseDevice);
250
- MAP_FUNC (clGetEventInfo);
251
- MAP_FUNC (clSetUserEventStatus);
252
- MAP_FUNC (clReleaseEvent);
253
- MAP_FUNC (clSetEventCallback);
254
- MAP_FUNC (clGetEventProfilingInfo);
255
282
MAP_FUNC (clGetGLTextureInfo);
256
- MAP_FUNC (clGetKernelInfo);
257
- MAP_FUNC (clGetKernelWorkGroupInfo);
258
- MAP_FUNC (clSetKernelArg);
259
- MAP_FUNC (clReleaseKernel);
260
- MAP_FUNC (clGetMemObjectInfo);
261
- MAP_FUNC (clReleaseMemObject);
262
- MAP_FUNC (clGetPlatformInfo);
263
- MAP_FUNC (clGetProgramInfo);
264
- MAP_FUNC (clCreateKernel);
265
- MAP_FUNC (clGetProgramBuildInfo);
266
- MAP_FUNC (clBuildProgram);
267
- MAP_FUNC (clCreateKernelsInProgram);
268
- MAP_FUNC (clReleaseProgram);
269
- MAP_FUNC (clGetSamplerInfo);
270
- MAP_FUNC (clReleaseSampler);
271
283
272
284
return true ;
273
285
}
0 commit comments