29package com.jogamp.opencl;
31import com.jogamp.common.nio.AbstractBuffer;
32import com.jogamp.common.nio.CachedBufferFactory;
33import com.jogamp.common.nio.PointerBuffer;
34import java.util.Iterator;
47 final PointerBuffer IDs;
52 final PointerBuffer IDsView;
66 this.IDs = initIDBuffer(factory,
capacity);
67 this.IDsView = IDs.duplicate();
72 this.IDs = initIDBuffer(factory, events.length);
73 this.IDsView = IDs.duplicate();
75 for (
final CLEvent event : events) {
77 throw new IllegalArgumentException(
"event list containes null element.");
85 private PointerBuffer initIDBuffer(
final CachedBufferFactory factory,
final int size) {
87 return PointerBuffer.allocateDirect(size);
89 return PointerBuffer.wrap(factory.newDirectByteBuffer(size*AbstractBuffer.POINTER_SIZE));
93 void createEvent(
final CLContext context) {
95 if(events[size] !=
null)
98 events[size] =
new CLEvent(context, IDs.get());
102 PointerBuffer getEventBuffer(
final int index) {
103 return IDs.duplicate().position(index);
121 if(start+range < size || range <= 0) {
122 throw new IndexOutOfBoundsException(
"args: [start: "+start+
" range: "+range+
"], eventcount: "+size);
125 final PointerBuffer view = getEventBuffer(start);
133 final PointerBuffer view = getEventBuffer(index);
142 for (
int i = 0; i < size; i++) {
161 throw new IndexOutOfBoundsException(
"list contains "+size+
" events, can not return event with index "+index);
162 return events[index];
176 return events.length;
186 return new EventIterator(events, size);
191 final StringBuilder sb =
new StringBuilder();
192 sb.append(getClass().getName()).append(
'[');
193 for (
int i = 0; i < size; i++) {
199 return sb.append(
']').toString();
202 private static class EventIterator
implements Iterator<CLEvent> {
204 private final CLEvent[] events;
205 private final int size;
208 private EventIterator(
final CLEvent[] events,
final int size) {
209 this.events = events;
214 public boolean hasNext() {
219 public CLEvent next() {
221 return events[index++];
227 public void remove() {
228 throw new UnsupportedOperationException(
"remove() not supported.");
Fixed size list for storing CLEvents.
int size()
Returns the current size of this list.
void waitForEvents(final int start, final int range)
Waits for all events of the specified region in this list to occur.
boolean isReleased()
Returns true if release() has been called.
CLEventList(final CLEvent... events)
Iterator< CLEvent > iterator()
void waitForEvent(final int index)
Waits for the event with the given index in this list to occur.
int capacity()
Returns the maximum size of this list.
CLEventList(final CachedBufferFactory factory, final CLEvent... events)
void waitForEvents()
Waits for all events in this list to occur.
CLEventList(final int capacity)
void release()
Releases all CLEvents in this list.
CLEvent getEvent(final int index)
CLEventList(final CachedBufferFactory factory, final int capacity)
Event objects can be used for synchronizing command queues, e.g you can wait until a event occurs or ...
void release()
Releases the OpenCL resource.
CLPlatform getPlatform()
Returns the platform for this OpenCL object.
import of JDK7's ARM interface allowing JDK6 backwards compatibility.
Releasable OpenCL resource.
int clWaitForEvents(int num_events, PointerBuffer event_list)
Interface to C language function: cl_int {@native clWaitForEvents}(cl_uint num_events,...