@Override @SuppressWarnings("element-type-mismatch") public CommandQueue createQueue(Device device) { assert (devices.contains(device)); //this also ensures that device is a LwjglDevice long d = ((LwjglDevice) device).getDevice(); long properties = 0; long q = CL10.clCreateCommandQueue(context, d, properties, Utils.errorBuffer); Utils.checkError(Utils.errorBuffer, "clCreateCommandQueue"); return new LwjglCommandQueue(q, device); }
@Override public void write(CommandQueue queue, ByteBuffer src, long size, long offset) { //Note: LWJGL does not support the size parameter, I have to set the buffer limit src.limit((int) (src.position() + size)); CLCommandQueue q = ((LwjglCommandQueue)queue).getQueue(); int ret = CL10.clEnqueueWriteBuffer(q, buffer, CL10.CL_TRUE, offset, src, null, null); Utils.checkError(ret, "clEnqueueWriteBuffer"); }
@Override public void read(CommandQueue queue, ByteBuffer dest, long size, long offset) { //Note: LWJGL does not support the size parameter, I have to set the buffer limit dest.limit((int) (dest.position() + size)); int ret = CL10.clEnqueueReadBuffer(((LwjglCommandQueue)queue).getQueue(), buffer, true, offset, dest, null, null); Utils.checkError(ret, "clEnqueueReadBuffer"); }
@Override @SuppressWarnings("element-type-mismatch") public CommandQueue createQueue(Device device) { assert (devices.contains(device)); //this also ensures that device is a LwjglDevice CLDevice d = ((LwjglDevice) device).getDevice(); long properties = 0; CLCommandQueue q = CL10.clCreateCommandQueue(context, d, properties, Utils.errorBuffer); Utils.checkError(Utils.errorBuffer, "clCreateCommandQueue"); return new LwjglCommandQueue(q, device); }
@Override public void write(CommandQueue queue, ByteBuffer src, long size, long offset) { //Note: LWJGL does not support the size parameter, I have to set the buffer limit src.limit((int) (src.position() + size)); long q = ((LwjglCommandQueue)queue).getQueue(); int ret = CL10.clEnqueueWriteBuffer(q, buffer, true, offset, src, null, null); Utils.checkError(ret, "clEnqueueWriteBuffer"); }
@Override public void read(CommandQueue queue, ByteBuffer dest, long size, long offset) { //Note: LWJGL does not support the size parameter, I have to set the buffer limit dest.limit((int) (dest.position() + size)); int ret = CL10.clEnqueueReadBuffer(((LwjglCommandQueue)queue).getQueue(), buffer, CL10.CL_TRUE, offset, dest, null, null); Utils.checkError(ret, "clEnqueueReadBuffer"); }
@Override public void releaseBufferForSharingNoEvent(CommandQueue queue) { CLCommandQueue q = ((LwjglCommandQueue) queue).getQueue(); int ret = CL10GL.clEnqueueReleaseGLObjects(q, buffer, null, null); Utils.checkError(ret, "clEnqueueReleaseGLObjects"); }
@Override public void acquireImageForSharingNoEvent(CommandQueue queue) { CLCommandQueue q = ((LwjglCommandQueue) queue).getQueue(); int ret = CL10GL.clEnqueueAcquireGLObjects(q, image, null, null); Utils.checkError(ret, "clEnqueueAcquireGLObjects"); } @Override
@Override public void acquireBufferForSharingNoEvent(CommandQueue queue) { long q = ((LwjglCommandQueue) queue).getQueue(); int ret = CL10GL.clEnqueueAcquireGLObjects(q, buffer, null, null); Utils.checkError(ret, "clEnqueueAcquireGLObjects"); }
@Override public void acquireBufferForSharingNoEvent(CommandQueue queue) { CLCommandQueue q = ((LwjglCommandQueue) queue).getQueue(); int ret = CL10GL.clEnqueueAcquireGLObjects(q, buffer, null, null); Utils.checkError(ret, "clEnqueueAcquireGLObjects"); }
@Override public void releaseImageForSharingNoEvent(CommandQueue queue) { CLCommandQueue q = ((LwjglCommandQueue) queue).getQueue(); int ret = CL10GL.clEnqueueReleaseGLObjects(q, image, null, null); Utils.checkError(ret, "clEnqueueReleaseGLObjects"); }
@Override public void acquireImageForSharingNoEvent(CommandQueue queue) { long q = ((LwjglCommandQueue) queue).getQueue(); int ret = CL10GL.clEnqueueAcquireGLObjects(q, image, null, null); Utils.checkError(ret, "clEnqueueAcquireGLObjects"); } @Override
@Override public void releaseBufferForSharingNoEvent(CommandQueue queue) { Utils.assertSharingPossible(); long q = ((LwjglCommandQueue) queue).getQueue(); int ret = CL10GL.clEnqueueReleaseGLObjects(q, buffer, null, null); Utils.checkError(ret, "clEnqueueReleaseGLObjects"); }
@Override public void releaseImageForSharingNoEvent(CommandQueue queue) { Utils.assertSharingPossible(); long q = ((LwjglCommandQueue) queue).getQueue(); int ret = CL10GL.clEnqueueReleaseGLObjects(q, image, null, null); Utils.checkError(ret, "clEnqueueReleaseGLObjects"); }
@Override public Event readAsync(CommandQueue queue, ByteBuffer dest, long size, long offset) { //Note: LWJGL does not support the size parameter, I have to set the buffer limit dest.limit((int) (dest.position() + size)); Utils.pointerBuffers[0].rewind(); long q = ((LwjglCommandQueue)queue).getQueue(); int ret = CL10.clEnqueueReadBuffer(q, buffer, false, offset, dest, null, Utils.pointerBuffers[0]); Utils.checkError(ret, "clEnqueueReadBuffer"); long event = Utils.pointerBuffers[0].get(0); return new LwjglEvent(event); }
@Override public Event writeAsync(CommandQueue queue, ByteBuffer src, long size, long offset) { //Note: LWJGL does not support the size parameter, I have to set the buffer limit src.limit((int) (src.position() + size)); Utils.pointerBuffers[0].rewind(); long q = ((LwjglCommandQueue)queue).getQueue(); int ret = CL10.clEnqueueWriteBuffer(q, buffer, false, offset, src, null, Utils.pointerBuffers[0]); Utils.checkError(ret, "clEnqueueWriteBuffer"); long event = Utils.pointerBuffers[0].get(0); return new LwjglEvent(event); }
@Override public Event readAsync(CommandQueue queue, ByteBuffer dest, long size, long offset) { //Note: LWJGL does not support the size parameter, I have to set the buffer limit dest.limit((int) (dest.position() + size)); Utils.pointerBuffers[0].rewind(); CLCommandQueue q = ((LwjglCommandQueue)queue).getQueue(); int ret = CL10.clEnqueueReadBuffer(q, buffer, CL10.CL_FALSE, offset, dest, null, Utils.pointerBuffers[0]); Utils.checkError(ret, "clEnqueueReadBuffer"); long event = Utils.pointerBuffers[0].get(0); return new LwjglEvent(q.getCLEvent(event)); }
@Override public Event writeAsync(CommandQueue queue, ByteBuffer src, long size, long offset) { //Note: LWJGL does not support the size parameter, I have to set the buffer limit src.limit((int) (src.position() + size)); Utils.pointerBuffers[0].rewind(); CLCommandQueue q = ((LwjglCommandQueue)queue).getQueue(); int ret = CL10.clEnqueueWriteBuffer(q, buffer, CL10.CL_FALSE, offset, src, null, Utils.pointerBuffers[0]); Utils.checkError(ret, "clEnqueueWriteBuffer"); long event = Utils.pointerBuffers[0].get(0); return new LwjglEvent(q.getCLEvent(event)); }
@Override public ByteBuffer map(CommandQueue queue, long size, long offset, MappingAccess access) { long q = ((LwjglCommandQueue) queue).getQueue(); long flags = Utils.getMappingAccessFlags(access); Utils.errorBuffer.rewind(); ByteBuffer b = CL10.clEnqueueMapBuffer(q, buffer, true, flags, offset, size, null, null, Utils.errorBuffer, null); Utils.checkError(Utils.errorBuffer, "clEnqueueMapBuffer"); return b; }
@Override public ByteBuffer map(CommandQueue queue, long size, long offset, MappingAccess access) { CLCommandQueue q = ((LwjglCommandQueue) queue).getQueue(); long flags = Utils.getMappingAccessFlags(access); Utils.errorBuffer.rewind(); ByteBuffer b = CL10.clEnqueueMapBuffer(q, buffer, CL10.CL_TRUE, flags, offset, size, null, null, Utils.errorBuffer); Utils.checkError(Utils.errorBuffer, "clEnqueueMapBuffer"); return b; }