diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/com/jogamp/opencl/CLPlatform.java | 24 | ||||
-rw-r--r-- | src/com/jogamp/opencl/CLVersion.java | 3 | ||||
-rw-r--r-- | src/com/jogamp/opencl/util/CLInfo.java | 2 |
3 files changed, 27 insertions, 2 deletions
diff --git a/src/com/jogamp/opencl/CLPlatform.java b/src/com/jogamp/opencl/CLPlatform.java index f0faa0fb..11a562c5 100644 --- a/src/com/jogamp/opencl/CLPlatform.java +++ b/src/com/jogamp/opencl/CLPlatform.java @@ -47,7 +47,10 @@ import com.jogamp.opencl.llb.CLMemObjBinding; import com.jogamp.opencl.spi.CLPlatformInfoAccessor; import com.jogamp.opencl.util.CLUtil; import com.jogamp.opencl.llb.impl.CLImpl11; +import com.jogamp.opencl.llb.impl.CLImpl12; +import com.jogamp.opencl.llb.impl.CLImpl20; import com.jogamp.opencl.spi.CLAccessorFactory; +import com.jogamp.opencl.spi.CLInfoAccessor; import com.jogamp.opencl.util.Filter; import java.nio.IntBuffer; @@ -248,7 +251,7 @@ public class CLPlatform { } /** - * Returns the low level binding interface to the OpenCL APIs. + * Returns the low level binding interface to the OpenCL APIs. This interface is always for OpenCL 1.1. */ public static CL getLowLevelCLInterface() { initialize(); @@ -256,6 +259,25 @@ public class CLPlatform { } /** + * Returns the low level binding interface to the OpenCL APIs for the specified device. This interface + * is the newest one the device supports. + */ + public static CL getLowLevelCLInterfaceForDevice(final long device) { + initialize(); + + CLInfoAccessor deviceInfo = defaultFactory.createDeviceInfoAccessor(cl, device); + CLVersion version = new CLVersion(deviceInfo.getString(CL_DEVICE_VERSION)); + + if(version.isEqual(CLVersion.CL_1_2)) + return new CLImpl12(); + + if(version.isEqual(CLVersion.CL_2_0)) + return new CLImpl20(); + + return cl; + } + + /** * Hint to allow the implementation to release the resources allocated by the OpenCL compiler. * Calls to {@link CLProgram#build()} after unloadCompiler will reload the compiler if necessary. */ diff --git a/src/com/jogamp/opencl/CLVersion.java b/src/com/jogamp/opencl/CLVersion.java index 3a48f0b7..fc2419c7 100644 --- a/src/com/jogamp/opencl/CLVersion.java +++ b/src/com/jogamp/opencl/CLVersion.java @@ -45,6 +45,9 @@ public class CLVersion implements Comparable<CLVersion> { public final static CLVersion CL_1_0 = new CLVersion("OpenCL 1.0"); public final static CLVersion CL_1_1 = new CLVersion("OpenCL 1.1"); + public final static CLVersion CL_1_2 = new CLVersion("OpenCL 1.2"); + public final static CLVersion CL_2_0 = new CLVersion("OpenCL 2.0"); + public final static CLVersion CL_2_1 = new CLVersion("OpenCL 2.1"); /** * The full version String is defined as: diff --git a/src/com/jogamp/opencl/util/CLInfo.java b/src/com/jogamp/opencl/util/CLInfo.java index e6d55b58..cd97d6e2 100644 --- a/src/com/jogamp/opencl/util/CLInfo.java +++ b/src/com/jogamp/opencl/util/CLInfo.java @@ -58,7 +58,7 @@ public class CLInfo { // binding sb.append("CL_BINDING_UNAVAILABLE_FUNCTIONS: "); - sb.append(((CLImpl11) CLPlatform.getLowLevelCLInterface()).getAddressTable().getNullPointerFunctions()); + sb.append(CLImpl11.getAddressTable().getNullPointerFunctions()); sb.append("\n"); // OpenCL |