Added support for OpenCL 1.2 [UNTESTED]
This commit is contained in:
parent
fb788c9ec1
commit
ad7769f9c9
|
@ -36,13 +36,10 @@
|
||||||
<include name="org/lwjgl/opencl/CLPlatform.java"/>
|
<include name="org/lwjgl/opencl/CLPlatform.java"/>
|
||||||
<include name="org/lwjgl/opencl/CLDevice.java"/>
|
<include name="org/lwjgl/opencl/CLDevice.java"/>
|
||||||
<include name="org/lwjgl/opencl/CLContext.java"/>
|
<include name="org/lwjgl/opencl/CLContext.java"/>
|
||||||
<include name="org/lwjgl/opencl/CLContextCallback.java"/>
|
|
||||||
<include name="org/lwjgl/opencl/CLCommandQueue.java"/>
|
<include name="org/lwjgl/opencl/CLCommandQueue.java"/>
|
||||||
<include name="org/lwjgl/opencl/CLMem.java"/>
|
<include name="org/lwjgl/opencl/CLMem.java"/>
|
||||||
<include name="org/lwjgl/opencl/CLMemObjectDestructorCallback.java"/>
|
<include name="org/lwjgl/opencl/CL*Callback.java"/>
|
||||||
<include name="org/lwjgl/opencl/CLBuildProgramCallback.java"/>
|
|
||||||
<include name="org/lwjgl/opencl/CLNativeKernel.java"/>
|
<include name="org/lwjgl/opencl/CLNativeKernel.java"/>
|
||||||
<include name="org/lwjgl/opencl/CLEventCallback.java"/>
|
|
||||||
<include name="org/lwjgl/opencl/CLFunctionAddress.java"/>
|
<include name="org/lwjgl/opencl/CLFunctionAddress.java"/>
|
||||||
</javac>
|
</javac>
|
||||||
</target>
|
</target>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2002-2010 LWJGL Project
|
* Copyright (c) 2002-2011 LWJGL Project
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -31,8 +31,6 @@
|
||||||
*/
|
*/
|
||||||
package org.lwjgl.opencl;
|
package org.lwjgl.opencl;
|
||||||
|
|
||||||
import org.lwjgl.PointerWrapperAbstract;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instances of this class can be used to receive OpenCL program build notifications.
|
* Instances of this class can be used to receive OpenCL program build notifications.
|
||||||
* A single CLBuildProgramCallback instance should only be used with programs created
|
* A single CLBuildProgramCallback instance should only be used with programs created
|
||||||
|
@ -40,37 +38,6 @@ import org.lwjgl.PointerWrapperAbstract;
|
||||||
*
|
*
|
||||||
* @author Spasi
|
* @author Spasi
|
||||||
*/
|
*/
|
||||||
public abstract class CLBuildProgramCallback extends PointerWrapperAbstract {
|
public abstract class CLBuildProgramCallback extends CLProgramCallback {
|
||||||
|
|
||||||
private CLContext context;
|
|
||||||
|
|
||||||
protected CLBuildProgramCallback() {
|
|
||||||
super(CallbackUtil.getBuildProgramCallback());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the context that contains the CLPrograms to which we're registered.
|
|
||||||
*
|
|
||||||
* @param context the CLContext object
|
|
||||||
*/
|
|
||||||
void setContext(final CLContext context) {
|
|
||||||
this.context = context;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called from native code.
|
|
||||||
*
|
|
||||||
* @param program_address the CLProgram object pointer
|
|
||||||
*/
|
|
||||||
private void handleMessage(long program_address) {
|
|
||||||
handleMessage(context.getCLProgram(program_address));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The callback method.
|
|
||||||
*
|
|
||||||
* @param program the CLProgram object that was built
|
|
||||||
*/
|
|
||||||
protected abstract void handleMessage(CLProgram program);
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -53,23 +53,23 @@ final class CLChecks {
|
||||||
/**
|
/**
|
||||||
* Calculates the number of bytes in the specified cl_mem buffer rectangle region.
|
* Calculates the number of bytes in the specified cl_mem buffer rectangle region.
|
||||||
*
|
*
|
||||||
* @param origin the host origin
|
* @param offset the host offset
|
||||||
* @param region the rectangle region
|
* @param region the rectangle region
|
||||||
* @param row_pitch the host row pitch
|
* @param row_pitch the host row pitch
|
||||||
* @param slice_pitch the host slice pitch
|
* @param slice_pitch the host slice pitch
|
||||||
*
|
*
|
||||||
* @return the region size in bytes
|
* @return the region size in bytes
|
||||||
*/
|
*/
|
||||||
static int calculateBufferRectSize(final PointerBuffer origin, final PointerBuffer region, long row_pitch, long slice_pitch) {
|
static int calculateBufferRectSize(final PointerBuffer offset, final PointerBuffer region, long row_pitch, long slice_pitch) {
|
||||||
if ( !LWJGLUtil.CHECKS )
|
if ( !LWJGLUtil.CHECKS )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
final long x = origin.get(0);
|
final long x = offset.get(0);
|
||||||
final long y = origin.get(1);
|
final long y = offset.get(1);
|
||||||
final long z = origin.get(2);
|
final long z = offset.get(2);
|
||||||
|
|
||||||
if ( LWJGLUtil.DEBUG && (x < 0 || y < 0 || z < 0) )
|
if ( LWJGLUtil.DEBUG && (x < 0 || y < 0 || z < 0) )
|
||||||
throw new IllegalArgumentException("Invalid cl_mem host origin: " + x + ", " + y + ", " + z);
|
throw new IllegalArgumentException("Invalid cl_mem host offset: " + x + ", " + y + ", " + z);
|
||||||
|
|
||||||
final long w = region.get(0);
|
final long w = region.get(0);
|
||||||
final long h = region.get(1);
|
final long h = region.get(1);
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2002-2011 LWJGL Project
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are
|
||||||
|
* met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* * Neither the name of 'LWJGL' nor the names of
|
||||||
|
* its contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
package org.lwjgl.opencl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instances of this class can be used to receive OpenCL program compilation notifications.
|
||||||
|
* A single CLCompileProgramCallback instance should only be used with programs created
|
||||||
|
* in the same CLContext.
|
||||||
|
*
|
||||||
|
* @author Spasi
|
||||||
|
*/
|
||||||
|
public abstract class CLCompileProgramCallback extends CLProgramCallback {
|
||||||
|
|
||||||
|
}
|
|
@ -49,10 +49,14 @@ public final class CLContext extends CLObjectChild<CLPlatform> {
|
||||||
private static final CLContextUtil util = (CLContextUtil)CLPlatform.getInfoUtilInstance(CLContext.class, "CL_CONTEXT_UTIL");
|
private static final CLContextUtil util = (CLContextUtil)CLPlatform.getInfoUtilInstance(CLContext.class, "CL_CONTEXT_UTIL");
|
||||||
|
|
||||||
private final CLObjectRegistry<CLCommandQueue> clCommandQueues;
|
private final CLObjectRegistry<CLCommandQueue> clCommandQueues;
|
||||||
private final CLObjectRegistry<CLMem> clMems;
|
private final CLObjectRegistry<CLMem> clMems;
|
||||||
private final CLObjectRegistry<CLSampler> clSamplers;
|
private final CLObjectRegistry<CLSampler> clSamplers;
|
||||||
private final CLObjectRegistry<CLProgram> clPrograms;
|
private final CLObjectRegistry<CLProgram> clPrograms;
|
||||||
private final CLObjectRegistry<CLEvent> clEvents;
|
private final CLObjectRegistry<CLEvent> clEvents;
|
||||||
|
|
||||||
|
private long
|
||||||
|
contextCallback,
|
||||||
|
printfCallback;
|
||||||
|
|
||||||
CLContext(final long pointer, final CLPlatform platform) {
|
CLContext(final long pointer, final CLPlatform platform) {
|
||||||
super(pointer, platform);
|
super(pointer, platform);
|
||||||
|
@ -269,4 +273,50 @@ public final class CLContext extends CLObjectChild<CLPlatform> {
|
||||||
|
|
||||||
CLObjectRegistry<CLEvent> getCLEventRegistry() { return clEvents; }
|
CLObjectRegistry<CLEvent> getCLEventRegistry() { return clEvents; }
|
||||||
|
|
||||||
|
private boolean checkCallback(final long callback, final int result) {
|
||||||
|
if ( result == 0 && (callback == 0 || isValid()) )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if ( callback != 0 )
|
||||||
|
CallbackUtil.deleteGlobalRef(callback);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Associates this context with the specified context callback reference. If the context
|
||||||
|
* is invalid, the callback reference is deleted. NO-OP if user_data is 0.
|
||||||
|
*
|
||||||
|
* @param callback the context callback pointer
|
||||||
|
*/
|
||||||
|
void setContextCallback(final long callback) {
|
||||||
|
if ( checkCallback(callback, 0) )
|
||||||
|
this.contextCallback = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Associates this context with the specified printf callback reference. If the context
|
||||||
|
* is invalid, the callback reference is deleted. NO-OP if user_data is 0.
|
||||||
|
*
|
||||||
|
* @param callback the printf callback pointer
|
||||||
|
*/
|
||||||
|
void setPrintfCallback(final long callback, final int result) {
|
||||||
|
if ( checkCallback(callback, result) )
|
||||||
|
this.printfCallback = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decrements the context's reference count. If the reference
|
||||||
|
* count hits zero, it also deletes
|
||||||
|
* any callback objects associated with it.
|
||||||
|
*/
|
||||||
|
void releaseImpl() {
|
||||||
|
if ( release() > 0 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( contextCallback != 0 )
|
||||||
|
CallbackUtil.deleteGlobalRef(contextCallback);
|
||||||
|
if ( printfCallback != 0 )
|
||||||
|
CallbackUtil.deleteGlobalRef(printfCallback);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2002-2011 LWJGL Project
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are
|
||||||
|
* met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* * Neither the name of 'LWJGL' nor the names of
|
||||||
|
* its contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
package org.lwjgl.opencl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instances of this class can be used to receive OpenCL program linkage notifications.
|
||||||
|
* A single CLLinkProgramCallback instance should only be used with programs created
|
||||||
|
* in the same CLContext.
|
||||||
|
*
|
||||||
|
* @author Spasi
|
||||||
|
*/
|
||||||
|
public abstract class CLLinkProgramCallback extends CLProgramCallback {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2002-2011 LWJGL Project
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are
|
||||||
|
* met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* * Neither the name of 'LWJGL' nor the names of
|
||||||
|
* its contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
package org.lwjgl.opencl;
|
||||||
|
|
||||||
|
import org.lwjgl.PointerWrapperAbstract;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instances of this class can be used to receive OpenCL printf messages.
|
||||||
|
* Different CLContexts should use different CLPrintfCallback instances.
|
||||||
|
*
|
||||||
|
* @author Spasi
|
||||||
|
*/
|
||||||
|
public abstract class CLPrintfCallback extends PointerWrapperAbstract {
|
||||||
|
|
||||||
|
protected CLPrintfCallback() {
|
||||||
|
super(CallbackUtil.getPrintfCallback());
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The callback method. */
|
||||||
|
protected abstract void handleMessage(String data);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2002-2011 LWJGL Project
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are
|
||||||
|
* met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* * Neither the name of 'LWJGL' nor the names of
|
||||||
|
* its contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
package org.lwjgl.opencl;
|
||||||
|
|
||||||
|
import org.lwjgl.PointerWrapperAbstract;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class for OpenCL program action notifications.
|
||||||
|
*
|
||||||
|
* @author Spasi
|
||||||
|
*/
|
||||||
|
abstract class CLProgramCallback extends PointerWrapperAbstract {
|
||||||
|
|
||||||
|
private CLContext context;
|
||||||
|
|
||||||
|
protected CLProgramCallback() {
|
||||||
|
super(CallbackUtil.getProgramCallback());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the context that contains the CLPrograms to which we're registered.
|
||||||
|
*
|
||||||
|
* @param context the CLContext object
|
||||||
|
*/
|
||||||
|
final void setContext(final CLContext context) {
|
||||||
|
this.context = context;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called from native code.
|
||||||
|
*
|
||||||
|
* @param program_address the CLProgram object pointer
|
||||||
|
*/
|
||||||
|
private void handleMessage(long program_address) {
|
||||||
|
handleMessage(context.getCLProgram(program_address));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The callback method.
|
||||||
|
*
|
||||||
|
* @param program the CLProgram object affected
|
||||||
|
*/
|
||||||
|
protected abstract void handleMessage(CLProgram program);
|
||||||
|
|
||||||
|
}
|
|
@ -70,7 +70,7 @@ final class CallbackUtil {
|
||||||
*
|
*
|
||||||
* @param ref the GlobalRef memory address.
|
* @param ref the GlobalRef memory address.
|
||||||
*/
|
*/
|
||||||
private static native void deleteGlobalRef(long ref);
|
static native void deleteGlobalRef(long ref);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes the global reference represented by user_data if an OpenCL error occured.
|
* Deletes the global reference represented by user_data if an OpenCL error occured.
|
||||||
|
@ -99,40 +99,6 @@ final class CallbackUtil {
|
||||||
*/
|
*/
|
||||||
static native long getContextCallback();
|
static native long getContextCallback();
|
||||||
|
|
||||||
/**
|
|
||||||
* Associates the specified CLContext with the specified global reference. If the context
|
|
||||||
* is invalid, the global reference is deleted. NO-OP if user_data is 0.
|
|
||||||
*
|
|
||||||
* @param context the CLContext to register
|
|
||||||
* @param user_data the global reference pointer
|
|
||||||
*/
|
|
||||||
static void registerCallback(final CLContext context, final long user_data) {
|
|
||||||
if ( user_data == 0 )
|
|
||||||
return;
|
|
||||||
|
|
||||||
if ( context.isValid() )
|
|
||||||
contextUserData.put(context, user_data);
|
|
||||||
else
|
|
||||||
deleteGlobalRef(user_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Decrements the specified context's reference count, clears its association
|
|
||||||
* with a CLContextCallback object if it exists and deletes the corresponding
|
|
||||||
* global reference.
|
|
||||||
*
|
|
||||||
* @param context the CLContext to unregister
|
|
||||||
*/
|
|
||||||
static void unregisterCallback(final CLContext context) {
|
|
||||||
if ( context.release() > 0 )
|
|
||||||
return;
|
|
||||||
|
|
||||||
final Long user_data = contextUserData.remove(context);
|
|
||||||
|
|
||||||
if ( user_data != null )
|
|
||||||
deleteGlobalRef(user_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* [ Other callback functionality ]
|
/* [ Other callback functionality ]
|
||||||
The other callbacks are simpler. We create the GlobalRef before passing the callback,
|
The other callbacks are simpler. We create the GlobalRef before passing the callback,
|
||||||
we delete it when we receive the callback call.
|
we delete it when we receive the callback call.
|
||||||
|
@ -150,7 +116,7 @@ final class CallbackUtil {
|
||||||
*
|
*
|
||||||
* @return the callback function address
|
* @return the callback function address
|
||||||
*/
|
*/
|
||||||
static native long getBuildProgramCallback();
|
static native long getProgramCallback();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the memory address of the native function we pass to clEnqueueNativeKernel.
|
* Returns the memory address of the native function we pass to clEnqueueNativeKernel.
|
||||||
|
@ -166,6 +132,13 @@ final class CallbackUtil {
|
||||||
*/
|
*/
|
||||||
static native long getEventCallback();
|
static native long getEventCallback();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the memory address of the native function we pass to clSetPrintfCallback.
|
||||||
|
*
|
||||||
|
* @return the callback function address
|
||||||
|
*/
|
||||||
|
static native long getPrintfCallback();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the memory address of the native function we pass to clCreateContext(FromType),
|
* Returns the memory address of the native function we pass to clCreateContext(FromType),
|
||||||
* when <code>APPLEContextLoggingUtil.SYSTEM_LOG_CALLBACK</code> is used.
|
* when <code>APPLEContextLoggingUtil.SYSTEM_LOG_CALLBACK</code> is used.
|
||||||
|
|
|
@ -123,7 +123,7 @@ final class InfoUtilFactory {
|
||||||
Util.checkCLError(errcode_ret.get(0));
|
Util.checkCLError(errcode_ret.get(0));
|
||||||
return __result;
|
return __result;
|
||||||
} finally {
|
} finally {
|
||||||
CallbackUtil.registerCallback(__result, user_data);
|
if ( __result != null ) __result.setContextCallback(user_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -373,20 +373,22 @@ public class Utils {
|
||||||
if ( param != null && p.getSimpleName().equals(param.getSimpleName()) )
|
if ( param != null && p.getSimpleName().equals(param.getSimpleName()) )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
if ( p.getAnnotation(NullTerminated.class) != null )
|
||||||
|
continue;
|
||||||
|
|
||||||
final Class type = Utils.getJavaType(p.getType());
|
final Class type = Utils.getJavaType(p.getType());
|
||||||
if ( type.equals(CharSequence.class) ) {
|
if ( type.equals(CharSequence.class) ) {
|
||||||
if ( offset == null )
|
if ( offset == null )
|
||||||
offset = p.getSimpleName() + ".length()";
|
offset = p.getSimpleName() + ".length()";
|
||||||
else
|
else
|
||||||
offset += " + " + p.getSimpleName() + ".length()";
|
offset += " + " + p.getSimpleName() + ".length()";
|
||||||
if ( p.getAnnotation(NullTerminated.class) != null ) offset += " + 1";
|
//if ( p.getAnnotation(NullTerminated.class) != null ) offset += " + 1";
|
||||||
|
|
||||||
} else if ( type.equals(CharSequence[].class) ) {
|
} else if ( type.equals(CharSequence[].class) ) {
|
||||||
if ( offset == null )
|
if ( offset == null )
|
||||||
offset = "APIUtil.getTotalLength(" + p.getSimpleName() + ")";
|
offset = "APIUtil.getTotalLength(" + p.getSimpleName() + ")";
|
||||||
else
|
else
|
||||||
offset += " + APIUtil.getTotalLength(" + p.getSimpleName() + ")";
|
offset += " + APIUtil.getTotalLength(" + p.getSimpleName() + ")";
|
||||||
if ( p.getAnnotation(NullTerminated.class) != null ) offset += " + " + p.getSimpleName() + ".length";
|
//if ( p.getAnnotation(NullTerminated.class) != null ) offset += " + " + p.getSimpleName() + ".length";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ public class CLPDCapabilitiesGenerator {
|
||||||
|
|
||||||
// TODO: Add future versions here
|
// TODO: Add future versions here
|
||||||
private static final int[][] CL_VERSIONS = {
|
private static final int[][] CL_VERSIONS = {
|
||||||
{ 1 }, // OpenCL 1
|
{ 1, 2 }, // OpenCL 1
|
||||||
};
|
};
|
||||||
|
|
||||||
static void generateClassPrologue(final PrintWriter writer, final String name) {
|
static void generateClassPrologue(final PrintWriter writer, final String name) {
|
||||||
|
|
|
@ -61,9 +61,10 @@ typedef GLsync cl_GLsync;
|
||||||
|
|
||||||
typedef void (CL_CALLBACK * cl_create_context_callback)(const char *errinfo, const void *private_info, size_t cb, void *user_data);
|
typedef void (CL_CALLBACK * cl_create_context_callback)(const char *errinfo, const void *private_info, size_t cb, void *user_data);
|
||||||
typedef void (CL_CALLBACK * cl_mem_object_destructor_callback)(cl_mem memobj, void *user_data);
|
typedef void (CL_CALLBACK * cl_mem_object_destructor_callback)(cl_mem memobj, void *user_data);
|
||||||
typedef void (CL_CALLBACK * cl_build_program_callback)(cl_program program, void *user_data);
|
typedef void (CL_CALLBACK * cl_program_callback)(cl_program program, void *user_data);
|
||||||
typedef void (CL_CALLBACK * cl_event_callback)(cl_event event, cl_int event_command_exec_status, void *user_data);
|
typedef void (CL_CALLBACK * cl_event_callback)(cl_event event, cl_int event_command_exec_status, void *user_data);
|
||||||
typedef void (CL_CALLBACK * cl_native_kernel_func)(void *args);
|
typedef void (CL_CALLBACK * cl_native_kernel_func)(void *args);
|
||||||
|
typedef void (CL_CALLBACK * cl_printf_callback)(cl_context context, cl_uint printf_data_len, char *printf_data_ptr, void *user_data);
|
||||||
|
|
||||||
// -----------------[ Cross-platform functions ]-----------------
|
// -----------------[ Cross-platform functions ]-----------------
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,10 @@ typedef cl_uint cl_device_mem_cache_type;
|
||||||
typedef cl_uint cl_device_local_mem_type;
|
typedef cl_uint cl_device_local_mem_type;
|
||||||
typedef cl_bitfield cl_device_exec_capabilities;
|
typedef cl_bitfield cl_device_exec_capabilities;
|
||||||
typedef cl_bitfield cl_command_queue_properties;
|
typedef cl_bitfield cl_command_queue_properties;
|
||||||
|
typedef intptr_t cl_device_partition_property;
|
||||||
|
typedef cl_bitfield cl_device_affinity_domain;
|
||||||
|
|
||||||
typedef intptr_t cl_context_properties;
|
typedef intptr_t cl_context_properties;
|
||||||
typedef cl_uint cl_context_info;
|
typedef cl_uint cl_context_info;
|
||||||
typedef cl_uint cl_command_queue_info;
|
typedef cl_uint cl_command_queue_info;
|
||||||
typedef cl_uint cl_channel_order;
|
typedef cl_uint cl_channel_order;
|
||||||
|
@ -29,6 +31,7 @@ typedef cl_uint cl_channel_type;
|
||||||
typedef cl_bitfield cl_mem_flags;
|
typedef cl_bitfield cl_mem_flags;
|
||||||
typedef cl_uint cl_mem_object_type;
|
typedef cl_uint cl_mem_object_type;
|
||||||
typedef cl_uint cl_mem_info;
|
typedef cl_uint cl_mem_info;
|
||||||
|
typedef cl_bitfield cl_mem_migration_flags;
|
||||||
typedef cl_uint cl_image_info;
|
typedef cl_uint cl_image_info;
|
||||||
typedef cl_uint cl_buffer_create_type;
|
typedef cl_uint cl_buffer_create_type;
|
||||||
typedef cl_uint cl_addressing_mode;
|
typedef cl_uint cl_addressing_mode;
|
||||||
|
@ -37,8 +40,12 @@ typedef cl_uint cl_sampler_info;
|
||||||
typedef cl_bitfield cl_map_flags;
|
typedef cl_bitfield cl_map_flags;
|
||||||
typedef cl_uint cl_program_info;
|
typedef cl_uint cl_program_info;
|
||||||
typedef cl_uint cl_program_build_info;
|
typedef cl_uint cl_program_build_info;
|
||||||
|
typedef cl_uint cl_program_binary_type;
|
||||||
typedef cl_int cl_build_status;
|
typedef cl_int cl_build_status;
|
||||||
typedef cl_uint cl_kernel_info;
|
typedef cl_uint cl_kernel_info;
|
||||||
|
typedef cl_uint cl_kernel_arg_info;
|
||||||
|
typedef cl_uint cl_kernel_arg_address_qualifier;
|
||||||
|
typedef cl_uint cl_kernel_arg_access_qualifier;
|
||||||
typedef cl_uint cl_kernel_work_group_info;
|
typedef cl_uint cl_kernel_work_group_info;
|
||||||
typedef cl_uint cl_event_info;
|
typedef cl_uint cl_event_info;
|
||||||
typedef cl_uint cl_command_type;
|
typedef cl_uint cl_command_type;
|
||||||
|
@ -49,6 +56,19 @@ typedef struct _cl_image_format {
|
||||||
cl_channel_type image_channel_data_type;
|
cl_channel_type image_channel_data_type;
|
||||||
} cl_image_format;
|
} cl_image_format;
|
||||||
|
|
||||||
|
typedef struct _cl_image_desc {
|
||||||
|
cl_mem_object_type image_type;
|
||||||
|
size_t image_width;
|
||||||
|
size_t image_height;
|
||||||
|
size_t image_depth;
|
||||||
|
size_t image_array_size;
|
||||||
|
size_t image_row_pitch;
|
||||||
|
size_t image_slice_pitch;
|
||||||
|
cl_uint num_mip_levels;
|
||||||
|
cl_uint num_samples;
|
||||||
|
cl_mem buffer;
|
||||||
|
} cl_image_desc;
|
||||||
|
|
||||||
typedef struct _cl_buffer_region {
|
typedef struct _cl_buffer_region {
|
||||||
size_t origin;
|
size_t origin;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
@ -63,7 +83,7 @@ typedef cl_uint cl_gl_texture_info;
|
||||||
// -----------------[ Extension typedefs ]-----------------
|
// -----------------[ Extension typedefs ]-----------------
|
||||||
|
|
||||||
// EXT_device_fission
|
// EXT_device_fission
|
||||||
typedef cl_bitfield cl_device_partition_property_ext;
|
typedef cl_ulong cl_device_partition_property_ext;
|
||||||
// EXT_migrate_memobject
|
// EXT_migrate_memobject
|
||||||
typedef cl_bitfield cl_mem_migration_flags_ext;
|
typedef cl_bitfield cl_mem_migration_flags_ext;
|
||||||
|
|
||||||
|
|
|
@ -43,9 +43,10 @@
|
||||||
|
|
||||||
static jmethodID contextCallbackJ;
|
static jmethodID contextCallbackJ;
|
||||||
static jmethodID memObjectDestructorCallbackJ;
|
static jmethodID memObjectDestructorCallbackJ;
|
||||||
static jmethodID buildProgramCallbackJ;
|
static jmethodID programCallbackJ;
|
||||||
static jmethodID nativeKernelCallbackJ;
|
static jmethodID nativeKernelCallbackJ;
|
||||||
static jmethodID eventCallbackJ;
|
static jmethodID eventCallbackJ;
|
||||||
|
static jmethodID printfCallbackJ;
|
||||||
|
|
||||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_opencl_CallbackUtil_ncreateGlobalRef(JNIEnv *env, jclass clazz, jobject obj) {
|
JNIEXPORT jlong JNICALL Java_org_lwjgl_opencl_CallbackUtil_ncreateGlobalRef(JNIEnv *env, jclass clazz, jobject obj) {
|
||||||
return (intptr_t)(*env)->NewGlobalRef(env, obj);
|
return (intptr_t)(*env)->NewGlobalRef(env, obj);
|
||||||
|
@ -113,13 +114,13 @@ JNIEXPORT jlong JNICALL Java_org_lwjgl_opencl_CallbackUtil_getMemObjectDestructo
|
||||||
return (jlong)(intptr_t)&memObjectDestructorCallback;
|
return (jlong)(intptr_t)&memObjectDestructorCallback;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------- [ MEM OBJECT DESTRUCTOR CALLBACK ] -----------------
|
// ----------------- [ PROGRAM CALLBACK ] -----------------
|
||||||
|
|
||||||
static void CL_CALLBACK buildProgramCallback(cl_program program, void *user_data) {
|
static void CL_CALLBACK programCallback(cl_program program, void *user_data) {
|
||||||
JNIEnv *env = attachCurrentThread();
|
JNIEnv *env = attachCurrentThread();
|
||||||
|
|
||||||
if ( env != NULL && !(*env)->ExceptionOccurred(env) && buildProgramCallbackJ != NULL ) {
|
if ( env != NULL && !(*env)->ExceptionOccurred(env) && programCallbackJ != NULL ) {
|
||||||
(*env)->CallVoidMethod(env, (jobject)user_data, buildProgramCallbackJ,
|
(*env)->CallVoidMethod(env, (jobject)user_data, programCallbackJ,
|
||||||
(jlong)(intptr_t)program
|
(jlong)(intptr_t)program
|
||||||
);
|
);
|
||||||
(*env)->DeleteGlobalRef(env, (jobject)user_data);
|
(*env)->DeleteGlobalRef(env, (jobject)user_data);
|
||||||
|
@ -128,16 +129,16 @@ static void CL_CALLBACK buildProgramCallback(cl_program program, void *user_data
|
||||||
detachCurrentThread();
|
detachCurrentThread();
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_opencl_CallbackUtil_getBuildProgramCallback(JNIEnv *env, jclass clazz) {
|
JNIEXPORT jlong JNICALL Java_org_lwjgl_opencl_CallbackUtil_getProgramCallback(JNIEnv *env, jclass clazz) {
|
||||||
// Cache the callback methodID
|
// Cache the callback methodID
|
||||||
jclass callbackClass;
|
jclass callbackClass;
|
||||||
if ( buildProgramCallbackJ == NULL ) {
|
if ( programCallbackJ == NULL ) {
|
||||||
callbackClass = (*env)->FindClass(env, "org/lwjgl/opencl/CLBuildProgramCallback");
|
callbackClass = (*env)->FindClass(env, "org/lwjgl/opencl/CLProgramCallback");
|
||||||
if ( callbackClass != NULL )
|
if ( callbackClass != NULL )
|
||||||
buildProgramCallbackJ = (*env)->GetMethodID(env, callbackClass, "handleMessage", "(J)V");
|
programCallbackJ = (*env)->GetMethodID(env, callbackClass, "handleMessage", "(J)V");
|
||||||
}
|
}
|
||||||
|
|
||||||
return (jlong)(intptr_t)&buildProgramCallback;
|
return (jlong)(intptr_t)&programCallback;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------- [ NATIVE KERNEL CALLBACK ] -----------------
|
// ----------------- [ NATIVE KERNEL CALLBACK ] -----------------
|
||||||
|
@ -214,6 +215,32 @@ JNIEXPORT jlong JNICALL Java_org_lwjgl_opencl_CallbackUtil_getEventCallback(JNIE
|
||||||
return (jlong)(intptr_t)&eventCallback;
|
return (jlong)(intptr_t)&eventCallback;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----------------- [ PRINTF CALLBACK ] -----------------
|
||||||
|
|
||||||
|
static void CL_CALLBACK printfCallback(cl_context context, cl_uint printf_data_len, char *printf_data_ptr, void *user_data) {
|
||||||
|
JNIEnv *env = attachCurrentThread();
|
||||||
|
|
||||||
|
if ( env != NULL && !(*env)->ExceptionOccurred(env) && printfCallbackJ != NULL ) {
|
||||||
|
(*env)->CallVoidMethod(env, (jobject)user_data, printfCallbackJ,
|
||||||
|
NewStringNativeWithLength(env, printf_data_ptr, printf_data_len)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
detachCurrentThread();
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jlong JNICALL Java_org_lwjgl_opencl_CallbackUtil_getPrintfCallback(JNIEnv *env, jclass clazz) {
|
||||||
|
// Cache the callback methodID
|
||||||
|
jclass callbackClass;
|
||||||
|
if ( printfCallbackJ == NULL ) {
|
||||||
|
callbackClass = (*env)->FindClass(env, "org/lwjgl/opencl/CLPrintfCallback");
|
||||||
|
if ( callbackClass != NULL )
|
||||||
|
printfCallbackJ = (*env)->GetMethodID(env, callbackClass, "handleMessage", "(Ljava/lang/String;)V");
|
||||||
|
}
|
||||||
|
|
||||||
|
return (jlong)(intptr_t)&printfCallback;
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------- [ APPLE_ContextLoggingFunctions CALLBACKS ] -----------------
|
// ----------------- [ APPLE_ContextLoggingFunctions CALLBACKS ] -----------------
|
||||||
|
|
||||||
JNIEXPORT jlong JNICALL Java_org_lwjgl_opencl_CallbackUtil_getLogMessageToSystemLogAPPLE(JNIEnv *env, jclass clazz) {
|
JNIEXPORT jlong JNICALL Java_org_lwjgl_opencl_CallbackUtil_getLogMessageToSystemLogAPPLE(JNIEnv *env, jclass clazz) {
|
||||||
|
|
|
@ -399,7 +399,7 @@ public interface CL10 {
|
||||||
// Create a GlobalRef to the callback object.
|
// Create a GlobalRef to the callback object.
|
||||||
javaBeforeNative = "\t\tlong user_data = pfn_notify == null || pfn_notify.isCustom() ? 0 : CallbackUtil.createGlobalRef(pfn_notify);",
|
javaBeforeNative = "\t\tlong user_data = pfn_notify == null || pfn_notify.isCustom() ? 0 : CallbackUtil.createGlobalRef(pfn_notify);",
|
||||||
// Associate context with the GlobalRef, so we can delete it later.
|
// Associate context with the GlobalRef, so we can delete it later.
|
||||||
javaFinally = "\t\t\tCallbackUtil.registerCallback(__result, user_data);"
|
javaFinally = "\t\t\tif ( __result != null ) __result.setContextCallback(user_data);"
|
||||||
)
|
)
|
||||||
@Check(value = "errcode_ret", canBeNull = true)
|
@Check(value = "errcode_ret", canBeNull = true)
|
||||||
@PointerWrapper(value = "cl_context", params = "APIUtil.getCLPlatform(properties)")
|
@PointerWrapper(value = "cl_context", params = "APIUtil.getCLPlatform(properties)")
|
||||||
|
@ -417,7 +417,7 @@ public interface CL10 {
|
||||||
// Create a GlobalRef to the callback object.
|
// Create a GlobalRef to the callback object.
|
||||||
javaBeforeNative = "\t\tlong user_data = pfn_notify == null || pfn_notify.isCustom() ? 0 : CallbackUtil.createGlobalRef(pfn_notify);",
|
javaBeforeNative = "\t\tlong user_data = pfn_notify == null || pfn_notify.isCustom() ? 0 : CallbackUtil.createGlobalRef(pfn_notify);",
|
||||||
// Associate context with the GlobalRef, so we can delete it later.
|
// Associate context with the GlobalRef, so we can delete it later.
|
||||||
javaFinally = "\t\t\tCallbackUtil.registerCallback(__result, user_data);"
|
javaFinally = "\t\t\tif ( __result != null ) __result.setContextCallback(user_data);"
|
||||||
)
|
)
|
||||||
@Check(value = "errcode_ret", canBeNull = true)
|
@Check(value = "errcode_ret", canBeNull = true)
|
||||||
@PointerWrapper(value = "cl_context", params = "APIUtil.getCLPlatform(properties)")
|
@PointerWrapper(value = "cl_context", params = "APIUtil.getCLPlatform(properties)")
|
||||||
|
@ -434,7 +434,7 @@ public interface CL10 {
|
||||||
// Create a GlobalRef to the callback object.
|
// Create a GlobalRef to the callback object.
|
||||||
javaBeforeNative = "\t\tlong user_data = pfn_notify == null || pfn_notify.isCustom() ? 0 : CallbackUtil.createGlobalRef(pfn_notify);",
|
javaBeforeNative = "\t\tlong user_data = pfn_notify == null || pfn_notify.isCustom() ? 0 : CallbackUtil.createGlobalRef(pfn_notify);",
|
||||||
// Associate context with the GlobalRef, so we can delete it later.
|
// Associate context with the GlobalRef, so we can delete it later.
|
||||||
javaFinally = "\t\t\tCallbackUtil.registerCallback(__result, user_data);"
|
javaFinally = "\t\t\tif ( __result != null ) __result.setContextCallback(user_data);"
|
||||||
)
|
)
|
||||||
@Check(value = "errcode_ret", canBeNull = true)
|
@Check(value = "errcode_ret", canBeNull = true)
|
||||||
@PointerWrapper(value = "cl_context", params = "APIUtil.getCLPlatform(properties)")
|
@PointerWrapper(value = "cl_context", params = "APIUtil.getCLPlatform(properties)")
|
||||||
|
@ -450,7 +450,7 @@ public interface CL10 {
|
||||||
|
|
||||||
@Code(
|
@Code(
|
||||||
javaBeforeNative = "\t\tAPIUtil.releaseObjects(context);",
|
javaBeforeNative = "\t\tAPIUtil.releaseObjects(context);",
|
||||||
javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) CallbackUtil.unregisterCallback(context);"
|
javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) context.releaseImpl();"
|
||||||
)
|
)
|
||||||
@cl_int
|
@cl_int
|
||||||
int clReleaseContext(@PointerWrapper("cl_context") CLContext context);
|
int clReleaseContext(@PointerWrapper("cl_context") CLContext context);
|
||||||
|
@ -511,7 +511,7 @@ public interface CL10 {
|
||||||
@PointerWrapper("cl_mem") CLMem buffer,
|
@PointerWrapper("cl_mem") CLMem buffer,
|
||||||
@cl_bool int blocking_read,
|
@cl_bool int blocking_read,
|
||||||
@size_t long offset,
|
@size_t long offset,
|
||||||
@AutoSize("ptr") @size_t long cb,
|
@AutoSize("ptr") @size_t long size,
|
||||||
@OutParameter
|
@OutParameter
|
||||||
@cl_byte
|
@cl_byte
|
||||||
@cl_short
|
@cl_short
|
||||||
|
@ -529,7 +529,7 @@ public interface CL10 {
|
||||||
@PointerWrapper("cl_mem") CLMem buffer,
|
@PointerWrapper("cl_mem") CLMem buffer,
|
||||||
@cl_bool int blocking_write,
|
@cl_bool int blocking_write,
|
||||||
@size_t long offset,
|
@size_t long offset,
|
||||||
@AutoSize("ptr") @size_t long cb,
|
@AutoSize("ptr") @size_t long size,
|
||||||
@Const
|
@Const
|
||||||
@cl_byte
|
@cl_byte
|
||||||
@cl_short
|
@cl_short
|
||||||
|
@ -548,7 +548,7 @@ public interface CL10 {
|
||||||
@PointerWrapper("cl_mem") CLMem dst_buffer,
|
@PointerWrapper("cl_mem") CLMem dst_buffer,
|
||||||
@size_t long src_offset,
|
@size_t long src_offset,
|
||||||
@size_t long dst_offset,
|
@size_t long dst_offset,
|
||||||
@size_t long cb,
|
@size_t long size,
|
||||||
@AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list,
|
@AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list,
|
||||||
@Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list,
|
@Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list,
|
||||||
@OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event);
|
@OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event);
|
||||||
|
@ -556,13 +556,13 @@ public interface CL10 {
|
||||||
@Code(javaAfterNative = "\t\tif ( __result != null ) command_queue.registerCLEvent(event);")
|
@Code(javaAfterNative = "\t\tif ( __result != null ) command_queue.registerCLEvent(event);")
|
||||||
@Check(value = "errcode_ret", canBeNull = true)
|
@Check(value = "errcode_ret", canBeNull = true)
|
||||||
@cl_void
|
@cl_void
|
||||||
@AutoSize("cb")
|
@AutoSize("size")
|
||||||
ByteBuffer clEnqueueMapBuffer(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue,
|
ByteBuffer clEnqueueMapBuffer(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue,
|
||||||
@PointerWrapper("cl_mem") CLMem buffer,
|
@PointerWrapper("cl_mem") CLMem buffer,
|
||||||
@cl_bool int blocking_map,
|
@cl_bool int blocking_map,
|
||||||
@NativeType("cl_map_flags") long map_flags,
|
@NativeType("cl_map_flags") long map_flags,
|
||||||
@size_t long offset,
|
@size_t long offset,
|
||||||
@size_t long cb,
|
@size_t long size,
|
||||||
@AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list,
|
@AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list,
|
||||||
@Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list,
|
@Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list,
|
||||||
@OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event,
|
@OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event,
|
||||||
|
@ -855,7 +855,7 @@ public interface CL10 {
|
||||||
@AutoSize(value = "device_list", canBeNull = true) @cl_uint int num_devices,
|
@AutoSize(value = "device_list", canBeNull = true) @cl_uint int num_devices,
|
||||||
@Check(canBeNull = true) @Const @NativeType("cl_device_id") PointerBuffer device_list,
|
@Check(canBeNull = true) @Const @NativeType("cl_device_id") PointerBuffer device_list,
|
||||||
@Check @NullTerminated @Const @cl_char ByteBuffer options,
|
@Check @NullTerminated @Const @cl_char ByteBuffer options,
|
||||||
@PointerWrapper(value = "cl_build_program_callback", canBeNull = true) CLBuildProgramCallback pfn_notify,
|
@PointerWrapper(value = "cl_program_callback", canBeNull = true) CLBuildProgramCallback pfn_notify,
|
||||||
@Constant("user_data") @PointerWrapper("void *") long user_data);
|
@Constant("user_data") @PointerWrapper("void *") long user_data);
|
||||||
|
|
||||||
@Alternate("clBuildProgram")
|
@Alternate("clBuildProgram")
|
||||||
|
@ -872,7 +872,7 @@ public interface CL10 {
|
||||||
@AutoSize(value = "device_list", canBeNull = true) @cl_uint int num_devices,
|
@AutoSize(value = "device_list", canBeNull = true) @cl_uint int num_devices,
|
||||||
@Check(canBeNull = true) @Const @NativeType("cl_device_id") PointerBuffer device_list,
|
@Check(canBeNull = true) @Const @NativeType("cl_device_id") PointerBuffer device_list,
|
||||||
@NullTerminated @Const CharSequence options,
|
@NullTerminated @Const CharSequence options,
|
||||||
@PointerWrapper(value = "cl_build_program_callback", canBeNull = true) CLBuildProgramCallback pfn_notify,
|
@PointerWrapper(value = "cl_program_callback", canBeNull = true) CLBuildProgramCallback pfn_notify,
|
||||||
@Constant("user_data") @PointerWrapper("void *") long user_data);
|
@Constant("user_data") @PointerWrapper("void *") long user_data);
|
||||||
|
|
||||||
@Alternate("clBuildProgram")
|
@Alternate("clBuildProgram")
|
||||||
|
@ -889,7 +889,7 @@ public interface CL10 {
|
||||||
@Constant("1") @cl_uint int num_devices,
|
@Constant("1") @cl_uint int num_devices,
|
||||||
@Constant(value = "APIUtil.getPointer(device)", keepParam = true) CLDevice device,
|
@Constant(value = "APIUtil.getPointer(device)", keepParam = true) CLDevice device,
|
||||||
@NullTerminated @Const CharSequence options,
|
@NullTerminated @Const CharSequence options,
|
||||||
@PointerWrapper(value = "cl_build_program_callback", canBeNull = true) CLBuildProgramCallback pfn_notify,
|
@PointerWrapper(value = "cl_program_callback", canBeNull = true) CLBuildProgramCallback pfn_notify,
|
||||||
@Constant("user_data") @PointerWrapper("void *") long user_data);
|
@Constant("user_data") @PointerWrapper("void *") long user_data);
|
||||||
|
|
||||||
@cl_int
|
@cl_int
|
||||||
|
|
|
@ -121,14 +121,14 @@ public interface CL11 {
|
||||||
int clEnqueueReadBufferRect(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue,
|
int clEnqueueReadBufferRect(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue,
|
||||||
@PointerWrapper("cl_mem") CLMem buffer,
|
@PointerWrapper("cl_mem") CLMem buffer,
|
||||||
@cl_bool int blocking_read,
|
@cl_bool int blocking_read,
|
||||||
@Const @Check("3") @NativeType("size_t") PointerBuffer buffer_origin,
|
@Const @Check("3") @NativeType("size_t") PointerBuffer buffer_offset,
|
||||||
@Const @Check("3") @NativeType("size_t") PointerBuffer host_origin,
|
@Const @Check("3") @NativeType("size_t") PointerBuffer host_offset,
|
||||||
@Const @Check("3") @NativeType("size_t") PointerBuffer region,
|
@Const @Check("3") @NativeType("size_t") PointerBuffer region,
|
||||||
@size_t long buffer_row_pitch,
|
@size_t long buffer_row_pitch,
|
||||||
@size_t long buffer_slice_pitch,
|
@size_t long buffer_slice_pitch,
|
||||||
@size_t long host_row_pitch,
|
@size_t long host_row_pitch,
|
||||||
@size_t long host_slice_pitch,
|
@size_t long host_slice_pitch,
|
||||||
@OutParameter @Check("CLChecks.calculateBufferRectSize(host_origin, region, host_row_pitch, host_slice_pitch)")
|
@OutParameter @Check("CLChecks.calculateBufferRectSize(host_offset, region, host_row_pitch, host_slice_pitch)")
|
||||||
@cl_byte
|
@cl_byte
|
||||||
@cl_short
|
@cl_short
|
||||||
@cl_int
|
@cl_int
|
||||||
|
@ -144,14 +144,14 @@ public interface CL11 {
|
||||||
int clEnqueueWriteBufferRect(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue,
|
int clEnqueueWriteBufferRect(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue,
|
||||||
@PointerWrapper("cl_mem") CLMem buffer,
|
@PointerWrapper("cl_mem") CLMem buffer,
|
||||||
@cl_bool int blocking_write,
|
@cl_bool int blocking_write,
|
||||||
@Const @Check("3") @NativeType("size_t") PointerBuffer buffer_origin,
|
@Const @Check("3") @NativeType("size_t") PointerBuffer buffer_offset,
|
||||||
@Const @Check("3") @NativeType("size_t") PointerBuffer host_origin,
|
@Const @Check("3") @NativeType("size_t") PointerBuffer host_offset,
|
||||||
@Const @Check("3") @NativeType("size_t") PointerBuffer region,
|
@Const @Check("3") @NativeType("size_t") PointerBuffer region,
|
||||||
@size_t long buffer_row_pitch,
|
@size_t long buffer_row_pitch,
|
||||||
@size_t long buffer_slice_pitch,
|
@size_t long buffer_slice_pitch,
|
||||||
@size_t long host_row_pitch,
|
@size_t long host_row_pitch,
|
||||||
@size_t long host_slice_pitch,
|
@size_t long host_slice_pitch,
|
||||||
@Const @Check("CLChecks.calculateBufferRectSize(host_origin, region, host_row_pitch, host_slice_pitch)")
|
@Const @Check("CLChecks.calculateBufferRectSize(host_offset, region, host_row_pitch, host_slice_pitch)")
|
||||||
@cl_byte
|
@cl_byte
|
||||||
@cl_short
|
@cl_short
|
||||||
@cl_int
|
@cl_int
|
||||||
|
|
|
@ -0,0 +1,445 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2002-2008 LWJGL Project
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are
|
||||||
|
* met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* * Neither the name of 'LWJGL' nor the names of
|
||||||
|
* its contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
package org.lwjgl.opencl;
|
||||||
|
|
||||||
|
import org.lwjgl.PointerBuffer;
|
||||||
|
import org.lwjgl.util.generator.*;
|
||||||
|
import org.lwjgl.util.generator.opencl.*;
|
||||||
|
|
||||||
|
import java.nio.Buffer;
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import java.nio.IntBuffer;
|
||||||
|
import java.nio.LongBuffer;
|
||||||
|
|
||||||
|
/** The core OpenCL 1.1 API */
|
||||||
|
public interface CL12 {
|
||||||
|
|
||||||
|
/** Error Codes */
|
||||||
|
int CL_COMPILE_PROGRAM_FAILURE = -15,
|
||||||
|
CL_LINKER_NOT_AVAILABLE = -16,
|
||||||
|
CL_LINK_PROGRAM_FAILURE = -17,
|
||||||
|
CL_DEVICE_PARTITION_FAILED = -18,
|
||||||
|
CL_KERNEL_ARG_INFO_NOT_AVAILABLE = -19,
|
||||||
|
CL_INVALID_IMAGE_DESCRIPTOR = -65,
|
||||||
|
CL_INVALID_COMPILER_OPTIONS = -66,
|
||||||
|
CL_INVALID_LINKER_OPTIONS = -67,
|
||||||
|
CL_INVALID_DEVICE_PARTITION_COUNT = -68;
|
||||||
|
|
||||||
|
/** OpenCL Version */
|
||||||
|
int CL_VERSION_1_2 = 1;
|
||||||
|
|
||||||
|
/** cl_bool */
|
||||||
|
int CL_BLOCKING = CL10.CL_TRUE,
|
||||||
|
CL_NON_BLOCKING = CL10.CL_FALSE;
|
||||||
|
|
||||||
|
/** cl_device_type - bitfield */
|
||||||
|
int CL_DEVICE_TYPE_CUSTOM = (1 << 4);
|
||||||
|
|
||||||
|
/* cl_device_info */
|
||||||
|
int CL_DEVICE_DOUBLE_FP_CONFIG = 0x1032,
|
||||||
|
CL_DEVICE_LINKER_AVAILABLE = 0x103E,
|
||||||
|
CL_DEVICE_BUILT_IN_KERNELS = 0x103F,
|
||||||
|
CL_DEVICE_IMAGE_MAX_BUFFER_SIZE = 0x1040,
|
||||||
|
CL_DEVICE_IMAGE_MAX_ARRAY_SIZE = 0x1041,
|
||||||
|
CL_DEVICE_PARENT_DEVICE = 0x1042,
|
||||||
|
CL_DEVICE_PARTITION_MAX_SUB_DEVICES = 0x1043,
|
||||||
|
CL_DEVICE_PARTITION_PROPERTIES = 0x1044,
|
||||||
|
CL_DEVICE_PARTITION_AFFINITY_DOMAIN = 0x1045,
|
||||||
|
CL_DEVICE_PARTITION_TYPE = 0x1046,
|
||||||
|
CL_DEVICE_REFERENCE_COUNT = 0x1047,
|
||||||
|
CL_DEVICE_PREFERRED_INTEROP_USER_SYNC = 0x1048,
|
||||||
|
CL_DEVICE_PRINTF_BUFFER_SIZE = 0x1049;
|
||||||
|
|
||||||
|
/* cl_device_fp_config - bitfield */
|
||||||
|
int CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT = (1 << 7);
|
||||||
|
|
||||||
|
/* cl_context_properties */
|
||||||
|
int CL_CONTEXT_INTEROP_USER_SYNC = 0x1085;
|
||||||
|
|
||||||
|
/* cl_device_partition_property */
|
||||||
|
int CL_DEVICE_PARTITION_EQUALLY = 0x1086,
|
||||||
|
CL_DEVICE_PARTITION_BY_COUNTS = 0x1087,
|
||||||
|
CL_DEVICE_PARTITION_BY_COUNTS_LIST_END = 0x0,
|
||||||
|
CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN = 0x1088;
|
||||||
|
|
||||||
|
/* cl_device_affinity_domain */
|
||||||
|
int CL_DEVICE_AFFINITY_DOMAIN_NUMA = (1 << 0),
|
||||||
|
CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE = (1 << 1),
|
||||||
|
CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE = (1 << 2),
|
||||||
|
CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE = (1 << 3),
|
||||||
|
CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE = (1 << 4),
|
||||||
|
CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE = (1 << 5);
|
||||||
|
|
||||||
|
/* cl_mem_flags - bitfield */
|
||||||
|
int CL_MEM_HOST_WRITE_ONLY = (1 << 7),
|
||||||
|
CL_MEM_HOST_READ_ONLY = (1 << 8),
|
||||||
|
CL_MEM_HOST_NO_ACCESS = (1 << 9);
|
||||||
|
|
||||||
|
/* cl_mem_migration_flags - bitfield */
|
||||||
|
int CL_MIGRATE_MEM_OBJECT_HOST = (1 << 0),
|
||||||
|
CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED = (1 << 1);
|
||||||
|
|
||||||
|
/* cl_mem_object_type */
|
||||||
|
int CL_MEM_OBJECT_IMAGE2D_ARRAY = 0x10F3,
|
||||||
|
CL_MEM_OBJECT_IMAGE1D = 0x10F4,
|
||||||
|
CL_MEM_OBJECT_IMAGE1D_ARRAY = 0x10F5,
|
||||||
|
CL_MEM_OBJECT_IMAGE1D_BUFFER = 0x10F6;
|
||||||
|
|
||||||
|
/* cl_image_info */
|
||||||
|
int CL_IMAGE_ARRAY_SIZE = 0x1117,
|
||||||
|
CL_IMAGE_BUFFER = 0x1118,
|
||||||
|
CL_IMAGE_NUM_MIP_LEVELS = 0x1119,
|
||||||
|
CL_IMAGE_NUM_SAMPLES = 0x111A;
|
||||||
|
|
||||||
|
/* cl_map_flags - bitfield */
|
||||||
|
int CL_MAP_WRITE_INVALIDATE_REGION = (1 << 2);
|
||||||
|
|
||||||
|
/* cl_program_info */
|
||||||
|
int CL_PROGRAM_NUM_KERNELS = 0x1167,
|
||||||
|
CL_PROGRAM_KERNEL_NAMES = 0x1168;
|
||||||
|
|
||||||
|
/* cl_program_build_info */
|
||||||
|
int CL_PROGRAM_BINARY_TYPE = 0x1184;
|
||||||
|
|
||||||
|
/* cl_program_binary_type */
|
||||||
|
int CL_PROGRAM_BINARY_TYPE_NONE = 0x0,
|
||||||
|
CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT = 0x1,
|
||||||
|
CL_PROGRAM_BINARY_TYPE_LIBRARY = 0x2,
|
||||||
|
CL_PROGRAM_BINARY_TYPE_EXECUTABLE = 0x4;
|
||||||
|
|
||||||
|
/* cl_kernel_info */
|
||||||
|
int CL_KERNEL_ATTRIBUTES = 0x1195;
|
||||||
|
|
||||||
|
/* cl_kernel_arg_info */
|
||||||
|
int CL_KERNEL_ARG_ADDRESS_QUALIFIER = 0x1196,
|
||||||
|
CL_KERNEL_ARG_ACCESS_QUALIFIER = 0x1197,
|
||||||
|
CL_KERNEL_ARG_TYPE_NAME = 0x1198,
|
||||||
|
CL_KERNEL_ARG_NAME = 0x1199;
|
||||||
|
|
||||||
|
/* cl_kernel_arg_address_qualifier */
|
||||||
|
int CL_KERNEL_ARG_ADDRESS_GLOBAL = 0x119A,
|
||||||
|
CL_KERNEL_ARG_ADDRESS_LOCAL = 0x119B,
|
||||||
|
CL_KERNEL_ARG_ADDRESS_CONSTANT = 0x119C,
|
||||||
|
CL_KERNEL_ARG_ADDRESS_PRIVATE = 0x119D;
|
||||||
|
|
||||||
|
/* cl_kernel_arg_access_qualifier */
|
||||||
|
int CL_KERNEL_ARG_ACCESS_READ_ONLY = 0x11A0,
|
||||||
|
CL_KERNEL_ARG_ACCESS_WRITE_ONLY = 0x11A1,
|
||||||
|
CL_KERNEL_ARG_ACCESS_READ_WRITE = 0x11A2,
|
||||||
|
CL_KERNEL_ARG_ACCESS_NONE = 0x11A3;
|
||||||
|
|
||||||
|
/* cl_kernel_work_group_info */
|
||||||
|
int CL_KERNEL_GLOBAL_WORK_SIZE = 0x11B5;
|
||||||
|
|
||||||
|
/* cl_command_type */
|
||||||
|
int CL_COMMAND_BARRIER = 0x1205,
|
||||||
|
CL_COMMAND_MIGRATE_MEM_OBJECTS = 0x1206,
|
||||||
|
CL_COMMAND_FILL_BUFFER = 0x1207,
|
||||||
|
CL_COMMAND_FILL_IMAGE = 0x1208;
|
||||||
|
|
||||||
|
@Code(javaAfterNative = "\t\tif ( __result == CL10.CL_SUCCESS ) device.retain();")
|
||||||
|
@cl_int
|
||||||
|
int clRetainDevice(@PointerWrapper("cl_device_id") CLDevice device);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Warning: LWJGL will not automatically release any objects associated with sub-devices.
|
||||||
|
* The user is responsible for tracking and releasing everything prior to calling this method.
|
||||||
|
*
|
||||||
|
* @param device the parent CLDevice
|
||||||
|
*
|
||||||
|
* @return the error code
|
||||||
|
*/
|
||||||
|
@Code(
|
||||||
|
javaBeforeNative = "\t\tAPIUtil.releaseObjects(device);",
|
||||||
|
javaAfterNative = "\t\tif ( __result == CL10.CL_SUCCESS ) device.release();"
|
||||||
|
)
|
||||||
|
@cl_int
|
||||||
|
int clReleaseDevice(@PointerWrapper("cl_device_id") CLDevice device);
|
||||||
|
|
||||||
|
@Code(javaAfterNative = "\t\tif ( __result == CL10.CL_SUCCESS && out_devices != null ) in_device.registerSubCLDevices(out_devices);")
|
||||||
|
@cl_int
|
||||||
|
int clCreateSubDevices(
|
||||||
|
@PointerWrapper("cl_device_id") CLDevice in_device,
|
||||||
|
@NullTerminated @Const @NativeType("cl_device_partition_property") LongBuffer properties,
|
||||||
|
@AutoSize(value = "out_devices", canBeNull = true) @cl_uint int num_devices,
|
||||||
|
@OutParameter @Check(canBeNull = true) @NativeType("cl_device_id") PointerBuffer out_devices,
|
||||||
|
@OutParameter @Check(value = "1", canBeNull = true) @cl_uint IntBuffer num_devices_ret);
|
||||||
|
|
||||||
|
@Check(value = "errcode_ret", canBeNull = true)
|
||||||
|
@PointerWrapper(value = "cl_mem", params = "context")
|
||||||
|
CLMem clCreateImage(@PointerWrapper("cl_context") CLContext context,
|
||||||
|
@NativeType("cl_mem_flags") long flags,
|
||||||
|
@Check("2 * 4") @Const @NativeType("cl_image_format") ByteBuffer image_format,
|
||||||
|
@Check("3 * 4 + 7 * PointerBuffer.getPointerSize()") @Const @NativeType("cl_image_desc") ByteBuffer image_desc,
|
||||||
|
@Check
|
||||||
|
@cl_byte
|
||||||
|
@cl_short
|
||||||
|
@cl_int
|
||||||
|
@cl_float Buffer host_ptr,
|
||||||
|
@OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret);
|
||||||
|
|
||||||
|
@Check(value = "errcode_ret", canBeNull = true)
|
||||||
|
@PointerWrapper(value = "cl_program", params = "context")
|
||||||
|
CLProgram clCreateProgramWithBuiltInKernels(@PointerWrapper("cl_context") CLContext context,
|
||||||
|
@AutoSize("device_list") @cl_uint int num_devices,
|
||||||
|
@Check("1") @Const @NativeType("cl_device_id") PointerBuffer device_list,
|
||||||
|
@Check @Const @cl_char ByteBuffer kernel_names,
|
||||||
|
@OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret);
|
||||||
|
|
||||||
|
@Alternate("clCreateProgramWithBuiltInKernels")
|
||||||
|
@Check(value = "errcode_ret", canBeNull = true)
|
||||||
|
@PointerWrapper(value = "cl_program", params = "context")
|
||||||
|
CLProgram clCreateProgramWithBuiltInKernels(@PointerWrapper("cl_context") CLContext context,
|
||||||
|
@AutoSize("device_list") @cl_uint int num_devices,
|
||||||
|
@Check("1") @Const @NativeType("cl_device_id") PointerBuffer device_list,
|
||||||
|
CharSequence kernel_names,
|
||||||
|
@OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret);
|
||||||
|
|
||||||
|
/** Single null-terminated header include name. */
|
||||||
|
@Code(
|
||||||
|
tryBlock = true,
|
||||||
|
// Create a GlobalRef to the callback object.
|
||||||
|
javaBeforeNative = "\t\tlong user_data = CallbackUtil.createGlobalRef(pfn_notify);\n" +
|
||||||
|
"\t\tif ( pfn_notify != null ) pfn_notify.setContext(program.getParent());",
|
||||||
|
// Check if we need to delete the GlobalRef.
|
||||||
|
javaFinally = "\t\t\tCallbackUtil.checkCallback(__result, user_data);"
|
||||||
|
)
|
||||||
|
@cl_int
|
||||||
|
int clCompileProgram(@PointerWrapper("cl_program") CLProgram program,
|
||||||
|
@AutoSize(value = "device_list", canBeNull = true) @cl_uint int num_devices,
|
||||||
|
@Check(canBeNull = true) @Const @NativeType("cl_device_id") PointerBuffer device_list,
|
||||||
|
@Check @NullTerminated @Const @cl_char ByteBuffer options,
|
||||||
|
@Constant("1") @cl_uint int num_input_headers,
|
||||||
|
@Check("1") @Const @NativeType("cl_program") PointerBuffer input_header,
|
||||||
|
@NullTerminated @Check @Const @cl_char @Indirect ByteBuffer header_include_name,
|
||||||
|
@PointerWrapper(value = "cl_program_callback", canBeNull = true) CLCompileProgramCallback pfn_notify,
|
||||||
|
@Constant("user_data") @PointerWrapper("void *") long user_data);
|
||||||
|
|
||||||
|
/** Multiple null-terminated header include names, one after the other. */
|
||||||
|
@Alternate(value = "clCompileProgram", nativeAlt = true, javaAlt = true)
|
||||||
|
@Code(
|
||||||
|
tryBlock = true,
|
||||||
|
// Create a GlobalRef to the callback object.
|
||||||
|
javaBeforeNative = "\t\tlong user_data = CallbackUtil.createGlobalRef(pfn_notify);\n" +
|
||||||
|
"\t\tif ( pfn_notify != null ) pfn_notify.setContext(program.getParent());",
|
||||||
|
// Check if we need to delete the GlobalRef.
|
||||||
|
javaFinally = "\t\t\tCallbackUtil.checkCallback(__result, user_data);"
|
||||||
|
)
|
||||||
|
@cl_int
|
||||||
|
int clCompileProgramMulti(@PointerWrapper("cl_program") CLProgram program,
|
||||||
|
@AutoSize(value = "device_list", canBeNull = true) @cl_uint int num_devices,
|
||||||
|
@Check(canBeNull = true) @Const @NativeType("cl_device_id") PointerBuffer device_list,
|
||||||
|
@Check @NullTerminated @Const @cl_char ByteBuffer options,
|
||||||
|
@AutoSize("input_headers") @cl_uint int num_input_headers,
|
||||||
|
@Check("1") @Const @NativeType("cl_program") PointerBuffer input_headers,
|
||||||
|
@NullTerminated("input_headers.remaining()") @Check @Const @Indirect @cl_char @PointerArray("num_input_headers") ByteBuffer header_include_names,
|
||||||
|
@PointerWrapper(value = "cl_program_callback", canBeNull = true) CLCompileProgramCallback pfn_notify,
|
||||||
|
@Constant("user_data") @PointerWrapper("void *") long user_data);
|
||||||
|
|
||||||
|
@Alternate(value = "clCompileProgram", nativeAlt = true)
|
||||||
|
@Code(
|
||||||
|
tryBlock = true,
|
||||||
|
// Create a GlobalRef to the callback object.
|
||||||
|
javaBeforeNative = "\t\tlong user_data = CallbackUtil.createGlobalRef(pfn_notify);\n" +
|
||||||
|
"\t\tif ( pfn_notify != null ) pfn_notify.setContext(program.getParent());",
|
||||||
|
// Check if we need to delete the GlobalRef.
|
||||||
|
javaFinally = "\t\t\tCallbackUtil.checkCallback(__result, user_data);"
|
||||||
|
)
|
||||||
|
@cl_int
|
||||||
|
int clCompileProgram3(@PointerWrapper("cl_program") CLProgram program,
|
||||||
|
@AutoSize(value = "device_list", canBeNull = true) @cl_uint int num_devices,
|
||||||
|
@Check(canBeNull = true) @Const @NativeType("cl_device_id") PointerBuffer device_list,
|
||||||
|
@Check @NullTerminated @Const @cl_char ByteBuffer options,
|
||||||
|
@Constant("header_include_names.length") @cl_uint int num_input_headers,
|
||||||
|
@Check("header_include_names.length") @Const @NativeType("cl_program") PointerBuffer input_headers,
|
||||||
|
@NullTerminated @Check("1") @PointerArray(value = "num_input_headers") @Const @NativeType("cl_char") ByteBuffer[] header_include_names,
|
||||||
|
@PointerWrapper(value = "cl_program_callback", canBeNull = true) CLCompileProgramCallback pfn_notify,
|
||||||
|
@Constant("user_data") @PointerWrapper("void *") long user_data);
|
||||||
|
|
||||||
|
@Alternate("clCompileProgram")
|
||||||
|
@Code(
|
||||||
|
tryBlock = true,
|
||||||
|
// Create a GlobalRef to the callback object.
|
||||||
|
javaBeforeNative = "\t\tlong user_data = CallbackUtil.createGlobalRef(pfn_notify);\n" +
|
||||||
|
"\t\tif ( pfn_notify != null ) pfn_notify.setContext(program.getParent());",
|
||||||
|
// Check if we need to delete the GlobalRef.
|
||||||
|
javaFinally = "\t\t\tCallbackUtil.checkCallback(__result, user_data);"
|
||||||
|
)
|
||||||
|
@cl_int
|
||||||
|
int clCompileProgram(@PointerWrapper("cl_program") CLProgram program,
|
||||||
|
@AutoSize(value = "device_list", canBeNull = true) @cl_uint int num_devices,
|
||||||
|
@Check(canBeNull = true) @Const @NativeType("cl_device_id") PointerBuffer device_list,
|
||||||
|
@NullTerminated CharSequence options,
|
||||||
|
@Constant("1") @cl_uint int num_input_headers,
|
||||||
|
@Check("1") @Const @NativeType("cl_program") PointerBuffer input_header,
|
||||||
|
@NullTerminated @Const CharSequence header_include_name,
|
||||||
|
@PointerWrapper(value = "cl_program_callback", canBeNull = true) CLCompileProgramCallback pfn_notify,
|
||||||
|
@Constant("user_data") @PointerWrapper("void *") long user_data);
|
||||||
|
|
||||||
|
@Alternate(value = "clCompileProgram", nativeAlt = true, skipNative = true)
|
||||||
|
@Code(
|
||||||
|
tryBlock = true,
|
||||||
|
// Create a GlobalRef to the callback object.
|
||||||
|
javaBeforeNative = "\t\tlong user_data = CallbackUtil.createGlobalRef(pfn_notify);\n" +
|
||||||
|
"\t\tif ( pfn_notify != null ) pfn_notify.setContext(program.getParent());",
|
||||||
|
// Check if we need to delete the GlobalRef.
|
||||||
|
javaFinally = "\t\t\tCallbackUtil.checkCallback(__result, user_data);"
|
||||||
|
)
|
||||||
|
@cl_int
|
||||||
|
int clCompileProgramMulti(@PointerWrapper("cl_program") CLProgram program,
|
||||||
|
@AutoSize(value = "device_list", canBeNull = true) @cl_uint int num_devices,
|
||||||
|
@Check(canBeNull = true) @Const @NativeType("cl_device_id") PointerBuffer device_list,
|
||||||
|
@NullTerminated CharSequence options,
|
||||||
|
@AutoSize("input_header") @cl_uint int num_input_headers,
|
||||||
|
@Check("1") @Const @NativeType("cl_program") PointerBuffer input_header,
|
||||||
|
@NullTerminated @PointerArray(value = "num_input_headers") @Const CharSequence[] header_include_name,
|
||||||
|
@PointerWrapper(value = "cl_program_callback", canBeNull = true) CLCompileProgramCallback pfn_notify,
|
||||||
|
@Constant("user_data") @PointerWrapper("void *") long user_data);
|
||||||
|
|
||||||
|
@Code(
|
||||||
|
tryBlock = true,
|
||||||
|
// Create a GlobalRef to the callback object.
|
||||||
|
javaBeforeNative = "\t\tlong user_data = CallbackUtil.createGlobalRef(pfn_notify);\n" +
|
||||||
|
"\t\tif ( pfn_notify != null ) pfn_notify.setContext(context);",
|
||||||
|
// Check if we need to delete the GlobalRef.
|
||||||
|
javaFinally = "\t\t\tCallbackUtil.checkCallback(errcode_ret.get(errcode_ret.position()), user_data);"
|
||||||
|
)
|
||||||
|
@Check(value = "errcode_ret", canBeNull = true)
|
||||||
|
@PointerWrapper(value = "cl_program", params = "context")
|
||||||
|
CLProgram clLinkProgram(@PointerWrapper("cl_context") CLContext context,
|
||||||
|
@AutoSize(value = "device_list", canBeNull = true) @cl_uint int num_devices,
|
||||||
|
@Check(canBeNull = true) @Const @NativeType("cl_device_id") PointerBuffer device_list,
|
||||||
|
@NullTerminated @Check @Const @cl_char ByteBuffer options,
|
||||||
|
@AutoSize("input_programs") @cl_uint int num_input_programs,
|
||||||
|
@Check @Const @NativeType("cl_program") PointerBuffer input_programs,
|
||||||
|
@PointerWrapper(value = "cl_program_callback", canBeNull = true) CLLinkProgramCallback pfn_notify,
|
||||||
|
@Constant("user_data") @PointerWrapper("void *") long user_data,
|
||||||
|
@OutParameter @Check("1") @cl_int IntBuffer errcode_ret);
|
||||||
|
|
||||||
|
@Alternate("clLinkProgram")
|
||||||
|
@Code(
|
||||||
|
tryBlock = true,
|
||||||
|
// Create a GlobalRef to the callback object.
|
||||||
|
javaBeforeNative = "\t\tlong user_data = CallbackUtil.createGlobalRef(pfn_notify);\n" +
|
||||||
|
"\t\tif ( pfn_notify != null ) pfn_notify.setContext(context);",
|
||||||
|
// Check if we need to delete the GlobalRef.
|
||||||
|
javaFinally = "\t\t\tCallbackUtil.checkCallback(errcode_ret.get(errcode_ret.position()), user_data);"
|
||||||
|
)
|
||||||
|
@Check(value = "errcode_ret", canBeNull = true)
|
||||||
|
@PointerWrapper(value = "cl_program", params = "context")
|
||||||
|
CLProgram clLinkProgram(@PointerWrapper("cl_context") CLContext context,
|
||||||
|
@AutoSize(value = "device_list", canBeNull = true) @cl_uint int num_devices,
|
||||||
|
@Check(canBeNull = true) @Const @NativeType("cl_device_id") PointerBuffer device_list,
|
||||||
|
@NullTerminated CharSequence options,
|
||||||
|
@AutoSize("input_programs") @cl_uint int num_input_programs,
|
||||||
|
@Check @Const @NativeType("cl_program") PointerBuffer input_programs,
|
||||||
|
@PointerWrapper(value = "cl_program_callback", canBeNull = true) CLLinkProgramCallback pfn_notify,
|
||||||
|
@Constant("user_data") @PointerWrapper("void *") long user_data,
|
||||||
|
@OutParameter @Check("1") @cl_int IntBuffer errcode_ret);
|
||||||
|
|
||||||
|
@cl_int
|
||||||
|
int clUnloadPlatformCompiler(@PointerWrapper("cl_platform_id") CLPlatform platform);
|
||||||
|
|
||||||
|
@cl_int
|
||||||
|
int clGetKernelArgInfo(@PointerWrapper("cl_kernel") CLKernel kernel,
|
||||||
|
@cl_uint int arg_indx,
|
||||||
|
@NativeType("cl_kernel_arg_info") int param_name,
|
||||||
|
@AutoSize(value = "param_value", canBeNull = true) @size_t long param_value_size,
|
||||||
|
@OutParameter @Check(canBeNull = true) @cl_void ByteBuffer param_value,
|
||||||
|
@OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer param_value_size_ret);
|
||||||
|
|
||||||
|
@cl_int
|
||||||
|
int clEnqueueFillBuffer(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue,
|
||||||
|
@PointerWrapper("cl_mem") CLMem buffer,
|
||||||
|
@Check @Const @cl_void ByteBuffer pattern,
|
||||||
|
@AutoSize("pattern") @size_t long pattern_size,
|
||||||
|
@size_t long offset,
|
||||||
|
@size_t long size,
|
||||||
|
@AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list,
|
||||||
|
@Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list,
|
||||||
|
@OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event);
|
||||||
|
|
||||||
|
@cl_int
|
||||||
|
int clEnqueueFillImage(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue,
|
||||||
|
@PointerWrapper("cl_mem") CLMem image,
|
||||||
|
@Check("4 * 4") @Const @cl_void ByteBuffer fill_color,
|
||||||
|
@Check("3") @Const @NativeType("size_t") PointerBuffer origin,
|
||||||
|
@Check("3") @Const @NativeType("size_t") PointerBuffer region,
|
||||||
|
@AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list,
|
||||||
|
@Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list,
|
||||||
|
@OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event);
|
||||||
|
|
||||||
|
@cl_int
|
||||||
|
int clEnqueueMigrateMemObjects(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue,
|
||||||
|
@AutoSize("mem_objects") @cl_uint int num_mem_objects,
|
||||||
|
@Check @Const @NativeType("cl_mem") PointerBuffer mem_objects,
|
||||||
|
@NativeType("cl_mem_migration_flags") long flags,
|
||||||
|
@AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list,
|
||||||
|
@Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list,
|
||||||
|
@OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event);
|
||||||
|
|
||||||
|
@cl_int
|
||||||
|
int clEnqueueMarkerWithWaitList(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue,
|
||||||
|
@AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list,
|
||||||
|
@Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list,
|
||||||
|
@OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event);
|
||||||
|
|
||||||
|
@cl_int
|
||||||
|
int clEnqueueBarrierWithWaitList(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue,
|
||||||
|
@AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list,
|
||||||
|
@Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list,
|
||||||
|
@OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event);
|
||||||
|
|
||||||
|
@Code(
|
||||||
|
tryBlock = true,
|
||||||
|
// Create a GlobalRef to the callback object.
|
||||||
|
javaBeforeNative = "\t\tlong user_data = CallbackUtil.createGlobalRef(pfn_notify);",
|
||||||
|
// Check if we need to delete the GlobalRef.
|
||||||
|
javaFinally = "\t\t\tcontext.setPrintfCallback(user_data, __result);"
|
||||||
|
)
|
||||||
|
@cl_int
|
||||||
|
int clSetPrintfCallback(@PointerWrapper("cl_context") CLContext context,
|
||||||
|
@PointerWrapper("cl_printf_callback") CLPrintfCallback pfn_notify,
|
||||||
|
@Constant("user_data") @PointerWrapper("void *") long user_data);
|
||||||
|
|
||||||
|
@Private
|
||||||
|
@PointerWrapper("void *")
|
||||||
|
CLFunctionAddress clGetExtensionFunctionAddressForPlatform(@PointerWrapper("cl_platform_id") CLPlatform platform,
|
||||||
|
@Check("1") @Const @cl_char ByteBuffer func_name);
|
||||||
|
|
||||||
|
@Alternate("clGetExtensionFunctionAddressForPlatform")
|
||||||
|
@Private
|
||||||
|
@PointerWrapper("void *")
|
||||||
|
CLFunctionAddress clGetExtensionFunctionAddressForPlatform(@PointerWrapper("cl_platform_id") CLPlatform platform,
|
||||||
|
CharSequence func_name);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2002-2008 LWJGL Project
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are
|
||||||
|
* met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* * Neither the name of 'LWJGL' nor the names of
|
||||||
|
* its contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
package org.lwjgl.opencl;
|
||||||
|
|
||||||
|
import org.lwjgl.util.generator.Check;
|
||||||
|
import org.lwjgl.util.generator.NativeType;
|
||||||
|
import org.lwjgl.util.generator.OutParameter;
|
||||||
|
import org.lwjgl.util.generator.PointerWrapper;
|
||||||
|
import org.lwjgl.util.generator.opencl.cl_int;
|
||||||
|
|
||||||
|
import java.nio.IntBuffer;
|
||||||
|
|
||||||
|
/** The core OpenCL 1.2 OpenGL interrop functionality. */
|
||||||
|
public interface CL12GL {
|
||||||
|
|
||||||
|
/* cl_gl_object_type */
|
||||||
|
int CL_GL_OBJECT_TEXTURE2D_ARRAY = 0x200E,
|
||||||
|
CL_GL_OBJECT_TEXTURE1D = 0x200F,
|
||||||
|
CL_GL_OBJECT_TEXTURE1D_ARRAY = 0x2010,
|
||||||
|
CL_GL_OBJECT_TEXTURE_BUFFER = 0x2011;
|
||||||
|
|
||||||
|
@Check(value = "errcode_ret", canBeNull = true)
|
||||||
|
@PointerWrapper(value = "cl_mem", params = "context")
|
||||||
|
CLMem clCreateFromGLTexture(@PointerWrapper("cl_context") CLContext context,
|
||||||
|
@NativeType("cl_mem_flags") long flags,
|
||||||
|
@NativeType("GLenum") int target,
|
||||||
|
@NativeType("GLint") int miplevel,
|
||||||
|
@NativeType("GLuint") int texture,
|
||||||
|
@OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret);
|
||||||
|
|
||||||
|
}
|
|
@ -135,7 +135,6 @@ public interface EXT_device_fission {
|
||||||
@cl_int
|
@cl_int
|
||||||
int clCreateSubDevicesEXT(
|
int clCreateSubDevicesEXT(
|
||||||
@PointerWrapper("cl_device_id") CLDevice in_device,
|
@PointerWrapper("cl_device_id") CLDevice in_device,
|
||||||
// TODO: cl_device_partition_property_ext is a cl_bitfield (ulong), but the spec says properties is a {property-value, cl_int[]} list...
|
|
||||||
@NullTerminated @Const @NativeType("cl_device_partition_property_ext") LongBuffer properties,
|
@NullTerminated @Const @NativeType("cl_device_partition_property_ext") LongBuffer properties,
|
||||||
@AutoSize(value = "out_devices", canBeNull = true) @cl_uint int num_entries,
|
@AutoSize(value = "out_devices", canBeNull = true) @cl_uint int num_entries,
|
||||||
@OutParameter @Check(canBeNull = true) @NativeType("cl_device_id") PointerBuffer out_devices,
|
@OutParameter @Check(canBeNull = true) @NativeType("cl_device_id") PointerBuffer out_devices,
|
||||||
|
|
|
@ -32,7 +32,6 @@
|
||||||
package org.lwjgl.opengl;
|
package org.lwjgl.opengl;
|
||||||
|
|
||||||
import org.lwjgl.util.generator.*;
|
import org.lwjgl.util.generator.*;
|
||||||
import org.lwjgl.util.generator.Alternate;
|
|
||||||
import org.lwjgl.util.generator.opengl.*;
|
import org.lwjgl.util.generator.opengl.*;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
@ -44,12 +43,12 @@ import java.nio.IntBuffer;
|
||||||
public interface ARB_separate_shader_objects {
|
public interface ARB_separate_shader_objects {
|
||||||
|
|
||||||
/** Accepted by <stages> parameter to UseProgramStages: */
|
/** Accepted by <stages> parameter to UseProgramStages: */
|
||||||
int GL_VERTEX_SHADER_BIT = 0x00000001,
|
int GL_VERTEX_SHADER_BIT = 0x00000001,
|
||||||
GL_FRAGMENT_SHADER_BIT = 0x00000002,
|
GL_FRAGMENT_SHADER_BIT = 0x00000002,
|
||||||
GL_GEOMETRY_SHADER_BIT = 0x00000004,
|
GL_GEOMETRY_SHADER_BIT = 0x00000004,
|
||||||
GL_TESS_CONTROL_SHADER_BIT = 0x00000008,
|
GL_TESS_CONTROL_SHADER_BIT = 0x00000008,
|
||||||
GL_TESS_EVALUATION_SHADER_BIT = 0x00000010,
|
GL_TESS_EVALUATION_SHADER_BIT = 0x00000010,
|
||||||
GL_ALL_SHADER_BITS = 0xFFFFFFFF;
|
GL_ALL_SHADER_BITS = 0xFFFFFFFF;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Accepted by the <pname> parameter of ProgramParameteri and
|
* Accepted by the <pname> parameter of ProgramParameteri and
|
||||||
|
@ -72,10 +71,24 @@ public interface ARB_separate_shader_objects {
|
||||||
@Reuse("GL41")
|
@Reuse("GL41")
|
||||||
void glActiveShaderProgram(@GLuint int pipeline, @GLuint int program);
|
void glActiveShaderProgram(@GLuint int pipeline, @GLuint int program);
|
||||||
|
|
||||||
|
/** Single null-terminated source code string. */
|
||||||
@Reuse("GL41")
|
@Reuse("GL41")
|
||||||
|
@StripPostfix(value = "string", postfix = "v")
|
||||||
|
@GLuint
|
||||||
|
int glCreateShaderProgramv(@GLenum int type, @Constant("1") @GLsizei int count, @NullTerminated @Check @Const @Indirect @GLchar ByteBuffer string);
|
||||||
|
|
||||||
|
/** Multiple null-terminated source code strings, one after the other. */
|
||||||
|
@Reuse("GL41")
|
||||||
|
@Alternate(value = "glCreateShaderProgramv", nativeAlt = true)
|
||||||
@StripPostfix(value = "strings", postfix = "v")
|
@StripPostfix(value = "strings", postfix = "v")
|
||||||
@GLuint
|
@GLuint
|
||||||
int glCreateShaderProgramv(@GLenum int type, @GLsizei int count, @Check @Const @Indirect @GLchar ByteBuffer strings);
|
int glCreateShaderProgramv2(@GLenum int type, @GLsizei int count, @NullTerminated("count") @Check @Const @Indirect @GLchar @PointerArray("count") ByteBuffer strings);
|
||||||
|
|
||||||
|
@Reuse("GL41")
|
||||||
|
@Alternate(value = "glCreateShaderProgramv", nativeAlt = true)
|
||||||
|
@StripPostfix(value = "strings", postfix = "v")
|
||||||
|
@GLuint
|
||||||
|
int glCreateShaderProgramv3(@GLenum int type, @Constant("strings.length") @GLsizei int count, @NullTerminated @Check("1") @PointerArray(value = "count") @Const @NativeType("GLchar") ByteBuffer[] strings);
|
||||||
|
|
||||||
@Reuse("GL41")
|
@Reuse("GL41")
|
||||||
@Alternate("glCreateShaderProgramv")
|
@Alternate("glCreateShaderProgramv")
|
||||||
|
@ -84,11 +97,11 @@ public interface ARB_separate_shader_objects {
|
||||||
int glCreateShaderProgramv(@GLenum int type, @Constant("1") @GLsizei int count, @NullTerminated CharSequence string);
|
int glCreateShaderProgramv(@GLenum int type, @Constant("1") @GLsizei int count, @NullTerminated CharSequence string);
|
||||||
|
|
||||||
@Reuse("GL41")
|
@Reuse("GL41")
|
||||||
@Alternate("glCreateShaderProgramv")
|
@Alternate(value = "glCreateShaderProgramv", nativeAlt = true, skipNative = true)
|
||||||
@StripPostfix(value = "strings", postfix = "v")
|
@StripPostfix(value = "strings", postfix = "v")
|
||||||
@GLuint
|
@GLuint
|
||||||
int glCreateShaderProgramv(@GLenum int type, @Constant("strings.length") @GLsizei int count,
|
int glCreateShaderProgramv2(@GLenum int type, @Constant("strings.length") @GLsizei int count,
|
||||||
@Const @NullTerminated @PointerArray(value = "count") CharSequence[] strings);
|
@Const @NullTerminated @PointerArray(value = "count") CharSequence[] strings);
|
||||||
|
|
||||||
@Reuse("GL41")
|
@Reuse("GL41")
|
||||||
void glBindProgramPipeline(@GLuint int pipeline);
|
void glBindProgramPipeline(@GLuint int pipeline);
|
||||||
|
|
|
@ -46,12 +46,12 @@ public interface GL41 {
|
||||||
* Accepted by the <value> parameter of GetBooleanv, GetIntegerv,
|
* Accepted by the <value> parameter of GetBooleanv, GetIntegerv,
|
||||||
* GetInteger64v, GetFloatv, and GetDoublev:
|
* GetInteger64v, GetFloatv, and GetDoublev:
|
||||||
*/
|
*/
|
||||||
int GL_SHADER_COMPILER = 0x8DFA,
|
int GL_SHADER_COMPILER = 0x8DFA,
|
||||||
GL_NUM_SHADER_BINARY_FORMATS = 0x8DF9,
|
GL_NUM_SHADER_BINARY_FORMATS = 0x8DF9,
|
||||||
GL_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB,
|
GL_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB,
|
||||||
GL_MAX_VARYING_VECTORS = 0x8DFC,
|
GL_MAX_VARYING_VECTORS = 0x8DFC,
|
||||||
GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD,
|
GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD,
|
||||||
GL_IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A,
|
GL_IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A,
|
||||||
GL_IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B;
|
GL_IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B;
|
||||||
|
|
||||||
/** Accepted by the <type> parameter of VertexAttribPointer: */
|
/** Accepted by the <type> parameter of VertexAttribPointer: */
|
||||||
|
@ -61,12 +61,12 @@ public interface GL41 {
|
||||||
* Accepted by the <precisiontype> parameter of
|
* Accepted by the <precisiontype> parameter of
|
||||||
* GetShaderPrecisionFormat:
|
* GetShaderPrecisionFormat:
|
||||||
*/
|
*/
|
||||||
int GL_LOW_FLOAT = 0x8DF0,
|
int GL_LOW_FLOAT = 0x8DF0,
|
||||||
GL_MEDIUM_FLOAT = 0x8DF1,
|
GL_MEDIUM_FLOAT = 0x8DF1,
|
||||||
GL_HIGH_FLOAT = 0x8DF2,
|
GL_HIGH_FLOAT = 0x8DF2,
|
||||||
GL_LOW_INT = 0x8DF3,
|
GL_LOW_INT = 0x8DF3,
|
||||||
GL_MEDIUM_INT = 0x8DF4,
|
GL_MEDIUM_INT = 0x8DF4,
|
||||||
GL_HIGH_INT = 0x8DF5;
|
GL_HIGH_INT = 0x8DF5;
|
||||||
|
|
||||||
void glReleaseShaderCompiler();
|
void glReleaseShaderCompiler();
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ public interface GL41 {
|
||||||
* GetInteger64v, GetFloatv and GetDoublev:
|
* GetInteger64v, GetFloatv and GetDoublev:
|
||||||
*/
|
*/
|
||||||
int GL_NUM_PROGRAM_BINARY_FORMATS = 0x87FE,
|
int GL_NUM_PROGRAM_BINARY_FORMATS = 0x87FE,
|
||||||
GL_PROGRAM_BINARY_FORMATS = 0x87FF;
|
GL_PROGRAM_BINARY_FORMATS = 0x87FF;
|
||||||
|
|
||||||
void glGetProgramBinary(@GLuint int program, @AutoSize("binary") @GLsizei int bufSize,
|
void glGetProgramBinary(@GLuint int program, @AutoSize("binary") @GLsizei int bufSize,
|
||||||
@Check(value = "1", canBeNull = true) @GLsizei IntBuffer length,
|
@Check(value = "1", canBeNull = true) @GLsizei IntBuffer length,
|
||||||
|
@ -115,12 +115,12 @@ public interface GL41 {
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
/** Accepted by <stages> parameter to UseProgramStages: */
|
/** Accepted by <stages> parameter to UseProgramStages: */
|
||||||
int GL_VERTEX_SHADER_BIT = 0x00000001,
|
int GL_VERTEX_SHADER_BIT = 0x00000001,
|
||||||
GL_FRAGMENT_SHADER_BIT = 0x00000002,
|
GL_FRAGMENT_SHADER_BIT = 0x00000002,
|
||||||
GL_GEOMETRY_SHADER_BIT = 0x00000004,
|
GL_GEOMETRY_SHADER_BIT = 0x00000004,
|
||||||
GL_TESS_CONTROL_SHADER_BIT = 0x00000008,
|
GL_TESS_CONTROL_SHADER_BIT = 0x00000008,
|
||||||
GL_TESS_EVALUATION_SHADER_BIT = 0x00000010,
|
GL_TESS_EVALUATION_SHADER_BIT = 0x00000010,
|
||||||
GL_ALL_SHADER_BITS = 0xFFFFFFFF;
|
GL_ALL_SHADER_BITS = 0xFFFFFFFF;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Accepted by the <pname> parameter of ProgramParameteri and
|
* Accepted by the <pname> parameter of ProgramParameteri and
|
||||||
|
@ -141,20 +141,32 @@ public interface GL41 {
|
||||||
|
|
||||||
void glActiveShaderProgram(@GLuint int pipeline, @GLuint int program);
|
void glActiveShaderProgram(@GLuint int pipeline, @GLuint int program);
|
||||||
|
|
||||||
|
/** Single null-terminated source code string. */
|
||||||
|
@StripPostfix(value = "string", postfix = "v")
|
||||||
|
@GLuint
|
||||||
|
int glCreateShaderProgramv(@GLenum int type, @Constant("1") @GLsizei int count, @NullTerminated @Check @Const @Indirect @GLchar ByteBuffer string);
|
||||||
|
|
||||||
|
/** Multiple null-terminated source code strings, one after the other. */
|
||||||
|
@Alternate(value = "glCreateShaderProgramv", nativeAlt = true)
|
||||||
@StripPostfix(value = "strings", postfix = "v")
|
@StripPostfix(value = "strings", postfix = "v")
|
||||||
@GLuint
|
@GLuint
|
||||||
int glCreateShaderProgramv(@GLenum int type, @GLsizei int count, @Check @Const @Indirect @GLchar ByteBuffer strings);
|
int glCreateShaderProgramv2(@GLenum int type, @GLsizei int count, @NullTerminated("count") @Check @Const @Indirect @GLchar @PointerArray("count") ByteBuffer strings);
|
||||||
|
|
||||||
|
@Alternate(value = "glCreateShaderProgramv", nativeAlt = true)
|
||||||
|
@StripPostfix(value = "strings", postfix = "v")
|
||||||
|
@GLuint
|
||||||
|
int glCreateShaderProgramv3(@GLenum int type, @Constant("strings.length") @GLsizei int count, @NullTerminated @Check("1") @PointerArray(value = "count") @Const @NativeType("GLchar") ByteBuffer[] strings);
|
||||||
|
|
||||||
@Alternate("glCreateShaderProgramv")
|
@Alternate("glCreateShaderProgramv")
|
||||||
@StripPostfix(value = "string", postfix = "v")
|
@StripPostfix(value = "string", postfix = "v")
|
||||||
@GLuint
|
@GLuint
|
||||||
int glCreateShaderProgramv(@GLenum int type, @Constant("1") @GLsizei int count, @NullTerminated CharSequence string);
|
int glCreateShaderProgramv(@GLenum int type, @Constant("1") @GLsizei int count, @NullTerminated CharSequence string);
|
||||||
|
|
||||||
@Alternate("glCreateShaderProgramv")
|
@Alternate(value = "glCreateShaderProgramv", nativeAlt = true, skipNative = true)
|
||||||
@StripPostfix(value = "strings", postfix = "v")
|
@StripPostfix(value = "strings", postfix = "v")
|
||||||
@GLuint
|
@GLuint
|
||||||
int glCreateShaderProgramv(@GLenum int type, @Constant("strings.length") @GLsizei int count,
|
int glCreateShaderProgramv2(@GLenum int type, @Constant("strings.length") @GLsizei int count,
|
||||||
@Const @NullTerminated @PointerArray(value = "count") CharSequence[] strings);
|
@Const @NullTerminated @PointerArray(value = "count") CharSequence[] strings);
|
||||||
|
|
||||||
void glBindProgramPipeline(@GLuint int pipeline);
|
void glBindProgramPipeline(@GLuint int pipeline);
|
||||||
|
|
||||||
|
@ -342,12 +354,12 @@ public interface GL41 {
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
/** Returned in the <type> parameter of GetActiveAttrib: */
|
/** Returned in the <type> parameter of GetActiveAttrib: */
|
||||||
int GL_DOUBLE_VEC2 = 0x8FFC;
|
int GL_DOUBLE_VEC2 = 0x8FFC;
|
||||||
int GL_DOUBLE_VEC3 = 0x8FFD;
|
int GL_DOUBLE_VEC3 = 0x8FFD;
|
||||||
int GL_DOUBLE_VEC4 = 0x8FFE;
|
int GL_DOUBLE_VEC4 = 0x8FFE;
|
||||||
int GL_DOUBLE_MAT2 = 0x8F46;
|
int GL_DOUBLE_MAT2 = 0x8F46;
|
||||||
int GL_DOUBLE_MAT3 = 0x8F47;
|
int GL_DOUBLE_MAT3 = 0x8F47;
|
||||||
int GL_DOUBLE_MAT4 = 0x8F48;
|
int GL_DOUBLE_MAT4 = 0x8F48;
|
||||||
int GL_DOUBLE_MAT2x3 = 0x8F49;
|
int GL_DOUBLE_MAT2x3 = 0x8F49;
|
||||||
int GL_DOUBLE_MAT2x4 = 0x8F4A;
|
int GL_DOUBLE_MAT2x4 = 0x8F4A;
|
||||||
int GL_DOUBLE_MAT3x2 = 0x8F4B;
|
int GL_DOUBLE_MAT3x2 = 0x8F4B;
|
||||||
|
@ -391,10 +403,10 @@ public interface GL41 {
|
||||||
* Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv,
|
* Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv,
|
||||||
* GetDoublev and GetInteger64v:
|
* GetDoublev and GetInteger64v:
|
||||||
*/
|
*/
|
||||||
int GL_MAX_VIEWPORTS = 0x825B,
|
int GL_MAX_VIEWPORTS = 0x825B,
|
||||||
GL_VIEWPORT_SUBPIXEL_BITS = 0x825C,
|
GL_VIEWPORT_SUBPIXEL_BITS = 0x825C,
|
||||||
GL_VIEWPORT_BOUNDS_RANGE = 0x825D,
|
GL_VIEWPORT_BOUNDS_RANGE = 0x825D,
|
||||||
GL_LAYER_PROVOKING_VERTEX = 0x825E,
|
GL_LAYER_PROVOKING_VERTEX = 0x825E,
|
||||||
GL_VIEWPORT_INDEX_PROVOKING_VERTEX = 0x825F;
|
GL_VIEWPORT_INDEX_PROVOKING_VERTEX = 0x825F;
|
||||||
|
|
||||||
/** Accepted by the <pname> parameter of GetIntegeri_v: */
|
/** Accepted by the <pname> parameter of GetIntegeri_v: */
|
||||||
|
@ -414,9 +426,9 @@ public interface GL41 {
|
||||||
* LAYER_PROVOKING_VERTEX or VIEWPORT_INDEX_PROVOKING_VERTEX:
|
* LAYER_PROVOKING_VERTEX or VIEWPORT_INDEX_PROVOKING_VERTEX:
|
||||||
*/
|
*/
|
||||||
int GL_FIRST_VERTEX_CONVENTION = 0x8E4D,
|
int GL_FIRST_VERTEX_CONVENTION = 0x8E4D,
|
||||||
GL_LAST_VERTEX_CONVENTION = 0x8E4E,
|
GL_LAST_VERTEX_CONVENTION = 0x8E4E,
|
||||||
GL_PROVOKING_VERTEX = 0x8E4F,
|
GL_PROVOKING_VERTEX = 0x8E4F,
|
||||||
GL_UNDEFINED_VERTEX = 0x8260;
|
GL_UNDEFINED_VERTEX = 0x8260;
|
||||||
|
|
||||||
@StripPostfix("v")
|
@StripPostfix("v")
|
||||||
void glViewportArrayv(@GLuint int first, @AutoSize(value = "v", expression = " >> 2") @GLsizei int count, @Const FloatBuffer v);
|
void glViewportArrayv(@GLuint int first, @AutoSize(value = "v", expression = " >> 2") @GLsizei int count, @Const FloatBuffer v);
|
||||||
|
|
Loading…
Reference in New Issue