summaryrefslogtreecommitdiffstats
path: root/make/config
diff options
context:
space:
mode:
Diffstat (limited to 'make/config')
-rw-r--r--make/config/cl-impl-11.cfg30
-rw-r--r--make/config/cl-impl-12.cfg31
-rw-r--r--make/config/cl-impl-20.cfg31
-rw-r--r--make/config/clImplCustomCode.c31
-rw-r--r--make/config/clImplCustomCode.java258
-rw-r--r--make/config/clImplCustomCode11.c2
-rw-r--r--make/config/clImplCustomCode11.java55
-rw-r--r--make/config/clImplCustomCode12.c317
-rw-r--r--make/config/clImplCustomCode12.java54
-rw-r--r--make/config/clImplCustomCode20.c317
-rw-r--r--make/config/clImplCustomCode20.java54
11 files changed, 398 insertions, 782 deletions
diff --git a/make/config/cl-impl-11.cfg b/make/config/cl-impl-11.cfg
index 9a49ea64..34d48424 100644
--- a/make/config/cl-impl-11.cfg
+++ b/make/config/cl-impl-11.cfg
@@ -7,15 +7,22 @@ Style ImplOnly
Import com.jogamp.opencl.llb.gl.CLGL
Import java.security.AccessController
Import java.security.PrivilegedAction
-
-ClassJavadoc CLAbstractImpl11 /**
-ClassJavadoc CLAbstractImpl11 * Java bindings to OpenCL, the Open Computing Language (generated).
-ClassJavadoc CLAbstractImpl11 * @author Michael Bien, GlueGen, et al.
-ClassJavadoc CLAbstractImpl11 */
-
-ImplJavaClass CLAbstractImpl11
-AccessControl CLAbstractImpl11 PUBLIC_ABSTRACT
-Implements CLAbstractImpl11 CLGL
+Import com.jogamp.common.nio.PointerBuffer
+Import com.jogamp.common.util.LongLongHashMap
+Import com.jogamp.opencl.CLErrorHandler
+Import com.jogamp.opencl.CLException
+Import java.nio.ByteBuffer
+Import java.nio.IntBuffer
+Import com.jogamp.common.nio.Buffers
+
+ClassJavadoc CLImpl11 /**
+ClassJavadoc CLImpl11 * Java bindings to OpenCL, the Open Computing Language (generated).
+ClassJavadoc CLImpl11 * @author Michael Bien, GlueGen, et al.
+ClassJavadoc CLImpl11 */
+
+ImplJavaClass CLImpl11
+AccessControl CLImpl11 PUBLIC
+Implements CLImpl11 CLGL
LocalProcAddressCallingConvention __ALL__ CL_API_CALL
@@ -93,7 +100,8 @@ ManuallyImplement clEnqueueMapImage
ForceProcAddressGen clEnqueueMapImage
#include custom code
-IncludeAs CustomJavaCode CLAbstractImpl11 clImplCustomCode11.java
-ManualStaticInitCall CLAbstractImpl11
+IncludeAs CustomJavaCode CLImpl11 clImplCustomCode11.java
+IncludeAs CustomJavaCode CLImpl11 clImplCustomCode.java
+ManualStaticInitCall CLImpl11
IncludeAs CustomCCode clImplCustomCode11.c
diff --git a/make/config/cl-impl-12.cfg b/make/config/cl-impl-12.cfg
index 01b9ea28..2f8e8dd1 100644
--- a/make/config/cl-impl-12.cfg
+++ b/make/config/cl-impl-12.cfg
@@ -7,15 +7,22 @@ Style ImplOnly
Import com.jogamp.opencl.llb.gl.CLGL
Import java.security.AccessController
Import java.security.PrivilegedAction
-
-ClassJavadoc CLAbstractImpl12 /**
-ClassJavadoc CLAbstractImpl12 * Java bindings to OpenCL, the Open Computing Language (generated).
-ClassJavadoc CLAbstractImpl12 * @author Michael Bien, GlueGen, et al.
-ClassJavadoc CLAbstractImpl12 */
-
-ImplJavaClass CLAbstractImpl12
-AccessControl CLAbstractImpl12 PUBLIC_ABSTRACT
-Implements CLAbstractImpl12 CLGL
+Import com.jogamp.common.nio.PointerBuffer
+Import com.jogamp.common.util.LongLongHashMap
+Import com.jogamp.opencl.CLErrorHandler
+Import com.jogamp.opencl.CLException
+Import java.nio.ByteBuffer
+Import java.nio.IntBuffer
+Import com.jogamp.common.nio.Buffers
+
+ClassJavadoc CLImpl12 /**
+ClassJavadoc CLImpl12 * Java bindings to OpenCL, the Open Computing Language (generated).
+ClassJavadoc CLImpl12 * @author Michael Bien, GlueGen, et al.
+ClassJavadoc CLImpl12 */
+
+ImplJavaClass CLImpl12
+AccessControl CLImpl12 PUBLIC
+Implements CLImpl12 CLGL
LocalProcAddressCallingConvention __ALL__ CL_API_CALL
@@ -99,7 +106,9 @@ ManuallyImplement clEnqueueMapImage
ForceProcAddressGen clEnqueueMapImage
#include custom code
-IncludeAs CustomJavaCode CLAbstractImpl12 clImplCustomCode12.java
-ManualStaticInitCall CLAbstractImpl12
+IncludeAs CustomJavaCode CLImpl12 clImplCustomCode12.java
+IncludeAs CustomJavaCode CLImpl12 clImplCustomCode.java
+ManualStaticInitCall CLImpl12
+IncludeAs CustomCCode clImplCustomCode.c
IncludeAs CustomCCode clImplCustomCode12.c
diff --git a/make/config/cl-impl-20.cfg b/make/config/cl-impl-20.cfg
index 5b0a9125..8f8358ed 100644
--- a/make/config/cl-impl-20.cfg
+++ b/make/config/cl-impl-20.cfg
@@ -7,15 +7,22 @@ Style ImplOnly
Import com.jogamp.opencl.llb.gl.CLGL
Import java.security.AccessController
Import java.security.PrivilegedAction
-
-ClassJavadoc CLAbstractImpl20 /**
-ClassJavadoc CLAbstractImpl20 * Java bindings to OpenCL, the Open Computing Language (generated).
-ClassJavadoc CLAbstractImpl20 * @author Michael Bien, GlueGen, et al.
-ClassJavadoc CLAbstractImpl20 */
-
-ImplJavaClass CLAbstractImpl20
-AccessControl CLAbstractImpl20 PUBLIC_ABSTRACT
-Implements CLAbstractImpl20 CLGL
+Import com.jogamp.common.nio.PointerBuffer
+Import com.jogamp.common.util.LongLongHashMap
+Import com.jogamp.opencl.CLErrorHandler
+Import com.jogamp.opencl.CLException
+Import java.nio.ByteBuffer
+Import java.nio.IntBuffer
+Import com.jogamp.common.nio.Buffers
+
+ClassJavadoc CLImpl20 /**
+ClassJavadoc CLImpl20 * Java bindings to OpenCL, the Open Computing Language (generated).
+ClassJavadoc CLImpl20 * @author Michael Bien, GlueGen, et al.
+ClassJavadoc CLImpl20 */
+
+ImplJavaClass CLImpl20
+AccessControl CLImpl20 PUBLIC
+Implements CLImpl20 CLGL
LocalProcAddressCallingConvention __ALL__ CL_API_CALL
@@ -99,7 +106,9 @@ ManuallyImplement clEnqueueMapImage
ForceProcAddressGen clEnqueueMapImage
#include custom code
-IncludeAs CustomJavaCode CLAbstractImpl20 clImplCustomCode20.java
-ManualStaticInitCall CLAbstractImpl20
+IncludeAs CustomJavaCode CLImpl20 clImplCustomCode20.java
+IncludeAs CustomJavaCode CLImpl20 clImplCustomCode.java
+ManualStaticInitCall CLImpl20
+IncludeAs CustomCCode clImplCustomCode.c
IncludeAs CustomCCode clImplCustomCode20.c
diff --git a/make/config/clImplCustomCode.c b/make/config/clImplCustomCode.c
new file mode 100644
index 00000000..30c55363
--- /dev/null
+++ b/make/config/clImplCustomCode.c
@@ -0,0 +1,31 @@
+// Extern declarations of functions. The earliest version of OpenCL defines them, and the later versions use them.
+
+extern JNIEXPORT jlong JNICALL
+Java_com_jogamp_opencl_llb_impl_CLImpl11_dispatch_1clGetExtensionFunctionAddressStatic(JNIEnv *env, jclass _unused, jstring fname, jlong procAddress);
+
+extern JNIEXPORT jlong JNICALL
+Java_com_jogamp_opencl_llb_impl_CLImpl11_clCreateContextFromType0(JNIEnv *env, jobject _unused, jobject props, jint props_byte_offset, jlong device_type, jobject cb, jobject global, jobject errcode, jint errcode_byte_offset, jlong procAddress);
+
+extern JNIEXPORT jlong JNICALL
+Java_com_jogamp_opencl_llb_impl_CLImpl11_clCreateContext0(JNIEnv *env, jobject _unused, jobject props, jint props_byte_offset, jint numDevices, jobject deviceList, jint device_type_offset, jobject cb, jobject global, jobject errcode, jint errcode_byte_offset, jlong procAddress);
+
+extern JNIEXPORT jint JNICALL
+Java_com_jogamp_opencl_llb_impl_CLImpl11_clReleaseContextImpl(JNIEnv *env, jobject _unused, jlong context, jlong global, jlong procAddress);
+
+extern JNIEXPORT jint JNICALL
+Java_com_jogamp_opencl_llb_impl_CLImpl11_clBuildProgram0(JNIEnv *env, jobject _unused, jlong program, jint deviceCount, jobject deviceList, jint device_type_offset, jstring options, jobject cb, jlong procAddress);
+
+extern JNIEXPORT jobject JNICALL
+Java_com_jogamp_opencl_llb_impl_CLImpl11_clEnqueueMapImage0__JJIJLjava_lang_Object_2ILjava_lang_Object_2ILjava_lang_Object_2ILjava_lang_Object_2IILjava_lang_Object_2ILjava_lang_Object_2ILjava_lang_Object_2I(JNIEnv *env, jobject _unused,
+ jlong command_queue, jlong image, jint blocking_map, jlong map_flags,
+ jobject origin, jint origin_byte_offset, jobject range, jint range_byte_offset,
+ jobject image_row_pitch, jint image_row_pitch_byte_offset, jobject image_slice_pitch,
+ jint image_slice_pitch_byte_offset, jint num_events_in_wait_list, jobject event_wait_list,
+ jint event_wait_list_byte_offset, jobject event, jint event_byte_offset, jobject errcode_ret, jint errcode_ret_byte_offset,
+ jlong imageInfoAddress, jlong mapImageAddress);
+
+extern JNIEXPORT jint JNICALL
+Java_com_jogamp_opencl_llb_impl_CLImpl11_clSetEventCallback0(JNIEnv *env, jobject _unused, jlong event, jint trigger, jobject listener, jlong procAddress);
+
+extern JNIEXPORT jint JNICALL
+Java_com_jogamp_opencl_llb_impl_CLImpl11_clSetMemObjectDestructorCallback0(JNIEnv *env, jobject _unused, jlong mem, jobject listener, jlong procAddress);
diff --git a/make/config/clImplCustomCode.java b/make/config/clImplCustomCode.java
new file mode 100644
index 00000000..a863bffb
--- /dev/null
+++ b/make/config/clImplCustomCode.java
@@ -0,0 +1,258 @@
+/** If null, OpenCL is not available on this machine. */
+ static final DynamicLibraryBundle dynamicLookupHelper;
+
+ static {
+ dynamicLookupHelper = AccessController.doPrivileged(new PrivilegedAction<DynamicLibraryBundle>() {
+ public DynamicLibraryBundle run() {
+ final DynamicLibraryBundle bundle = new DynamicLibraryBundle(new CLDynamicLibraryBundleInfo());
+ if(!bundle.isToolLibLoaded()) {
+ // couldn't load native CL library
+ // TODO: log this?
+ return null;
+ }
+ if(!bundle.isLibComplete()) {
+ System.err.println("Couln't load native CL/JNI glue library");
+ return null;
+ }
+ addressTable.reset(bundle);
+ /** Not required nor forced
+ if( !initializeImpl() ) {
+ System.err.println("Native initialization failure of CL/JNI glue library");
+ return null;
+ } */
+ return bundle;
+ } } );
+ }
+
+ // maps the context id to its error handler's global object pointer
+ private final LongLongHashMap contextCallbackMap = new LongLongHashMap();
+
+ // to use in subclass constructors
+ protected void init() {
+ this.contextCallbackMap.setKeyNotFoundValue(0);
+ }
+
+ /**
+ * Accessor.
+ * @returns true if OpenCL is available on this machine.
+ */
+ public static boolean isAvailable() { return dynamicLookupHelper != null; }
+
+ static long clGetExtensionFunctionAddress(long clGetExtensionFunctionAddressHandle, java.lang.String procname)
+ {
+ if (clGetExtensionFunctionAddressHandle == 0) {
+ throw new RuntimeException("Passed null pointer for method \"clGetExtensionFunctionAddress\"");
+ }
+ return dispatch_clGetExtensionFunctionAddressStatic(procname, clGetExtensionFunctionAddressHandle);
+ }
+
+ /** Entry point (through function pointer) to C language function: <br> <code> void* clGetExtensionFunctionAddress(const char * fname); </code> */
+ long clGetExtensionFunctionAddress(String fname) {
+
+ final long __addr_ = addressTable._addressof_clGetExtensionFunctionAddress;
+ if (__addr_ == 0) {
+ throw new UnsupportedOperationException("Method \"clGetExtensionFunctionAddress\" not available");
+ }
+ return dispatch_clGetExtensionFunctionAddressStatic(fname, __addr_);
+ }
+
+ /** Entry point (through function pointer) to C language function: <br> <code> void* clGetExtensionFunctionAddress(const char * fname); </code> */
+ private static native long dispatch_clGetExtensionFunctionAddressStatic(String fname, long procAddress);
+
+ @Override
+ public long clCreateContext(final PointerBuffer properties, final PointerBuffer devices, final CLErrorHandler pfn_notify, final IntBuffer errcode_ret) {
+
+ if (properties != null && !properties.isDirect()) {
+ throw new RuntimeException("Argument \"properties\" was not a direct buffer");
+ }
+
+ if (errcode_ret != null && !errcode_ret.isDirect()) {
+ throw new RuntimeException("Argument \"errcode_ret\" was not a direct buffer");
+ }
+
+ final long address = addressTable._addressof_clCreateContext;
+ if (address == 0) {
+ throw new UnsupportedOperationException("Method not available");
+ }
+
+ final long[] global = new long[1];
+ final long ctx = this.clCreateContext0(
+ properties != null ? properties.getBuffer() : null, Buffers.getDirectBufferByteOffset(properties),
+ devices != null ? devices.remaining() : 0, devices != null ? devices.getBuffer() : null, Buffers.getDirectBufferByteOffset(devices),
+ pfn_notify, global, errcode_ret, Buffers.getDirectBufferByteOffset(errcode_ret), address);
+
+ if (pfn_notify != null && global[0] != 0) {
+ synchronized (contextCallbackMap) {
+ contextCallbackMap.put(ctx, global[0]);
+ }
+ }
+ return ctx;
+ }
+
+ private native long clCreateContext0(Object cl_context_properties, int props_offset, int numDevices, Object devices, int devices_offset, Object pfn_notify, long[] global, Object errcode_ret, int err_offset, long address);
+
+ @Override
+ public long clCreateContextFromType(final PointerBuffer properties, final long device_type, final CLErrorHandler pfn_notify, final IntBuffer errcode_ret) {
+ if (properties != null && !properties.isDirect()) {
+ throw new RuntimeException("Argument \"properties\" was not a direct buffer");
+ }
+
+ if (errcode_ret != null && !errcode_ret.isDirect()) {
+ throw new RuntimeException("Argument \"errcode_ret\" was not a direct buffer");
+ }
+
+ final long address = addressTable._addressof_clCreateContextFromType;
+ if (address == 0) {
+ throw new UnsupportedOperationException("Method not available");
+ }
+
+ final long[] global = new long[1];
+ final long ctx = this.clCreateContextFromType0(
+ properties != null ? properties.getBuffer() : null, Buffers.getDirectBufferByteOffset(properties),
+ device_type, pfn_notify, global, errcode_ret, Buffers.getDirectBufferByteOffset(errcode_ret), address);
+
+ if (pfn_notify != null && global[0] != 0) {
+ synchronized (contextCallbackMap) {
+ contextCallbackMap.put(ctx, global[0]);
+ }
+ }
+ return ctx;
+ }
+
+ private native long clCreateContextFromType0(Object properties, int props_offset, long device_type, Object pfn_notify, long[] global, Object errcode_ret, int err_offset, long address);
+
+ @Override
+ public int clReleaseContext(final long context) {
+ long global = 0;
+ synchronized (contextCallbackMap) {
+ global = contextCallbackMap.remove(context);
+ }
+
+ final long address = addressTable._addressof_clReleaseContext;
+ if (address == 0) {
+ throw new UnsupportedOperationException("Method not available");
+ }
+ return clReleaseContextImpl(context, global, address);
+ }
+
+ /** Interface to C language function: <br> <code> int32_t {@native clReleaseContext}(cl_context context); </code> */
+ public native int clReleaseContextImpl(long context, long global, long address);
+
+ /** Interface to C language function: <br> <code> int32_t clBuildProgram(cl_program, uint32_t, cl_device_id * , const char * , void * ); </code> */
+ @Override
+ public int clBuildProgram(final long program, final int deviceCount, final PointerBuffer deviceList, final String options, final BuildProgramCallback cb) {
+ if (deviceList != null && !deviceList.isDirect()) {
+ throw new RuntimeException("Argument \"properties\" was not a direct buffer");
+ }
+
+ final long address = addressTable._addressof_clBuildProgram;
+ if (address == 0) {
+ throw new UnsupportedOperationException("Method not available");
+ }
+ return clBuildProgram0(program, deviceCount, deviceList != null ? deviceList.getBuffer() : null,
+ Buffers.getDirectBufferByteOffset(deviceList), options, cb, address);
+ }
+
+ /** Entry point to C language function: <code> int32_t clBuildProgram(cl_program, uint32_t, cl_device_id * , const char * , void * ); </code> */
+ private native int clBuildProgram0(long program, int deviceCount, Object deviceList, int deviceListOffset, String options, BuildProgramCallback cb, long address);
+
+
+ @Override
+ public int clSetEventCallback(final long event, final int trigger, final CLEventCallback callback) {
+ final long address = addressTable._addressof_clSetEventCallback;
+ if (address == 0) {
+ throw new UnsupportedOperationException("Method not available");
+ }
+ return clSetEventCallback0(event, trigger, callback, address);
+ }
+
+ private native int clSetEventCallback0(long event, int type, CLEventCallback cb, long address);
+
+
+ @Override
+ public int clSetMemObjectDestructorCallback(final long memObjID, final CLMemObjectDestructorCallback cb) {
+ final long address = addressTable._addressof_clSetMemObjectDestructorCallback;
+ if (address == 0) {
+ throw new UnsupportedOperationException("Method not available");
+ }
+ return clSetMemObjectDestructorCallback0(memObjID, cb, address);
+ }
+
+ private native int clSetMemObjectDestructorCallback0(long memObjID, CLMemObjectDestructorCallback cb, long address);
+
+
+ /** Interface to C language function: <br> <code> void * {@native clEnqueueMapImage}(cl_command_queue command_queue, cl_mem image, uint32_t blocking_map, uint64_t map_flags, const size_t * , const size_t * , size_t * image_row_pitch, size_t * image_slice_pitch, uint32_t num_events_in_wait_list, cl_event * event_wait_list, cl_event * event, int32_t * errcode_ret); </code>
+ @param origin a direct {@link com.jogamp.common.nio.PointerBuffer}
+ @param range a direct {@link com.jogamp.common.nio.PointerBuffer}
+ @param image_row_pitch a direct {@link com.jogamp.common.nio.PointerBuffer}
+ @param image_slice_pitch a direct {@link com.jogamp.common.nio.PointerBuffer}
+ @param event_wait_list a direct {@link com.jogamp.common.nio.PointerBuffer}
+ @param event a direct {@link com.jogamp.common.nio.PointerBuffer}
+ @param errcode_ret a direct {@link java.nio.IntBuffer} */
+ @Override
+ public ByteBuffer clEnqueueMapImage(final long command_queue, final long image, final int blocking_map, final long map_flags,
+ final PointerBuffer origin, final PointerBuffer range,
+ final PointerBuffer image_row_pitch, final PointerBuffer image_slice_pitch,
+ final int num_events_in_wait_list,
+ final PointerBuffer event_wait_list, final PointerBuffer event, final IntBuffer errcode_ret) {
+
+ if (origin != null && !origin.isDirect()) {
+ throw new CLException("Argument \"origin\" was not a direct buffer");
+ }
+ if (range != null && !range.isDirect()) {
+ throw new CLException("Argument \"range\" was not a direct buffer");
+ }
+ if (image_row_pitch != null && !image_row_pitch.isDirect()) {
+ throw new CLException("Argument \"image_row_pitch\" was not a direct buffer");
+ }
+ if (image_slice_pitch != null && !image_slice_pitch.isDirect()) {
+ throw new CLException("Argument \"image_slice_pitch\" was not a direct buffer");
+ }
+ if (event_wait_list != null && !event_wait_list.isDirect()) {
+ throw new CLException("Argument \"event_wait_list\" was not a direct buffer");
+ }
+ if (event != null && !event.isDirect()) {
+ throw new CLException("Argument \"event\" was not a direct buffer");
+ }
+ if (errcode_ret != null && !errcode_ret.isDirect()) {
+ throw new CLException("Argument \"errcode_ret\" was not a direct buffer");
+ }
+
+ final long getImageInfoAddress = addressTable._addressof_clGetImageInfo;
+ if (getImageInfoAddress == 0) {
+ throw new UnsupportedOperationException("Method not available");
+ }
+ final long mapImageAddress = addressTable._addressof_clEnqueueMapImage;
+ if (mapImageAddress == 0) {
+ throw new UnsupportedOperationException("Method not available");
+ }
+ ByteBuffer _res;
+ _res = clEnqueueMapImage0(command_queue, image, blocking_map, map_flags, origin != null ? origin.getBuffer() : null,
+ Buffers.getDirectBufferByteOffset(origin), range != null ? range.getBuffer() : null,
+ Buffers.getDirectBufferByteOffset(range), image_row_pitch != null ? image_row_pitch.getBuffer() : null,
+ Buffers.getDirectBufferByteOffset(image_row_pitch), image_slice_pitch != null ? image_slice_pitch.getBuffer() : null,
+ Buffers.getDirectBufferByteOffset(image_slice_pitch), num_events_in_wait_list,
+ event_wait_list != null ? event_wait_list.getBuffer() : null, Buffers.getDirectBufferByteOffset(event_wait_list),
+ event != null ? event.getBuffer() : null, Buffers.getDirectBufferByteOffset(event), errcode_ret,
+ Buffers.getDirectBufferByteOffset(errcode_ret), getImageInfoAddress, mapImageAddress);
+ if (_res == null) {
+ return null;
+ }
+ Buffers.nativeOrder(_res);
+ return _res;
+ }
+
+ /** Entry point to C language function: <code> void * {@native clEnqueueMapImage}(cl_command_queue command_queue, cl_mem image, uint32_t blocking_map, uint64_t map_flags, const size_t * , const size_t * , size_t * image_row_pitch, size_t * image_slice_pitch, uint32_t num_events_in_wait_list, cl_event * event_wait_list, cl_event * event, int32_t * errcode_ret); </code>
+ @param origin a direct {@link com.jogamp.common.nio.PointerBuffer}
+ @param range a direct {@link com.jogamp.common.nio.PointerBuffer}
+ @param image_row_pitch a direct {@link com.jogamp.common.nio.PointerBuffer}
+ @param image_slice_pitch a direct {@link com.jogamp.common.nio.PointerBuffer}
+ @param event_wait_list a direct {@link com.jogamp.common.nio.PointerBuffer}
+ @param event a direct {@link com.jogamp.common.nio.PointerBuffer}
+ @param errcode_ret a direct {@link java.nio.IntBuffer} */
+ private native ByteBuffer clEnqueueMapImage0(long command_queue, long image, int blocking_map, long map_flags,
+ Object origin, int origin_byte_offset, Object range, int range_byte_offset, Object image_row_pitch,
+ int image_row_pitch_byte_offset, Object image_slice_pitch, int image_slice_pitch_byte_offset,
+ int num_events_in_wait_list, Object event_wait_list, int event_wait_list_byte_offset, Object event,
+ int event_byte_offset, Object errcode_ret, int errcode_ret_byte_offset,
+ long getImageInfoAddress, long mapImageAddress); \ No newline at end of file
diff --git a/make/config/clImplCustomCode11.c b/make/config/clImplCustomCode11.c
index 1e772d9e..243e73cb 100644
--- a/make/config/clImplCustomCode11.c
+++ b/make/config/clImplCustomCode11.c
@@ -115,7 +115,7 @@ CL_CALLBACK void memObjDestructorCallback(cl_mem mem, void * object) {
// extern CL_API_ENTRY void * CL_API_CALL clGetExtensionFunctionAddress(const char * /* func_name */) CL_API_SUFFIX__VERSION_1_0;
JNIEXPORT jlong JNICALL
-Java_com_jogamp_opencl_llb_impl_CLAbstractImpl11_dispatch_1clGetExtensionFunctionAddressStatic(JNIEnv *env, jclass _unused, jstring fname, jlong procAddress) {
+Java_com_jogamp_opencl_llb_impl_CLImpl11_dispatch_1clGetExtensionFunctionAddressStatic(JNIEnv *env, jclass _unused, jstring fname, jlong procAddress) {
typedef void* (CL_API_CALL * _local_LPCLGETPROCADDRESS)(const char * fname);
_local_LPCLGETPROCADDRESS ptr_clGetExtensionFunctionAddress;
const char* _strchars_fname = NULL;
diff --git a/make/config/clImplCustomCode11.java b/make/config/clImplCustomCode11.java
index 0dcb770f..bc1cfdda 100644
--- a/make/config/clImplCustomCode11.java
+++ b/make/config/clImplCustomCode11.java
@@ -1,60 +1,11 @@
-
- /** If null, OpenCL is not available on this machine. */
- static final DynamicLibraryBundle dynamicLookupHelper;
protected static final CLProcAddressTable11 addressTable;
static {
addressTable = new CLProcAddressTable11();
- dynamicLookupHelper = AccessController.doPrivileged(new PrivilegedAction<DynamicLibraryBundle>() {
- public DynamicLibraryBundle run() {
- final DynamicLibraryBundle bundle = new DynamicLibraryBundle(new CLDynamicLibraryBundleInfo());
- if(!bundle.isToolLibLoaded()) {
- // couldn't load native CL library
- // TODO: log this?
- return null;
- }
- if(!bundle.isLibComplete()) {
- System.err.println("Couln't load native CL/JNI glue library");
- return null;
- }
- addressTable.reset(bundle);
- /** Not required nor forced
- if( !initializeImpl() ) {
- System.err.println("Native initialization failure of CL/JNI glue library");
- return null;
- } */
- return bundle;
- } } );
- }
-
- /**
- * Accessor.
- * @returns true if OpenCL is available on this machine.
- */
- public static boolean isAvailable() { return dynamicLookupHelper != null; }
- public static CLProcAddressTable11 getCLProcAddressTable() { return addressTable; }
-
- static long clGetExtensionFunctionAddress(long clGetExtensionFunctionAddressHandle, java.lang.String procname)
- {
- if (clGetExtensionFunctionAddressHandle == 0) {
- throw new RuntimeException("Passed null pointer for method \"clGetExtensionFunctionAddress\"");
- }
- return dispatch_clGetExtensionFunctionAddressStatic(procname, clGetExtensionFunctionAddressHandle);
}
- public CLAbstractImpl11() {
- }
-
- /** Entry point (through function pointer) to C language function: <br> <code> void* clGetExtensionFunctionAddress(const char * fname); </code> */
- long clGetExtensionFunctionAddress(String fname) {
+ public static CLProcAddressTable11 getAddressTable() { return addressTable; }
- final long __addr_ = addressTable._addressof_clGetExtensionFunctionAddress;
- if (__addr_ == 0) {
- throw new UnsupportedOperationException("Method \"clGetExtensionFunctionAddress\" not available");
- }
- return dispatch_clGetExtensionFunctionAddressStatic(fname, __addr_);
+ public CLImpl11() {
+ init();
}
-
- /** Entry point (through function pointer) to C language function: <br> <code> void* clGetExtensionFunctionAddress(const char * fname); </code> */
- private static native long dispatch_clGetExtensionFunctionAddressStatic(String fname, long procAddress);
-
diff --git a/make/config/clImplCustomCode12.c b/make/config/clImplCustomCode12.c
index bea531a1..6bdae621 100644
--- a/make/config/clImplCustomCode12.c
+++ b/make/config/clImplCustomCode12.c
@@ -1,224 +1,28 @@
-// callbacks
-typedef void (CL_CALLBACK * cccallback)(const char *, const void *, size_t, void *);
-typedef void (CL_CALLBACK * bpcallback)(cl_program, void *);
-
-CL_CALLBACK void buildProgramCallback(cl_program id, void * object);
-CL_CALLBACK void createContextCallback(const char * errinfo, const void * private_info, size_t cb, void * object);
-CL_CALLBACK void eventCallback(cl_event event, cl_int status, void * object);
-CL_CALLBACK void memObjDestructorCallback(cl_mem mem, void * object);
-
JNIEXPORT jlong JNICALL
-Java_com_jogamp_opencl_llb_impl_CLAbstractImpl12_dispatch_1clGetExtensionFunctionAddressStatic(JNIEnv *env, jclass _unused, jstring fname, jlong procAddress) {
- typedef void* (CL_API_CALL * _local_LPCLGETPROCADDRESS)(const char * fname);
- _local_LPCLGETPROCADDRESS ptr_clGetExtensionFunctionAddress;
- const char* _strchars_fname = NULL;
- void* _res;
- if ( NULL != fname ) {
- _strchars_fname = (*env)->GetStringUTFChars(env, fname, (jboolean*)NULL);
- if ( NULL == _strchars_fname ) {
- (*env)->ThrowNew(env, (*env)->FindClass(env, "java/lang/OutOfMemoryError"),
- "Failed to get UTF-8 chars for argument \"fname\" in native dispatcher for \"dispatch_clGetExtensionFunctionAddress\"");
- return 0;
- }
- }
- ptr_clGetExtensionFunctionAddress = (_local_LPCLGETPROCADDRESS) (intptr_t) procAddress;
- assert(ptr_clGetExtensionFunctionAddress != NULL);
- _res = (* ptr_clGetExtensionFunctionAddress) (_strchars_fname);
- if ( NULL != fname ) {
- (*env)->ReleaseStringUTFChars(env, fname, _strchars_fname);
- }
- return (jlong) (intptr_t) _res;
+Java_com_jogamp_opencl_llb_impl_CLImpl12_dispatch_1clGetExtensionFunctionAddressStatic(JNIEnv *env, jclass _unused, jstring fname, jlong procAddress) {
+ return Java_com_jogamp_opencl_llb_impl_CLImpl11_dispatch_1clGetExtensionFunctionAddressStatic(env, _unused, fname, procAddress);
}
-/* Java->C glue code:
- * Java package: com.jogamp.opencl.impl.CLImpl
- * Java method: long clCreateContextFromType(java.nio.IntBuffer props, long device_type, CreateContextCallback pfn_notify, Object userData, IntBuffer errcode_ret)
- * C function: cl_context clCreateContextFromType( const cl_context_properties * properties ,
- * cl_device_type device_type ,
- * void (CL_CALLBACK * pfn_notify )(const char *, const void *, size_t, void *),
- * void * user_data ,
- * cl_int * errcode_ret);
- */
JNIEXPORT jlong JNICALL
-Java_com_jogamp_opencl_llb_impl_CLImpl12_clCreateContextFromType0(JNIEnv *env, jobject _unused,
- jobject props, jint props_byte_offset, jlong device_type, jobject cb, jobject global, jobject errcode, jint errcode_byte_offset, jlong procAddress) {
-
- cl_context_properties* _props_ptr = NULL;
- cl_int * _errcode_ptr = NULL;
- cl_context _ctx = NULL;
- cccallback _pfn_notify = NULL;
- jobject globalCB = NULL;
-
- typedef cl_context (*function)(const cl_context_properties *, cl_device_type, void (*pfn_notify)(const char *, const void *, size_t, void *), void *, cl_int *);
- function clCreateContextFromType = (function)(intptr_t) procAddress;
-
- if (props != NULL) {
- _props_ptr = (cl_context_properties*) (((char*) (*env)->GetDirectBufferAddress(env, props)) + props_byte_offset);
- }
-
- if (errcode != NULL) {
- _errcode_ptr = (void *) (((char*) (*env)->GetDirectBufferAddress(env, errcode)) + errcode_byte_offset);
- }
-
- if (cb != NULL) {
- _pfn_notify = &createContextCallback;
- globalCB = (*env)->NewGlobalRef(env, cb);
- }
-
- _ctx = (*clCreateContextFromType)(_props_ptr, (uint64_t) device_type, _pfn_notify, globalCB, _errcode_ptr);
-
- if(globalCB != NULL) {
- jlong *g = (*env)->GetPrimitiveArrayCritical(env, global, NULL);
- // if something went wrong
- if(_ctx == NULL) {
- g[0] = 0;
- (*env)->DeleteGlobalRef(env, globalCB);
- }else{
- g[0] = (jlong)globalCB;
- }
- (*env)->ReleasePrimitiveArrayCritical(env, global, g, 0);
- }
-
- return (jlong) (intptr_t)_ctx;
+Java_com_jogamp_opencl_llb_impl_CLImpl12_clCreateContextFromType0(JNIEnv *env, jobject _unused, jobject props, jint props_byte_offset, jlong device_type, jobject cb, jobject global, jobject errcode, jint errcode_byte_offset, jlong procAddress) {
+ return Java_com_jogamp_opencl_llb_impl_CLImpl11_clCreateContextFromType0(env, _unused, props, props_byte_offset, device_type, cb, global, errcode, errcode_byte_offset, procAddress);
}
-/*
- * Entry point to C language function:
- *extern CL_API_ENTRY cl_context CL_API_CALL
- *clCreateContext(cl_context_properties * properties ,
- * cl_uint num_devices ,
- * const cl_device_id * devices ,
- * void (*pfn_notify)(const char *, const void *, size_t, void *) pfn_notify ,
- * void * user_data ,
- * cl_int * errcode_ret ) CL_API_SUFFIX__VERSION_1_0;
- */
JNIEXPORT jlong JNICALL
-Java_com_jogamp_opencl_llb_impl_CLImpl12_clCreateContext0(JNIEnv *env, jobject _unused,
- jobject props, jint props_byte_offset, jint numDevices, jobject deviceList, jint device_type_offset, jobject cb, jobject global, jobject errcode, jint errcode_byte_offset, jlong procAddress) {
-
- cl_context_properties* _props_ptr = NULL;
- cl_int * _errcode_ptr = NULL;
- cl_device_id * _deviceListPtr = NULL;
- cl_context _ctx = NULL;
- cccallback _pfn_notify = NULL;
- jobject globalCB = NULL;
-
- typedef cl_context (CL_API_CALL * function)(cl_context_properties *, cl_uint, const cl_device_id *, void (*pfn_notify)(const char *, const void *, size_t, void *), void *, cl_int *);
- function clCreateContext = (function)(intptr_t) procAddress;
-
- if (props != NULL) {
- _props_ptr = (cl_context_properties*) (((char*) (*env)->GetDirectBufferAddress(env, props)) + props_byte_offset);
- }
- if (deviceList != NULL) {
- _deviceListPtr = (void *) (((char*) (*env)->GetDirectBufferAddress(env, deviceList)) + device_type_offset);
- }
- if (errcode != NULL) {
- _errcode_ptr = (void *) (((char*) (*env)->GetDirectBufferAddress(env, errcode)) + errcode_byte_offset);
- }
-
- if (cb != NULL) {
- _pfn_notify = &createContextCallback;
- globalCB = (*env)->NewGlobalRef(env, cb);
- }
-
- _ctx = (*clCreateContext)(_props_ptr, numDevices, _deviceListPtr, _pfn_notify, globalCB, _errcode_ptr);
-
- if(globalCB != NULL) {
- jlong *g = (*env)->GetPrimitiveArrayCritical(env, global, NULL);
- // if something went wrong
- if(_ctx == NULL) {
- g[0] = 0;
- (*env)->DeleteGlobalRef(env, globalCB);
- }else{
- g[0] = (jlong)globalCB;
- }
- (*env)->ReleasePrimitiveArrayCritical(env, global, g, 0);
- }
-
- return (jlong) (intptr_t)_ctx;
+Java_com_jogamp_opencl_llb_impl_CLImpl12_clCreateContext0(JNIEnv *env, jobject _unused, jobject props, jint props_byte_offset, jint numDevices, jobject deviceList, jint device_type_offset, jobject cb, jobject global, jobject errcode, jint errcode_byte_offset, jlong procAddress) {
+ return Java_com_jogamp_opencl_llb_impl_CLImpl11_clCreateContext0(env, _unused, props, props_byte_offset, numDevices, deviceList, device_type_offset, cb, global, errcode, errcode_byte_offset, procAddress);
}
-/* Java->C glue code:
- * Java package: com.jogamp.opencl.impl.CLImpl
- * Java method: int clReleaseContextImpl(long context)
- * C function: int32_t clReleaseContextImpl(cl_context context);
- */
JNIEXPORT jint JNICALL
Java_com_jogamp_opencl_llb_impl_CLImpl12_clReleaseContextImpl(JNIEnv *env, jobject _unused, jlong context, jlong global, jlong procAddress) {
-
- int32_t _res;
- typedef int32_t (*function)(cl_context);
- function clReleaseContext = (function)(intptr_t) procAddress;
-
- _res = (*clReleaseContext)((cl_context) (intptr_t) context);
- // TODO deal with retains
- if (global != 0) {
- (*env)->DeleteGlobalRef(env, (jobject) global);
- }
- return _res;
+ return Java_com_jogamp_opencl_llb_impl_CLImpl11_clReleaseContextImpl(env, _unused, context, global, procAddress);
}
-
-/**
- * Entry point to C language function:
- * extern CL_API_ENTRY cl_int CL_API_CALL
- *clBuildProgram(cl_program program ,
- * cl_uint num_devices ,
- * const cl_device_id * device_list ,
- * const char * options ,
- * void (*pfn_notify)(cl_program program , void * user_data ),
- * void * user_data ) CL_API_SUFFIX__VERSION_1_0;
- */
JNIEXPORT jint JNICALL
-Java_com_jogamp_opencl_llb_impl_CLImpl12_clBuildProgram0(JNIEnv *env, jobject _unused,
- jlong program, jint deviceCount, jobject deviceList, jint device_type_offset, jstring options, jobject cb, jlong procAddress) {
-
- const char* _strchars_options = NULL;
- cl_int _res;
- cl_device_id * _deviceListPtr = NULL;
- bpcallback _pfn_notify = NULL;
- jobject globalCB = NULL;
-
- typedef cl_int (CL_API_CALL * function)(cl_program, cl_uint, const cl_device_id *, const char *, void (CL_CALLBACK *)(cl_program, void *), void *);
- function clBuildProgram = (function)(intptr_t)procAddress;
-
- if (options != NULL) {
- _strchars_options = (*env)->GetStringUTFChars(env, options, (jboolean*)NULL);
- if (_strchars_options == NULL) {
- (*env)->ThrowNew(env, (*env)->FindClass(env, "java/lang/OutOfMemoryError"),
- "Failed to get UTF-8 chars for argument \"options\" in native dispatcher for \"clBuildProgram\"");
- return CL_FALSE;
- }
- }
-
- if (deviceList != NULL) {
- _deviceListPtr = (void *) (((char*) (*env)->GetDirectBufferAddress(env, deviceList)) + device_type_offset);
- }
-
- if (cb != NULL) {
- _pfn_notify = &buildProgramCallback;
- globalCB = (*env)->NewGlobalRef(env, cb);
- }
-
- _res = (*clBuildProgram)((cl_program)(intptr_t)program, (cl_uint)deviceCount, (cl_device_id *)_deviceListPtr, _strchars_options, _pfn_notify, globalCB);
-
- // if something went wrong
- if(_res != CL_SUCCESS && globalCB != NULL) {
- (*env)->DeleteGlobalRef(env, globalCB);
- }
-
- if (options != NULL) {
- (*env)->ReleaseStringUTFChars(env, options, _strchars_options);
- }
-
- return (jint)_res;
+Java_com_jogamp_opencl_llb_impl_CLImpl12_clBuildProgram0(JNIEnv *env, jobject _unused, jlong program, jint deviceCount, jobject deviceList, jint device_type_offset, jstring options, jobject cb, jlong procAddress) {
+ return Java_com_jogamp_opencl_llb_impl_CLImpl11_clBuildProgram0(env, _unused, program, deviceCount, deviceList, device_type_offset, options, cb, procAddress);
}
-/* Java->C glue code:
- * Java package: com.jogamp.opencl.impl.CLImpl
- * Java method: java.nio.ByteBuffer clEnqueueMapImage(long command_queue, long image, int blocking_map, long map_flags, com.jogamp.gluegen.common.nio.PointerBuffer origin, com.jogamp.gluegen.common.nio.PointerBuffer range, com.jogamp.gluegen.common.nio.PointerBuffer image_row_pitch, com.jogamp.gluegen.common.nio.PointerBuffer image_slice_pitch, int num_events_in_wait_list, com.jogamp.gluegen.common.nio.PointerBuffer event_wait_list, com.jogamp.gluegen.common.nio.PointerBuffer event, java.nio.IntBuffer errcode_ret)
- * C function: void * clEnqueueMapImage(cl_command_queue command_queue, cl_mem image, uint32_t blocking_map, uint64_t map_flags, const size_t * , const size_t * , size_t * image_row_pitch, size_t * image_slice_pitch, uint32_t num_events_in_wait_list, cl_event * event_wait_list, cl_event * event, int32_t * errcode_ret);
- */
JNIEXPORT jobject JNICALL
Java_com_jogamp_opencl_llb_impl_CLImpl12_clEnqueueMapImage0__JJIJLjava_lang_Object_2ILjava_lang_Object_2ILjava_lang_Object_2ILjava_lang_Object_2IILjava_lang_Object_2ILjava_lang_Object_2ILjava_lang_Object_2I(JNIEnv *env, jobject _unused,
jlong command_queue, jlong image, jint blocking_map, jlong map_flags,
@@ -227,102 +31,21 @@ Java_com_jogamp_opencl_llb_impl_CLImpl12_clEnqueueMapImage0__JJIJLjava_lang_Obje
jint image_slice_pitch_byte_offset, jint num_events_in_wait_list, jobject event_wait_list,
jint event_wait_list_byte_offset, jobject event, jint event_byte_offset, jobject errcode_ret, jint errcode_ret_byte_offset,
jlong imageInfoAddress, jlong mapImageAddress) {
-
- size_t * _origin_ptr = NULL;
- size_t * _range_ptr = NULL;
- size_t * _image_row_pitch_ptr = NULL;
- size_t * _image_slice_pitch_ptr = NULL;
- cl_event * _event_wait_list_ptr = NULL;
- cl_event * _event_ptr = NULL;
- int32_t * _errcode_ret_ptr = NULL;
- size_t * elements = NULL;
- size_t * depth = NULL;
- size_t pixels;
- cl_int status;
-
- typedef int32_t (*imageInfoFunctionType)(cl_mem, uint32_t, size_t, void *, size_t *);
- imageInfoFunctionType clGetImageInfo = (imageInfoFunctionType)(intptr_t)imageInfoAddress;
-
- typedef void* (*mapInfoFunctionType)(cl_command_queue, cl_mem, uint32_t, uint64_t, const size_t *,
- const size_t *, size_t *, size_t *, uint32_t, cl_event *, cl_event *, int32_t *);
- mapInfoFunctionType clEnqueueMapImage = (mapInfoFunctionType)(intptr_t)mapImageAddress;
-
- void * _res;
-
- if (origin != NULL) {
- _origin_ptr = (size_t *) (((char*) (*env)->GetDirectBufferAddress(env, origin)) + origin_byte_offset);
- }
- if (range != NULL) {
- _range_ptr = (size_t *) (((char*) (*env)->GetDirectBufferAddress(env, range)) + range_byte_offset);
- }
- if (image_row_pitch != NULL) {
- _image_row_pitch_ptr = (size_t *) (((char*) (*env)->GetDirectBufferAddress(env, image_row_pitch)) + image_row_pitch_byte_offset);
- }
- if (image_slice_pitch != NULL) {
- _image_slice_pitch_ptr = (size_t *) (((char*) (*env)->GetDirectBufferAddress(env, image_slice_pitch)) + image_slice_pitch_byte_offset);
- }
- if (event_wait_list != NULL) {
- _event_wait_list_ptr = (cl_event *) (((char*) (*env)->GetDirectBufferAddress(env, event_wait_list)) + event_wait_list_byte_offset);
- }
- if (event != NULL) {
- _event_ptr = (cl_event *) (((char*) (*env)->GetDirectBufferAddress(env, event)) + event_byte_offset);
- }
- if (errcode_ret != NULL) {
- _errcode_ret_ptr = (int32_t *) (((char*) (*env)->GetDirectBufferAddress(env, errcode_ret)) + errcode_ret_byte_offset);
- }
-
- _res = (*clEnqueueMapImage)((cl_command_queue) (intptr_t) command_queue, (cl_mem) (intptr_t) image,
- (uint32_t) blocking_map, (uint64_t) map_flags, (size_t *) _origin_ptr, (size_t *) _range_ptr,
- (size_t *) _image_row_pitch_ptr, (size_t *) _image_slice_pitch_ptr, (uint32_t) num_events_in_wait_list,
- (cl_event *) _event_wait_list_ptr, (cl_event *) _event_ptr, (int32_t *) _errcode_ret_ptr);
- if (_res == NULL) return NULL;
-
- // calculate buffer size
- status = (*clGetImageInfo)((cl_mem) (intptr_t) image, CL_IMAGE_ELEMENT_SIZE, sizeof(size_t), (void *) elements, NULL);
- status |= (*clGetImageInfo)((cl_mem) (intptr_t) image, CL_IMAGE_DEPTH, sizeof(size_t), (void *) depth, NULL);
-
- if(status != CL_SUCCESS) {
- return NULL;
- }
-
- if(*depth == 0) { // 2D
- pixels = (*_image_row_pitch_ptr) * _range_ptr[1] + _range_ptr[0];
- }else{ // 3D
- pixels = (*_image_slice_pitch_ptr) * _range_ptr[2]
- + (*_image_row_pitch_ptr) * _range_ptr[1] + _range_ptr[0];
- }
-
- return (*env)->NewDirectByteBuffer(env, _res, pixels * (*elements));
-
+ return Java_com_jogamp_opencl_llb_impl_CLImpl11_clEnqueueMapImage0__JJIJLjava_lang_Object_2ILjava_lang_Object_2ILjava_lang_Object_2ILjava_lang_Object_2IILjava_lang_Object_2ILjava_lang_Object_2ILjava_lang_Object_2I(env, _unused,
+ command_queue, image, blocking_map, map_flags,
+ origin, origin_byte_offset, range, range_byte_offset,
+ image_row_pitch, image_row_pitch_byte_offset, image_slice_pitch,
+ image_slice_pitch_byte_offset, num_events_in_wait_list, event_wait_list,
+ event_wait_list_byte_offset, event, event_byte_offset, errcode_ret, errcode_ret_byte_offset,
+ imageInfoAddress, mapImageAddress);
}
JNIEXPORT jint JNICALL
-Java_com_jogamp_opencl_llb_impl_CLImpl12_clSetEventCallback0(JNIEnv *env, jobject _unused,
- jlong event, jint trigger, jobject listener, jlong procAddress) {
-
- cl_event _event = (cl_event)event;
- cl_int _trigger = trigger;
- cl_int _res;
- typedef int32_t (*function)(cl_event, cl_int, void (*pfn_event_notify) (cl_event, cl_int, void *), void *);
- function clSetEventCallback = (function)(intptr_t) procAddress;
-
- jobject cb = (*env)->NewGlobalRef(env, listener);
- _res = (*clSetEventCallback)(_event, _trigger, &eventCallback, cb);
-
- return _res;
+Java_com_jogamp_opencl_llb_impl_CLImpl12_clSetEventCallback0(JNIEnv *env, jobject _unused, jlong event, jint trigger, jobject listener, jlong procAddress) {
+ return Java_com_jogamp_opencl_llb_impl_CLImpl11_clSetEventCallback0(env, _unused, event, trigger, listener, procAddress);
}
JNIEXPORT jint JNICALL
-Java_com_jogamp_opencl_llb_impl_CLImpl12_clSetMemObjectDestructorCallback0(JNIEnv *env, jobject _unused,
- jlong mem, jobject listener, jlong procAddress) {
-
- cl_mem _mem = (cl_mem)mem;
- cl_int _res;
- typedef int32_t (*function)(cl_mem, void (*pfn_event_notify) (cl_mem, void *), void *);
- function clSetMemObjectDestructorCallback = (function)(intptr_t) procAddress;
-
- jobject cb = (*env)->NewGlobalRef(env, listener);
- _res = (*clSetMemObjectDestructorCallback)(_mem, &memObjDestructorCallback, cb);
-
- return _res;
+Java_com_jogamp_opencl_llb_impl_CLImpl12_clSetMemObjectDestructorCallback0(JNIEnv *env, jobject _unused, jlong mem, jobject listener, jlong procAddress) {
+ return Java_com_jogamp_opencl_llb_impl_CLImpl11_clSetMemObjectDestructorCallback0(env, _unused, mem, listener, procAddress);
}
diff --git a/make/config/clImplCustomCode12.java b/make/config/clImplCustomCode12.java
index ff29d5e5..3181749d 100644
--- a/make/config/clImplCustomCode12.java
+++ b/make/config/clImplCustomCode12.java
@@ -1,60 +1,12 @@
- /** If null, OpenCL is not available on this machine. */
- static final DynamicLibraryBundle dynamicLookupHelper;
protected static final CLProcAddressTable12 addressTable;
static {
addressTable = new CLProcAddressTable12();
- dynamicLookupHelper = AccessController.doPrivileged(new PrivilegedAction<DynamicLibraryBundle>() {
- public DynamicLibraryBundle run() {
- final DynamicLibraryBundle bundle = new DynamicLibraryBundle(new CLDynamicLibraryBundleInfo());
- if(!bundle.isToolLibLoaded()) {
- // couldn't load native CL library
- // TODO: log this?
- return null;
- }
- if(!bundle.isLibComplete()) {
- System.err.println("Couln't load native CL/JNI glue library");
- return null;
- }
- addressTable.reset(bundle);
- /** Not required nor forced
- if( !initializeImpl() ) {
- System.err.println("Native initialization failure of CL/JNI glue library");
- return null;
- } */
- return bundle;
- } } );
}
- /**
- * Accessor.
- * @returns true if OpenCL is available on this machine.
- */
- public static boolean isAvailable() { return dynamicLookupHelper != null; }
- public static CLProcAddressTable12 getCLProcAddressTable() { return addressTable; }
+ public static CLProcAddressTable12 getAddressTable() { return addressTable; }
- static long clGetExtensionFunctionAddress(long clGetExtensionFunctionAddressHandle, java.lang.String procname)
- {
- if (clGetExtensionFunctionAddressHandle == 0) {
- throw new RuntimeException("Passed null pointer for method \"clGetExtensionFunctionAddress\"");
- }
- return dispatch_clGetExtensionFunctionAddressStatic(procname, clGetExtensionFunctionAddressHandle);
+ public CLImpl12() {
+ init();
}
-
- public CLAbstractImpl12() {
- }
-
- /** Entry point (through function pointer) to C language function: <br> <code> void* clGetExtensionFunctionAddress(const char * fname); </code> */
- long clGetExtensionFunctionAddress(String fname) {
-
- final long __addr_ = addressTable._addressof_clGetExtensionFunctionAddress;
- if (__addr_ == 0) {
- throw new UnsupportedOperationException("Method \"clGetExtensionFunctionAddress\" not available");
- }
- return dispatch_clGetExtensionFunctionAddressStatic(fname, __addr_);
- }
-
- /** Entry point (through function pointer) to C language function: <br> <code> void* clGetExtensionFunctionAddress(const char * fname); </code> */
- private static native long dispatch_clGetExtensionFunctionAddressStatic(String fname, long procAddress);
-
diff --git a/make/config/clImplCustomCode20.c b/make/config/clImplCustomCode20.c
index 065aad31..897faec6 100644
--- a/make/config/clImplCustomCode20.c
+++ b/make/config/clImplCustomCode20.c
@@ -1,224 +1,28 @@
-// callbacks
-typedef void (CL_CALLBACK * cccallback)(const char *, const void *, size_t, void *);
-typedef void (CL_CALLBACK * bpcallback)(cl_program, void *);
-
-CL_CALLBACK void buildProgramCallback(cl_program id, void * object);
-CL_CALLBACK void createContextCallback(const char * errinfo, const void * private_info, size_t cb, void * object);
-CL_CALLBACK void eventCallback(cl_event event, cl_int status, void * object);
-CL_CALLBACK void memObjDestructorCallback(cl_mem mem, void * object);
-
JNIEXPORT jlong JNICALL
-Java_com_jogamp_opencl_llb_impl_CLAbstractImpl20_dispatch_1clGetExtensionFunctionAddressStatic(JNIEnv *env, jclass _unused, jstring fname, jlong procAddress) {
- typedef void* (CL_API_CALL * _local_LPCLGETPROCADDRESS)(const char * fname);
- _local_LPCLGETPROCADDRESS ptr_clGetExtensionFunctionAddress;
- const char* _strchars_fname = NULL;
- void* _res;
- if ( NULL != fname ) {
- _strchars_fname = (*env)->GetStringUTFChars(env, fname, (jboolean*)NULL);
- if ( NULL == _strchars_fname ) {
- (*env)->ThrowNew(env, (*env)->FindClass(env, "java/lang/OutOfMemoryError"),
- "Failed to get UTF-8 chars for argument \"fname\" in native dispatcher for \"dispatch_clGetExtensionFunctionAddress\"");
- return 0;
- }
- }
- ptr_clGetExtensionFunctionAddress = (_local_LPCLGETPROCADDRESS) (intptr_t) procAddress;
- assert(ptr_clGetExtensionFunctionAddress != NULL);
- _res = (* ptr_clGetExtensionFunctionAddress) (_strchars_fname);
- if ( NULL != fname ) {
- (*env)->ReleaseStringUTFChars(env, fname, _strchars_fname);
- }
- return (jlong) (intptr_t) _res;
+Java_com_jogamp_opencl_llb_impl_CLImpl20_dispatch_1clGetExtensionFunctionAddressStatic(JNIEnv *env, jclass _unused, jstring fname, jlong procAddress) {
+ return Java_com_jogamp_opencl_llb_impl_CLImpl11_dispatch_1clGetExtensionFunctionAddressStatic(env, _unused, fname, procAddress);
}
-/* Java->C glue code:
- * Java package: com.jogamp.opencl.impl.CLImpl
- * Java method: long clCreateContextFromType(java.nio.IntBuffer props, long device_type, CreateContextCallback pfn_notify, Object userData, IntBuffer errcode_ret)
- * C function: cl_context clCreateContextFromType( const cl_context_properties * properties ,
- * cl_device_type device_type ,
- * void (CL_CALLBACK * pfn_notify )(const char *, const void *, size_t, void *),
- * void * user_data ,
- * cl_int * errcode_ret);
- */
JNIEXPORT jlong JNICALL
-Java_com_jogamp_opencl_llb_impl_CLImpl20_clCreateContextFromType0(JNIEnv *env, jobject _unused,
- jobject props, jint props_byte_offset, jlong device_type, jobject cb, jobject global, jobject errcode, jint errcode_byte_offset, jlong procAddress) {
-
- cl_context_properties* _props_ptr = NULL;
- cl_int * _errcode_ptr = NULL;
- cl_context _ctx = NULL;
- cccallback _pfn_notify = NULL;
- jobject globalCB = NULL;
-
- typedef cl_context (*function)(const cl_context_properties *, cl_device_type, void (*pfn_notify)(const char *, const void *, size_t, void *), void *, cl_int *);
- function clCreateContextFromType = (function)(intptr_t) procAddress;
-
- if (props != NULL) {
- _props_ptr = (cl_context_properties*) (((char*) (*env)->GetDirectBufferAddress(env, props)) + props_byte_offset);
- }
-
- if (errcode != NULL) {
- _errcode_ptr = (void *) (((char*) (*env)->GetDirectBufferAddress(env, errcode)) + errcode_byte_offset);
- }
-
- if (cb != NULL) {
- _pfn_notify = &createContextCallback;
- globalCB = (*env)->NewGlobalRef(env, cb);
- }
-
- _ctx = (*clCreateContextFromType)(_props_ptr, (uint64_t) device_type, _pfn_notify, globalCB, _errcode_ptr);
-
- if(globalCB != NULL) {
- jlong *g = (*env)->GetPrimitiveArrayCritical(env, global, NULL);
- // if something went wrong
- if(_ctx == NULL) {
- g[0] = 0;
- (*env)->DeleteGlobalRef(env, globalCB);
- }else{
- g[0] = (jlong)globalCB;
- }
- (*env)->ReleasePrimitiveArrayCritical(env, global, g, 0);
- }
-
- return (jlong) (intptr_t)_ctx;
+Java_com_jogamp_opencl_llb_impl_CLImpl20_clCreateContextFromType0(JNIEnv *env, jobject _unused, jobject props, jint props_byte_offset, jlong device_type, jobject cb, jobject global, jobject errcode, jint errcode_byte_offset, jlong procAddress) {
+ return Java_com_jogamp_opencl_llb_impl_CLImpl11_clCreateContextFromType0(env, _unused, props, props_byte_offset, device_type, cb, global, errcode, errcode_byte_offset, procAddress);
}
-/*
- * Entry point to C language function:
- *extern CL_API_ENTRY cl_context CL_API_CALL
- *clCreateContext(cl_context_properties * properties ,
- * cl_uint num_devices ,
- * const cl_device_id * devices ,
- * void (*pfn_notify)(const char *, const void *, size_t, void *) pfn_notify ,
- * void * user_data ,
- * cl_int * errcode_ret ) CL_API_SUFFIX__VERSION_1_0;
- */
JNIEXPORT jlong JNICALL
-Java_com_jogamp_opencl_llb_impl_CLImpl20_clCreateContext0(JNIEnv *env, jobject _unused,
- jobject props, jint props_byte_offset, jint numDevices, jobject deviceList, jint device_type_offset, jobject cb, jobject global, jobject errcode, jint errcode_byte_offset, jlong procAddress) {
-
- cl_context_properties* _props_ptr = NULL;
- cl_int * _errcode_ptr = NULL;
- cl_device_id * _deviceListPtr = NULL;
- cl_context _ctx = NULL;
- cccallback _pfn_notify = NULL;
- jobject globalCB = NULL;
-
- typedef cl_context (CL_API_CALL * function)(cl_context_properties *, cl_uint, const cl_device_id *, void (*pfn_notify)(const char *, const void *, size_t, void *), void *, cl_int *);
- function clCreateContext = (function)(intptr_t) procAddress;
-
- if (props != NULL) {
- _props_ptr = (cl_context_properties*) (((char*) (*env)->GetDirectBufferAddress(env, props)) + props_byte_offset);
- }
- if (deviceList != NULL) {
- _deviceListPtr = (void *) (((char*) (*env)->GetDirectBufferAddress(env, deviceList)) + device_type_offset);
- }
- if (errcode != NULL) {
- _errcode_ptr = (void *) (((char*) (*env)->GetDirectBufferAddress(env, errcode)) + errcode_byte_offset);
- }
-
- if (cb != NULL) {
- _pfn_notify = &createContextCallback;
- globalCB = (*env)->NewGlobalRef(env, cb);
- }
-
- _ctx = (*clCreateContext)(_props_ptr, numDevices, _deviceListPtr, _pfn_notify, globalCB, _errcode_ptr);
-
- if(globalCB != NULL) {
- jlong *g = (*env)->GetPrimitiveArrayCritical(env, global, NULL);
- // if something went wrong
- if(_ctx == NULL) {
- g[0] = 0;
- (*env)->DeleteGlobalRef(env, globalCB);
- }else{
- g[0] = (jlong)globalCB;
- }
- (*env)->ReleasePrimitiveArrayCritical(env, global, g, 0);
- }
-
- return (jlong) (intptr_t)_ctx;
+Java_com_jogamp_opencl_llb_impl_CLImpl20_clCreateContext0(JNIEnv *env, jobject _unused, jobject props, jint props_byte_offset, jint numDevices, jobject deviceList, jint device_type_offset, jobject cb, jobject global, jobject errcode, jint errcode_byte_offset, jlong procAddress) {
+ return Java_com_jogamp_opencl_llb_impl_CLImpl11_clCreateContext0(env, _unused, props, props_byte_offset, numDevices, deviceList, device_type_offset, cb, global, errcode, errcode_byte_offset, procAddress);
}
-/* Java->C glue code:
- * Java package: com.jogamp.opencl.impl.CLImpl
- * Java method: int clReleaseContextImpl(long context)
- * C function: int32_t clReleaseContextImpl(cl_context context);
- */
JNIEXPORT jint JNICALL
Java_com_jogamp_opencl_llb_impl_CLImpl20_clReleaseContextImpl(JNIEnv *env, jobject _unused, jlong context, jlong global, jlong procAddress) {
-
- int32_t _res;
- typedef int32_t (*function)(cl_context);
- function clReleaseContext = (function)(intptr_t) procAddress;
-
- _res = (*clReleaseContext)((cl_context) (intptr_t) context);
- // TODO deal with retains
- if (global != 0) {
- (*env)->DeleteGlobalRef(env, (jobject) global);
- }
- return _res;
+ return Java_com_jogamp_opencl_llb_impl_CLImpl11_clReleaseContextImpl(env, _unused, context, global, procAddress);
}
-
-/**
- * Entry point to C language function:
- * extern CL_API_ENTRY cl_int CL_API_CALL
- *clBuildProgram(cl_program program ,
- * cl_uint num_devices ,
- * const cl_device_id * device_list ,
- * const char * options ,
- * void (*pfn_notify)(cl_program program , void * user_data ),
- * void * user_data ) CL_API_SUFFIX__VERSION_1_0;
- */
JNIEXPORT jint JNICALL
-Java_com_jogamp_opencl_llb_impl_CLImpl20_clBuildProgram0(JNIEnv *env, jobject _unused,
- jlong program, jint deviceCount, jobject deviceList, jint device_type_offset, jstring options, jobject cb, jlong procAddress) {
-
- const char* _strchars_options = NULL;
- cl_int _res;
- cl_device_id * _deviceListPtr = NULL;
- bpcallback _pfn_notify = NULL;
- jobject globalCB = NULL;
-
- typedef cl_int (CL_API_CALL * function)(cl_program, cl_uint, const cl_device_id *, const char *, void (CL_CALLBACK *)(cl_program, void *), void *);
- function clBuildProgram = (function)(intptr_t)procAddress;
-
- if (options != NULL) {
- _strchars_options = (*env)->GetStringUTFChars(env, options, (jboolean*)NULL);
- if (_strchars_options == NULL) {
- (*env)->ThrowNew(env, (*env)->FindClass(env, "java/lang/OutOfMemoryError"),
- "Failed to get UTF-8 chars for argument \"options\" in native dispatcher for \"clBuildProgram\"");
- return CL_FALSE;
- }
- }
-
- if (deviceList != NULL) {
- _deviceListPtr = (void *) (((char*) (*env)->GetDirectBufferAddress(env, deviceList)) + device_type_offset);
- }
-
- if (cb != NULL) {
- _pfn_notify = &buildProgramCallback;
- globalCB = (*env)->NewGlobalRef(env, cb);
- }
-
- _res = (*clBuildProgram)((cl_program)(intptr_t)program, (cl_uint)deviceCount, (cl_device_id *)_deviceListPtr, _strchars_options, _pfn_notify, globalCB);
-
- // if something went wrong
- if(_res != CL_SUCCESS && globalCB != NULL) {
- (*env)->DeleteGlobalRef(env, globalCB);
- }
-
- if (options != NULL) {
- (*env)->ReleaseStringUTFChars(env, options, _strchars_options);
- }
-
- return (jint)_res;
+Java_com_jogamp_opencl_llb_impl_CLImpl20_clBuildProgram0(JNIEnv *env, jobject _unused, jlong program, jint deviceCount, jobject deviceList, jint device_type_offset, jstring options, jobject cb, jlong procAddress) {
+ return Java_com_jogamp_opencl_llb_impl_CLImpl11_clBuildProgram0(env, _unused, program, deviceCount, deviceList, device_type_offset, options, cb, procAddress);
}
-/* Java->C glue code:
- * Java package: com.jogamp.opencl.impl.CLImpl
- * Java method: java.nio.ByteBuffer clEnqueueMapImage(long command_queue, long image, int blocking_map, long map_flags, com.jogamp.gluegen.common.nio.PointerBuffer origin, com.jogamp.gluegen.common.nio.PointerBuffer range, com.jogamp.gluegen.common.nio.PointerBuffer image_row_pitch, com.jogamp.gluegen.common.nio.PointerBuffer image_slice_pitch, int num_events_in_wait_list, com.jogamp.gluegen.common.nio.PointerBuffer event_wait_list, com.jogamp.gluegen.common.nio.PointerBuffer event, java.nio.IntBuffer errcode_ret)
- * C function: void * clEnqueueMapImage(cl_command_queue command_queue, cl_mem image, uint32_t blocking_map, uint64_t map_flags, const size_t * , const size_t * , size_t * image_row_pitch, size_t * image_slice_pitch, uint32_t num_events_in_wait_list, cl_event * event_wait_list, cl_event * event, int32_t * errcode_ret);
- */
JNIEXPORT jobject JNICALL
Java_com_jogamp_opencl_llb_impl_CLImpl20_clEnqueueMapImage0__JJIJLjava_lang_Object_2ILjava_lang_Object_2ILjava_lang_Object_2ILjava_lang_Object_2IILjava_lang_Object_2ILjava_lang_Object_2ILjava_lang_Object_2I(JNIEnv *env, jobject _unused,
jlong command_queue, jlong image, jint blocking_map, jlong map_flags,
@@ -227,102 +31,21 @@ Java_com_jogamp_opencl_llb_impl_CLImpl20_clEnqueueMapImage0__JJIJLjava_lang_Obje
jint image_slice_pitch_byte_offset, jint num_events_in_wait_list, jobject event_wait_list,
jint event_wait_list_byte_offset, jobject event, jint event_byte_offset, jobject errcode_ret, jint errcode_ret_byte_offset,
jlong imageInfoAddress, jlong mapImageAddress) {
-
- size_t * _origin_ptr = NULL;
- size_t * _range_ptr = NULL;
- size_t * _image_row_pitch_ptr = NULL;
- size_t * _image_slice_pitch_ptr = NULL;
- cl_event * _event_wait_list_ptr = NULL;
- cl_event * _event_ptr = NULL;
- int32_t * _errcode_ret_ptr = NULL;
- size_t * elements = NULL;
- size_t * depth = NULL;
- size_t pixels;
- cl_int status;
-
- typedef int32_t (*imageInfoFunctionType)(cl_mem, uint32_t, size_t, void *, size_t *);
- imageInfoFunctionType clGetImageInfo = (imageInfoFunctionType)(intptr_t)imageInfoAddress;
-
- typedef void* (*mapInfoFunctionType)(cl_command_queue, cl_mem, uint32_t, uint64_t, const size_t *,
- const size_t *, size_t *, size_t *, uint32_t, cl_event *, cl_event *, int32_t *);
- mapInfoFunctionType clEnqueueMapImage = (mapInfoFunctionType)(intptr_t)mapImageAddress;
-
- void * _res;
-
- if (origin != NULL) {
- _origin_ptr = (size_t *) (((char*) (*env)->GetDirectBufferAddress(env, origin)) + origin_byte_offset);
- }
- if (range != NULL) {
- _range_ptr = (size_t *) (((char*) (*env)->GetDirectBufferAddress(env, range)) + range_byte_offset);
- }
- if (image_row_pitch != NULL) {
- _image_row_pitch_ptr = (size_t *) (((char*) (*env)->GetDirectBufferAddress(env, image_row_pitch)) + image_row_pitch_byte_offset);
- }
- if (image_slice_pitch != NULL) {
- _image_slice_pitch_ptr = (size_t *) (((char*) (*env)->GetDirectBufferAddress(env, image_slice_pitch)) + image_slice_pitch_byte_offset);
- }
- if (event_wait_list != NULL) {
- _event_wait_list_ptr = (cl_event *) (((char*) (*env)->GetDirectBufferAddress(env, event_wait_list)) + event_wait_list_byte_offset);
- }
- if (event != NULL) {
- _event_ptr = (cl_event *) (((char*) (*env)->GetDirectBufferAddress(env, event)) + event_byte_offset);
- }
- if (errcode_ret != NULL) {
- _errcode_ret_ptr = (int32_t *) (((char*) (*env)->GetDirectBufferAddress(env, errcode_ret)) + errcode_ret_byte_offset);
- }
-
- _res = (*clEnqueueMapImage)((cl_command_queue) (intptr_t) command_queue, (cl_mem) (intptr_t) image,
- (uint32_t) blocking_map, (uint64_t) map_flags, (size_t *) _origin_ptr, (size_t *) _range_ptr,
- (size_t *) _image_row_pitch_ptr, (size_t *) _image_slice_pitch_ptr, (uint32_t) num_events_in_wait_list,
- (cl_event *) _event_wait_list_ptr, (cl_event *) _event_ptr, (int32_t *) _errcode_ret_ptr);
- if (_res == NULL) return NULL;
-
- // calculate buffer size
- status = (*clGetImageInfo)((cl_mem) (intptr_t) image, CL_IMAGE_ELEMENT_SIZE, sizeof(size_t), (void *) elements, NULL);
- status |= (*clGetImageInfo)((cl_mem) (intptr_t) image, CL_IMAGE_DEPTH, sizeof(size_t), (void *) depth, NULL);
-
- if(status != CL_SUCCESS) {
- return NULL;
- }
-
- if(*depth == 0) { // 2D
- pixels = (*_image_row_pitch_ptr) * _range_ptr[1] + _range_ptr[0];
- }else{ // 3D
- pixels = (*_image_slice_pitch_ptr) * _range_ptr[2]
- + (*_image_row_pitch_ptr) * _range_ptr[1] + _range_ptr[0];
- }
-
- return (*env)->NewDirectByteBuffer(env, _res, pixels * (*elements));
-
+ return Java_com_jogamp_opencl_llb_impl_CLImpl11_clEnqueueMapImage0__JJIJLjava_lang_Object_2ILjava_lang_Object_2ILjava_lang_Object_2ILjava_lang_Object_2IILjava_lang_Object_2ILjava_lang_Object_2ILjava_lang_Object_2I(env, _unused,
+ command_queue, image, blocking_map, map_flags,
+ origin, origin_byte_offset, range, range_byte_offset,
+ image_row_pitch, image_row_pitch_byte_offset, image_slice_pitch,
+ image_slice_pitch_byte_offset, num_events_in_wait_list, event_wait_list,
+ event_wait_list_byte_offset, event, event_byte_offset, errcode_ret, errcode_ret_byte_offset,
+ imageInfoAddress, mapImageAddress);
}
JNIEXPORT jint JNICALL
-Java_com_jogamp_opencl_llb_impl_CLImpl20_clSetEventCallback0(JNIEnv *env, jobject _unused,
- jlong event, jint trigger, jobject listener, jlong procAddress) {
-
- cl_event _event = (cl_event)event;
- cl_int _trigger = trigger;
- cl_int _res;
- typedef int32_t (*function)(cl_event, cl_int, void (*pfn_event_notify) (cl_event, cl_int, void *), void *);
- function clSetEventCallback = (function)(intptr_t) procAddress;
-
- jobject cb = (*env)->NewGlobalRef(env, listener);
- _res = (*clSetEventCallback)(_event, _trigger, &eventCallback, cb);
-
- return _res;
+Java_com_jogamp_opencl_llb_impl_CLImpl20_clSetEventCallback0(JNIEnv *env, jobject _unused, jlong event, jint trigger, jobject listener, jlong procAddress) {
+ return Java_com_jogamp_opencl_llb_impl_CLImpl11_clSetEventCallback0(env, _unused, event, trigger, listener, procAddress);
}
JNIEXPORT jint JNICALL
-Java_com_jogamp_opencl_llb_impl_CLImpl20_clSetMemObjectDestructorCallback0(JNIEnv *env, jobject _unused,
- jlong mem, jobject listener, jlong procAddress) {
-
- cl_mem _mem = (cl_mem)mem;
- cl_int _res;
- typedef int32_t (*function)(cl_mem, void (*pfn_event_notify) (cl_mem, void *), void *);
- function clSetMemObjectDestructorCallback = (function)(intptr_t) procAddress;
-
- jobject cb = (*env)->NewGlobalRef(env, listener);
- _res = (*clSetMemObjectDestructorCallback)(_mem, &memObjDestructorCallback, cb);
-
- return _res;
+Java_com_jogamp_opencl_llb_impl_CLImpl20_clSetMemObjectDestructorCallback0(JNIEnv *env, jobject _unused, jlong mem, jobject listener, jlong procAddress) {
+ return Java_com_jogamp_opencl_llb_impl_CLImpl11_clSetMemObjectDestructorCallback0(env, _unused, mem, listener, procAddress);
}
diff --git a/make/config/clImplCustomCode20.java b/make/config/clImplCustomCode20.java
index e6c8071c..6247dd6c 100644
--- a/make/config/clImplCustomCode20.java
+++ b/make/config/clImplCustomCode20.java
@@ -1,60 +1,12 @@
- /** If null, OpenCL is not available on this machine. */
- static final DynamicLibraryBundle dynamicLookupHelper;
protected static final CLProcAddressTable20 addressTable;
static {
addressTable = new CLProcAddressTable20();
- dynamicLookupHelper = AccessController.doPrivileged(new PrivilegedAction<DynamicLibraryBundle>() {
- public DynamicLibraryBundle run() {
- final DynamicLibraryBundle bundle = new DynamicLibraryBundle(new CLDynamicLibraryBundleInfo());
- if(!bundle.isToolLibLoaded()) {
- // couldn't load native CL library
- // TODO: log this?
- return null;
- }
- if(!bundle.isLibComplete()) {
- System.err.println("Couln't load native CL/JNI glue library");
- return null;
- }
- addressTable.reset(bundle);
- /** Not required nor forced
- if( !initializeImpl() ) {
- System.err.println("Native initialization failure of CL/JNI glue library");
- return null;
- } */
- return bundle;
- } } );
}
- /**
- * Accessor.
- * @returns true if OpenCL is available on this machine.
- */
- public static boolean isAvailable() { return dynamicLookupHelper != null; }
- public static CLProcAddressTable20 getCLProcAddressTable() { return addressTable; }
+ public static CLProcAddressTable20 getAddressTable() { return addressTable; }
- static long clGetExtensionFunctionAddress(long clGetExtensionFunctionAddressHandle, java.lang.String procname)
- {
- if (clGetExtensionFunctionAddressHandle == 0) {
- throw new RuntimeException("Passed null pointer for method \"clGetExtensionFunctionAddress\"");
- }
- return dispatch_clGetExtensionFunctionAddressStatic(procname, clGetExtensionFunctionAddressHandle);
+ public CLImpl20() {
+ init();
}
-
- public CLAbstractImpl20() {
- }
-
- /** Entry point (through function pointer) to C language function: <br> <code> void* clGetExtensionFunctionAddress(const char * fname); </code> */
- long clGetExtensionFunctionAddress(String fname) {
-
- final long __addr_ = addressTable._addressof_clGetExtensionFunctionAddress;
- if (__addr_ == 0) {
- throw new UnsupportedOperationException("Method \"clGetExtensionFunctionAddress\" not available");
- }
- return dispatch_clGetExtensionFunctionAddressStatic(fname, __addr_);
- }
-
- /** Entry point (through function pointer) to C language function: <br> <code> void* clGetExtensionFunctionAddress(const char * fname); </code> */
- private static native long dispatch_clGetExtensionFunctionAddressStatic(String fname, long procAddress);
-