summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/mbien/opencl/CLPlatform.java6
-rw-r--r--test/com/mbien/opencl/CLBufferTest.java21
2 files changed, 24 insertions, 3 deletions
diff --git a/src/com/mbien/opencl/CLPlatform.java b/src/com/mbien/opencl/CLPlatform.java
index 2f3cbf54..c3b1a1f2 100644
--- a/src/com/mbien/opencl/CLPlatform.java
+++ b/src/com/mbien/opencl/CLPlatform.java
@@ -98,6 +98,12 @@ public final class CLPlatform {
//find all devices
int ret = cl.clGetDeviceIDs(ID, type.TYPE, 0, null, ib);
+
+ // return an empty array rather than throwing an exception
+ if(ret == CL.CL_DEVICE_NOT_FOUND) {
+ return new CLDevice[0];
+ }
+
checkForError(ret, "error while enumerating devices");
PointerBuffer deviceIDs = PointerBuffer.allocateDirect(ib.get(0));
diff --git a/test/com/mbien/opencl/CLBufferTest.java b/test/com/mbien/opencl/CLBufferTest.java
index b6029e3c..f768c5ae 100644
--- a/test/com/mbien/opencl/CLBufferTest.java
+++ b/test/com/mbien/opencl/CLBufferTest.java
@@ -101,10 +101,25 @@ public class CLBufferTest {
final int elements = NUM_ELEMENTS;
final int sizeInBytes = elements*SIZEOF_INT;
- CLContext context = CLContext.create();
+ CLContext context = null;
+ CLBuffer<?> clBufferA = null;
+ CLBuffer<?> clBufferB = null;
+
+ // We will have to allocate mappable NIO memory on non CPU contexts
+ // since we can't map e.g GPU memory.
+ if(CLPlatform.getDefault().listCLDevices(CLDevice.Type.CPU).length > 0) {
+
+ context = CLContext.create(CLDevice.Type.CPU);
- CLBuffer<?> clBufferA = context.createBuffer(sizeInBytes, Mem.READ_WRITE);
- CLBuffer<?> clBufferB = context.createBuffer(sizeInBytes, Mem.READ_WRITE);
+ clBufferA = context.createBuffer(sizeInBytes, Mem.READ_WRITE);
+ clBufferB = context.createBuffer(sizeInBytes, Mem.READ_WRITE);
+ }else{
+
+ context = CLContext.create();
+
+ clBufferA = context.createByteBuffer(sizeInBytes, Mem.READ_WRITE, Mem.USE_BUFFER);
+ clBufferB = context.createByteBuffer(sizeInBytes, Mem.READ_WRITE, Mem.USE_BUFFER);
+ }
CLCommandQueue queue = context.getCLDevices()[0].createCommandQueue();