aboutsummaryrefslogtreecommitdiffstats
path: root/make/config/clImplCustomCode20.java
diff options
context:
space:
mode:
authorWade Walker <[email protected]>2015-09-07 14:46:52 -0500
committerWade Walker <[email protected]>2015-11-08 14:05:28 -0600
commite56a17d6d7780b8597c78ce50808c8da68d094b5 (patch)
treea37f9d5f351dd0b85844521ad7d6897fcecc062c /make/config/clImplCustomCode20.java
parent85dc2b1357470d2a51a69080d33aac442eae291f (diff)
Add OpenCL 1.2 and 2.0 headers and CLImpl classes
Added stub includes for OpenCL 1.2 and 2.0. Added new CLImpl versions for 1.2 and 2.0 to the build, but left them unused for now. The CL bindings used by JOCL are still generated from OpenCL 1.1, so the existing Java code will be able to stay mostly unchanged in the future.
Diffstat (limited to 'make/config/clImplCustomCode20.java')
-rw-r--r--make/config/clImplCustomCode20.java60
1 files changed, 60 insertions, 0 deletions
diff --git a/make/config/clImplCustomCode20.java b/make/config/clImplCustomCode20.java
new file mode 100644
index 00000000..e6c8071c
--- /dev/null
+++ b/make/config/clImplCustomCode20.java
@@ -0,0 +1,60 @@
+
+ /** 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; }
+
+ 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 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);
+