aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/mbien/opencl/CLBuffer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/mbien/opencl/CLBuffer.java')
-rw-r--r--src/com/mbien/opencl/CLBuffer.java31
1 files changed, 8 insertions, 23 deletions
diff --git a/src/com/mbien/opencl/CLBuffer.java b/src/com/mbien/opencl/CLBuffer.java
index e42b9064..fd8611e5 100644
--- a/src/com/mbien/opencl/CLBuffer.java
+++ b/src/com/mbien/opencl/CLBuffer.java
@@ -8,46 +8,31 @@ import static com.mbien.opencl.CLException.*;
*
* @author Michael Bien
*/
-public final class CLBuffer<B extends Buffer> extends CLMemory<B> {
+public class CLBuffer<B extends Buffer> extends CLMemory<B> {
- private CLBuffer(CLContext context, B directBuffer, long id) {
+ protected CLBuffer(CLContext context, B directBuffer, long id) {
super(context, directBuffer, id);
}
static <B extends Buffer> CLBuffer<B> create(CLContext context, B directBuffer, int flags) {
- return create(context, directBuffer, flags, 0);
- }
-
- static <B extends Buffer> CLBuffer<B> create(CLContext context, B directBuffer, int flags, int glBuffer) {
if(directBuffer != null && !directBuffer.isDirect())
throw new IllegalArgumentException("buffer is not a direct buffer");
+ B host_ptr = null;
CL cl = context.cl;
- long id;
-
int[] result = new int[1];
- if(glBuffer == 0) {
- B host_ptr = null;
- if(isHostPointerFlag(flags)) {
- host_ptr = directBuffer;
- }
- id = cl.clCreateBuffer(context.ID, flags, sizeOfBufferElem(directBuffer)*directBuffer.capacity(), host_ptr, result, 0);
- }else{
- if(isHostPointerFlag(flags)) {
- throw new IllegalArgumentException(
- "CL_MEM_COPY_HOST_PTR or CL_MEM_USE_HOST_PTR can not be used with OpenGL Buffers.");
- }
- CLGLI clgli = (CLGLI)cl;
- id = clgli.clCreateFromGLBuffer(context.ID, flags, glBuffer, result, 0);
+ if(isHostPointerFlag(flags)) {
+ host_ptr = directBuffer;
}
+ long id = cl.clCreateBuffer(context.ID, flags, sizeOfBufferElem(directBuffer)*directBuffer.capacity(), host_ptr, result, 0);
checkForError(result[0], "can not create cl buffer");
-
+
return new CLBuffer<B>(context, directBuffer, id);
}
-
+
@Override
public <T extends Buffer> CLBuffer<T> cloneWith(T directBuffer) {
return new CLBuffer<T>(context, directBuffer, ID);