JOCL v2.6.0-rc-20250722
JOCL, OpenCL® API Binding for Java™ (public API).
CLCommandQueue.java
Go to the documentation of this file.
1/*
2 * Copyright (c) 2009 JogAmp Community. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without modification, are
5 * permitted provided that the following conditions are met:
6 *
7 * 1. Redistributions of source code must retain the above copyright notice, this list of
8 * conditions and the following disclaimer.
9 *
10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
11 * of conditions and the following disclaimer in the documentation and/or other materials
12 * provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
15 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 *
24 * The views and conclusions contained in the software and documentation are those of the
25 * authors and should not be interpreted as representing official policies, either expressed
26 * or implied, of JogAmp Community.
27 */
28
29package com.jogamp.opencl;
30
31import static com.jogamp.opencl.CLException.checkForError;
32import static com.jogamp.opencl.CLException.newException;
33import static com.jogamp.opencl.llb.CL.CL_SUCCESS;
34import static com.jogamp.opencl.llb.CL.CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE;
35import static com.jogamp.opencl.llb.CL.CL_QUEUE_PROFILING_ENABLE;
36import static com.jogamp.opencl.util.CLUtil.clBoolean;
37
38import java.nio.Buffer;
39import java.nio.ByteBuffer;
40import java.nio.IntBuffer;
41import java.util.ArrayList;
42import java.util.Arrays;
43import java.util.EnumSet;
44import java.util.List;
45
46import com.jogamp.common.nio.AbstractBuffer;
47import com.jogamp.common.nio.CachedBufferFactory;
48import com.jogamp.common.nio.PointerBuffer;
49import com.jogamp.opencl.gl.CLGLObject;
50import com.jogamp.opencl.llb.CL;
51
52/**
53 * The command queue is used to queue a set of operations for a specific {@link CLDevice}.
54 * Having multiple command-queues allows applications to queue multiple independent commands without
55 * requiring synchronization. Note that this should work as long as these objects are
56 * not being shared.
57 * <p>
58 * concurrency note:<br/>
59 * Sharing of objects across multiple queues or using a CLCommandQueue
60 * form multiple Threads will require the application to perform appropriate synchronization.
61 * </p>
62 * @see CLDevice#createCommandQueue(com.jogamp.opencl.CLCommandQueue.Mode...)
63 * @author Michael Bien, et al.
64 */
65public class CLCommandQueue extends CLObjectResource {
66
67 private final CL cl;
68 private final CLDevice device;
69 private final long properties;
70
71 /*
72 * Those direct memory buffers are used to move data between the JVM and OpenCL.
73 */
74 private final IntBuffer pbA;
75 private final PointerBuffer ibA;
76 private final PointerBuffer ibB;
77 private final PointerBuffer ibC;
78
79 private CLCommandQueue(final CLContext context, final long id, final CLDevice device, final long properties) {
80 super(context, id);
81
82 this.device = device;
83 this.properties = properties;
84 this.cl = context.getPlatform().getCLBinding();
85
86 final int pbsize = AbstractBuffer.POINTER_SIZE;
87 final CachedBufferFactory factory = CachedBufferFactory.create(9*pbsize + 4, true);
88
89 this.ibA = PointerBuffer.wrap(factory.newDirectByteBuffer(3*pbsize));
90 this.ibB = PointerBuffer.wrap(factory.newDirectByteBuffer(3*pbsize));
91 this.ibC = PointerBuffer.wrap(factory.newDirectByteBuffer(3*pbsize));
92
93 this.pbA = factory.newDirectIntBuffer(1);
94
95 }
96
97 static CLCommandQueue create(final CLContext context, final CLDevice device, final long properties) {
98 final int[] status = new int[1];
99 final CL binding = context.getPlatform().getCLBinding();
100 final long id = binding.clCreateCommandQueue(context.ID, device.ID, properties, status, 0);
101
102 if(status[0] != CL_SUCCESS) {
103 throw newException(status[0], "can not create command queue on " + device +" with properties: " + Mode.valuesOf(properties));
104 }
105
106 return new CLCommandQueue(context, id, device, properties);
107 }
108
109 /**
110 * Calls {@native clEnqueueWriteBuffer}.
111 */
112 public CLCommandQueue putWriteBuffer(final CLBuffer<?> writeBuffer, final boolean blockingRead) {
113 return putWriteBuffer(writeBuffer, blockingRead, null, null);
114 }
115
116 /**
117 * Calls {@native clEnqueueWriteBuffer}.
118 */
119 public CLCommandQueue putWriteBuffer(final CLBuffer<?> writeBuffer, final boolean blockingRead, final CLEventList events) {
120 return putWriteBuffer(writeBuffer, blockingRead, null, events);
121 }
122
123 /**
124 * Calls {@native clEnqueueWriteBuffer}.
125 */
126 public CLCommandQueue putWriteBuffer(final CLBuffer<?> writeBuffer, final boolean blockingWrite, final CLEventList condition, final CLEventList events) {
127
128 PointerBuffer conditionIDs = null;
129 int conditions = 0;
130 if(condition != null) {
131 conditionIDs = condition.IDsView;
132 conditions = condition.size;
133 }
134
135 final int ret = cl.clEnqueueWriteBuffer(
136 ID, writeBuffer.ID, clBoolean(blockingWrite),
137 0, writeBuffer.getNIOSize(), writeBuffer.buffer,
138 conditions, conditionIDs, events==null ? null : events.IDs);
139
140 if(ret != CL_SUCCESS) {
141 throw newException(ret, "can not enqueue write-buffer: " + writeBuffer + " with " + toStr(condition, events));
142 }
143
144 if(events != null) {
145 events.createEvent(context);
146 }
147
148 return this;
149 }
150
151 /**
152 * Calls {@native clEnqueueReadBuffer}.
153 */
154 public CLCommandQueue putReadBuffer(final CLBuffer<?> readBuffer, final boolean blockingRead) {
155 putReadBuffer(readBuffer, blockingRead, null, null);
156 return this;
157 }
158
159 /**
160 * Calls {@native clEnqueueReadBuffer}.
161 */
162 public CLCommandQueue putReadBuffer(final CLBuffer<?> readBuffer, final boolean blockingRead, final CLEventList events) {
163 putReadBuffer(readBuffer, blockingRead, null, events);
164 return this;
165 }
166
167 /**
168 * Calls {@native clEnqueueReadBuffer}.
169 */
170 public CLCommandQueue putReadBuffer(final CLBuffer<?> readBuffer, final boolean blockingRead, final CLEventList condition, final CLEventList events) {
171
172 PointerBuffer conditionIDs = null;
173 int conditions = 0;
174 if(condition != null) {
175 conditionIDs = condition.IDsView;
176 conditions = condition.size;
177 }
178
179 final int ret = cl.clEnqueueReadBuffer(
180 ID, readBuffer.ID, clBoolean(blockingRead),
181 0, readBuffer.getNIOSize(), readBuffer.buffer,
182 conditions, conditionIDs, events==null ? null : events.IDs);
183
184 if(ret != CL_SUCCESS) {
185 throw newException(ret, "can not enqueue read-buffer: " + readBuffer + " with " + toStr(condition, events));
186 }
187
188 if(events != null) {
189 events.createEvent(context);
190 }
191
192 return this;
193 }
194
195 /**
196 * Calls {@native clEnqueueCopyBuffer}.
197 */
198 public CLCommandQueue putCopyBuffer(final CLBuffer<?> src, final CLBuffer<?> dest) {
199 return putCopyBuffer(src, dest, 0, 0, src.getCLSize(), null, null);
200 }
201
202 /**
203 * Calls {@native clEnqueueCopyBuffer}.
204 */
205 public CLCommandQueue putCopyBuffer(final CLBuffer<?> src, final CLBuffer<?> dest, final long bytesToCopy) {
206 return putCopyBuffer(src, dest, 0, 0, bytesToCopy, null, null);
207 }
208
209 /**
210 * Calls {@native clEnqueueCopyBuffer}.
211 */
212 public CLCommandQueue putCopyBuffer(final CLBuffer<?> src, final CLBuffer<?> dest, final int srcOffset, final int destOffset, final long bytesToCopy, final CLEventList events) {
213 return putCopyBuffer(src, dest, srcOffset, destOffset, bytesToCopy, null, events);
214 }
215
216 /**
217 * Calls {@native clEnqueueCopyBuffer}.
218 */
219 public CLCommandQueue putCopyBuffer(final CLBuffer<?> src, final CLBuffer<?> dest, final int srcOffset, final int destOffset, final long bytesToCopy, final CLEventList condition, final CLEventList events) {
220
221 PointerBuffer conditionIDs = null;
222 int conditions = 0;
223 if(condition != null) {
224 conditionIDs = condition.IDsView;
225 conditions = condition.size;
226 }
227
228 final int ret = cl.clEnqueueCopyBuffer(
229 ID, src.ID, dest.ID, srcOffset, destOffset, bytesToCopy,
230 conditions, conditionIDs, events==null ? null : events.IDs);
231
232 if(ret != CL_SUCCESS) {
233 throw newException(ret, "can not enqueue copy-buffer from " + src + " to " + dest + " with srcOffset: "+ srcOffset
234 + " dstOffset: " + destOffset + " bytesToCopy: " + bytesToCopy + toStr(condition, events));
235 }
236
237 if(events != null) {
238 events.createEvent(context);
239 }
240
241 return this;
242 }
243
244 //2D
245 /**
246 * Calls {@native clEnqueueWriteBufferRect}.
247 */
249 final int originX, final int originY, final int hostX, final int hostY, final int rangeX, final int rangeY,
250 final boolean blockingWrite, final CLEventList condition, final CLEventList events) {
251 putWriteBufferRect(writeBuffer, originX, originY, hostX, hostY, rangeX, rangeY, 0, 0, 0, 0, blockingWrite, condition, events);
252 return this;
253 }
254
255 /**
256 * Calls {@native clEnqueueWriteBufferRect}.
257 */
259 final int originX, final int originY, final int hostX, final int hostY, final int rangeX, final int rangeY,
260 final long rowPitch, final long slicePitch, final long hostRowPitch, final long hostSlicePitch,
261 final boolean blockingWrite, final CLEventList condition, final CLEventList events) {
262 // spec: if 2d: origin/hostpos=0, range=1
263 putWriteBufferRect( writeBuffer, originX, originY, 0,
264 hostX, hostY, 0,
265 rangeX, rangeY, 1,
266 0, 0, 0, 0, blockingWrite, condition, events);
267 return this;
268 }
269
270 //3D
271 /**
272 * Calls {@native clEnqueueWriteBufferRect}.
273 */
275 final int originX, final int originY, final int originZ, final int hostX, final int hostY, final int hostZ, final int rangeX, final int rangeY, final int rangeZ,
276 final boolean blockingWrite, final CLEventList condition, final CLEventList events) {
277 putWriteBufferRect(writeBuffer, originX, originY, originZ,
278 hostX, hostY, hostZ,
279 rangeX, rangeY, rangeZ, 0, 0, 0, 0, blockingWrite, condition, events);
280 return this;
281 }
282
283 /**
284 * Calls {@native clEnqueueWriteBufferRect}.
285 */
287 final int originX, final int originY, final int originZ, final int hostX, final int hostY, final int hostZ, final int rangeX, final int rangeY, final int rangeZ,
288 final long rowPitch, final long slicePitch, final long hostRowPitch, final long hostSlicePitch,
289 final boolean blockingWrite, final CLEventList condition, final CLEventList events) {
290
291 PointerBuffer conditionIDs = null;
292 int conditions = 0;
293 if(condition != null) {
294 conditionIDs = condition.IDsView;
295 conditions = condition.size;
296 }
297
298 copy2NIO(ibA, originX, originY, originZ);
299 copy2NIO(ibB, hostX, hostY, hostZ);
300 copy2NIO(ibC, rangeX, rangeY, rangeZ);
301
302 final int ret = cl.clEnqueueWriteBufferRect(
303 ID, writeBuffer.ID, clBoolean(blockingWrite), ibA, ibB, ibC,
304 rowPitch, slicePitch, hostRowPitch, hostSlicePitch, writeBuffer.getBuffer(),
305 conditions, conditionIDs, events==null ? null : events.IDs);
306
307 if(ret != CL_SUCCESS) {
308 throw newException(ret, bufferRectToString("write", writeBuffer,
309 rowPitch, slicePitch, hostRowPitch, hostSlicePitch,
310 originX, originY, originZ, hostX, hostY, hostZ,
311 rangeX, rangeY, rangeZ, condition, events) );
312 }
313
314 if(events != null) {
315 events.createEvent(context);
316 }
317
318 return this;
319 }
320
321 //2D
322 /**
323 * Calls {@native clEnqueueReadBufferRect}.
324 */
326 final int originX, final int originY, final int hostX, final int hostY, final int rangeX, final int rangeY,
327 final boolean blockingRead, final CLEventList condition, final CLEventList events) {
328 putReadBufferRect(readBuffer, originX, originY, hostX, hostY, rangeX, rangeY, 0, 0, 0, 0, blockingRead, condition, events);
329 return this;
330 }
331
332 /**
333 * Calls {@native clEnqueueReadBufferRect}.
334 */
336 final int originX, final int originY, final int hostX, final int hostY, final int rangeX, final int rangeY,
337 final long rowPitch, final long slicePitch, final long hostRowPitch, final long hostSlicePitch,
338 final boolean blockingRead, final CLEventList condition, final CLEventList events) {
339 // spec: if 2d: origin/hostpos=0, range=1
340 putReadBufferRect( readBuffer, originX, originY, 0,
341 hostX, hostY, 0,
342 rangeX, rangeY, 1,
343 0, 0, 0, 0, blockingRead, condition, events);
344 return this;
345 }
346
347 //3D
348 /**
349 * Calls {@native clEnqueueReadBufferRect}.
350 */
352 final int originX, final int originY, final int originZ, final int hostX, final int hostY, final int hostZ, final int rangeX, final int rangeY, final int rangeZ,
353 final boolean blockingRead, final CLEventList condition, final CLEventList events) {
354 putReadBufferRect( readBuffer, originX, originY, originZ,
355 hostX, hostY, hostZ,
356 rangeX, rangeY, rangeZ,
357 0, 0, 0, 0, blockingRead, condition, events);
358 return this;
359 }
360
361 /**
362 * Calls {@native clEnqueueReadBufferRect}.
363 */
365 final int originX, final int originY, final int originZ, final int hostX, final int hostY, final int hostZ, final int rangeX, final int rangeY, final int rangeZ,
366 final long rowPitch, final long slicePitch, final long hostRowPitch, final long hostSlicePitch,
367 final boolean blockingRead, final CLEventList condition, final CLEventList events) {
368
369 PointerBuffer conditionIDs = null;
370 int conditions = 0;
371 if(condition != null) {
372 conditionIDs = condition.IDsView;
373 conditions = condition.size;
374 }
375
376 copy2NIO(ibA, originX, originY, originZ);
377 copy2NIO(ibB, hostX, hostY, hostZ);
378 copy2NIO(ibC, rangeX, rangeY, rangeZ);
379
380 final int ret = cl.clEnqueueReadBufferRect(
381 ID, readBuffer.ID, clBoolean(blockingRead), ibA, ibB, ibC,
382 rowPitch, slicePitch, hostRowPitch, hostSlicePitch, readBuffer.getBuffer(),
383 conditions, conditionIDs, events==null ? null : events.IDs);
384
385 if(ret != CL_SUCCESS) {
386 throw newException(ret, bufferRectToString("read", readBuffer,
387 rowPitch, slicePitch, hostRowPitch, hostSlicePitch,
388 originX, originY, originZ, hostX, hostY, hostZ,
389 rangeX, rangeY, rangeZ, condition, events) );
390 }
391
392 if(events != null) {
393 events.createEvent(context);
394 }
395
396 return this;
397 }
398
399 //2D
400 /**
401 * Calls {@native clEnqueueCopyBufferRect}.
402 */
404 final int srcOriginX, final int srcOriginY, final int destOriginX, final int destOriginY, final int rangeX, final int rangeY,
405 final CLEventList condition, final CLEventList events) {
406 // spec: if 2d: origin/destpos=0, range=1
407 putCopyBufferRect( src, dest, srcOriginX, srcOriginY, 0,
408 destOriginX, destOriginY, 0,
409 rangeX, rangeY, 1,
410 0, 0, 0, 0, condition, events);
411 return this;
412 }
413
414 /**
415 * Calls {@native clEnqueueCopyBufferRect}.
416 */
418 final int srcOriginX, final int srcOriginY, final int destOriginX, final int destOriginY, final int rangeX, final int rangeY,
419 final long srcRowPitch, final long srcSlicePitch, final long destRowPitch, final long destSlicePitch,
420 final CLEventList condition, final CLEventList events) {
421 putCopyBufferRect( src, dest, srcOriginX, srcOriginY, 0,
422 destOriginX, destOriginY, 0,
423 rangeX, rangeY, 1,
424 srcRowPitch, srcSlicePitch, destRowPitch, destSlicePitch, condition, events);
425 return this;
426 }
427
428
429 //3D
430 /**
431 * Calls {@native clEnqueueCopyBufferRect}.
432 */
434 final int srcOriginX, final int srcOriginY, final int srcOriginZ, final int destOriginX, final int destOriginY, final int destOriginZ, final int rangeX, final int rangeY, final int rangeZ,
435 final CLEventList condition, final CLEventList events) {
436 putCopyBufferRect( src, dest, srcOriginX, srcOriginY, srcOriginZ,
437 destOriginX, destOriginY, destOriginZ,
438 rangeX, rangeY, rangeZ,
439 0, 0, 0, 0, condition, events);
440 return this;
441 }
442 /**
443 * Calls {@native clEnqueueCopyBufferRect}.
444 */
446 final int srcOriginX, final int srcOriginY, final int srcOriginZ, final int destOriginX, final int destOriginY, final int destOriginZ, final int rangeX, final int rangeY, final int rangeZ,
447 final long srcRowPitch, final long srcSlicePitch, final long destRowPitch, final long destSlicePitch,
448 final CLEventList condition, final CLEventList events) {
449
450 PointerBuffer conditionIDs = null;
451 int conditions = 0;
452 if(condition != null) {
453 conditionIDs = condition.IDsView;
454 conditions = condition.size;
455 }
456
457 copy2NIO(ibA, srcOriginX, srcOriginY, srcOriginZ);
458 copy2NIO(ibB, destOriginX, destOriginY, destOriginZ);
459 copy2NIO(ibC, rangeX, rangeY, rangeZ);
460
461 final int ret = cl.clEnqueueCopyBufferRect(
462 ID, src.ID, dest.ID, ibA, ibB, ibC,
463 srcRowPitch, srcSlicePitch, destRowPitch, destSlicePitch,
464 conditions, conditionIDs, events==null ? null : events.IDs);
465
466 if(ret != CL_SUCCESS) {
467 throw newException(ret, "can not enqueue copy-buffer-rect from " + src + " to " + dest + "\n"
468 + " with srcRowPitch: " + srcRowPitch + " srcSlicePitch: " + srcSlicePitch
469 + " destRowPitch: " + destRowPitch + " destSlicePitch: " + destSlicePitch + "\n"
470 + " srcOrigin: " + toStr(srcOriginX, srcOriginY, srcOriginZ)+ " destOrigin: " + toStr(destOriginX, destOriginY, destOriginZ)
471 + " range: " + toStr(rangeX, rangeY, rangeZ) + toStr(condition, events));
472 }
473
474 if(events != null) {
475 events.createEvent(context);
476 }
477
478 return this;
479 }
480
481
482 //2D
483 /**
484 * Calls {@native clEnqueueWriteImage}.
485 */
486 public CLCommandQueue putWriteImage(final CLImage2d<?> writeImage, final boolean blockingWrite) {
487 return putWriteImage(writeImage, 0, 0, 0, writeImage.width, writeImage.height, blockingWrite, null, null);
488 }
489
490 /**
491 * Calls {@native clEnqueueWriteImage}.
492 */
493 public CLCommandQueue putWriteImage(final CLImage2d<?> writeImage, final boolean blockingWrite, final CLEventList events) {
494 return putWriteImage(writeImage, 0, 0, 0, writeImage.width, writeImage.height, blockingWrite, null, events);
495 }
496
497 /**
498 * Calls {@native clEnqueueWriteImage}.
499 */
500 public CLCommandQueue putWriteImage(final CLImage2d<?> writeImage, final boolean blockingWrite, final CLEventList condition, final CLEventList events) {
501 return putWriteImage(writeImage, 0, 0, 0, writeImage.width, writeImage.height, blockingWrite, condition, events);
502 }
503
504 /**
505 * Calls {@native clEnqueueWriteImage}.
506 */
507 public CLCommandQueue putWriteImage(final CLImage2d<?> writeImage, final int inputRowPitch,
508 final int originX, final int originY, final int rangeX, final int rangeY, final boolean blockingWrite) {
509 return putWriteImage(writeImage, inputRowPitch, originX, originY, rangeX, rangeY, blockingWrite, null, null);
510 }
511
512 /**
513 * Calls {@native clEnqueueWriteImage}.
514 */
515 public CLCommandQueue putWriteImage(final CLImage2d<?> writeImage, final int inputRowPitch,
516 final int originX, final int originY, final int rangeX, final int rangeY, final boolean blockingWrite, final CLEventList condition, final CLEventList events) {
517
518 PointerBuffer conditionIDs = null;
519 int conditions = 0;
520 if(condition != null) {
521 conditionIDs = condition.IDsView;
522 conditions = condition.size;
523 }
524
525 // spec: CL_INVALID_VALUE if image is a 2D image object and origin[2] is not equal to 0
526 // or region[2] is not equal to 1 or slice_pitch is not equal to 0.
527 copy2NIO(ibA, originX, originY, 0);
528 copy2NIO(ibB, rangeX, rangeY, 1);
529
530 final int ret = cl.clEnqueueWriteImage(ID, writeImage.ID, clBoolean(blockingWrite),
531 ibA, ibB, inputRowPitch, 0, writeImage.buffer,
532 conditions, conditionIDs, events==null ? null : events.IDs);
533 if(ret != CL_SUCCESS) {
534 throw newException(ret, "can not enqueue write-image " + writeImage + " with inputRowPitch: " + inputRowPitch
535 + " origin: " + toStr(originX, originY)+ " range: " + toStr(rangeX, rangeY) + toStr(condition, events));
536 }
537
538 if(events != null) {
539 events.createEvent(context);
540 }
541 return this;
542 }
543
544 //3D
545 /**
546 * Calls {@native clEnqueueWriteImage}.
547 */
548 public CLCommandQueue putWriteImage(final CLImage3d<?> writeImage, final boolean blockingWrite) {
549 return putWriteImage(writeImage, 0, 0, 0, 0, 0, writeImage.width, writeImage.height, writeImage.depth, blockingWrite, null, null);
550 }
551
552 /**
553 * Calls {@native clEnqueueWriteImage}.
554 */
555 public CLCommandQueue putWriteImage(final CLImage3d<?> writeImage, final boolean blockingWrite, final CLEventList events) {
556 return putWriteImage(writeImage, 0, 0, 0, 0, 0, writeImage.width, writeImage.height, writeImage.depth, blockingWrite, null, events);
557 }
558
559 /**
560 * Calls {@native clEnqueueWriteImage}.
561 */
562 public CLCommandQueue putWriteImage(final CLImage3d<?> writeImage, final boolean blockingWrite, final CLEventList condition, final CLEventList events) {
563 return putWriteImage(writeImage, 0, 0, 0, 0, 0, writeImage.width, writeImage.height, writeImage.depth, blockingWrite, condition, events);
564 }
565
566 /**
567 * Calls {@native clEnqueueWriteImage}.
568 */
569 public CLCommandQueue putWriteImage(final CLImage3d<?> writeImage, final int inputRowPitch, final int inputSlicePitch,
570 final int originX, final int originY, final int originZ, final int rangeX, final int rangeY, final int rangeZ, final boolean blockingWrite) {
571 return putWriteImage(writeImage, inputRowPitch, inputSlicePitch, originX, originY, originZ, rangeX, rangeY, rangeZ, blockingWrite, null, null);
572 }
573
574 /**
575 * Calls {@native clEnqueueWriteImage}.
576 */
577 public CLCommandQueue putWriteImage(final CLImage3d<?> writeImage, final int inputRowPitch, final int inputSlicePitch,
578 final int originX, final int originY, final int originZ, final int rangeX, final int rangeY, final int rangeZ, final boolean blockingWrite, final CLEventList condition, final CLEventList events) {
579
580 PointerBuffer conditionIDs = null;
581 int conditions = 0;
582 if(condition != null) {
583 conditionIDs = condition.IDsView;
584 conditions = condition.size;
585 }
586
587 copy2NIO(ibA, originX, originY, originZ);
588 copy2NIO(ibB, rangeX, rangeY, rangeZ);
589
590 final int ret = cl.clEnqueueWriteImage(ID, writeImage.ID, clBoolean(blockingWrite),
591 ibA, ibB, inputRowPitch, inputSlicePitch, writeImage.buffer,
592 conditions, conditionIDs, events==null ? null : events.IDs);
593
594 if(ret != CL_SUCCESS) {
595 throw newException(ret, "can not enqueue write-image " + writeImage + " with inputRowPitch: " + inputRowPitch + " inputSlicePitch: " + inputSlicePitch
596 + " origin: " + toStr(originX, originY, originZ)+ " range: " + toStr(rangeX, rangeY, rangeZ) + toStr(condition, events));
597 }
598
599 if(events != null) {
600 events.createEvent(context);
601 }
602 return this;
603 }
604
605 //2D
606 /**
607 * Calls {@native clEnqueueReadImage}.
608 */
609 public CLCommandQueue putReadImage(final CLImage2d<?> readImage, final boolean blockingRead) {
610 return putReadImage(readImage, 0, 0, 0, readImage.width, readImage.height, blockingRead, null, null);
611 }
612
613 /**
614 * Calls {@native clEnqueueReadImage}.
615 */
616 public CLCommandQueue putReadImage(final CLImage2d<?> readImage, final boolean blockingRead, final CLEventList events) {
617 return putReadImage(readImage, 0, 0, 0, readImage.width, readImage.height, blockingRead, null, events);
618 }
619
620 /**
621 * Calls {@native clEnqueueReadImage}.
622 */
623 public CLCommandQueue putReadImage(final CLImage2d<?> readImage, final boolean blockingRead, final CLEventList condition, final CLEventList events) {
624 return putReadImage(readImage, 0, 0, 0, readImage.width, readImage.height, blockingRead, condition, events);
625 }
626
627 /**
628 * Calls {@native clEnqueueReadImage}.
629 */
630 public CLCommandQueue putReadImage(final CLImage2d<?> readImage, final int inputRowPitch,
631 final int originX, final int originY, final int rangeX, final int rangeY, final boolean blockingRead) {
632 return putReadImage(readImage, inputRowPitch, originX, originY, rangeX, rangeY, blockingRead, null, null);
633 }
634
635 /**
636 * Calls {@native clEnqueueReadImage}.
637 */
638 public CLCommandQueue putReadImage(final CLImage2d<?> readImage, final int inputRowPitch,
639 final int originX, final int originY, final int rangeX, final int rangeY, final boolean blockingRead, final CLEventList condition, final CLEventList events) {
640
641 PointerBuffer conditionIDs = null;
642 int conditions = 0;
643 if(condition != null) {
644 conditionIDs = condition.IDsView;
645 conditions = condition.size;
646 }
647
648 // spec: CL_INVALID_VALUE if image is a 2D image object and origin[2] is not equal to 0
649 // or region[2] is not equal to 1 or slice_pitch is not equal to 0.
650 copy2NIO(ibA, originX, originY, 0);
651 copy2NIO(ibB, rangeX, rangeY, 1);
652
653 final int ret = cl.clEnqueueReadImage(ID, readImage.ID, clBoolean(blockingRead),
654 ibA, ibB, inputRowPitch, 0, readImage.buffer,
655 conditions, conditionIDs, events==null ? null : events.IDs);
656 if(ret != CL_SUCCESS) {
657 throw newException(ret, "can not enqueue read-image " + readImage + " with inputRowPitch: " + inputRowPitch
658 + " origin: " + toStr(originX, originY)+ " range: " + toStr(rangeX, rangeY) + toStr(condition, events));
659 }
660
661 if(events != null) {
662 events.createEvent(context);
663 }
664 return this;
665 }
666
667 //3D
668 /**
669 * Calls {@native clEnqueueReadImage}.
670 */
671 public CLCommandQueue putReadImage(final CLImage3d<?> readImage, final boolean blockingRead) {
672 return putReadImage(readImage, 0, 0, 0, 0, 0, readImage.width, readImage.height, readImage.depth, blockingRead, null, null);
673 }
674
675 /**
676 * Calls {@native clEnqueueReadImage}.
677 */
678 public CLCommandQueue putReadImage(final CLImage3d<?> readImage, final boolean blockingRead, final CLEventList events) {
679 return putReadImage(readImage, 0, 0, 0, 0, 0, readImage.width, readImage.height, readImage.depth, blockingRead, null, events);
680 }
681
682 /**
683 * Calls {@native clEnqueueReadImage}.
684 */
685 public CLCommandQueue putReadImage(final CLImage3d<?> readImage, final boolean blockingRead, final CLEventList condition, final CLEventList events) {
686 return putReadImage(readImage, 0, 0, 0, 0, 0, readImage.width, readImage.height, readImage.depth, blockingRead, condition, events);
687 }
688
689 /**
690 * Calls {@native clEnqueueReadImage}.
691 */
692 public CLCommandQueue putReadImage(final CLImage3d<?> readImage, final int inputRowPitch, final int inputSlicePitch,
693 final int originX, final int originY, final int originZ, final int rangeX, final int rangeY, final int rangeZ, final boolean blockingRead) {
694 return putReadImage(readImage, inputRowPitch, inputSlicePitch, originX, originY, originZ, rangeX, rangeY, rangeZ, blockingRead, null, null);
695 }
696
697 /**
698 * Calls {@native clEnqueueReadImage}.
699 */
700 public CLCommandQueue putReadImage(final CLImage3d<?> readImage, final int inputRowPitch, final int inputSlicePitch,
701 final int originX, final int originY, final int originZ, final int rangeX, final int rangeY, final int rangeZ, final boolean blockingRead, final CLEventList condition, final CLEventList events) {
702
703 PointerBuffer conditionIDs = null;
704 int conditions = 0;
705 if(condition != null) {
706 conditionIDs = condition.IDsView;
707 conditions = condition.size;
708 }
709
710 copy2NIO(ibA, originX, originY, originZ);
711 copy2NIO(ibB, rangeX, rangeY, rangeZ);
712
713 final int ret = cl.clEnqueueReadImage(ID, readImage.ID, clBoolean(blockingRead),
714 ibA, ibB, inputRowPitch, inputSlicePitch, readImage.buffer,
715 conditions, conditionIDs, events==null ? null : events.IDs);
716 if(ret != CL_SUCCESS) {
717 throw newException(ret, "can not enqueue read-image " + readImage + " with inputRowPitch: " + inputRowPitch + " inputSlicePitch: " + inputSlicePitch
718 + " origin: " + toStr(originX, originY, originZ)+ " range: " + toStr(rangeX, rangeY, rangeZ) + toStr(condition, events));
719 }
720
721 if(events != null) {
722 events.createEvent(context);
723 }
724 return this;
725 }
726
727 //2D
728 /**
729 * Calls {@native clEnqueueCopyImage}.
730 */
731 public CLCommandQueue putCopyImage(final CLImage2d<?> srcImage, final CLImage2d<?> dstImage) {
732 return putCopyImage(srcImage, dstImage, null);
733 }
734
735 /**
736 * Calls {@native clEnqueueCopyImage}.
737 */
738 public CLCommandQueue putCopyImage(final CLImage2d<?> srcImage, final CLImage2d<?> dstImage, final CLEventList events) {
739 return putCopyImage(srcImage, dstImage, 0, 0, 0, 0, srcImage.width, srcImage.height, null, events);
740 }
741
742 /**
743 * Calls {@native clEnqueueCopyImage}.
744 */
745 public CLCommandQueue putCopyImage(final CLImage2d<?> srcImage, final CLImage2d<?> dstImage, final CLEventList condition, final CLEventList events) {
746 return putCopyImage(srcImage, dstImage, 0, 0, 0, 0, srcImage.width, srcImage.height, condition, events);
747 }
748
749 /**
750 * Calls {@native clEnqueueCopyImage}.
751 */
752 public CLCommandQueue putCopyImage(final CLImage2d<?> srcImage, final CLImage2d<?> dstImage,
753 final int srcOriginX, final int srcOriginY,
754 final int dstOriginX, final int dstOriginY,
755 final int rangeX, final int rangeY) {
756 return putCopyImage(srcImage, dstImage, srcOriginX, srcOriginY, dstOriginX, dstOriginY, rangeX, rangeY, null, null);
757 }
758
759 /**
760 * Calls {@native clEnqueueCopyImage}.
761 */
762 public CLCommandQueue putCopyImage(final CLImage2d<?> srcImage, final CLImage2d<?> dstImage,
763 final int srcOriginX, final int srcOriginY,
764 final int dstOriginX, final int dstOriginY,
765 final int rangeX, final int rangeY, final CLEventList condition, final CLEventList events) {
766
767 PointerBuffer conditionIDs = null;
768 int conditions = 0;
769 if(condition != null) {
770 conditionIDs = condition.IDsView;
771 conditions = condition.size;
772 }
773
774 //spec: CL_INVALID_VALUE if src_image is a 2D image object and origin[2] or dst_origin[2] is not equal to 0
775 // or region[2] is not equal to 1.
776 copy2NIO(ibA, srcOriginX, srcOriginY, 0);
777 copy2NIO(ibB, dstOriginX, dstOriginY, 0);
778 copy2NIO(ibC, rangeX, rangeY, 1);
779
780 final int ret = cl.clEnqueueCopyImage(ID, srcImage.ID, dstImage.ID, ibA, ibB, ibC,
781 conditions, conditionIDs, events==null ? null : events.IDs);
782 if(ret != CL_SUCCESS) {
783 throw newException(ret, "can not enqueue copy-image " + srcImage +" to "+ dstImage
784 + " with srcOrigin: " + toStr(srcOriginX, srcOriginY) + " dstOrigin: " + toStr(dstOriginX, dstOriginY)
785 + " range: " + toStr(rangeX, rangeY) + toStr(condition, events));
786 }
787
788 if(events != null) {
789 events.createEvent(context);
790 }
791 return this;
792 }
793
794 //3D
795 /**
796 * Calls {@native clEnqueueCopyImage}.
797 */
798 public CLCommandQueue putCopyImage(final CLImage3d<?> srcImage, final CLImage3d<?> dstImage) {
799 return putCopyImage(srcImage, dstImage, null);
800 }
801
802 /**
803 * Calls {@native clEnqueueCopyImage}.
804 */
805 public CLCommandQueue putCopyImage(final CLImage3d<?> srcImage, final CLImage3d<?> dstImage, final CLEventList events) {
806 return putCopyImage(srcImage, dstImage, 0, 0, 0, 0, 0, 0, srcImage.width, srcImage.height, srcImage.depth, null, events);
807 }
808
809 /**
810 * Calls {@native clEnqueueCopyImage}.
811 */
812 public CLCommandQueue putCopyImage(final CLImage3d<?> srcImage, final CLImage3d<?> dstImage, final CLEventList condition, final CLEventList events) {
813 return putCopyImage(srcImage, dstImage, 0, 0, 0, 0, 0, 0, srcImage.width, srcImage.height, srcImage.depth, condition, events);
814 }
815
816 /**
817 * Calls {@native clEnqueueCopyImage}.
818 */
819 public CLCommandQueue putCopyImage(final CLImage3d<?> srcImage, final CLImage3d<?> dstImage,
820 final int srcOriginX, final int srcOriginY, final int srcOriginZ,
821 final int dstOriginX, final int dstOriginY, final int dstOriginZ,
822 final int rangeX, final int rangeY, final int rangeZ) {
823 return putCopyImage(srcImage, dstImage, srcOriginX, srcOriginY, srcOriginZ,
824 dstOriginX, dstOriginY, dstOriginZ,
825 rangeX, rangeY, rangeZ, null, null);
826 }
827
828 /**
829 * Calls {@native clEnqueueCopyImage}.
830 */
831 public CLCommandQueue putCopyImage(final CLImage<?> srcImage, final CLImage<?> dstImage,
832 final int srcOriginX, final int srcOriginY, final int srcOriginZ,
833 final int dstOriginX, final int dstOriginY, final int dstOriginZ,
834 final int rangeX, final int rangeY, final int rangeZ, final CLEventList condition, final CLEventList events) {
835
836 PointerBuffer conditionIDs = null;
837 int conditions = 0;
838 if(condition != null) {
839 conditionIDs = condition.IDsView;
840 conditions = condition.size;
841 }
842
843 copy2NIO(ibA, srcOriginX, srcOriginY, srcOriginZ);
844 copy2NIO(ibB, dstOriginX, dstOriginY, dstOriginZ);
845 copy2NIO(ibC, rangeX, rangeY, rangeZ);
846
847 final int ret = cl.clEnqueueCopyImage(ID, srcImage.ID, dstImage.ID, ibA, ibB, ibC,
848 conditions, conditionIDs, events==null ? null : events.IDs);
849 if(ret != CL_SUCCESS) {
850 throw newException(ret, "can not enqueue copy-image " + srcImage +" to "+ dstImage
851 + " with srcOrigin: " + toStr(srcOriginX, srcOriginY, srcOriginZ) + " dstOrigin: " + toStr(dstOriginX, dstOriginY, dstOriginZ)
852 + " range: " + toStr(rangeX, rangeY, rangeZ) + toStr(condition, events));
853 }
854
855 if(events != null) {
856 events.createEvent(context);
857 }
858 return this;
859 }
860
861 //2D
862 /**
863 * Calls {@native clEnqueueCopyBufferToImage}.
864 */
865 public CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage2d<?> dstImage) {
866 return putCopyBufferToImage(srcBuffer, dstImage, null);
867 }
868
869 /**
870 * Calls {@native clEnqueueCopyBufferToImage}.
871 */
872 public CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage2d<?> dstImage, final CLEventList events) {
873 return putCopyBufferToImage(srcBuffer, dstImage, 0, 0, 0, dstImage.width, dstImage.height, null, events);
874 }
875
876 /**
877 * Calls {@native clEnqueueCopyBufferToImage}.
878 */
879 public CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage2d<?> dstImage, final CLEventList condition, final CLEventList events) {
880 return putCopyBufferToImage(srcBuffer, dstImage, 0, 0, 0, dstImage.width, dstImage.height, condition, events);
881 }
882
883 /**
884 * Calls {@native clEnqueueCopyBufferToImage}.
885 */
886 public CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage2d<?> dstImage,
887 final long srcOffset, final int dstOriginX, final int dstOriginY,
888 final int rangeX, final int rangeY) {
889 return putCopyBufferToImage(srcBuffer, dstImage,
890 srcOffset, dstOriginX, dstOriginY, rangeX, rangeY, null, null);
891 }
892
893 /**
894 * Calls {@native clEnqueueCopyBufferToImage}.
895 */
896 public CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage2d<?> dstImage,
897 final long srcOffset, final int dstOriginX, final int dstOriginY,
898 final int rangeX, final int rangeY, final CLEventList condition, final CLEventList events) {
899
900 PointerBuffer conditionIDs = null;
901 int conditions = 0;
902 if(condition != null) {
903 conditionIDs = condition.IDsView;
904 conditions = condition.size;
905 }
906
907 // spec: CL_INVALID_VALUE if dst_image is a 2D image object and dst_origin[2] is not equal to 0
908 // or region[2] is not equal to 1.
909 copy2NIO(ibA, dstOriginX, dstOriginY, 0);
910 copy2NIO(ibB, rangeX, rangeY, 1);
911
912 final int ret = cl.clEnqueueCopyBufferToImage(ID, srcBuffer.ID, dstImage.ID,
913 srcOffset, ibA, ibB,
914 conditions, conditionIDs, events==null ? null : events.IDs);
915 if(ret != CL_SUCCESS) {
916 throw newException(ret, "can not enqueue a copy from " + srcBuffer +" to "+ dstImage
917 + " with srcOffset: " + srcOffset + " dstOrigin: " + toStr(dstOriginX, dstOriginY)
918 + " range: " + toStr(rangeX, rangeY) + toStr(condition, events));
919 }
920
921 if(events != null) {
922 events.createEvent(context);
923 }
924 return this;
925 }
926
927 //3D
928 /**
929 * Calls {@native clEnqueueCopyBufferToImage}.
930 */
931 public CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage3d<?> dstImage) {
932 return putCopyBufferToImage(srcBuffer, dstImage, null);
933 }
934
935 /**
936 * Calls {@native clEnqueueCopyBufferToImage}.
937 */
938 public CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage3d<?> dstImage, final CLEventList events) {
939 return putCopyBufferToImage(srcBuffer, dstImage, 0, 0, 0, 0, dstImage.width, dstImage.height, dstImage.depth, null, events);
940 }
941
942 /**
943 * Calls {@native clEnqueueCopyBufferToImage}.
944 */
945 public CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage3d<?> dstImage, final CLEventList condition, final CLEventList events) {
946 return putCopyBufferToImage(srcBuffer, dstImage, 0, 0, 0, 0, dstImage.width, dstImage.height, dstImage.depth, condition, events);
947 }
948
949 /**
950 * Calls {@native clEnqueueCopyBufferToImage}.
951 */
952 public CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage3d<?> dstImage,
953 final long srcOffset, final int dstOriginX, final int dstOriginY, final int dstOriginZ,
954 final int rangeX, final int rangeY, final int rangeZ) {
955 return putCopyBufferToImage(srcBuffer, dstImage,
956 srcOffset, dstOriginX, dstOriginY, dstOriginZ, rangeX, rangeY, rangeZ, null, null);
957
958 }
959
960 /**
961 * Calls {@native clEnqueueCopyBufferToImage}.
962 */
963 public CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage3d<?> dstImage,
964 final long srcOffset, final int dstOriginX, final int dstOriginY, final int dstOriginZ,
965 final int rangeX, final int rangeY, final int rangeZ, final CLEventList condition, final CLEventList events) {
966
967 PointerBuffer conditionIDs = null;
968 int conditions = 0;
969 if(condition != null) {
970 conditionIDs = condition.IDsView;
971 conditions = condition.size;
972 }
973
974 copy2NIO(ibA, dstOriginX, dstOriginY, dstOriginZ);
975 copy2NIO(ibB, rangeX, rangeY, rangeZ);
976
977 final int ret = cl.clEnqueueCopyBufferToImage(ID, srcBuffer.ID, dstImage.ID,
978 srcOffset, ibA, ibB,
979 conditions, conditionIDs, events==null ? null : events.IDs);
980 if(ret != CL_SUCCESS) {
981 throw newException(ret, "can not enqueue a copy from " + srcBuffer +" to "+ dstImage
982 + " with srcOffset: " + srcOffset + " dstOrigin: " + toStr(dstOriginX, dstOriginY, dstOriginZ)
983 + " range: " + toStr(rangeX, rangeY, dstOriginZ) + toStr(condition, events));
984 }
985
986 if(events != null) {
987 events.createEvent(context);
988 }
989 return this;
990 }
991
992 //2D
993 /**
994 * Calls {@native clEnqueueCopyImageToBuffer}.
995 */
996 public CLCommandQueue putCopyImageToBuffer(final CLImage2d<?> srcImage, final CLBuffer<?> dstBuffer) {
997 return putCopyImageToBuffer(srcImage, dstBuffer, null);
998 }
999
1000 /**
1001 * Calls {@native clEnqueueCopyImageToBuffer}.
1002 */
1003 public CLCommandQueue putCopyImageToBuffer(final CLImage2d<?> srcImage, final CLBuffer<?> dstBuffer, final CLEventList events) {
1004 return putCopyImageToBuffer(srcImage, dstBuffer, 0, 0, srcImage.width, srcImage.height, 0, null, events);
1005 }
1006
1007 /**
1008 * Calls {@native clEnqueueCopyImageToBuffer}.
1009 */
1010 public CLCommandQueue putCopyImageToBuffer(final CLImage2d<?> srcImage, final CLBuffer<?> dstBuffer, final CLEventList condition, final CLEventList events) {
1011 return putCopyImageToBuffer(srcImage, dstBuffer, 0, 0, srcImage.width, srcImage.height, 0, condition, events);
1012 }
1013
1014 /**
1015 * Calls {@native clEnqueueCopyImageToBuffer}.
1016 */
1017 public CLCommandQueue putCopyImageToBuffer(final CLImage2d<?> srcImage, final CLBuffer<?> dstBuffer,
1018 final int srcOriginX, final int srcOriginY,
1019 final int rangeX, final int rangeY, final long dstOffset) {
1020 return putCopyImageToBuffer(srcImage, dstBuffer,
1021 srcOriginX, srcOriginY, rangeX, rangeY, dstOffset, null, null);
1022 }
1023
1024 /**
1025 * Calls {@native clEnqueueCopyImageToBuffer}.
1026 */
1027 public CLCommandQueue putCopyImageToBuffer(final CLImage2d<?> srcImage, final CLBuffer<?> dstBuffer,
1028 final int srcOriginX, final int srcOriginY,
1029 final int rangeX, final int rangeY, final long dstOffset, final CLEventList condition, final CLEventList events) {
1030
1031 PointerBuffer conditionIDs = null;
1032 int conditions = 0;
1033 if(condition != null) {
1034 conditionIDs = condition.IDsView;
1035 conditions = condition.size;
1036 }
1037
1038 // spec: CL_INVALID_VALUE if src_image is a 2D image object and src_origin[2] is not equal to 0
1039 // or region[2] is not equal to 1.
1040 copy2NIO(ibA, srcOriginX, srcOriginY, 0);
1041 copy2NIO(ibB, rangeX, rangeY, 1);
1042
1043 final int ret = cl.clEnqueueCopyImageToBuffer(ID, srcImage.ID, dstBuffer.ID,
1044 ibA, ibB, dstOffset,
1045 conditions, conditionIDs, events==null ? null : events.IDs);
1046 if(ret != CL_SUCCESS) {
1047 throw newException(ret, "can not enqueue a copy from " + srcImage +" to "+ dstBuffer
1048 + " with srcOrigin: " + toStr(srcOriginX, srcOriginY) + " range: " + toStr(rangeX, rangeY)
1049 + " dstOffset: " + dstOffset + toStr(condition, events));
1050 }
1051
1052 if(events != null) {
1053 events.createEvent(context);
1054 }
1055 return this;
1056 }
1057
1058 //3D
1059 /**
1060 * Calls {@native clEnqueueCopyImageToBuffer}.
1061 */
1062 public CLCommandQueue putCopyImageToBuffer(final CLImage3d<?> srcImage, final CLBuffer<?> dstBuffer) {
1063 return putCopyImageToBuffer(srcImage, dstBuffer, 0, 0, 0, srcImage.width, srcImage.height, srcImage.depth, 0, null, null);
1064 }
1065
1066 /**
1067 * Calls {@native clEnqueueCopyImageToBuffer}.
1068 */
1069 public CLCommandQueue putCopyImageToBuffer(final CLImage3d<?> srcImage, final CLBuffer<?> dstBuffer, final CLEventList events) {
1070 return putCopyImageToBuffer(srcImage, dstBuffer, 0, 0, 0, srcImage.width, srcImage.height, srcImage.depth, 0, null, events);
1071 }
1072
1073 /**
1074 * Calls {@native clEnqueueCopyImageToBuffer}.
1075 */
1076 public CLCommandQueue putCopyImageToBuffer(final CLImage3d<?> srcImage, final CLBuffer<?> dstBuffer, final CLEventList condition, final CLEventList events) {
1077 return putCopyImageToBuffer(srcImage, dstBuffer, 0, 0, 0, srcImage.width, srcImage.height, srcImage.depth, 0, condition, events);
1078 }
1079
1080 /**
1081 * Calls {@native clEnqueueCopyImageToBuffer}.
1082 */
1083 public CLCommandQueue putCopyImageToBuffer(final CLImage3d<?> srcImage, final CLBuffer<?> dstBuffer,
1084 final int srcOriginX, final int srcOriginY, final int srcOriginZ,
1085 final int rangeX, final int rangeY, final int rangeZ, final long dstOffset) {
1086 return putCopyImageToBuffer(srcImage, dstBuffer,
1087 srcOriginX, srcOriginY, srcOriginZ, rangeX, rangeY, rangeZ, dstOffset, null, null);
1088
1089 }
1090
1091 /**
1092 * Calls {@native clEnqueueCopyImageToBuffer}.
1093 */
1094 public CLCommandQueue putCopyImageToBuffer(final CLImage3d<?> srcImage, final CLBuffer<?> dstBuffer,
1095 final int srcOriginX, final int srcOriginY, final int srcOriginZ,
1096 final int rangeX, final int rangeY, final int rangeZ, final long dstOffset, final CLEventList condition, final CLEventList events) {
1097
1098 PointerBuffer conditionIDs = null;
1099 int conditions = 0;
1100 if(condition != null) {
1101 conditionIDs = condition.IDsView;
1102 conditions = condition.size;
1103 }
1104
1105 copy2NIO(ibA, srcOriginX, srcOriginY, srcOriginZ);
1106 copy2NIO(ibB, rangeX, rangeY, rangeZ);
1107
1108 final int ret = cl.clEnqueueCopyImageToBuffer(ID, srcImage.ID, dstBuffer.ID,
1109 ibA, ibB, dstOffset,
1110 conditions, conditionIDs, events==null ? null : events.IDs);
1111 if(ret != CL_SUCCESS) {
1112 throw newException(ret, "can not enqueue a copy from " + srcImage +" to "+ dstBuffer
1113 + " with srcOrigin: " + toStr(srcOriginX, srcOriginY, srcOriginZ) + " range: " + toStr(rangeX, rangeY, rangeZ)
1114 + " dstOffset: " + dstOffset + toStr(condition, events));
1115 }
1116
1117 if(events != null) {
1118 events.createEvent(context);
1119 }
1120 return this;
1121 }
1122
1123 /**
1124 * Calls {@native clEnqueueMapBuffer}.
1125 */
1126 public ByteBuffer putMapBuffer(final CLBuffer<?> buffer, final CLMemory.Map flag, final boolean blockingMap) {
1127 return putMapBuffer(buffer, flag, blockingMap, null);
1128 }
1129
1130 /**
1131 * Calls {@native clEnqueueMapBuffer}.
1132 */
1133 public ByteBuffer putMapBuffer(final CLBuffer<?> buffer, final CLMemory.Map flag, final boolean blockingMap, final CLEventList events) {
1134 return putMapBuffer(buffer, flag, 0, buffer.getCLSize(), blockingMap, null, events);
1135 }
1136
1137 /**
1138 * Calls {@native clEnqueueMapBuffer}.
1139 */
1140 public ByteBuffer putMapBuffer(final CLBuffer<?> buffer, final CLMemory.Map flag, final boolean blockingMap, final CLEventList condition, final CLEventList events) {
1141 return putMapBuffer(buffer, flag, 0, buffer.getCLSize(), blockingMap, condition, events);
1142 }
1143
1144 /**
1145 * Calls {@native clEnqueueMapBuffer}.
1146 */
1147 public ByteBuffer putMapBuffer(final CLBuffer<?> buffer, final CLMemory.Map flag, final long offset, final long length, final boolean blockingMap) {
1148 return putMapBuffer(buffer, flag, offset, length, blockingMap, null, null);
1149 }
1150
1151 /**
1152 * Calls {@native clEnqueueMapBuffer}.
1153 */
1154 public ByteBuffer putMapBuffer(final CLBuffer<?> buffer, final CLMemory.Map flag, final long offset, final long length, final boolean blockingMap, final CLEventList condition, final CLEventList events) {
1155
1156 PointerBuffer conditionIDs = null;
1157 int conditions = 0;
1158 if(condition != null) {
1159 conditionIDs = condition.IDsView;
1160 conditions = condition.size;
1161 }
1162
1163 final IntBuffer error = pbA;
1164 final ByteBuffer mappedBuffer = cl.clEnqueueMapBuffer(ID, buffer.ID, clBoolean(blockingMap),
1165 flag.FLAGS, offset, length,
1166 conditions, conditionIDs, events==null ? null : events.IDs, error);
1167 if(error.get(0) != CL_SUCCESS) {
1168 throw newException(error.get(0), "can not map " + buffer + " with: " + flag
1169 + " offset: " + offset + " lenght: " + length + toStr(condition, events));
1170 }
1171
1172 if(events != null) {
1173 events.createEvent(context);
1174 }
1175
1176 return mappedBuffer;
1177 }
1178
1179 // 2D
1180 /**
1181 * Calls {@native clEnqueueMapImage}.
1182 */
1183 public ByteBuffer putMapImage(final CLImage2d<?> image, final CLMemory.Map flag, final boolean blockingMap) {
1184 return putMapImage(image, flag, blockingMap, null);
1185 }
1186
1187 /**
1188 * Calls {@native clEnqueueMapImage}.
1189 */
1190 public ByteBuffer putMapImage(final CLImage2d<?> image, final CLMemory.Map flag, final boolean blockingMap, final CLEventList events) {
1191 return putMapImage(image, flag, 0, 0, image.width, image.height, blockingMap, null, events);
1192 }
1193
1194 /**
1195 * Calls {@native clEnqueueMapImage}.
1196 */
1197 public ByteBuffer putMapImage(final CLImage2d<?> image, final CLMemory.Map flag, final boolean blockingMap, final CLEventList condition, final CLEventList events) {
1198 return putMapImage(image, flag, 0, 0, image.width, image.height, blockingMap, condition, events);
1199 }
1200
1201 /**
1202 * Calls {@native clEnqueueMapImage}.
1203 */
1204 public ByteBuffer putMapImage(final CLImage2d<?> buffer, final CLMemory.Map flag, final int offsetX, final int offsetY,
1205 final int rangeX, final int rangeY, final boolean blockingMap) {
1206 return putMapImage(buffer, flag, offsetX, offsetY, rangeX, rangeY, blockingMap, null, null);
1207 }
1208
1209 /**
1210 * Calls {@native clEnqueueMapImage}.
1211 */
1212 public ByteBuffer putMapImage(final CLImage2d<?> image, final CLMemory.Map flag,
1213 final int offsetX, final int offsetY,
1214 final int rangeX, final int rangeY, final boolean blockingMap, final CLEventList condition, final CLEventList events) {
1215 return putMapImage(image, flag, offsetX, offsetY, rangeX, rangeY, blockingMap, condition, events, null, null);
1216 }
1217
1218 /**
1219 * Calls {@native clEnqueueMapImage}.
1220 */
1221 public ByteBuffer putMapImage(final CLImage2d<?> image, final CLMemory.Map flag,
1222 final int offsetX, final int offsetY,
1223 final int rangeX, final int rangeY, final boolean blockingMap, final CLEventList condition, final CLEventList events,
1224 final long[] imageRowPitch, final long[] imageSlicePitch ) {
1225
1226 PointerBuffer conditionIDs = null;
1227 int conditions = 0;
1228 if(condition != null) {
1229 conditionIDs = condition.IDsView;
1230 conditions = condition.size;
1231 }
1232
1233 final IntBuffer error = pbA;
1234
1235 // spec: CL_INVALID_VALUE if image is a 2D image object and origin[2] is not equal to 0 or region[2] is not equal to 1
1236 copy2NIO(ibB, offsetX, offsetY, 0);
1237 copy2NIO(ibC, rangeX, rangeY, 1);
1238
1239 final PointerBuffer _imageRowPitch = PointerBuffer.allocateDirect(1); // size_t*
1240 final PointerBuffer _imageSlicePitch = PointerBuffer.allocateDirect(1); // size_t*
1241
1242 final ByteBuffer mappedImage = cl.clEnqueueMapImage(ID, image.ID, clBoolean(blockingMap),
1243 flag.FLAGS, ibB, ibC, _imageRowPitch, _imageSlicePitch,
1244 conditions, conditionIDs, events==null ? null : events.IDs, error);
1245 if(error.get(0) != CL_SUCCESS) {
1246 throw newException(error.get(0), "can not map " + image + " with: " + flag
1247 + " offset: " + toStr(offsetX, offsetY) + " range: " + toStr(rangeX, rangeY) + toStr(condition, events));
1248 }
1249
1250 if( null != imageRowPitch ) {
1251 imageRowPitch[0] = _imageRowPitch.get(0);
1252 }
1253 if( null != imageSlicePitch ) {
1254 imageSlicePitch[0] = _imageSlicePitch.get(0);
1255 }
1256
1257 if(events != null) {
1258 events.createEvent(context);
1259 }
1260
1261 return mappedImage;
1262 }
1263
1264 // 3D
1265 /**
1266 * Calls {@native clEnqueueMapImage}.
1267 */
1268 public ByteBuffer putMapImage(final CLImage3d<?> image, final CLMemory.Map flag, final boolean blockingMap) {
1269 return putMapImage(image, flag, blockingMap, null);
1270 }
1271
1272 /**
1273 * Calls {@native clEnqueueMapImage}.
1274 */
1275 public ByteBuffer putMapImage(final CLImage3d<?> image, final CLMemory.Map flag, final boolean blockingMap, final CLEventList events) {
1276 return putMapImage(image, flag, 0, 0, 0, image.width, image.height, image.depth, blockingMap, null, events);
1277 }
1278
1279 /**
1280 * Calls {@native clEnqueueMapImage}.
1281 */
1282 public ByteBuffer putMapImage(final CLImage3d<?> image, final CLMemory.Map flag, final boolean blockingMap, final CLEventList condition, final CLEventList events) {
1283 return putMapImage(image, flag, 0, 0, 0, image.width, image.height, image.depth, blockingMap, condition, events);
1284 }
1285
1286 /**
1287 * Calls {@native clEnqueueMapImage}.
1288 */
1289 public ByteBuffer putMapImage(final CLImage3d<?> image, final CLMemory.Map flag,
1290 final int offsetX, final int offsetY, final int offsetZ,
1291 final int rangeX, final int rangeY, final int rangeZ, final boolean blockingMap) {
1292 return putMapImage(image, flag, offsetX, offsetY, offsetZ, rangeX, rangeY, rangeZ, blockingMap, null, null);
1293 }
1294
1295 /**
1296 * Calls {@native clEnqueueMapImage}.
1297 */
1298 public ByteBuffer putMapImage(final CLImage3d<?> image, final CLMemory.Map flag,
1299 final int offsetX, final int offsetY, final int offsetZ,
1300 final int rangeX, final int rangeY, final int rangeZ, final boolean blockingMap, final CLEventList condition, final CLEventList events) {
1301
1302 PointerBuffer conditionIDs = null;
1303 int conditions = 0;
1304 if(condition != null) {
1305 conditionIDs = condition.IDsView;
1306 conditions = condition.size;
1307 }
1308
1309 final IntBuffer error = pbA;
1310 copy2NIO(ibB, offsetX, offsetY, offsetZ);
1311 copy2NIO(ibC, rangeX, rangeY, rangeZ);
1312 final ByteBuffer mappedImage = cl.clEnqueueMapImage(ID, image.ID, clBoolean(blockingMap),
1313 flag.FLAGS, ibB, ibC, null, null,
1314 conditions, conditionIDs, events==null ? null : events.IDs, error);
1315 if(error.get(0) != CL_SUCCESS) {
1316 throw newException(error.get(0), "can not map " + image + " with: " + flag
1317 + " offset: " + toStr(offsetX, offsetY, offsetZ) + " range: " + toStr(rangeX, rangeY, rangeZ) + toStr(condition, events));
1318 }
1319
1320 if(events != null) {
1321 events.createEvent(context);
1322 }
1323
1324 return mappedImage;
1325 }
1326
1327 /**
1328 * Calls {@native clEnqueueUnmapMemObject}.
1329 */
1330 public CLCommandQueue putUnmapMemory(final CLMemory<?> memory, final Buffer mapped) {
1331 return putUnmapMemory(memory, mapped, null, null);
1332 }
1333
1334 /**
1335 * Calls {@native clEnqueueUnmapMemObject}.
1336 */
1337 public CLCommandQueue putUnmapMemory(final CLMemory<?> memory, final Buffer mapped, final CLEventList events) {
1338 return putUnmapMemory(memory, mapped, null, events);
1339 }
1340
1341 /**
1342 * Calls {@native clEnqueueUnmapMemObject}.
1343 */
1344 public CLCommandQueue putUnmapMemory(final CLMemory<?> memory, final Buffer mapped, final CLEventList condition, final CLEventList events) {
1345
1346 PointerBuffer conditionIDs = null;
1347 int conditions = 0;
1348 if(condition != null) {
1349 conditionIDs = condition.IDsView;
1350 conditions = condition.size;
1351 }
1352
1353 final int ret = cl.clEnqueueUnmapMemObject(ID, memory.ID, mapped,
1354 conditions, conditionIDs, events==null ? null : events.IDs);
1355 if(ret != CL_SUCCESS) {
1356 throw newException(ret, "can not unmap " + memory + toStr(condition, events));
1357 }
1358
1359 if(events != null) {
1360 events.createEvent(context);
1361 }
1362 return this;
1363 }
1364
1365 /**
1366 * Calls {@native clEnqueueMarker}.
1367 */
1368 public CLCommandQueue putMarker(final CLEventList events) {
1369 final int ret = cl.clEnqueueMarker(ID, events.IDs);
1370 if(ret != CL_SUCCESS) {
1371 throw newException(ret, "can not enqueue marker " + events);
1372 }
1373 events.createEvent(context);
1374 return this;
1375 }
1376
1377 /**
1378 * Calls {@native clWaitForEvents} if blockingWait equals true otherwise {@native clEnqueueWaitForEvents}.
1379 */
1380 public CLCommandQueue putWaitForEvent(final CLEventList list, final int index, final boolean blockingWait) {
1381
1382 if(blockingWait) {
1383 list.waitForEvent(index);
1384 } else {
1385 final PointerBuffer ids = list.getEventBuffer(index);
1386 final int ret = cl.clEnqueueWaitForEvents(ID, 1, ids);
1387 if(ret != CL_SUCCESS) {
1388 throw newException(ret, "can not "+ (blockingWait?"blocking": "") +" wait for event #" + index+ " in "+list);
1389 }
1390 }
1391
1392 return this;
1393 }
1394
1395 /**
1396 * Calls {@native clWaitForEvents} if blockingWait equals true otherwise {@native clEnqueueWaitForEvents}.
1397 */
1398 public CLCommandQueue putWaitForEvents(final CLEventList list, final boolean blockingWait) {
1399 if(blockingWait) {
1400 list.waitForEvents();
1401 }else{
1402 final int ret = cl.clEnqueueWaitForEvents(ID, list.size, list.IDsView);
1403 if(ret != CL_SUCCESS) {
1404 throw newException(ret, "can not "+ (blockingWait?"blocking": "") +" wait for events " + list);
1405 }
1406 }
1407 return this;
1408 }
1409
1410 /**
1411 * Calls {@native clEnqueueBarrier}.
1412 */
1414 final int ret = cl.clEnqueueBarrier(ID);
1415 checkForError(ret, "can not enqueue Barrier");
1416 return this;
1417 }
1418
1419 /**
1420 * Equivalent to calling
1421 * {@link #put1DRangeKernel(CLKernel kernel, long globalWorkOffset, long globalWorkSize, long localWorkSize)}
1422 * with globalWorkOffset = null, globalWorkSize set to 1, and localWorkSize set to 1.
1423 * <p>Calls {@native clEnqueueTask}.</p>
1424 */
1425 public CLCommandQueue putTask(final CLKernel kernel) {
1426 putTask(kernel, null, null);
1427 return this;
1428 }
1429
1430 /**
1431 * <p>Calls {@native clEnqueueTask}.</p>
1432 * @see #putTask(com.jogamp.opencl.CLKernel)
1433 */
1434 public CLCommandQueue putTask(final CLKernel kernel, final CLEventList events) {
1435 putTask(kernel, null, events);
1436 return this;
1437 }
1438
1439 /**
1440 * Calls {@native clEnqueueTask}.
1441 * @see #putTask(com.jogamp.opencl.CLKernel)
1442 */
1443 public CLCommandQueue putTask(final CLKernel kernel, final CLEventList condition, final CLEventList events) {
1444
1445 PointerBuffer conditionIDs = null;
1446 int conditions = 0;
1447 if(condition != null) {
1448 conditionIDs = condition.IDsView;
1449 conditions = condition.size;
1450 }
1451
1452 final int ret = cl.clEnqueueTask(ID, kernel.ID, conditions, conditionIDs, events==null ? null : events.IDs);
1453 if(ret != CL_SUCCESS) {
1454 checkForError(ret, "can not enqueue Task: " + kernel + toStr(condition, events));
1455 }
1456 if(events != null) {
1457 events.createEvent(context);
1458 }
1459 return this;
1460 }
1461
1462 /**
1463 * Calls {@native clEnqueueNDRangeKernel}.
1464 */
1465 public CLCommandQueue put1DRangeKernel(final CLKernel kernel, final long globalWorkOffset, final long globalWorkSize, final long localWorkSize) {
1466 this.put1DRangeKernel(kernel, globalWorkOffset, globalWorkSize, localWorkSize, null, null);
1467 return this;
1468 }
1469
1470 /**
1471 * Calls {@native clEnqueueNDRangeKernel}.
1472 */
1473 public CLCommandQueue put1DRangeKernel(final CLKernel kernel, final long globalWorkOffset, final long globalWorkSize, final long localWorkSize, final CLEventList events) {
1474 this.put1DRangeKernel(kernel, globalWorkOffset, globalWorkSize, localWorkSize, null, events);
1475 return this;
1476 }
1477
1478 /**
1479 * Calls {@native clEnqueueNDRangeKernel}.
1480 */
1481 public CLCommandQueue put1DRangeKernel(final CLKernel kernel, final long globalWorkOffset, final long globalWorkSize, final long localWorkSize, final CLEventList condition, final CLEventList events) {
1482 PointerBuffer globWO = null;
1483 PointerBuffer globWS = null;
1484 PointerBuffer locWS = null;
1485
1486 if(globalWorkOffset != 0) {
1487 globWO = copy2NIO(ibA, globalWorkOffset);
1488 }
1489 if(globalWorkSize != 0) {
1490 globWS = copy2NIO(ibB, globalWorkSize);
1491 }
1492 if(localWorkSize != 0) {
1493 locWS = copy2NIO(ibC, localWorkSize);
1494 }
1495
1496 this.putNDRangeKernel(kernel, 1, globWO, globWS, locWS, condition, events);
1497 return this;
1498 }
1499
1500 /**
1501 * Calls {@native clEnqueueNDRangeKernel}.
1502 */
1503 public CLCommandQueue put2DRangeKernel(final CLKernel kernel, final long globalWorkOffsetX, final long globalWorkOffsetY,
1504 final long globalWorkSizeX, final long globalWorkSizeY,
1505 final long localWorkSizeX, final long localWorkSizeY) {
1506 this.put2DRangeKernel(kernel,
1507 globalWorkOffsetX, globalWorkOffsetY,
1508 globalWorkSizeX, globalWorkSizeY,
1509 localWorkSizeX, localWorkSizeY, null, null);
1510
1511 return this;
1512 }
1513
1514 /**
1515 * Calls {@native clEnqueueNDRangeKernel}.
1516 */
1517 public CLCommandQueue put2DRangeKernel(final CLKernel kernel, final long globalWorkOffsetX, final long globalWorkOffsetY,
1518 final long globalWorkSizeX, final long globalWorkSizeY,
1519 final long localWorkSizeX, final long localWorkSizeY, final CLEventList events) {
1520 this.put2DRangeKernel(kernel,
1521 globalWorkOffsetX, globalWorkOffsetY,
1522 globalWorkSizeX, globalWorkSizeY,
1523 localWorkSizeX, localWorkSizeY, null, events);
1524 return this;
1525 }
1526
1527 /**
1528 * Calls {@native clEnqueueNDRangeKernel}.
1529 */
1530 public CLCommandQueue put2DRangeKernel(final CLKernel kernel, final long globalWorkOffsetX, final long globalWorkOffsetY,
1531 final long globalWorkSizeX, final long globalWorkSizeY,
1532 final long localWorkSizeX, final long localWorkSizeY, final CLEventList condition, final CLEventList events) {
1533 PointerBuffer globalWorkOffset = null;
1534 PointerBuffer globalWorkSize = null;
1535 PointerBuffer localWorkSize = null;
1536
1537 if(globalWorkOffsetX != 0 || globalWorkOffsetY != 0) {
1538 globalWorkOffset = copy2NIO(ibA, globalWorkOffsetX, globalWorkOffsetY);
1539 }
1540 if(globalWorkSizeX != 0 || globalWorkSizeY != 0) {
1541 globalWorkSize = copy2NIO(ibB, globalWorkSizeX, globalWorkSizeY);
1542 }
1543 if(localWorkSizeX != 0 || localWorkSizeY != 0) {
1544 localWorkSize = copy2NIO(ibC, localWorkSizeX, localWorkSizeY);
1545 }
1546 this.putNDRangeKernel(kernel, 2, globalWorkOffset, globalWorkSize, localWorkSize, condition, events);
1547 return this;
1548 }
1549
1550 /**
1551 * Calls {@native clEnqueueNDRangeKernel}.
1552 */
1553 public CLCommandQueue put3DRangeKernel(final CLKernel kernel, final long globalWorkOffsetX, final long globalWorkOffsetY, final long globalWorkOffsetZ,
1554 final long globalWorkSizeX, final long globalWorkSizeY, final long globalWorkSizeZ,
1555 final long localWorkSizeX, final long localWorkSizeY, final long localWorkSizeZ) {
1556 this.put3DRangeKernel(kernel,
1557 globalWorkOffsetX, globalWorkOffsetY, globalWorkOffsetZ,
1558 globalWorkSizeX, globalWorkSizeY, globalWorkSizeZ,
1559 localWorkSizeX, localWorkSizeY, localWorkSizeZ, null, null);
1560
1561 return this;
1562 }
1563
1564 /**
1565 * Calls {@native clEnqueueNDRangeKernel}.
1566 */
1567 public CLCommandQueue put3DRangeKernel(final CLKernel kernel, final long globalWorkOffsetX, final long globalWorkOffsetY, final long globalWorkOffsetZ,
1568 final long globalWorkSizeX, final long globalWorkSizeY, final long globalWorkSizeZ,
1569 final long localWorkSizeX, final long localWorkSizeY, final long localWorkSizeZ, final CLEventList events) {
1570 this.put3DRangeKernel(kernel,
1571 globalWorkOffsetX, globalWorkOffsetY, globalWorkOffsetZ,
1572 globalWorkSizeX, globalWorkSizeY, globalWorkSizeZ,
1573 localWorkSizeX, localWorkSizeY, localWorkSizeZ, null, events);
1574 return this;
1575 }
1576
1577 /**
1578 * Calls {@native clEnqueueNDRangeKernel}.
1579 */
1580 public CLCommandQueue put3DRangeKernel(final CLKernel kernel, final long globalWorkOffsetX, final long globalWorkOffsetY, final long globalWorkOffsetZ,
1581 final long globalWorkSizeX, final long globalWorkSizeY, final long globalWorkSizeZ,
1582 final long localWorkSizeX, final long localWorkSizeY, final long localWorkSizeZ, final CLEventList condition, final CLEventList events) {
1583 PointerBuffer globalWorkOffset = null;
1584 PointerBuffer globalWorkSize = null;
1585 PointerBuffer localWorkSize = null;
1586
1587 if(globalWorkOffsetX != 0 || globalWorkOffsetY != 0 || globalWorkOffsetZ != 0) {
1588 globalWorkOffset = copy2NIO(ibA, globalWorkOffsetX, globalWorkOffsetY, globalWorkOffsetZ);
1589 }
1590 if(globalWorkSizeX != 0 || globalWorkSizeY != 0 || globalWorkSizeZ != 0) {
1591 globalWorkSize = copy2NIO(ibB, globalWorkSizeX, globalWorkSizeY, globalWorkSizeZ);
1592 }
1593 if(localWorkSizeX != 0 || localWorkSizeY != 0 || localWorkSizeZ != 0) {
1594 localWorkSize = copy2NIO(ibC, localWorkSizeX, localWorkSizeY, localWorkSizeZ);
1595 }
1596 this.putNDRangeKernel(kernel, 3, globalWorkOffset, globalWorkSize, localWorkSize, condition, events);
1597 return this;
1598 }
1599
1600 /**
1601 * Calls {@native clEnqueueNDRangeKernel}.
1602 */
1603 public CLCommandQueue putNDRangeKernel(final CLKernel kernel, final int workDimension, final PointerBuffer globalWorkOffset, final PointerBuffer globalWorkSize, final PointerBuffer localWorkSize) {
1604 this.putNDRangeKernel(kernel, workDimension, globalWorkOffset, globalWorkSize, localWorkSize, null, null);
1605 return this;
1606 }
1607
1608 /**
1609 * Calls {@native clEnqueueNDRangeKernel}.
1610 */
1611 public CLCommandQueue putNDRangeKernel(final CLKernel kernel, final int workDimension, final PointerBuffer globalWorkOffset, final PointerBuffer globalWorkSize, final PointerBuffer localWorkSize, final CLEventList events) {
1612 this.putNDRangeKernel(kernel, workDimension, globalWorkOffset, globalWorkSize, localWorkSize, null, events);
1613 return this;
1614 }
1615
1616 /**
1617 * Calls {@native clEnqueueNDRangeKernel}.
1618 */
1619 public CLCommandQueue putNDRangeKernel(final CLKernel kernel, final int workDimension, final PointerBuffer globalWorkOffset,
1620 final PointerBuffer globalWorkSize, final PointerBuffer localWorkSize, final CLEventList condition, final CLEventList events) {
1621
1622 PointerBuffer conditionIDs = null;
1623 int conditions = 0;
1624 if(condition != null) {
1625 conditionIDs = condition.IDsView;
1626 conditions = condition.size;
1627 }
1628
1629 final int ret = cl.clEnqueueNDRangeKernel(
1630 ID, kernel.ID, workDimension,
1631 globalWorkOffset,
1632 globalWorkSize,
1633 localWorkSize,
1634 conditions, conditionIDs,
1635 events==null ? null : events.IDs);
1636
1637 if(ret != CL_SUCCESS) {
1638 throw newException(ret, "can not enqueue "+workDimension+"DRange " + kernel+ "\n"
1639 + " with gwo: " + toStr(globalWorkOffset)
1640 + " gws: " + toStr(globalWorkSize)
1641 + " lws: " + toStr(localWorkSize)
1642 + " " + toStr(condition, events));
1643 }
1644
1645 if(events != null) {
1646 events.createEvent(context);
1647 }
1648
1649 return this;
1650 }
1651
1652 /**
1653 * Calls {@native clEnqueueAcquireGLObjects}.
1654 */
1656 this.putAcquireGLObject(glObject, null, null);
1657 return this;
1658 }
1659
1660 /**
1661 * Calls {@native clEnqueueAcquireGLObjects}.
1662 */
1663 public CLCommandQueue putAcquireGLObject(final CLGLObject glObject, final CLEventList events) {
1664 this.putAcquireGLObject(glObject, null, events);
1665 return this;
1666 }
1667
1668 /**
1669 * Calls {@native clEnqueueAcquireGLObjects}.
1670 */
1671 public CLCommandQueue putAcquireGLObject(final CLGLObject glObject, final CLEventList condition, final CLEventList events) {
1672 this.putAcquireGLObjects(copy2NIO(ibA, glObject.getID()), condition, events);
1673 return this;
1674 }
1675
1676 /**
1677 * Calls {@native clEnqueueAcquireGLObjects}.
1678 */
1679 public CLCommandQueue putAcquireGLObjects(final CLGLObject glObject1, final CLGLObject glObject2, final CLEventList condition, final CLEventList events) {
1680 this.putAcquireGLObjects(copy2NIO(ibA, glObject1.getID(), glObject2.getID()), condition, events);
1681 return this;
1682 }
1683
1684 /**
1685 * Calls {@native clEnqueueAcquireGLObjects}.
1686 */
1687 public CLCommandQueue putAcquireGLObjects(final CLGLObject glObject1, final CLGLObject glObject2, final CLGLObject glObject3, final CLEventList condition, final CLEventList events) {
1688 this.putAcquireGLObjects(copy2NIO(ibA, glObject1.getID(), glObject2.getID(), glObject3.getID()), condition, events);
1689 return this;
1690 }
1691
1692 /**
1693 * Calls {@native clEnqueueAcquireGLObjects}.
1694 */
1695 public CLCommandQueue putAcquireGLObjects(final PointerBuffer glObjectIDs, final CLEventList condition, final CLEventList events) {
1696
1697 PointerBuffer conditionIDs = null;
1698 int conditions = 0;
1699 if(condition != null) {
1700 conditionIDs = condition.IDsView;
1701 conditions = condition.size;
1702 }
1703
1704 final int ret = cl.clEnqueueAcquireGLObjects(ID, glObjectIDs.remaining(), glObjectIDs,
1705 conditions, conditionIDs,
1706 events==null ? null : events.IDs);
1707
1708 if(ret != CL_SUCCESS) {
1709 throw newException(ret, "can not aquire " + glObjectIDs + " with " + toStr(condition, events));
1710 }
1711
1712 if(events != null) {
1713 events.createEvent(context);
1714 }
1715
1716 return this;
1717 }
1718
1719 /**
1720 * Calls {@native clEnqueueReleaseGLObjects}.
1721 */
1723 this.putReleaseGLObject(glObject, null);
1724 return this;
1725 }
1726
1727 /**
1728 * Calls {@native clEnqueueReleaseGLObjects}.
1729 */
1730 public CLCommandQueue putReleaseGLObject(final CLGLObject glObject, final CLEventList events) {
1731 this.putReleaseGLObject(glObject, null, events);
1732 return this;
1733 }
1734
1735 /**
1736 * Calls {@native clEnqueueReleaseGLObjects}.
1737 */
1738 public CLCommandQueue putReleaseGLObject(final CLGLObject glObject, final CLEventList condition, final CLEventList events) {
1739 this.putReleaseGLObjects(copy2NIO(ibA, glObject.getID()), condition, events);
1740 return this;
1741 }
1742
1743 /**
1744 * Calls {@native clEnqueueAcquireGLObjects}.
1745 */
1746 public CLCommandQueue putReleaseGLObjects(final CLGLObject glObject1, final CLGLObject glObject2, final CLEventList condition, final CLEventList events) {
1747 this.putReleaseGLObjects(copy2NIO(ibA, glObject1.getID(), glObject2.getID()), condition, events);
1748 return this;
1749 }
1750
1751 /**
1752 * Calls {@native clEnqueueAcquireGLObjects}.
1753 */
1754 public CLCommandQueue putReleaseGLObjects(final CLGLObject glObject1, final CLGLObject glObject2, final CLGLObject glObject3, final CLEventList condition, final CLEventList events) {
1755 this.putReleaseGLObjects(copy2NIO(ibA, glObject1.getID(), glObject2.getID(), glObject3.getID()), condition, events);
1756 return this;
1757 }
1758
1759 /**
1760 * Calls {@native clEnqueueReleaseGLObjects}.
1761 */
1762 public CLCommandQueue putReleaseGLObjects(final PointerBuffer glObjectIDs, final CLEventList condition, final CLEventList events) {
1763
1764 PointerBuffer conditionIDs = null;
1765 int conditions = 0;
1766 if(condition != null) {
1767 conditionIDs = condition.IDsView;
1768 conditions = condition.size;
1769 }
1770
1771 final int ret = cl.clEnqueueReleaseGLObjects(ID, glObjectIDs.remaining(), glObjectIDs,
1772 conditions, conditionIDs,
1773 events==null ? null : events.IDs);
1774
1775 if(ret != CL_SUCCESS) {
1776 throw newException(ret, "can not release " + glObjectIDs + "with " + toStr(condition, events));
1777 }
1778
1779 if(events != null) {
1780 events.createEvent(context);
1781 }
1782
1783 return this;
1784 }
1785
1786 /**
1787 * Calls {@native clFinish}.
1788 */
1790 final int ret = cl.clFinish(ID);
1791 checkForError(ret, "can not finish command queue");
1792 return this;
1793 }
1794
1795 /**
1796 * Calls {@native clFlush}.
1797 */
1799 final int ret = cl.clFlush(ID);
1800 checkForError(ret, "can not flush command queue");
1801 return this;
1802 }
1803
1804 /**
1805 * Returns true only when {@link Mode#PROFILING_MODE} has been enabled.
1806 */
1807 public boolean isProfilingEnabled() {
1808 return (Mode.PROFILING_MODE.QUEUE_MODE & properties) != 0;
1809 }
1810
1811 /**
1812 * Returns true only when {@link Mode#OUT_OF_ORDER_MODE} mode has been enabled.
1813 */
1814 public boolean isOutOfOrderModeEnabled() {
1815 return (Mode.OUT_OF_ORDER_MODE.QUEUE_MODE & properties) != 0;
1816 }
1817
1818 @Override
1819 public void release() {
1820 super.release();
1821 final int ret = cl.clReleaseCommandQueue(ID);
1822 context.onCommandQueueReleased(device, this);
1823 if(ret != CL_SUCCESS) {
1824 throw newException(ret, "can not release "+this);
1825 }
1826 }
1827
1828 private static PointerBuffer copy2NIO(final PointerBuffer buffer, final long a) {
1829 return buffer.put(2, a).position(2);
1830 }
1831
1832 private static PointerBuffer copy2NIO(final PointerBuffer buffer, final long a, final long b) {
1833 return buffer.position(1).put(a).put(b).position(1);
1834 }
1835
1836 private static PointerBuffer copy2NIO(final PointerBuffer buffer, final long a, final long b, final long c) {
1837 return buffer.rewind().put(a).put(b).put(c).rewind();
1838 }
1839
1840 private static String toStr(final PointerBuffer buffer) {
1841 if(buffer == null) {
1842 return null;
1843 }
1844 final StringBuilder sb = new StringBuilder();
1845 sb.append('{');
1846 for (int i = buffer.position(); i < buffer.capacity(); i++) {
1847 sb.append(buffer.get(i));
1848 if(i != buffer.capacity()-1) {
1849 sb.append(", ");
1850 }
1851 }
1852 return sb.append('}').toString();
1853 }
1854
1855 private static String toStr(final CLEventList condition, final CLEventList events) {
1856 return "\ncond.: " + condition +" events: "+events;
1857 }
1858
1859 private String toStr(final Integer... values) {
1860 return Arrays.asList(values).toString();
1861 }
1862
1863 private String bufferRectToString(final String action, final CLBuffer<?> buffer,
1864 final long rowPitch, final long slicePitch, final long hostRowPitch, final long hostSlicePitch,
1865 final int originX, final int originY, final int originZ, final int hostX, final int hostY, final int hostZ,
1866 final int rangeX, final int rangeY, final int rangeZ, final CLEventList condition, final CLEventList events) {
1867 return "can not enqueue "+action+"-buffer-rect: " + buffer + "\n"
1868 + " with rowPitch: " + rowPitch + " slicePitch: " + slicePitch
1869 + " hostRowPitch: " + hostRowPitch + " hostSlicePitch: " + hostSlicePitch + "\n"
1870 + " origin: " + toStr(originX, originY, originZ) + " hostPos: " + toStr(hostX, hostY, hostZ)
1871 + " range: " + toStr(rangeX, rangeY, rangeZ) + toStr(condition, events);
1872 }
1873
1874 /**
1875 * Returns the device of this command queue.
1876 */
1878 return device;
1879 }
1880
1881 /**
1882 * Returns the command queue properties as EnumSet.
1883 */
1884 public EnumSet<Mode> getProperties() {
1885 return Mode.valuesOf(properties);
1886 }
1887
1888 @Override
1889 public String toString() {
1890 return getClass().getSimpleName() +" "+getProperties()+" on "+ getDevice();
1891 }
1892
1893 @Override
1894 public boolean equals(final Object obj) {
1895 if (obj == null) {
1896 return false;
1897 }
1898 if (getClass() != obj.getClass()) {
1899 return false;
1900 }
1901 final CLCommandQueue other = (CLCommandQueue) obj;
1902 if (this.ID != other.ID) {
1903 return false;
1904 }
1905 if (this.context != other.context && (this.context == null || !this.context.equals(other.context))) {
1906 return false;
1907 }
1908 if (this.device != other.device && (this.device == null || !this.device.equals(other.device))) {
1909 return false;
1910 }
1911 return true;
1912 }
1913
1914 @Override
1915 public int hashCode() {
1916 int hash = 3;
1917 hash = 89 * hash + (int) (this.ID ^ (this.ID >>> 32));
1918 hash = 89 * hash + (this.context != null ? this.context.hashCode() : 0);
1919 hash = 89 * hash + (this.device != null ? this.device.hashCode() : 0);
1920 return hash;
1921 }
1922
1923 /**
1924 * Enumeration for the command-queue settings.
1925 */
1926 public enum Mode {
1927 /**
1928 * If set, the commands in the command-queue are
1929 * executed out-of-order. Otherwise, commands are executed in-order.
1930 */
1931 OUT_OF_ORDER_MODE(CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE),
1932
1933 /**
1934 * Enables profiling of commands in the command-queue.
1935 * If set, the profiling of commands is enabled. Otherwise profiling of
1936 * commands is disabled. See {@link com.jogamp.opencl.CLEvent} for more information.
1937 */
1938 PROFILING_MODE(CL_QUEUE_PROFILING_ENABLE);
1939
1940 /**
1941 * Value of wrapped OpenCL device type.
1942 */
1943 public final int QUEUE_MODE;
1944
1945 private Mode(final int value) {
1946 this.QUEUE_MODE = value;
1947 }
1948
1949 public static Mode valueOf(final int queueMode) {
1950 switch(queueMode) {
1951 case(CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE):
1952 return OUT_OF_ORDER_MODE;
1953 case(CL_QUEUE_PROFILING_ENABLE):
1954 return PROFILING_MODE;
1955 }
1956 return null;
1957 }
1958
1959 public static EnumSet<Mode> valuesOf(final long bitfield) {
1960 final List<Mode> matching = new ArrayList<Mode>();
1961 final Mode[] values = Mode.values();
1962 for (final Mode value : values) {
1963 if((value.QUEUE_MODE & bitfield) != 0)
1964 matching.add(value);
1965 }
1966 if(matching.isEmpty())
1967 return EnumSet.noneOf(Mode.class);
1968 else
1969 return EnumSet.copyOf(matching);
1970 }
1971
1972 }
1973}
OpenCL buffer object wrapping an optional NIO buffer.
Definition: CLBuffer.java:46
The command queue is used to queue a set of operations for a specific CLDevice.
CLCommandQueue putAcquireGLObject(final CLGLObject glObject, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueAcquireGLObjects}.
CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage3d<?> dstImage, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyBufferToImage}.
CLCommandQueue putReadBufferRect(final CLBuffer<?> readBuffer, final int originX, final int originY, final int hostX, final int hostY, final int rangeX, final int rangeY, final long rowPitch, final long slicePitch, final long hostRowPitch, final long hostSlicePitch, final boolean blockingRead, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueReadBufferRect}.
CLCommandQueue putWriteBufferRect(final CLBuffer<?> writeBuffer, final int originX, final int originY, final int hostX, final int hostY, final int rangeX, final int rangeY, final long rowPitch, final long slicePitch, final long hostRowPitch, final long hostSlicePitch, final boolean blockingWrite, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueWriteBufferRect}.
boolean equals(final Object obj)
CLCommandQueue put2DRangeKernel(final CLKernel kernel, final long globalWorkOffsetX, final long globalWorkOffsetY, final long globalWorkSizeX, final long globalWorkSizeY, final long localWorkSizeX, final long localWorkSizeY, final CLEventList events)
Calls {@native clEnqueueNDRangeKernel}.
CLCommandQueue putWriteBufferRect(final CLBuffer<?> writeBuffer, final int originX, final int originY, final int hostX, final int hostY, final int rangeX, final int rangeY, final boolean blockingWrite, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueWriteBufferRect}.
CLCommandQueue putCopyImageToBuffer(final CLImage2d<?> srcImage, final CLBuffer<?> dstBuffer, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyImageToBuffer}.
CLCommandQueue putBarrier()
Calls {@native clEnqueueBarrier}.
CLCommandQueue putReadImage(final CLImage3d<?> readImage, final int inputRowPitch, final int inputSlicePitch, final int originX, final int originY, final int originZ, final int rangeX, final int rangeY, final int rangeZ, final boolean blockingRead)
Calls {@native clEnqueueReadImage}.
CLCommandQueue putWriteImage(final CLImage3d<?> writeImage, final boolean blockingWrite, final CLEventList events)
Calls {@native clEnqueueWriteImage}.
ByteBuffer putMapImage(final CLImage3d<?> image, final CLMemory.Map flag, final int offsetX, final int offsetY, final int offsetZ, final int rangeX, final int rangeY, final int rangeZ, final boolean blockingMap)
Calls {@native clEnqueueMapImage}.
boolean isOutOfOrderModeEnabled()
Returns true only when Mode#OUT_OF_ORDER_MODE mode has been enabled.
CLCommandQueue putWriteImage(final CLImage2d<?> writeImage, final boolean blockingWrite)
Calls {@native clEnqueueWriteImage}.
CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage3d<?> dstImage, final long srcOffset, final int dstOriginX, final int dstOriginY, final int dstOriginZ, final int rangeX, final int rangeY, final int rangeZ)
Calls {@native clEnqueueCopyBufferToImage}.
CLCommandQueue putUnmapMemory(final CLMemory<?> memory, final Buffer mapped)
Calls {@native clEnqueueUnmapMemObject}.
CLCommandQueue putWriteBuffer(final CLBuffer<?> writeBuffer, final boolean blockingRead, final CLEventList events)
Calls {@native clEnqueueWriteBuffer}.
CLCommandQueue putCopyBuffer(final CLBuffer<?> src, final CLBuffer<?> dest, final long bytesToCopy)
Calls {@native clEnqueueCopyBuffer}.
CLCommandQueue putTask(final CLKernel kernel)
Equivalent to calling put1DRangeKernel(CLKernel kernel, long globalWorkOffset, long globalWorkSize,...
CLCommandQueue putReadBuffer(final CLBuffer<?> readBuffer, final boolean blockingRead, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueReadBuffer}.
CLCommandQueue putAcquireGLObject(final CLGLObject glObject)
Calls {@native clEnqueueAcquireGLObjects}.
CLCommandQueue putCopyImageToBuffer(final CLImage2d<?> srcImage, final CLBuffer<?> dstBuffer, final int srcOriginX, final int srcOriginY, final int rangeX, final int rangeY, final long dstOffset, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyImageToBuffer}.
CLCommandQueue putReadImage(final CLImage3d<?> readImage, final boolean blockingRead, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueReadImage}.
ByteBuffer putMapBuffer(final CLBuffer<?> buffer, final CLMemory.Map flag, final long offset, final long length, final boolean blockingMap)
Calls {@native clEnqueueMapBuffer}.
CLCommandQueue putCopyImageToBuffer(final CLImage3d<?> srcImage, final CLBuffer<?> dstBuffer, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyImageToBuffer}.
CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage2d<?> dstImage, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyBufferToImage}.
ByteBuffer putMapImage(final CLImage2d<?> buffer, final CLMemory.Map flag, final int offsetX, final int offsetY, final int rangeX, final int rangeY, final boolean blockingMap)
Calls {@native clEnqueueMapImage}.
CLCommandQueue putWriteImage(final CLImage2d<?> writeImage, final boolean blockingWrite, final CLEventList events)
Calls {@native clEnqueueWriteImage}.
CLCommandQueue put1DRangeKernel(final CLKernel kernel, final long globalWorkOffset, final long globalWorkSize, final long localWorkSize, final CLEventList events)
Calls {@native clEnqueueNDRangeKernel}.
CLCommandQueue putTask(final CLKernel kernel, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueTask}.
CLCommandQueue put1DRangeKernel(final CLKernel kernel, final long globalWorkOffset, final long globalWorkSize, final long localWorkSize, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueNDRangeKernel}.
ByteBuffer putMapImage(final CLImage3d<?> image, final CLMemory.Map flag, final int offsetX, final int offsetY, final int offsetZ, final int rangeX, final int rangeY, final int rangeZ, final boolean blockingMap, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueMapImage}.
CLCommandQueue putReleaseGLObject(final CLGLObject glObject, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueReleaseGLObjects}.
CLCommandQueue putCopyImage(final CLImage2d<?> srcImage, final CLImage2d<?> dstImage, final int srcOriginX, final int srcOriginY, final int dstOriginX, final int dstOriginY, final int rangeX, final int rangeY)
Calls {@native clEnqueueCopyImage}.
ByteBuffer putMapBuffer(final CLBuffer<?> buffer, final CLMemory.Map flag, final boolean blockingMap, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueMapBuffer}.
ByteBuffer putMapImage(final CLImage3d<?> image, final CLMemory.Map flag, final boolean blockingMap)
Calls {@native clEnqueueMapImage}.
CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage2d<?> dstImage)
Calls {@native clEnqueueCopyBufferToImage}.
CLCommandQueue put1DRangeKernel(final CLKernel kernel, final long globalWorkOffset, final long globalWorkSize, final long localWorkSize)
Calls {@native clEnqueueNDRangeKernel}.
CLCommandQueue putReadImage(final CLImage2d<?> readImage, final boolean blockingRead, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueReadImage}.
CLCommandQueue putWriteBufferRect(final CLBuffer<?> writeBuffer, final int originX, final int originY, final int originZ, final int hostX, final int hostY, final int hostZ, final int rangeX, final int rangeY, final int rangeZ, final long rowPitch, final long slicePitch, final long hostRowPitch, final long hostSlicePitch, final boolean blockingWrite, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueWriteBufferRect}.
boolean isProfilingEnabled()
Returns true only when Mode#PROFILING_MODE has been enabled.
ByteBuffer putMapImage(final CLImage3d<?> image, final CLMemory.Map flag, final boolean blockingMap, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueMapImage}.
CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage3d<?> dstImage, final long srcOffset, final int dstOriginX, final int dstOriginY, final int dstOriginZ, final int rangeX, final int rangeY, final int rangeZ, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyBufferToImage}.
CLCommandQueue putAcquireGLObjects(final PointerBuffer glObjectIDs, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueAcquireGLObjects}.
CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage3d<?> dstImage)
Calls {@native clEnqueueCopyBufferToImage}.
CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage3d<?> dstImage, final CLEventList events)
Calls {@native clEnqueueCopyBufferToImage}.
CLCommandQueue finish()
Calls {@native clFinish}.
CLCommandQueue putWriteImage(final CLImage3d<?> writeImage, final boolean blockingWrite, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueWriteImage}.
CLCommandQueue putCopyImageToBuffer(final CLImage3d<?> srcImage, final CLBuffer<?> dstBuffer, final int srcOriginX, final int srcOriginY, final int srcOriginZ, final int rangeX, final int rangeY, final int rangeZ, final long dstOffset)
Calls {@native clEnqueueCopyImageToBuffer}.
CLCommandQueue putWriteBufferRect(final CLBuffer<?> writeBuffer, final int originX, final int originY, final int originZ, final int hostX, final int hostY, final int hostZ, final int rangeX, final int rangeY, final int rangeZ, final boolean blockingWrite, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueWriteBufferRect}.
CLCommandQueue putReadBufferRect(final CLBuffer<?> readBuffer, final int originX, final int originY, final int originZ, final int hostX, final int hostY, final int hostZ, final int rangeX, final int rangeY, final int rangeZ, final long rowPitch, final long slicePitch, final long hostRowPitch, final long hostSlicePitch, final boolean blockingRead, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueReadBufferRect}.
CLCommandQueue putCopyImage(final CLImage3d<?> srcImage, final CLImage3d<?> dstImage, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyImage}.
CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage2d<?> dstImage, final long srcOffset, final int dstOriginX, final int dstOriginY, final int rangeX, final int rangeY)
Calls {@native clEnqueueCopyBufferToImage}.
CLCommandQueue putCopyImageToBuffer(final CLImage3d<?> srcImage, final CLBuffer<?> dstBuffer, final CLEventList events)
Calls {@native clEnqueueCopyImageToBuffer}.
CLCommandQueue putCopyBufferRect(final CLBuffer<?> src, final CLBuffer<?> dest, final int srcOriginX, final int srcOriginY, final int srcOriginZ, final int destOriginX, final int destOriginY, final int destOriginZ, final int rangeX, final int rangeY, final int rangeZ, final long srcRowPitch, final long srcSlicePitch, final long destRowPitch, final long destSlicePitch, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyBufferRect}.
ByteBuffer putMapImage(final CLImage2d<?> image, final CLMemory.Map flag, final boolean blockingMap, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueMapImage}.
CLCommandQueue putCopyImage(final CLImage3d<?> srcImage, final CLImage3d<?> dstImage)
Calls {@native clEnqueueCopyImage}.
CLCommandQueue putCopyBufferRect(final CLBuffer<?> src, final CLBuffer<?> dest, final int srcOriginX, final int srcOriginY, final int destOriginX, final int destOriginY, final int rangeX, final int rangeY, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyBufferRect}.
CLCommandQueue putReleaseGLObjects(final PointerBuffer glObjectIDs, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueReleaseGLObjects}.
CLCommandQueue putTask(final CLKernel kernel, final CLEventList events)
ByteBuffer putMapImage(final CLImage2d<?> image, final CLMemory.Map flag, final int offsetX, final int offsetY, final int rangeX, final int rangeY, final boolean blockingMap, final CLEventList condition, final CLEventList events, final long[] imageRowPitch, final long[] imageSlicePitch)
Calls {@native clEnqueueMapImage}.
CLDevice getDevice()
Returns the device of this command queue.
CLCommandQueue putCopyImageToBuffer(final CLImage2d<?> srcImage, final CLBuffer<?> dstBuffer, final int srcOriginX, final int srcOriginY, final int rangeX, final int rangeY, final long dstOffset)
Calls {@native clEnqueueCopyImageToBuffer}.
CLCommandQueue putReadImage(final CLImage2d<?> readImage, final int inputRowPitch, final int originX, final int originY, final int rangeX, final int rangeY, final boolean blockingRead)
Calls {@native clEnqueueReadImage}.
CLCommandQueue putCopyBufferRect(final CLBuffer<?> src, final CLBuffer<?> dest, final int srcOriginX, final int srcOriginY, final int srcOriginZ, final int destOriginX, final int destOriginY, final int destOriginZ, final int rangeX, final int rangeY, final int rangeZ, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyBufferRect}.
CLCommandQueue putReadImage(final CLImage3d<?> readImage, final int inputRowPitch, final int inputSlicePitch, final int originX, final int originY, final int originZ, final int rangeX, final int rangeY, final int rangeZ, final boolean blockingRead, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueReadImage}.
CLCommandQueue put3DRangeKernel(final CLKernel kernel, final long globalWorkOffsetX, final long globalWorkOffsetY, final long globalWorkOffsetZ, final long globalWorkSizeX, final long globalWorkSizeY, final long globalWorkSizeZ, final long localWorkSizeX, final long localWorkSizeY, final long localWorkSizeZ, final CLEventList events)
Calls {@native clEnqueueNDRangeKernel}.
CLCommandQueue putNDRangeKernel(final CLKernel kernel, final int workDimension, final PointerBuffer globalWorkOffset, final PointerBuffer globalWorkSize, final PointerBuffer localWorkSize, final CLEventList events)
Calls {@native clEnqueueNDRangeKernel}.
CLCommandQueue putCopyBuffer(final CLBuffer<?> src, final CLBuffer<?> dest)
Calls {@native clEnqueueCopyBuffer}.
CLCommandQueue putMarker(final CLEventList events)
Calls {@native clEnqueueMarker}.
CLCommandQueue putCopyBufferRect(final CLBuffer<?> src, final CLBuffer<?> dest, final int srcOriginX, final int srcOriginY, final int destOriginX, final int destOriginY, final int rangeX, final int rangeY, final long srcRowPitch, final long srcSlicePitch, final long destRowPitch, final long destSlicePitch, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyBufferRect}.
CLCommandQueue putReadImage(final CLImage3d<?> readImage, final boolean blockingRead, final CLEventList events)
Calls {@native clEnqueueReadImage}.
CLCommandQueue putReadBufferRect(final CLBuffer<?> readBuffer, final int originX, final int originY, final int originZ, final int hostX, final int hostY, final int hostZ, final int rangeX, final int rangeY, final int rangeZ, final boolean blockingRead, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueReadBufferRect}.
CLCommandQueue putWaitForEvents(final CLEventList list, final boolean blockingWait)
Calls {@native clWaitForEvents} if blockingWait equals true otherwise {@native clEnqueueWaitForEvents...
CLCommandQueue putReadBufferRect(final CLBuffer<?> readBuffer, final int originX, final int originY, final int hostX, final int hostY, final int rangeX, final int rangeY, final boolean blockingRead, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueReadBufferRect}.
CLCommandQueue putAcquireGLObject(final CLGLObject glObject, final CLEventList events)
Calls {@native clEnqueueAcquireGLObjects}.
CLCommandQueue putCopyBuffer(final CLBuffer<?> src, final CLBuffer<?> dest, final int srcOffset, final int destOffset, final long bytesToCopy, final CLEventList events)
Calls {@native clEnqueueCopyBuffer}.
CLCommandQueue putWaitForEvent(final CLEventList list, final int index, final boolean blockingWait)
Calls {@native clWaitForEvents} if blockingWait equals true otherwise {@native clEnqueueWaitForEvents...
CLCommandQueue putCopyImageToBuffer(final CLImage3d<?> srcImage, final CLBuffer<?> dstBuffer, final int srcOriginX, final int srcOriginY, final int srcOriginZ, final int rangeX, final int rangeY, final int rangeZ, final long dstOffset, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyImageToBuffer}.
CLCommandQueue putWriteBuffer(final CLBuffer<?> writeBuffer, final boolean blockingRead)
Calls {@native clEnqueueWriteBuffer}.
ByteBuffer putMapImage(final CLImage3d<?> image, final CLMemory.Map flag, final boolean blockingMap, final CLEventList events)
Calls {@native clEnqueueMapImage}.
CLCommandQueue putCopyBuffer(final CLBuffer<?> src, final CLBuffer<?> dest, final int srcOffset, final int destOffset, final long bytesToCopy, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyBuffer}.
CLCommandQueue put3DRangeKernel(final CLKernel kernel, final long globalWorkOffsetX, final long globalWorkOffsetY, final long globalWorkOffsetZ, final long globalWorkSizeX, final long globalWorkSizeY, final long globalWorkSizeZ, final long localWorkSizeX, final long localWorkSizeY, final long localWorkSizeZ, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueNDRangeKernel}.
CLCommandQueue putReleaseGLObject(final CLGLObject glObject)
Calls {@native clEnqueueReleaseGLObjects}.
CLCommandQueue putReadImage(final CLImage2d<?> readImage, final boolean blockingRead)
Calls {@native clEnqueueReadImage}.
CLCommandQueue putWriteImage(final CLImage3d<?> writeImage, final int inputRowPitch, final int inputSlicePitch, final int originX, final int originY, final int originZ, final int rangeX, final int rangeY, final int rangeZ, final boolean blockingWrite)
Calls {@native clEnqueueWriteImage}.
ByteBuffer putMapBuffer(final CLBuffer<?> buffer, final CLMemory.Map flag, final long offset, final long length, final boolean blockingMap, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueMapBuffer}.
CLCommandQueue putUnmapMemory(final CLMemory<?> memory, final Buffer mapped, final CLEventList events)
Calls {@native clEnqueueUnmapMemObject}.
CLCommandQueue putReadBuffer(final CLBuffer<?> readBuffer, final boolean blockingRead, final CLEventList events)
Calls {@native clEnqueueReadBuffer}.
CLCommandQueue putWriteImage(final CLImage2d<?> writeImage, final boolean blockingWrite, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueWriteImage}.
CLCommandQueue putUnmapMemory(final CLMemory<?> memory, final Buffer mapped, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueUnmapMemObject}.
CLCommandQueue putReleaseGLObjects(final CLGLObject glObject1, final CLGLObject glObject2, final CLGLObject glObject3, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueAcquireGLObjects}.
ByteBuffer putMapBuffer(final CLBuffer<?> buffer, final CLMemory.Map flag, final boolean blockingMap, final CLEventList events)
Calls {@native clEnqueueMapBuffer}.
CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage2d<?> dstImage, final long srcOffset, final int dstOriginX, final int dstOriginY, final int rangeX, final int rangeY, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyBufferToImage}.
CLCommandQueue putWriteImage(final CLImage3d<?> writeImage, final int inputRowPitch, final int inputSlicePitch, final int originX, final int originY, final int originZ, final int rangeX, final int rangeY, final int rangeZ, final boolean blockingWrite, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueWriteImage}.
CLCommandQueue putReadImage(final CLImage2d<?> readImage, final int inputRowPitch, final int originX, final int originY, final int rangeX, final int rangeY, final boolean blockingRead, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueReadImage}.
CLCommandQueue putReadImage(final CLImage2d<?> readImage, final boolean blockingRead, final CLEventList events)
Calls {@native clEnqueueReadImage}.
ByteBuffer putMapBuffer(final CLBuffer<?> buffer, final CLMemory.Map flag, final boolean blockingMap)
Calls {@native clEnqueueMapBuffer}.
CLCommandQueue putReadBuffer(final CLBuffer<?> readBuffer, final boolean blockingRead)
Calls {@native clEnqueueReadBuffer}.
void release()
Releases the OpenCL resource.
CLCommandQueue putCopyImage(final CLImage2d<?> srcImage, final CLImage2d<?> dstImage, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyImage}.
CLCommandQueue putWriteImage(final CLImage2d<?> writeImage, final int inputRowPitch, final int originX, final int originY, final int rangeX, final int rangeY, final boolean blockingWrite)
Calls {@native clEnqueueWriteImage}.
CLCommandQueue putReleaseGLObject(final CLGLObject glObject, final CLEventList events)
Calls {@native clEnqueueReleaseGLObjects}.
CLCommandQueue put2DRangeKernel(final CLKernel kernel, final long globalWorkOffsetX, final long globalWorkOffsetY, final long globalWorkSizeX, final long globalWorkSizeY, final long localWorkSizeX, final long localWorkSizeY, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueNDRangeKernel}.
CLCommandQueue putNDRangeKernel(final CLKernel kernel, final int workDimension, final PointerBuffer globalWorkOffset, final PointerBuffer globalWorkSize, final PointerBuffer localWorkSize, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueNDRangeKernel}.
CLCommandQueue putCopyImage(final CLImage2d<?> srcImage, final CLImage2d<?> dstImage, final int srcOriginX, final int srcOriginY, final int dstOriginX, final int dstOriginY, final int rangeX, final int rangeY, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyImage}.
ByteBuffer putMapImage(final CLImage2d<?> image, final CLMemory.Map flag, final boolean blockingMap, final CLEventList events)
Calls {@native clEnqueueMapImage}.
CLCommandQueue putCopyImageToBuffer(final CLImage2d<?> srcImage, final CLBuffer<?> dstBuffer, final CLEventList events)
Calls {@native clEnqueueCopyImageToBuffer}.
CLCommandQueue put2DRangeKernel(final CLKernel kernel, final long globalWorkOffsetX, final long globalWorkOffsetY, final long globalWorkSizeX, final long globalWorkSizeY, final long localWorkSizeX, final long localWorkSizeY)
Calls {@native clEnqueueNDRangeKernel}.
CLCommandQueue putWriteBuffer(final CLBuffer<?> writeBuffer, final boolean blockingWrite, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueWriteBuffer}.
ByteBuffer putMapImage(final CLImage2d<?> image, final CLMemory.Map flag, final boolean blockingMap)
Calls {@native clEnqueueMapImage}.
CLCommandQueue put3DRangeKernel(final CLKernel kernel, final long globalWorkOffsetX, final long globalWorkOffsetY, final long globalWorkOffsetZ, final long globalWorkSizeX, final long globalWorkSizeY, final long globalWorkSizeZ, final long localWorkSizeX, final long localWorkSizeY, final long localWorkSizeZ)
Calls {@native clEnqueueNDRangeKernel}.
CLCommandQueue putCopyBufferToImage(final CLBuffer<?> srcBuffer, final CLImage2d<?> dstImage, final CLEventList events)
Calls {@native clEnqueueCopyBufferToImage}.
CLCommandQueue putWriteImage(final CLImage3d<?> writeImage, final boolean blockingWrite)
Calls {@native clEnqueueWriteImage}.
CLCommandQueue putCopyImage(final CLImage3d<?> srcImage, final CLImage3d<?> dstImage, final CLEventList events)
Calls {@native clEnqueueCopyImage}.
EnumSet< Mode > getProperties()
Returns the command queue properties as EnumSet.
CLCommandQueue putReleaseGLObjects(final CLGLObject glObject1, final CLGLObject glObject2, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueAcquireGLObjects}.
CLCommandQueue putWriteImage(final CLImage2d<?> writeImage, final int inputRowPitch, final int originX, final int originY, final int rangeX, final int rangeY, final boolean blockingWrite, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueWriteImage}.
CLCommandQueue putReadImage(final CLImage3d<?> readImage, final boolean blockingRead)
Calls {@native clEnqueueReadImage}.
CLCommandQueue putCopyImageToBuffer(final CLImage2d<?> srcImage, final CLBuffer<?> dstBuffer)
Calls {@native clEnqueueCopyImageToBuffer}.
CLCommandQueue putCopyImage(final CLImage<?> srcImage, final CLImage<?> dstImage, final int srcOriginX, final int srcOriginY, final int srcOriginZ, final int dstOriginX, final int dstOriginY, final int dstOriginZ, final int rangeX, final int rangeY, final int rangeZ, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueCopyImage}.
CLCommandQueue putCopyImage(final CLImage2d<?> srcImage, final CLImage2d<?> dstImage)
Calls {@native clEnqueueCopyImage}.
ByteBuffer putMapImage(final CLImage2d<?> image, final CLMemory.Map flag, final int offsetX, final int offsetY, final int rangeX, final int rangeY, final boolean blockingMap, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueMapImage}.
CLCommandQueue putCopyImage(final CLImage3d<?> srcImage, final CLImage3d<?> dstImage, final int srcOriginX, final int srcOriginY, final int srcOriginZ, final int dstOriginX, final int dstOriginY, final int dstOriginZ, final int rangeX, final int rangeY, final int rangeZ)
Calls {@native clEnqueueCopyImage}.
CLCommandQueue putCopyImageToBuffer(final CLImage3d<?> srcImage, final CLBuffer<?> dstBuffer)
Calls {@native clEnqueueCopyImageToBuffer}.
CLCommandQueue putCopyImage(final CLImage2d<?> srcImage, final CLImage2d<?> dstImage, final CLEventList events)
Calls {@native clEnqueueCopyImage}.
CLCommandQueue flush()
Calls {@native clFlush}.
CLCommandQueue putAcquireGLObjects(final CLGLObject glObject1, final CLGLObject glObject2, final CLGLObject glObject3, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueAcquireGLObjects}.
CLCommandQueue putAcquireGLObjects(final CLGLObject glObject1, final CLGLObject glObject2, final CLEventList condition, final CLEventList events)
Calls {@native clEnqueueAcquireGLObjects}.
CLCommandQueue putNDRangeKernel(final CLKernel kernel, final int workDimension, final PointerBuffer globalWorkOffset, final PointerBuffer globalWorkSize, final PointerBuffer localWorkSize)
Calls {@native clEnqueueNDRangeKernel}.
CLContext is responsible for managing objects such as command-queues, memory, program and kernel obje...
Definition: CLContext.java:79
CLPlatform getPlatform()
Returns the CLPlatform this context is running on.
Definition: CLContext.java:569
This object represents an OpenCL device.
Definition: CLDevice.java:53
Fixed size list for storing CLEvents.
void waitForEvent(final int index)
Waits for the event with the given index in this list to occur.
void waitForEvents()
Waits for all events in this list to occur.
High level abstraction for an OpenCL Kernel.
Definition: CLKernel.java:53
Common superclass for all OpenCL memory types.
Definition: CLMemory.java:49
B getBuffer()
Returns the optional NIO buffer for this memory object.
Definition: CLMemory.java:137
int getNIOSize()
Returns the size of the wrapped direct buffer in byte or 0 if no buffer available.
Definition: CLMemory.java:154
long getCLSize()
Returns the size of the allocated OpenCL memory in bytes.
Definition: CLMemory.java:164
final long ID
The OpenCL object handle.
Definition: CLObject.java:41
Enumeration for the command-queue settings.
static Mode valueOf(final int queueMode)
final int QUEUE_MODE
Value of wrapped OpenCL device type.
static EnumSet< Mode > valuesOf(final long bitfield)
OUT_OF_ORDER_MODE
If set, the commands in the command-queue are executed out-of-order.
PROFILING_MODE
Enables profiling of commands in the command-queue.
Configures the mapping process.
Definition: CLMemory.java:402
long getID()
Returns the OpenCL object handle.
Java bindings to OpenCL, the Open Computing Language.
Definition: CL.java:26
int clEnqueueCopyImage(long command_queue, long src_image, long dst_image, PointerBuffer arg3, PointerBuffer arg4, PointerBuffer arg5, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueCopyImage}(cl_command_queue command_queu...
int clEnqueueWaitForEvents(long command_queue, int num_events, PointerBuffer event_list)
Interface to C language function: cl_int {@native clEnqueueWaitForEvents}(cl_command_queue command_...
ByteBuffer clEnqueueMapImage(long command_queue, long image, int blocking_map, long map_flags, PointerBuffer arg4, PointerBuffer arg5, PointerBuffer image_row_pitch, PointerBuffer image_slice_pitch, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event, IntBuffer errcode_ret)
Interface to C language function: void * {@native clEnqueueMapImage}(cl_command_queue command_queue...
int clEnqueueTask(long command_queue, long kernel, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueTask}(cl_command_queue command_queue,...
ByteBuffer clEnqueueMapBuffer(long command_queue, long buffer, int blocking_map, long map_flags, long offset, long cb, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event, IntBuffer errcode_ret)
Interface to C language function: void * {@native clEnqueueMapBuffer}(cl_command_queue command_queu...
int clEnqueueWriteImage(long command_queue, long image, int blocking_write, PointerBuffer arg3, PointerBuffer arg4, long input_row_pitch, long input_slice_pitch, Buffer ptr, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueWriteImage}(cl_command_queue command_que...
int clEnqueueCopyBuffer(long command_queue, long src_buffer, long dst_buffer, long src_offset, long dst_offset, long cb, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueCopyBuffer}(cl_command_queue command_que...
int clEnqueueWriteBuffer(long command_queue, long buffer, int blocking_write, long offset, long cb, Buffer ptr, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueWriteBuffer}(cl_command_queue command_qu...
int clEnqueueUnmapMemObject(long command_queue, long memobj, Buffer mapped_ptr, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueUnmapMemObject}(cl_command_queue command...
int clEnqueueCopyImageToBuffer(long command_queue, long src_image, long dst_buffer, PointerBuffer arg3, PointerBuffer arg4, long dst_offset, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueCopyImageToBuffer}(cl_command_queue comm...
int clEnqueueReleaseGLObjects(long command_queue, int num_objects, PointerBuffer mem_objects, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueReleaseGLObjects}(cl_command_queue comma...
int clEnqueueReadBuffer(long command_queue, long buffer, int blocking_read, long offset, long cb, Buffer ptr, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueReadBuffer}(cl_command_queue command_que...
int clEnqueueCopyBufferRect(long command_queue, long src_buffer, long dst_buffer, PointerBuffer src_origin, PointerBuffer dst_origin, PointerBuffer region, long src_row_pitch, long src_slice_pitch, long dst_row_pitch, long dst_slice_pitch, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueCopyBufferRect}(cl_command_queue command...
int clEnqueueReadImage(long command_queue, long image, int blocking_read, PointerBuffer arg3, PointerBuffer arg4, long row_pitch, long slice_pitch, Buffer ptr, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueReadImage}(cl_command_queue command_queu...
int clFlush(long command_queue)
Interface to C language function: cl_int {@native clFlush}(cl_command_queue command_queue)
int clEnqueueAcquireGLObjects(long command_queue, int num_objects, PointerBuffer mem_objects, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueAcquireGLObjects}(cl_command_queue comma...
int clEnqueueWriteBufferRect(long command_queue, long buffer, int blocking_write, PointerBuffer buffer_origin, PointerBuffer host_origin, PointerBuffer region, long buffer_row_pitch, long buffer_slice_pitch, long host_row_pitch, long host_slice_pitch, Buffer ptr, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueWriteBufferRect}(cl_command_queue comman...
int clReleaseCommandQueue(long command_queue)
Interface to C language function: cl_int {@native clReleaseCommandQueue}(cl_command_queue command_q...
int clEnqueueNDRangeKernel(long command_queue, long kernel, int work_dim, PointerBuffer global_work_offset, PointerBuffer global_work_size, PointerBuffer local_work_size, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueNDRangeKernel}(cl_command_queue command_...
int clEnqueueReadBufferRect(long command_queue, long buffer, int blocking_read, PointerBuffer buffer_origin, PointerBuffer host_origin, PointerBuffer region, long buffer_row_pitch, long buffer_slice_pitch, long host_row_pitch, long host_slice_pitch, Buffer ptr, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueReadBufferRect}(cl_command_queue command...
int clFinish(long command_queue)
Interface to C language function: cl_int {@native clFinish}(cl_command_queue command_queue)
int clEnqueueCopyBufferToImage(long command_queue, long src_buffer, long dst_image, long src_offset, PointerBuffer arg4, PointerBuffer arg5, int num_events_in_wait_list, PointerBuffer event_wait_list, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueCopyBufferToImage}(cl_command_queue comm...
long clCreateCommandQueue(long context, long device, long properties, IntBuffer errcode_ret)
Interface to C language function: cl_command_queue {@native clCreateCommandQueue}(cl_context contex...
int clEnqueueBarrier(long command_queue)
Interface to C language function: cl_int {@native clEnqueueBarrier}(cl_command_queue command_queue)
int clEnqueueMarker(long command_queue, PointerBuffer event)
Interface to C language function: cl_int {@native clEnqueueMarker}(cl_command_queue command_queue,...