diff options
Diffstat (limited to 'src/com/jogamp/opencl/CLSubBuffer.java')
-rw-r--r-- | src/com/jogamp/opencl/CLSubBuffer.java | 18 |
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; } |