public long clCreateContext(LongBuffer properties, long[] devices, CreateContextCallback pfn_notify, Object userData, IntBuffer errcode_ret) { if(pfn_notify != null) throw new RuntimeException("asynchronous execution with callback is not yet implemented, pass null through this method to block until complete."); if(userData != null) System.err.println("WARNING: userData not yet implemented... ignoring"); int listLength = 0; if(devices != null) listLength = devices.length; return this.clCreateContext1( BufferFactory.getArray(properties), BufferFactory.getIndirectBufferByteOffset(properties), listLength, devices, null, null, BufferFactory.getArray(errcode_ret), BufferFactory.getIndirectBufferByteOffset(errcode_ret) ); } private native long clCreateContext1(Object cl_context_properties, int props_offset, int deviceCount, long[] devices, CreateContextCallback pfn_notify, Object userData, Object errcode_ret, int err_offset); public long clCreateContextFromType(LongBuffer properties, long device_type, CreateContextCallback pfn_notify, Object userData, IntBuffer errcode_ret) { if(pfn_notify != null) throw new RuntimeException("asynchronous execution with callback is not yet implemented, pass null through this method to block until complete."); if(userData != null) System.err.println("WARNING: userData not yet implemented... ignoring"); return this.clCreateContextFromType1( BufferFactory.getArray(properties), BufferFactory.getIndirectBufferByteOffset(properties), device_type, pfn_notify, null, BufferFactory.getArray(errcode_ret), BufferFactory.getIndirectBufferByteOffset(errcode_ret) ); } private native long clCreateContextFromType1(Object properties, int props_offset, long device_type, CreateContextCallback pfn_notify, Object userData, Object errcode_ret, int err_offset); /** Interface to C language function:
int32_t clBuildProgram(cl_program, uint32_t, cl_device_id * , const char * , void * ); */ public int clBuildProgram(long program, long[] deviceList, String options, BuildProgramCallback cb, Object userData) { if(cb != null) throw new RuntimeException("asynchronous execution with callback is not yet implemented, pass null through this method to block until complete."); if(userData != null) System.err.println("WARNING: userData not yet implemented... ignoring"); int listLength = 0; if(deviceList != null) listLength = deviceList.length; return clBuildProgram1(program, listLength, deviceList, options, cb, userData); } /** Entry point to C language function: int32_t clBuildProgram(cl_program, uint32_t, cl_device_id * , const char * , void * ); */ private native int clBuildProgram1(long program, int devices, Object deviceList, String options, BuildProgramCallback cb, Object userData); private final static void convert32To64(long[] values) { if(values.length%2 == 1) { values[values.length-1] = values[values.length/2]>>>32; } for (int i = values.length - 1 - values.length%2; i >= 0; i-=2) { long temp = values[i/2]; values[i-1] = temp>>>32; values[i ] = temp & 0x00000000FFFFFFFFL; } }