summaryrefslogtreecommitdiffstats
path: root/src/com/mbien/opencl/CLCommandQueue.java
diff options
context:
space:
mode:
authorMichael Bien <[email protected]>2009-10-21 17:17:21 +0200
committerMichael Bien <[email protected]>2009-10-21 17:17:21 +0200
commitfe1e2739bf7596bc488de977166603edd18c41fb (patch)
tree6e847eec358365efa98cc74d2a843f5c6e6cfb38 /src/com/mbien/opencl/CLCommandQueue.java
parentabe0135b4457d4c4ff722b0f39a47cad6c178f7e (diff)
added CopyBuffer implementation to CLCommandQueue and and test method to HighLevelBindingTest.
Diffstat (limited to 'src/com/mbien/opencl/CLCommandQueue.java')
-rw-r--r--src/com/mbien/opencl/CLCommandQueue.java83
1 files changed, 79 insertions, 4 deletions
diff --git a/src/com/mbien/opencl/CLCommandQueue.java b/src/com/mbien/opencl/CLCommandQueue.java
index b0a6980f..7d1d09f9 100644
--- a/src/com/mbien/opencl/CLCommandQueue.java
+++ b/src/com/mbien/opencl/CLCommandQueue.java
@@ -30,8 +30,8 @@ public class CLCommandQueue {
int ret = cl.clEnqueueWriteBuffer(
ID, writeBuffer.ID, blockingWrite ? CL.CL_TRUE : CL.CL_FALSE,
0, writeBuffer.buffer.capacity(), writeBuffer.buffer,
- 0, null, 0,
- null, 0 );
+// 0, null, null); //TODO solve NPE in gluegen when PointerBuffer == null (fast dircet memory path)
+ 0, null, 0, null, 0); //TODO events
if(ret != CL.CL_SUCCESS)
throw new CLException(ret, "can not enqueue WriteBuffer: " + writeBuffer);
@@ -44,8 +44,8 @@ public class CLCommandQueue {
int ret = cl.clEnqueueReadBuffer(
ID, readBuffer.ID, blockingRead ? CL.CL_TRUE : CL.CL_FALSE,
0, readBuffer.buffer.capacity(), readBuffer.buffer,
- 0, null, 0,
- null, 0 );
+// 0, null, null); //TODO solve NPE in gluegen when PointerBuffer == null (fast dircet memory path)
+ 0, null, 0, null, 0); //TODO events
if(ret != CL.CL_SUCCESS)
throw new CLException(ret, "can not enqueue ReadBuffer: " + readBuffer);
@@ -53,6 +53,81 @@ public class CLCommandQueue {
return this;
}
+ public CLCommandQueue putBarrier() {
+ int ret = cl.clEnqueueBarrier(ID);
+ checkForError(ret, "can not enqueue Barrier");
+ return this;
+ }
+
+ public CLCommandQueue putCopyBuffer(CLBuffer src, CLBuffer dest, long bytesToCopy) {
+ int ret = cl.clEnqueueCopyBuffer(
+ ID, src.ID, dest.ID, src.buffer.position(), dest.buffer.position(), bytesToCopy,
+// 0, null, null); //TODO solve NPE in gluegen when PointerBuffer == null
+ 0, null, 0, null, 0); //TODO events
+ checkForError(ret, "can not copy Buffer");
+ return this;
+ }
+
+ //TODO implement remaining methods
+ /*
+ public CLCommandQueue putCopyImage() {
+
+ return this;
+ }
+ public CLCommandQueue putCopyBufferToImage() {
+
+ return this;
+ }
+ public CLCommandQueue putCopyImageToBuffer() {
+
+ return this;
+ }
+ public CLCommandQueue putMarker() {
+
+ return this;
+ }
+
+ public CLCommandQueue putWriteImage() {
+
+ return this;
+ }
+
+ public CLCommandQueue putReadImage() {
+
+ return this;
+ }
+
+ public CLCommandQueue putTask() {
+
+ return this;
+ }
+
+ public CLBuffer putMapBuffer() {
+
+ return null;
+ }
+
+ public CLCommandQueue putMapImage() {
+
+ return this;
+ }
+
+ public CLCommandQueue putUnmapMemObject() {
+
+ return this;
+ }
+
+ public CLCommandQueue putWaitForEvents() {
+
+ return this;
+ }
+*/
+
+// public CLCommandQueue putNDRangeKernel(CLKernel kernel, int workDimension, long globalWorkOffset, long globalWorkSize, long localWorkSize) {
+// return this.putNDRangeKernel(kernel, workDimension,
+// new long[] {globalWorkOffset}, new long[] {globalWorkSize}, new long[] {localWorkSize});
+// }
+
public CLCommandQueue putNDRangeKernel(CLKernel kernel, int workDimension, long[] globalWorkOffset, long[] globalWorkSize, long[] localWorkSize) {
int ret = cl.clEnqueueNDRangeKernel(