xref: /aosp_15_r20/external/OpenCL-CTS/dependencies/ocl-stubs/stubs.cpp (revision 6467f958c7de8070b317fc65bcb0f6472e388d82)
1*6467f958SSadaf Ebrahimi #include <CL/cl.h>
2*6467f958SSadaf Ebrahimi #include <CL/cl_gl.h>
3*6467f958SSadaf Ebrahimi #include <CL/cl_egl.h>
4*6467f958SSadaf Ebrahimi #include <CL/cl_ext.h>
5*6467f958SSadaf Ebrahimi #include <dlfcn.h>
6*6467f958SSadaf Ebrahimi 
7*6467f958SSadaf Ebrahimi 
8*6467f958SSadaf Ebrahimi void* libHandle = nullptr;
9*6467f958SSadaf Ebrahimi 
10*6467f958SSadaf Ebrahimi #define FUNC_TYPES(rettype, fname, fargs, callArgs)     \
11*6467f958SSadaf Ebrahimi typedef rettype (* fname ## _t) fargs;
12*6467f958SSadaf Ebrahimi 
13*6467f958SSadaf Ebrahimi #define FUNC_SYM(rettype, fname, fargs, callArgs)                                                     \
14*6467f958SSadaf Ebrahimi rettype fname fargs {                                                                                 \
15*6467f958SSadaf Ebrahimi   if (!libHandle)                                                                                     \
16*6467f958SSadaf Ebrahimi     libHandle = dlopen( "libOpenCL.so", RTLD_NOW | RTLD_GLOBAL );                                     \
17*6467f958SSadaf Ebrahimi                                                                                                       \
18*6467f958SSadaf Ebrahimi   static fname ## _t func = nullptr;                                                                  \
19*6467f958SSadaf Ebrahimi   if (!func)                                                                                          \
20*6467f958SSadaf Ebrahimi     func = reinterpret_cast< fname ## _t >(dlsym(libHandle, #fname));                                 \
21*6467f958SSadaf Ebrahimi                                                                                                       \
22*6467f958SSadaf Ebrahimi   return func callArgs;                                                                               \
23*6467f958SSadaf Ebrahimi                                                                                                       \
24*6467f958SSadaf Ebrahimi }
25*6467f958SSadaf Ebrahimi 
26*6467f958SSadaf Ebrahimi #define CL_MACRO FUNC_TYPES
27*6467f958SSadaf Ebrahimi #include "apis.h"
28*6467f958SSadaf Ebrahimi #undef CL_MACRO
29*6467f958SSadaf Ebrahimi 
30*6467f958SSadaf Ebrahimi #define CL_MACRO FUNC_SYM
31*6467f958SSadaf Ebrahimi #include "apis.h"
32*6467f958SSadaf Ebrahimi #undef CL_MACRO
33