aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/jogamp/opencl/CLSubBuffer.java
diff options
context:
space:
mode:
authorMichael Bien <[email protected]>2010-07-05 00:10:15 +0200
committerMichael Bien <[email protected]>2010-07-05 00:10:15 +0200
commita81e907b30364b1abc2a75d446772f066fbf74ff (patch)
tree6b61b193829bb72c3a0432afffc36d469950314c /src/com/jogamp/opencl/CLSubBuffer.java
parente5208ab035bc454730edc847cad9d5af3ed92e8c (diff)
finished CLSubBuffer, added junit testcase, perf improvements and cleanup.
CLMemory methods contain now NIO infix for nio buffer specific queries and CL infix for memory object queries.
Diffstat (limited to 'src/com/jogamp/opencl/CLSubBuffer.java')
-rw-r--r--src/com/jogamp/opencl/CLSubBuffer.java18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/com/jogamp/opencl/CLSubBuffer.java b/src/com/jogamp/opencl/CLSubBuffer.java
index 614dfa80..165df23f 100644
--- a/src/com/jogamp/opencl/CLSubBuffer.java
+++ b/src/com/jogamp/opencl/CLSubBuffer.java
@@ -12,18 +12,18 @@ public class CLSubBuffer<B extends Buffer> extends CLBuffer<B> {
private CLBuffer<B> parent;
private final int offset;
- CLSubBuffer(CLBuffer<B> parent, int origin, B directBuffer, long id, int flags) {
- super(parent.getContext(), directBuffer, id, flags);
+ CLSubBuffer(CLBuffer<B> parent, int origin, int size, B directBuffer, long id, int flags) {
+ super(parent.getContext(), directBuffer, size, id, flags);
this.parent = parent;
this.offset = origin;
}
/**
* Throws an UnsupportedOperationException since creating sub buffers
- * from sub buffers is not allowed.
+ * from sub buffers is not allowed as of OpenCL 1.1.
*/
@Override
- public CLBuffer<B> createSubBuffer(int origin, int size, Mem... flags) {
+ public CLSubBuffer<B> createSubBuffer(int origin, int size, Mem... flags) {
throw new UnsupportedOperationException("creating sub buffers from sub buffers is not allowed.");
}
@@ -41,9 +41,17 @@ public class CLSubBuffer<B extends Buffer> extends CLBuffer<B> {
}
/**
- * Returns the offset of this sub buffer to its parent.
+ * Returns the offset of this sub buffer to its parent in buffer elements.
*/
public int getOffset() {
+ int elemSize = buffer==null ? 1 : sizeOfBufferElem(buffer);
+ return offset/elemSize;
+ }
+
+ /**
+ * Returns the offset of this sub buffer to its parent in bytes.
+ */
+ public int getCLOffset() {
return offset;
}