Class CL11

Direct Known Subclasses:
CL12

public class CL11 extends CL10
The core OpenCL 1.1 functionality.
  • Field Details

    • CL_MISALIGNED_SUB_BUFFER_OFFSET

      public static final int CL_MISALIGNED_SUB_BUFFER_OFFSET
      Error Codes.
      See Also:
    • CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST

      public static final int CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST
      Error Codes.
      See Also:
    • CL_INVALID_PROPERTY

      public static final int CL_INVALID_PROPERTY
      Error Codes.
      See Also:
    • CL_VERSION_1_1

      public static final int CL_VERSION_1_1
      OpenCL Version.
      See Also:
    • CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF

      public static final int CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF
      cl_device_info.
      See Also:
    • CL_DEVICE_HOST_UNIFIED_MEMORY

      public static final int CL_DEVICE_HOST_UNIFIED_MEMORY
      cl_device_info.
      See Also:
    • CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR

      public static final int CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR
      cl_device_info.
      See Also:
    • CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT

      public static final int CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT
      cl_device_info.
      See Also:
    • CL_DEVICE_NATIVE_VECTOR_WIDTH_INT

      public static final int CL_DEVICE_NATIVE_VECTOR_WIDTH_INT
      cl_device_info.
      See Also:
    • CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG

      public static final int CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG
      cl_device_info.
      See Also:
    • CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT

      public static final int CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT
      cl_device_info.
      See Also:
    • CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE

      public static final int CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE
      cl_device_info.
      See Also:
    • CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF

      public static final int CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF
      cl_device_info.
      See Also:
    • CL_DEVICE_OPENCL_C_VERSION

      public static final int CL_DEVICE_OPENCL_C_VERSION
      cl_device_info.
      See Also:
    • CL_FP_SOFT_FLOAT

      public static final int CL_FP_SOFT_FLOAT
      cl_device_fp_config - bitfield.
      See Also:
    • CL_CONTEXT_NUM_DEVICES

      public static final int CL_CONTEXT_NUM_DEVICES
      cl_context_info.
      See Also:
    • CL_Rx

      public static final int CL_Rx
      cl_channel_order.
      See Also:
    • CL_RGx

      public static final int CL_RGx
      cl_channel_order.
      See Also:
    • CL_RGBx

      public static final int CL_RGBx
      cl_channel_order.
      See Also:
    • CL_MEM_ASSOCIATED_MEMOBJECT

      public static final int CL_MEM_ASSOCIATED_MEMOBJECT
      cl_mem_info.
      See Also:
    • CL_MEM_OFFSET

      public static final int CL_MEM_OFFSET
      cl_mem_info.
      See Also:
    • CL_ADDRESS_MIRRORED_REPEAT

      public static final int CL_ADDRESS_MIRRORED_REPEAT
      cl_addressing_mode.
      See Also:
    • CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE

      public static final int CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE
      cl_kernel_work_group_info.
      See Also:
    • CL_KERNEL_PRIVATE_MEM_SIZE

      public static final int CL_KERNEL_PRIVATE_MEM_SIZE
      cl_kernel_work_group_info.
      See Also:
    • CL_EVENT_CONTEXT

      public static final int CL_EVENT_CONTEXT
      cl_event_info.
      See Also:
    • CL_COMMAND_READ_BUFFER_RECT

      public static final int CL_COMMAND_READ_BUFFER_RECT
      cl_command_type.
      See Also:
    • CL_COMMAND_WRITE_BUFFER_RECT

      public static final int CL_COMMAND_WRITE_BUFFER_RECT
      cl_command_type.
      See Also:
    • CL_COMMAND_COPY_BUFFER_RECT

      public static final int CL_COMMAND_COPY_BUFFER_RECT
      cl_command_type.
      See Also:
    • CL_COMMAND_USER

      public static final int CL_COMMAND_USER
      cl_command_type.
      See Also:
    • CL_BUFFER_CREATE_TYPE_REGION

      public static final int CL_BUFFER_CREATE_TYPE_REGION
      cl_buffer_create_type.
      See Also:
  • Method Details

    • nclCreateSubBuffer

      public static long nclCreateSubBuffer(long buffer, long flags, int buffer_create_type, long buffer_create_info, long errcode_ret)
      Unsafe version of: CreateSubBuffer
    • clCreateSubBuffer

      public static long clCreateSubBuffer(long buffer, long flags, int buffer_create_type, ByteBuffer buffer_create_info, @Nullable IntBuffer errcode_ret)
      Creates a new buffer object (referred to as a sub-buffer object) from an existing buffer object.

      NOTE: Concurrent reading from, writing to and copying between both a buffer object and its sub-buffer object(s) is undefined. Concurrent reading from, writing to and copying between overlapping sub-buffer objects created with the same buffer object is undefined. Only reading from both a buffer object and its sub-buffer objects or reading from multiple overlapping sub-buffer objects is defined.

      Parameters:
      buffer - a valid buffer object and cannot be a sub-buffer object
      flags - a bit-field that is used to specify allocation and usage information about the sub-buffer memory object being created.

      If the MEM_READ_WRITE, MEM_READ_ONLY or MEM_WRITE_ONLY values are not specified in flags, they are inherited from the corresponding memory access qualifers associated with buffer. The MEM_USE_HOST_PTR, MEM_ALLOC_HOST_PTR and MEM_COPY_HOST_PTR values cannot be specified in flags but are inherited from the corresponding memory access qualifiers associated with buffer. If MEM_COPY_HOST_PTR is specified in the memory access qualifier values associated with buffer it does not imply any additional copies when the sub-buffer is created from buffer. If the MEM_HOST_WRITE_ONLY, MEM_HOST_READ_ONLY or MEM_HOST_NO_ACCESS values are not specified in flags, they are inherited from the corresponding memory access qualifiers associated with buffer.

      buffer_create_type - the type of buffer object to be created. Must be:
      BUFFER_CREATE_TYPE_REGION
      buffer_create_info - details about the buffer object to be created.

      When buffer_create_type is BUFFER_CREATE_TYPE_REGION, then buffer_create_info is a pointer to a CLBufferRegion structure. (origin, size) defines the offset and size in bytes in buffer.

      errcode_ret - will return an appropriate error code. If errcode_ret is NULL, no error code is returned.
      Returns:
      SUCCESS if the function is executed successfully. Otherwise, it returns one of the following errors in errcode_ret:
      See Also:
    • nclSetMemObjectDestructorCallback

      public static int nclSetMemObjectDestructorCallback(long memobj, long pfn_notify, long user_data)
    • clSetMemObjectDestructorCallback

      public static int clSetMemObjectDestructorCallback(long memobj, CLMemObjectDestructorCallbackI pfn_notify, long user_data)
      Registers a user callback function with a memory object. Each call to clSetMemObjectDestructorCallback registers the specified user callback function on a callback stack associated with memobj. The registered user callback functions are called in the reverse order in which they were registered. The user callback functions are called and then the memory object's resources are freed and the memory object is deleted. This provides a mechanism for the application (and libraries) using memobj to be notified when the memory referenced by host_ptr, specified when the memory object is created and used as the storage bits for the memory object, can be reused or freed.
      Parameters:
      memobj - a valid memory object
      pfn_notify - the callback function that can be registered by the application. This callback function may be called asynchronously by the OpenCL implementation. It is the application's responsibility to ensure that the callback function is thread-safe.
      user_data - will be passed as the user_data argument when pfn_notify is called. user_data can be NULL.
      Returns:
      SUCCESS if the function is executed successfully. Otherwise, it returns one of the following errors:
      • INVALID_MEM_OBJECT if memobj is not a valid memory object.
      • INVALID_VALUE if pfn_notify is NULL.
      • OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL implementation on the device.
      • OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host.
      See Also:
    • nclEnqueueReadBufferRect

      public static int nclEnqueueReadBufferRect(long command_queue, long buffer, int blocking_read, long buffer_origin, long host_origin, long region, long buffer_row_pitch, long buffer_slice_pitch, long host_row_pitch, long host_slice_pitch, long ptr, int num_events_in_wait_list, long event_wait_list, long event)
      Unsafe version of: EnqueueReadBufferRect
      Parameters:
      num_events_in_wait_list - the number of events in event_wait_list
    • clEnqueueReadBufferRect

      public static int clEnqueueReadBufferRect(long command_queue, long buffer, boolean 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, ByteBuffer ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Enqueues a command to read a 2D or 3D rectangular region from a buffer object to host memory.

      Calling clEnqueueReadBufferRect to read a region of the buffer object with the ptr argument value set to host_ptr and host_origin, buffer_origin values are the same, where host_ptr is a pointer to the memory region specified when the buffer object being read is created with MEM_USE_HOST_PTR, must meet the following requirements in order to avoid undefined behavior:

      • All commands that use this buffer object or a memory object (buffer or image) created from this buffer object have finished execution before the read command begins execution.
      • The buffer object or memory objects created from this buffer object are not mapped.
      • The buffer object or memory objects created from this buffer object are not used by any command-queue until the read command has finished execution.
      Parameters:
      command_queue - the command-queue in which the read command will be queued. command_queue and buffer must be created with the same OpenCL context.
      buffer - a valid buffer object
      blocking_read - indicates if the read operation is blocking or nonblocking.

      If blocking_read is TRUE i.e. the read command is blocking, clEnqueueReadBufferRect does not return until the buffer data has been read and copied into memory pointed to by ptr.

      If blocking_read is FALSE i.e. the read command is non-blocking, clEnqueueReadBufferRect queues a non-blocking read command and returns. The contents of the buffer that ptr points to cannot be used until the read command has completed. The event argument returns an event object which can be used to query the execution status of the read command. When the read command has completed, the contents of the buffer that ptr points to can be used by the application.

      buffer_origin - the (x, y, z) offset in the memory region associated with buffer. For a 2D rectangle region, the z value given by buffer_origin[2] should be 0. The offset in bytes is computed as buffer_origin[2] * buffer_slice_pitch + buffer_origin[1] * buffer_row_pitch + buffer_origin[0].
      host_origin - the (x, y, z) offset in the memory region pointed to by ptr. For a 2D rectangle region, the z value given by host_origin[2] should be 0. The offset in bytes is computed as host_origin[2] * host_slice_pitch + host_origin[1] * host_row_pitch + host_origin[0].
      region - the (width in bytes, height in rows, depth in slices) of the 2D or 3D rectangle being read or written. For a 2D rectangle copy, the depth value given by region[2] should be 1. The values in region cannot be 0.
      buffer_row_pitch - the length of each row in bytes to be used for the memory region associated with buffer. If buffer_row_pitch is 0, buffer_row_pitch is computed as region[0].
      buffer_slice_pitch - the length of each 2D slice in bytes to be used for the memory region associated with buffer. If buffer_slice_pitch is 0, buffer_slice_pitch is computed as region[1] * buffer_row_pitch.
      host_row_pitch - the length of each row in bytes to be used for the memory region pointed to by ptr. If host_row_pitch is 0, host_row_pitch is computed as region[0].
      host_slice_pitch - the length of each 2D slice in bytes to be used for the memory region pointed to by ptr. If host_slice_pitch is 0, host_slice_pitch is computed as region[1] * host_row_pitch.
      ptr - the pointer to buffer in host memory where data is to be read into
      event_wait_list - a list of events that need to complete before this particular command can be executed. If event_wait_list is NULL, then this particular command does not wait on any event to complete. The events specified in event_wait_list act as synchronization points. The context associated with events in event_wait_list and command_queue must be the same.
      event - Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete. event can be NULL in which case it will not be possible for the application to query the status of this command or queue a wait for this command to complete. If the event_wait_list and the event arguments are not NULL, the event argument should not refer to an element of the event_wait_list array.
      Returns:
      SUCCESS if the function is executed successfully. Otherwise, it returns one of the following errors:
      • INVALID_COMMAND_QUEUE if command_queue is not a valid command-queue.
      • INVALID_CONTEXT if the context associated with command_queue and buffer are not the same or if the context associated with command_queue and events in event_wait_list are not the same.
      • INVALID_MEM_OBJECT if buffer is not a valid buffer object.
      • INVALID_VALUE if the region being read specified by (buffer_origin, region, buffer_row_pitch, buffer_slice_pitch) is out of bounds.
      • INVALID_VALUE if ptr is a NULL value.
      • INVALID_VALUE if any region array element is 0.
      • INVALID_VALUE if buffer_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if host_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if buffer_slice_pitch is not 0 and is less than region[1] * buffer_row_pitch and not a multiple of buffer_row_pitch.
      • INVALID_VALUE if host_slice_pitch is not 0 and is less than region[1] * host_row_pitch and not a multiple of host_row_pitch.
      • INVALID_EVENT_WAIT_LIST if event_wait_list is NULL and num_events_in_wait_list > 0, or event_wait_list is not NULL and num_events_in_wait_list is 0, or if event objects in event_wait_list are not valid events.
      • MISALIGNED_SUB_BUFFER_OFFSET if buffer is a sub-buffer object and offset specified when the sub-buffer object is created is not aligned to DEVICE_MEM_BASE_ADDR_ALIGN value for device associated with queue.
      • EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST if the read operation is blocking and the execution status of any of the events in event_wait_list is a negative integer value.
      • MEM_OBJECT_ALLOCATION_FAILURE if there is a failure to allocate memory for data store associated with buffer.
      • INVALID_OPERATION if clEnqueueReadBufferRect is called on buffer which has been created with MEM_HOST_WRITE_ONLY or MEM_HOST_NO_ACCESS.
      • OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL implementation on the device.
      • OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host.
      See Also:
    • clEnqueueReadBufferRect

      public static int clEnqueueReadBufferRect(long command_queue, long buffer, boolean 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, ShortBuffer ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Enqueues a command to read a 2D or 3D rectangular region from a buffer object to host memory.

      Calling clEnqueueReadBufferRect to read a region of the buffer object with the ptr argument value set to host_ptr and host_origin, buffer_origin values are the same, where host_ptr is a pointer to the memory region specified when the buffer object being read is created with MEM_USE_HOST_PTR, must meet the following requirements in order to avoid undefined behavior:

      • All commands that use this buffer object or a memory object (buffer or image) created from this buffer object have finished execution before the read command begins execution.
      • The buffer object or memory objects created from this buffer object are not mapped.
      • The buffer object or memory objects created from this buffer object are not used by any command-queue until the read command has finished execution.
      Parameters:
      command_queue - the command-queue in which the read command will be queued. command_queue and buffer must be created with the same OpenCL context.
      buffer - a valid buffer object
      blocking_read - indicates if the read operation is blocking or nonblocking.

      If blocking_read is TRUE i.e. the read command is blocking, clEnqueueReadBufferRect does not return until the buffer data has been read and copied into memory pointed to by ptr.

      If blocking_read is FALSE i.e. the read command is non-blocking, clEnqueueReadBufferRect queues a non-blocking read command and returns. The contents of the buffer that ptr points to cannot be used until the read command has completed. The event argument returns an event object which can be used to query the execution status of the read command. When the read command has completed, the contents of the buffer that ptr points to can be used by the application.

      buffer_origin - the (x, y, z) offset in the memory region associated with buffer. For a 2D rectangle region, the z value given by buffer_origin[2] should be 0. The offset in bytes is computed as buffer_origin[2] * buffer_slice_pitch + buffer_origin[1] * buffer_row_pitch + buffer_origin[0].
      host_origin - the (x, y, z) offset in the memory region pointed to by ptr. For a 2D rectangle region, the z value given by host_origin[2] should be 0. The offset in bytes is computed as host_origin[2] * host_slice_pitch + host_origin[1] * host_row_pitch + host_origin[0].
      region - the (width in bytes, height in rows, depth in slices) of the 2D or 3D rectangle being read or written. For a 2D rectangle copy, the depth value given by region[2] should be 1. The values in region cannot be 0.
      buffer_row_pitch - the length of each row in bytes to be used for the memory region associated with buffer. If buffer_row_pitch is 0, buffer_row_pitch is computed as region[0].
      buffer_slice_pitch - the length of each 2D slice in bytes to be used for the memory region associated with buffer. If buffer_slice_pitch is 0, buffer_slice_pitch is computed as region[1] * buffer_row_pitch.
      host_row_pitch - the length of each row in bytes to be used for the memory region pointed to by ptr. If host_row_pitch is 0, host_row_pitch is computed as region[0].
      host_slice_pitch - the length of each 2D slice in bytes to be used for the memory region pointed to by ptr. If host_slice_pitch is 0, host_slice_pitch is computed as region[1] * host_row_pitch.
      ptr - the pointer to buffer in host memory where data is to be read into
      event_wait_list - a list of events that need to complete before this particular command can be executed. If event_wait_list is NULL, then this particular command does not wait on any event to complete. The events specified in event_wait_list act as synchronization points. The context associated with events in event_wait_list and command_queue must be the same.
      event - Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete. event can be NULL in which case it will not be possible for the application to query the status of this command or queue a wait for this command to complete. If the event_wait_list and the event arguments are not NULL, the event argument should not refer to an element of the event_wait_list array.
      Returns:
      SUCCESS if the function is executed successfully. Otherwise, it returns one of the following errors:
      • INVALID_COMMAND_QUEUE if command_queue is not a valid command-queue.
      • INVALID_CONTEXT if the context associated with command_queue and buffer are not the same or if the context associated with command_queue and events in event_wait_list are not the same.
      • INVALID_MEM_OBJECT if buffer is not a valid buffer object.
      • INVALID_VALUE if the region being read specified by (buffer_origin, region, buffer_row_pitch, buffer_slice_pitch) is out of bounds.
      • INVALID_VALUE if ptr is a NULL value.
      • INVALID_VALUE if any region array element is 0.
      • INVALID_VALUE if buffer_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if host_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if buffer_slice_pitch is not 0 and is less than region[1] * buffer_row_pitch and not a multiple of buffer_row_pitch.
      • INVALID_VALUE if host_slice_pitch is not 0 and is less than region[1] * host_row_pitch and not a multiple of host_row_pitch.
      • INVALID_EVENT_WAIT_LIST if event_wait_list is NULL and num_events_in_wait_list > 0, or event_wait_list is not NULL and num_events_in_wait_list is 0, or if event objects in event_wait_list are not valid events.
      • MISALIGNED_SUB_BUFFER_OFFSET if buffer is a sub-buffer object and offset specified when the sub-buffer object is created is not aligned to DEVICE_MEM_BASE_ADDR_ALIGN value for device associated with queue.
      • EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST if the read operation is blocking and the execution status of any of the events in event_wait_list is a negative integer value.
      • MEM_OBJECT_ALLOCATION_FAILURE if there is a failure to allocate memory for data store associated with buffer.
      • INVALID_OPERATION if clEnqueueReadBufferRect is called on buffer which has been created with MEM_HOST_WRITE_ONLY or MEM_HOST_NO_ACCESS.
      • OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL implementation on the device.
      • OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host.
      See Also:
    • clEnqueueReadBufferRect

      public static int clEnqueueReadBufferRect(long command_queue, long buffer, boolean 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, IntBuffer ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Enqueues a command to read a 2D or 3D rectangular region from a buffer object to host memory.

      Calling clEnqueueReadBufferRect to read a region of the buffer object with the ptr argument value set to host_ptr and host_origin, buffer_origin values are the same, where host_ptr is a pointer to the memory region specified when the buffer object being read is created with MEM_USE_HOST_PTR, must meet the following requirements in order to avoid undefined behavior:

      • All commands that use this buffer object or a memory object (buffer or image) created from this buffer object have finished execution before the read command begins execution.
      • The buffer object or memory objects created from this buffer object are not mapped.
      • The buffer object or memory objects created from this buffer object are not used by any command-queue until the read command has finished execution.
      Parameters:
      command_queue - the command-queue in which the read command will be queued. command_queue and buffer must be created with the same OpenCL context.
      buffer - a valid buffer object
      blocking_read - indicates if the read operation is blocking or nonblocking.

      If blocking_read is TRUE i.e. the read command is blocking, clEnqueueReadBufferRect does not return until the buffer data has been read and copied into memory pointed to by ptr.

      If blocking_read is FALSE i.e. the read command is non-blocking, clEnqueueReadBufferRect queues a non-blocking read command and returns. The contents of the buffer that ptr points to cannot be used until the read command has completed. The event argument returns an event object which can be used to query the execution status of the read command. When the read command has completed, the contents of the buffer that ptr points to can be used by the application.

      buffer_origin - the (x, y, z) offset in the memory region associated with buffer. For a 2D rectangle region, the z value given by buffer_origin[2] should be 0. The offset in bytes is computed as buffer_origin[2] * buffer_slice_pitch + buffer_origin[1] * buffer_row_pitch + buffer_origin[0].
      host_origin - the (x, y, z) offset in the memory region pointed to by ptr. For a 2D rectangle region, the z value given by host_origin[2] should be 0. The offset in bytes is computed as host_origin[2] * host_slice_pitch + host_origin[1] * host_row_pitch + host_origin[0].
      region - the (width in bytes, height in rows, depth in slices) of the 2D or 3D rectangle being read or written. For a 2D rectangle copy, the depth value given by region[2] should be 1. The values in region cannot be 0.
      buffer_row_pitch - the length of each row in bytes to be used for the memory region associated with buffer. If buffer_row_pitch is 0, buffer_row_pitch is computed as region[0].
      buffer_slice_pitch - the length of each 2D slice in bytes to be used for the memory region associated with buffer. If buffer_slice_pitch is 0, buffer_slice_pitch is computed as region[1] * buffer_row_pitch.
      host_row_pitch - the length of each row in bytes to be used for the memory region pointed to by ptr. If host_row_pitch is 0, host_row_pitch is computed as region[0].
      host_slice_pitch - the length of each 2D slice in bytes to be used for the memory region pointed to by ptr. If host_slice_pitch is 0, host_slice_pitch is computed as region[1] * host_row_pitch.
      ptr - the pointer to buffer in host memory where data is to be read into
      event_wait_list - a list of events that need to complete before this particular command can be executed. If event_wait_list is NULL, then this particular command does not wait on any event to complete. The events specified in event_wait_list act as synchronization points. The context associated with events in event_wait_list and command_queue must be the same.
      event - Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete. event can be NULL in which case it will not be possible for the application to query the status of this command or queue a wait for this command to complete. If the event_wait_list and the event arguments are not NULL, the event argument should not refer to an element of the event_wait_list array.
      Returns:
      SUCCESS if the function is executed successfully. Otherwise, it returns one of the following errors:
      • INVALID_COMMAND_QUEUE if command_queue is not a valid command-queue.
      • INVALID_CONTEXT if the context associated with command_queue and buffer are not the same or if the context associated with command_queue and events in event_wait_list are not the same.
      • INVALID_MEM_OBJECT if buffer is not a valid buffer object.
      • INVALID_VALUE if the region being read specified by (buffer_origin, region, buffer_row_pitch, buffer_slice_pitch) is out of bounds.
      • INVALID_VALUE if ptr is a NULL value.
      • INVALID_VALUE if any region array element is 0.
      • INVALID_VALUE if buffer_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if host_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if buffer_slice_pitch is not 0 and is less than region[1] * buffer_row_pitch and not a multiple of buffer_row_pitch.
      • INVALID_VALUE if host_slice_pitch is not 0 and is less than region[1] * host_row_pitch and not a multiple of host_row_pitch.
      • INVALID_EVENT_WAIT_LIST if event_wait_list is NULL and num_events_in_wait_list > 0, or event_wait_list is not NULL and num_events_in_wait_list is 0, or if event objects in event_wait_list are not valid events.
      • MISALIGNED_SUB_BUFFER_OFFSET if buffer is a sub-buffer object and offset specified when the sub-buffer object is created is not aligned to DEVICE_MEM_BASE_ADDR_ALIGN value for device associated with queue.
      • EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST if the read operation is blocking and the execution status of any of the events in event_wait_list is a negative integer value.
      • MEM_OBJECT_ALLOCATION_FAILURE if there is a failure to allocate memory for data store associated with buffer.
      • INVALID_OPERATION if clEnqueueReadBufferRect is called on buffer which has been created with MEM_HOST_WRITE_ONLY or MEM_HOST_NO_ACCESS.
      • OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL implementation on the device.
      • OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host.
      See Also:
    • clEnqueueReadBufferRect

      public static int clEnqueueReadBufferRect(long command_queue, long buffer, boolean 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, FloatBuffer ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Enqueues a command to read a 2D or 3D rectangular region from a buffer object to host memory.

      Calling clEnqueueReadBufferRect to read a region of the buffer object with the ptr argument value set to host_ptr and host_origin, buffer_origin values are the same, where host_ptr is a pointer to the memory region specified when the buffer object being read is created with MEM_USE_HOST_PTR, must meet the following requirements in order to avoid undefined behavior:

      • All commands that use this buffer object or a memory object (buffer or image) created from this buffer object have finished execution before the read command begins execution.
      • The buffer object or memory objects created from this buffer object are not mapped.
      • The buffer object or memory objects created from this buffer object are not used by any command-queue until the read command has finished execution.
      Parameters:
      command_queue - the command-queue in which the read command will be queued. command_queue and buffer must be created with the same OpenCL context.
      buffer - a valid buffer object
      blocking_read - indicates if the read operation is blocking or nonblocking.

      If blocking_read is TRUE i.e. the read command is blocking, clEnqueueReadBufferRect does not return until the buffer data has been read and copied into memory pointed to by ptr.

      If blocking_read is FALSE i.e. the read command is non-blocking, clEnqueueReadBufferRect queues a non-blocking read command and returns. The contents of the buffer that ptr points to cannot be used until the read command has completed. The event argument returns an event object which can be used to query the execution status of the read command. When the read command has completed, the contents of the buffer that ptr points to can be used by the application.

      buffer_origin - the (x, y, z) offset in the memory region associated with buffer. For a 2D rectangle region, the z value given by buffer_origin[2] should be 0. The offset in bytes is computed as buffer_origin[2] * buffer_slice_pitch + buffer_origin[1] * buffer_row_pitch + buffer_origin[0].
      host_origin - the (x, y, z) offset in the memory region pointed to by ptr. For a 2D rectangle region, the z value given by host_origin[2] should be 0. The offset in bytes is computed as host_origin[2] * host_slice_pitch + host_origin[1] * host_row_pitch + host_origin[0].
      region - the (width in bytes, height in rows, depth in slices) of the 2D or 3D rectangle being read or written. For a 2D rectangle copy, the depth value given by region[2] should be 1. The values in region cannot be 0.
      buffer_row_pitch - the length of each row in bytes to be used for the memory region associated with buffer. If buffer_row_pitch is 0, buffer_row_pitch is computed as region[0].
      buffer_slice_pitch - the length of each 2D slice in bytes to be used for the memory region associated with buffer. If buffer_slice_pitch is 0, buffer_slice_pitch is computed as region[1] * buffer_row_pitch.
      host_row_pitch - the length of each row in bytes to be used for the memory region pointed to by ptr. If host_row_pitch is 0, host_row_pitch is computed as region[0].
      host_slice_pitch - the length of each 2D slice in bytes to be used for the memory region pointed to by ptr. If host_slice_pitch is 0, host_slice_pitch is computed as region[1] * host_row_pitch.
      ptr - the pointer to buffer in host memory where data is to be read into
      event_wait_list - a list of events that need to complete before this particular command can be executed. If event_wait_list is NULL, then this particular command does not wait on any event to complete. The events specified in event_wait_list act as synchronization points. The context associated with events in event_wait_list and command_queue must be the same.
      event - Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete. event can be NULL in which case it will not be possible for the application to query the status of this command or queue a wait for this command to complete. If the event_wait_list and the event arguments are not NULL, the event argument should not refer to an element of the event_wait_list array.
      Returns:
      SUCCESS if the function is executed successfully. Otherwise, it returns one of the following errors:
      • INVALID_COMMAND_QUEUE if command_queue is not a valid command-queue.
      • INVALID_CONTEXT if the context associated with command_queue and buffer are not the same or if the context associated with command_queue and events in event_wait_list are not the same.
      • INVALID_MEM_OBJECT if buffer is not a valid buffer object.
      • INVALID_VALUE if the region being read specified by (buffer_origin, region, buffer_row_pitch, buffer_slice_pitch) is out of bounds.
      • INVALID_VALUE if ptr is a NULL value.
      • INVALID_VALUE if any region array element is 0.
      • INVALID_VALUE if buffer_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if host_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if buffer_slice_pitch is not 0 and is less than region[1] * buffer_row_pitch and not a multiple of buffer_row_pitch.
      • INVALID_VALUE if host_slice_pitch is not 0 and is less than region[1] * host_row_pitch and not a multiple of host_row_pitch.
      • INVALID_EVENT_WAIT_LIST if event_wait_list is NULL and num_events_in_wait_list > 0, or event_wait_list is not NULL and num_events_in_wait_list is 0, or if event objects in event_wait_list are not valid events.
      • MISALIGNED_SUB_BUFFER_OFFSET if buffer is a sub-buffer object and offset specified when the sub-buffer object is created is not aligned to DEVICE_MEM_BASE_ADDR_ALIGN value for device associated with queue.
      • EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST if the read operation is blocking and the execution status of any of the events in event_wait_list is a negative integer value.
      • MEM_OBJECT_ALLOCATION_FAILURE if there is a failure to allocate memory for data store associated with buffer.
      • INVALID_OPERATION if clEnqueueReadBufferRect is called on buffer which has been created with MEM_HOST_WRITE_ONLY or MEM_HOST_NO_ACCESS.
      • OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL implementation on the device.
      • OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host.
      See Also:
    • clEnqueueReadBufferRect

      public static int clEnqueueReadBufferRect(long command_queue, long buffer, boolean 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, DoubleBuffer ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Enqueues a command to read a 2D or 3D rectangular region from a buffer object to host memory.

      Calling clEnqueueReadBufferRect to read a region of the buffer object with the ptr argument value set to host_ptr and host_origin, buffer_origin values are the same, where host_ptr is a pointer to the memory region specified when the buffer object being read is created with MEM_USE_HOST_PTR, must meet the following requirements in order to avoid undefined behavior:

      • All commands that use this buffer object or a memory object (buffer or image) created from this buffer object have finished execution before the read command begins execution.
      • The buffer object or memory objects created from this buffer object are not mapped.
      • The buffer object or memory objects created from this buffer object are not used by any command-queue until the read command has finished execution.
      Parameters:
      command_queue - the command-queue in which the read command will be queued. command_queue and buffer must be created with the same OpenCL context.
      buffer - a valid buffer object
      blocking_read - indicates if the read operation is blocking or nonblocking.

      If blocking_read is TRUE i.e. the read command is blocking, clEnqueueReadBufferRect does not return until the buffer data has been read and copied into memory pointed to by ptr.

      If blocking_read is FALSE i.e. the read command is non-blocking, clEnqueueReadBufferRect queues a non-blocking read command and returns. The contents of the buffer that ptr points to cannot be used until the read command has completed. The event argument returns an event object which can be used to query the execution status of the read command. When the read command has completed, the contents of the buffer that ptr points to can be used by the application.

      buffer_origin - the (x, y, z) offset in the memory region associated with buffer. For a 2D rectangle region, the z value given by buffer_origin[2] should be 0. The offset in bytes is computed as buffer_origin[2] * buffer_slice_pitch + buffer_origin[1] * buffer_row_pitch + buffer_origin[0].
      host_origin - the (x, y, z) offset in the memory region pointed to by ptr. For a 2D rectangle region, the z value given by host_origin[2] should be 0. The offset in bytes is computed as host_origin[2] * host_slice_pitch + host_origin[1] * host_row_pitch + host_origin[0].
      region - the (width in bytes, height in rows, depth in slices) of the 2D or 3D rectangle being read or written. For a 2D rectangle copy, the depth value given by region[2] should be 1. The values in region cannot be 0.
      buffer_row_pitch - the length of each row in bytes to be used for the memory region associated with buffer. If buffer_row_pitch is 0, buffer_row_pitch is computed as region[0].
      buffer_slice_pitch - the length of each 2D slice in bytes to be used for the memory region associated with buffer. If buffer_slice_pitch is 0, buffer_slice_pitch is computed as region[1] * buffer_row_pitch.
      host_row_pitch - the length of each row in bytes to be used for the memory region pointed to by ptr. If host_row_pitch is 0, host_row_pitch is computed as region[0].
      host_slice_pitch - the length of each 2D slice in bytes to be used for the memory region pointed to by ptr. If host_slice_pitch is 0, host_slice_pitch is computed as region[1] * host_row_pitch.
      ptr - the pointer to buffer in host memory where data is to be read into
      event_wait_list - a list of events that need to complete before this particular command can be executed. If event_wait_list is NULL, then this particular command does not wait on any event to complete. The events specified in event_wait_list act as synchronization points. The context associated with events in event_wait_list and command_queue must be the same.
      event - Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete. event can be NULL in which case it will not be possible for the application to query the status of this command or queue a wait for this command to complete. If the event_wait_list and the event arguments are not NULL, the event argument should not refer to an element of the event_wait_list array.
      Returns:
      SUCCESS if the function is executed successfully. Otherwise, it returns one of the following errors:
      • INVALID_COMMAND_QUEUE if command_queue is not a valid command-queue.
      • INVALID_CONTEXT if the context associated with command_queue and buffer are not the same or if the context associated with command_queue and events in event_wait_list are not the same.
      • INVALID_MEM_OBJECT if buffer is not a valid buffer object.
      • INVALID_VALUE if the region being read specified by (buffer_origin, region, buffer_row_pitch, buffer_slice_pitch) is out of bounds.
      • INVALID_VALUE if ptr is a NULL value.
      • INVALID_VALUE if any region array element is 0.
      • INVALID_VALUE if buffer_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if host_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if buffer_slice_pitch is not 0 and is less than region[1] * buffer_row_pitch and not a multiple of buffer_row_pitch.
      • INVALID_VALUE if host_slice_pitch is not 0 and is less than region[1] * host_row_pitch and not a multiple of host_row_pitch.
      • INVALID_EVENT_WAIT_LIST if event_wait_list is NULL and num_events_in_wait_list > 0, or event_wait_list is not NULL and num_events_in_wait_list is 0, or if event objects in event_wait_list are not valid events.
      • MISALIGNED_SUB_BUFFER_OFFSET if buffer is a sub-buffer object and offset specified when the sub-buffer object is created is not aligned to DEVICE_MEM_BASE_ADDR_ALIGN value for device associated with queue.
      • EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST if the read operation is blocking and the execution status of any of the events in event_wait_list is a negative integer value.
      • MEM_OBJECT_ALLOCATION_FAILURE if there is a failure to allocate memory for data store associated with buffer.
      • INVALID_OPERATION if clEnqueueReadBufferRect is called on buffer which has been created with MEM_HOST_WRITE_ONLY or MEM_HOST_NO_ACCESS.
      • OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL implementation on the device.
      • OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host.
      See Also:
    • nclEnqueueWriteBufferRect

      public static int nclEnqueueWriteBufferRect(long command_queue, long buffer, int blocking_write, long buffer_origin, long host_origin, long region, long buffer_row_pitch, long buffer_slice_pitch, long host_row_pitch, long host_slice_pitch, long ptr, int num_events_in_wait_list, long event_wait_list, long event)
      Unsafe version of: EnqueueWriteBufferRect
      Parameters:
      num_events_in_wait_list - the number of events in event_wait_list
    • clEnqueueWriteBufferRect

      public static int clEnqueueWriteBufferRect(long command_queue, long buffer, boolean 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, ByteBuffer ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Enqueues a command to write a 2D or 3D rectangular region to a buffer object from host memory.

      Calling clEnqueueWriteBufferRect to update the latest bits in a region of the buffer object with the ptr argument value set to host_ptr and host_origin, buffer_origin values are the same, where host_ptr is a pointer to the memory region specified when the buffer object being written is created with MEM_USE_HOST_PTR, must meet the following requirements in order to avoid undefined behavior:

      • The host memory region given by (buffer_origin region) contains the latest bits when the enqueued write command begins execution.
      • The buffer object or memory objects created from this buffer object are not mapped.
      • The buffer object or memory objects created from this buffer object are not used by any command-queue until the write command has finished execution.
      Parameters:
      command_queue - the command-queue in which the write command will be queued. command_queue and buffer must be created with the same OpenCL context.
      buffer - a valid buffer object
      blocking_write - indicates if the write operation is blocking or nonblocking.

      If blocking_write is TRUE, the OpenCL implementation copies the data referred to by ptr and enqueues the write operation in the command-queue. The memory pointed to by ptr can be reused by the application after the clEnqueueWriteBufferRect call returns.

      If blocking_write is FALSE, the OpenCL implementation will use ptr to perform a non-blocking write. As the write is non-blocking the implementation can return immediately. The memory pointed to by ptr cannot be reused by the application after the call returns. The event argument returns an event object which can be used to query the execution status of the write command. When the write command has completed, the memory pointed to by ptr can then be reused by the application.

      buffer_origin - the (x, y, z) offset in the memory region associated with buffer. For a 2D rectangle region, the z value given by buffer_origin[2] should be 0. The offset in bytes is computed as buffer_origin[2] * buffer_slice_pitch + buffer_origin[1] * buffer_row_pitch + buffer_origin[0].
      host_origin - the (x, y, z) offset in the memory region pointed to by ptr. For a 2D rectangle region, the z value given by host_origin[2] should be 0. The offset in bytes is computed as host_origin[2] * host_slice_pitch + host_origin[1] * host_row_pitch + host_origin[0].
      region - the (width in bytes, height in rows, depth in slices) of the 2D or 3D rectangle being read or written. For a 2D rectangle copy, the depth value given by region[2] should be 1. The values in region cannot be 0.
      buffer_row_pitch - the length of each row in bytes to be used for the memory region associated with buffer. If buffer_row_pitch is 0, buffer_row_pitch is computed as region[0].
      buffer_slice_pitch - the length of each 2D slice in bytes to be used for the memory region associated with buffer. If buffer_slice_pitch is 0, buffer_slice_pitch is computed as region[1] * buffer_row_pitch.
      host_row_pitch - the length of each row in bytes to be used for the memory region pointed to by ptr. If host_row_pitch is 0, host_row_pitch is computed as region[0].
      host_slice_pitch - the length of each 2D slice in bytes to be used for the memory region pointed to by ptr. If host_slice_pitch is 0, host_slice_pitch is computed as region[1] * host_row_pitch.
      ptr - the pointer to buffer in host memory where data is to be written from
      event_wait_list - a list of events that need to complete before this particular command can be executed. If event_wait_list is NULL, then this particular command does not wait on any event to complete. The events specified in event_wait_list act as synchronization points. The context associated with events in event_wait_list and command_queue must be the same.
      event - Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete. event can be NULL in which case it will not be possible for the application to query the status of this command or queue a wait for this command to complete. If the event_wait_list and the event arguments are not NULL, the event argument should not refer to an element of the event_wait_list array.
      Returns:
      SUCCESS if the function is executed successfully. Otherwise, it returns one of the following errors:
      • INVALID_COMMAND_QUEUE if command_queue is not a valid command-queue.
      • INVALID_CONTEXT if the context associated with command_queue and buffer are not the same or if the context associated with command_queue and events in event_wait_list are not the same.
      • INVALID_MEM_OBJECT if buffer is not a valid buffer object.
      • INVALID_VALUE if the region being written specified by (buffer_origin, region, buffer_row_pitch, buffer_slice_pitch) is out of bounds.
      • INVALID_VALUE if ptr is a NULL value.
      • INVALID_VALUE if any region array element is 0.
      • INVALID_VALUE if buffer_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if host_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if buffer_slice_pitch is not 0 and is less than region[1] * buffer_row_pitch and not a multiple of buffer_row_pitch.
      • INVALID_VALUE if host_slice_pitch is not 0 and is less than region[1] * host_row_pitch and not a multiple of host_row_pitch.
      • INVALID_EVENT_WAIT_LIST if event_wait_list is NULL and num_events_in_wait_list > 0, or event_wait_list is not NULL and num_events_in_wait_list is 0, or if event objects in event_wait_list are not valid events.
      • MISALIGNED_SUB_BUFFER_OFFSET if buffer is a sub-buffer object and offset specified when the sub-buffer object is created is not aligned to DEVICE_MEM_BASE_ADDR_ALIGN value for device associated with queue.
      • EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST if the write operation is blocking and the execution status of any of the events in event_wait_list is a negative integer value.
      • MEM_OBJECT_ALLOCATION_FAILURE if there is a failure to allocate memory for data store associated with buffer.
      • INVALID_OPERATION if clEnqueueWriteBufferRect is called on buffer which has been created with MEM_HOST_READ_ONLY or MEM_HOST_NO_ACCESS.
      • OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL implementation on the device.
      • OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host.
      See Also:
    • clEnqueueWriteBufferRect

      public static int clEnqueueWriteBufferRect(long command_queue, long buffer, boolean 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, ShortBuffer ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Enqueues a command to write a 2D or 3D rectangular region to a buffer object from host memory.

      Calling clEnqueueWriteBufferRect to update the latest bits in a region of the buffer object with the ptr argument value set to host_ptr and host_origin, buffer_origin values are the same, where host_ptr is a pointer to the memory region specified when the buffer object being written is created with MEM_USE_HOST_PTR, must meet the following requirements in order to avoid undefined behavior:

      • The host memory region given by (buffer_origin region) contains the latest bits when the enqueued write command begins execution.
      • The buffer object or memory objects created from this buffer object are not mapped.
      • The buffer object or memory objects created from this buffer object are not used by any command-queue until the write command has finished execution.
      Parameters:
      command_queue - the command-queue in which the write command will be queued. command_queue and buffer must be created with the same OpenCL context.
      buffer - a valid buffer object
      blocking_write - indicates if the write operation is blocking or nonblocking.

      If blocking_write is TRUE, the OpenCL implementation copies the data referred to by ptr and enqueues the write operation in the command-queue. The memory pointed to by ptr can be reused by the application after the clEnqueueWriteBufferRect call returns.

      If blocking_write is FALSE, the OpenCL implementation will use ptr to perform a non-blocking write. As the write is non-blocking the implementation can return immediately. The memory pointed to by ptr cannot be reused by the application after the call returns. The event argument returns an event object which can be used to query the execution status of the write command. When the write command has completed, the memory pointed to by ptr can then be reused by the application.

      buffer_origin - the (x, y, z) offset in the memory region associated with buffer. For a 2D rectangle region, the z value given by buffer_origin[2] should be 0. The offset in bytes is computed as buffer_origin[2] * buffer_slice_pitch + buffer_origin[1] * buffer_row_pitch + buffer_origin[0].
      host_origin - the (x, y, z) offset in the memory region pointed to by ptr. For a 2D rectangle region, the z value given by host_origin[2] should be 0. The offset in bytes is computed as host_origin[2] * host_slice_pitch + host_origin[1] * host_row_pitch + host_origin[0].
      region - the (width in bytes, height in rows, depth in slices) of the 2D or 3D rectangle being read or written. For a 2D rectangle copy, the depth value given by region[2] should be 1. The values in region cannot be 0.
      buffer_row_pitch - the length of each row in bytes to be used for the memory region associated with buffer. If buffer_row_pitch is 0, buffer_row_pitch is computed as region[0].
      buffer_slice_pitch - the length of each 2D slice in bytes to be used for the memory region associated with buffer. If buffer_slice_pitch is 0, buffer_slice_pitch is computed as region[1] * buffer_row_pitch.
      host_row_pitch - the length of each row in bytes to be used for the memory region pointed to by ptr. If host_row_pitch is 0, host_row_pitch is computed as region[0].
      host_slice_pitch - the length of each 2D slice in bytes to be used for the memory region pointed to by ptr. If host_slice_pitch is 0, host_slice_pitch is computed as region[1] * host_row_pitch.
      ptr - the pointer to buffer in host memory where data is to be written from
      event_wait_list - a list of events that need to complete before this particular command can be executed. If event_wait_list is NULL, then this particular command does not wait on any event to complete. The events specified in event_wait_list act as synchronization points. The context associated with events in event_wait_list and command_queue must be the same.
      event - Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete. event can be NULL in which case it will not be possible for the application to query the status of this command or queue a wait for this command to complete. If the event_wait_list and the event arguments are not NULL, the event argument should not refer to an element of the event_wait_list array.
      Returns:
      SUCCESS if the function is executed successfully. Otherwise, it returns one of the following errors:
      • INVALID_COMMAND_QUEUE if command_queue is not a valid command-queue.
      • INVALID_CONTEXT if the context associated with command_queue and buffer are not the same or if the context associated with command_queue and events in event_wait_list are not the same.
      • INVALID_MEM_OBJECT if buffer is not a valid buffer object.
      • INVALID_VALUE if the region being written specified by (buffer_origin, region, buffer_row_pitch, buffer_slice_pitch) is out of bounds.
      • INVALID_VALUE if ptr is a NULL value.
      • INVALID_VALUE if any region array element is 0.
      • INVALID_VALUE if buffer_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if host_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if buffer_slice_pitch is not 0 and is less than region[1] * buffer_row_pitch and not a multiple of buffer_row_pitch.
      • INVALID_VALUE if host_slice_pitch is not 0 and is less than region[1] * host_row_pitch and not a multiple of host_row_pitch.
      • INVALID_EVENT_WAIT_LIST if event_wait_list is NULL and num_events_in_wait_list > 0, or event_wait_list is not NULL and num_events_in_wait_list is 0, or if event objects in event_wait_list are not valid events.
      • MISALIGNED_SUB_BUFFER_OFFSET if buffer is a sub-buffer object and offset specified when the sub-buffer object is created is not aligned to DEVICE_MEM_BASE_ADDR_ALIGN value for device associated with queue.
      • EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST if the write operation is blocking and the execution status of any of the events in event_wait_list is a negative integer value.
      • MEM_OBJECT_ALLOCATION_FAILURE if there is a failure to allocate memory for data store associated with buffer.
      • INVALID_OPERATION if clEnqueueWriteBufferRect is called on buffer which has been created with MEM_HOST_READ_ONLY or MEM_HOST_NO_ACCESS.
      • OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL implementation on the device.
      • OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host.
      See Also:
    • clEnqueueWriteBufferRect

      public static int clEnqueueWriteBufferRect(long command_queue, long buffer, boolean 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, IntBuffer ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Enqueues a command to write a 2D or 3D rectangular region to a buffer object from host memory.

      Calling clEnqueueWriteBufferRect to update the latest bits in a region of the buffer object with the ptr argument value set to host_ptr and host_origin, buffer_origin values are the same, where host_ptr is a pointer to the memory region specified when the buffer object being written is created with MEM_USE_HOST_PTR, must meet the following requirements in order to avoid undefined behavior:

      • The host memory region given by (buffer_origin region) contains the latest bits when the enqueued write command begins execution.
      • The buffer object or memory objects created from this buffer object are not mapped.
      • The buffer object or memory objects created from this buffer object are not used by any command-queue until the write command has finished execution.
      Parameters:
      command_queue - the command-queue in which the write command will be queued. command_queue and buffer must be created with the same OpenCL context.
      buffer - a valid buffer object
      blocking_write - indicates if the write operation is blocking or nonblocking.

      If blocking_write is TRUE, the OpenCL implementation copies the data referred to by ptr and enqueues the write operation in the command-queue. The memory pointed to by ptr can be reused by the application after the clEnqueueWriteBufferRect call returns.

      If blocking_write is FALSE, the OpenCL implementation will use ptr to perform a non-blocking write. As the write is non-blocking the implementation can return immediately. The memory pointed to by ptr cannot be reused by the application after the call returns. The event argument returns an event object which can be used to query the execution status of the write command. When the write command has completed, the memory pointed to by ptr can then be reused by the application.

      buffer_origin - the (x, y, z) offset in the memory region associated with buffer. For a 2D rectangle region, the z value given by buffer_origin[2] should be 0. The offset in bytes is computed as buffer_origin[2] * buffer_slice_pitch + buffer_origin[1] * buffer_row_pitch + buffer_origin[0].
      host_origin - the (x, y, z) offset in the memory region pointed to by ptr. For a 2D rectangle region, the z value given by host_origin[2] should be 0. The offset in bytes is computed as host_origin[2] * host_slice_pitch + host_origin[1] * host_row_pitch + host_origin[0].
      region - the (width in bytes, height in rows, depth in slices) of the 2D or 3D rectangle being read or written. For a 2D rectangle copy, the depth value given by region[2] should be 1. The values in region cannot be 0.
      buffer_row_pitch - the length of each row in bytes to be used for the memory region associated with buffer. If buffer_row_pitch is 0, buffer_row_pitch is computed as region[0].
      buffer_slice_pitch - the length of each 2D slice in bytes to be used for the memory region associated with buffer. If buffer_slice_pitch is 0, buffer_slice_pitch is computed as region[1] * buffer_row_pitch.
      host_row_pitch - the length of each row in bytes to be used for the memory region pointed to by ptr. If host_row_pitch is 0, host_row_pitch is computed as region[0].
      host_slice_pitch - the length of each 2D slice in bytes to be used for the memory region pointed to by ptr. If host_slice_pitch is 0, host_slice_pitch is computed as region[1] * host_row_pitch.
      ptr - the pointer to buffer in host memory where data is to be written from
      event_wait_list - a list of events that need to complete before this particular command can be executed. If event_wait_list is NULL, then this particular command does not wait on any event to complete. The events specified in event_wait_list act as synchronization points. The context associated with events in event_wait_list and command_queue must be the same.
      event - Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete. event can be NULL in which case it will not be possible for the application to query the status of this command or queue a wait for this command to complete. If the event_wait_list and the event arguments are not NULL, the event argument should not refer to an element of the event_wait_list array.
      Returns:
      SUCCESS if the function is executed successfully. Otherwise, it returns one of the following errors:
      • INVALID_COMMAND_QUEUE if command_queue is not a valid command-queue.
      • INVALID_CONTEXT if the context associated with command_queue and buffer are not the same or if the context associated with command_queue and events in event_wait_list are not the same.
      • INVALID_MEM_OBJECT if buffer is not a valid buffer object.
      • INVALID_VALUE if the region being written specified by (buffer_origin, region, buffer_row_pitch, buffer_slice_pitch) is out of bounds.
      • INVALID_VALUE if ptr is a NULL value.
      • INVALID_VALUE if any region array element is 0.
      • INVALID_VALUE if buffer_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if host_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if buffer_slice_pitch is not 0 and is less than region[1] * buffer_row_pitch and not a multiple of buffer_row_pitch.
      • INVALID_VALUE if host_slice_pitch is not 0 and is less than region[1] * host_row_pitch and not a multiple of host_row_pitch.
      • INVALID_EVENT_WAIT_LIST if event_wait_list is NULL and num_events_in_wait_list > 0, or event_wait_list is not NULL and num_events_in_wait_list is 0, or if event objects in event_wait_list are not valid events.
      • MISALIGNED_SUB_BUFFER_OFFSET if buffer is a sub-buffer object and offset specified when the sub-buffer object is created is not aligned to DEVICE_MEM_BASE_ADDR_ALIGN value for device associated with queue.
      • EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST if the write operation is blocking and the execution status of any of the events in event_wait_list is a negative integer value.
      • MEM_OBJECT_ALLOCATION_FAILURE if there is a failure to allocate memory for data store associated with buffer.
      • INVALID_OPERATION if clEnqueueWriteBufferRect is called on buffer which has been created with MEM_HOST_READ_ONLY or MEM_HOST_NO_ACCESS.
      • OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL implementation on the device.
      • OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host.
      See Also:
    • clEnqueueWriteBufferRect

      public static int clEnqueueWriteBufferRect(long command_queue, long buffer, boolean 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, FloatBuffer ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Enqueues a command to write a 2D or 3D rectangular region to a buffer object from host memory.

      Calling clEnqueueWriteBufferRect to update the latest bits in a region of the buffer object with the ptr argument value set to host_ptr and host_origin, buffer_origin values are the same, where host_ptr is a pointer to the memory region specified when the buffer object being written is created with MEM_USE_HOST_PTR, must meet the following requirements in order to avoid undefined behavior:

      • The host memory region given by (buffer_origin region) contains the latest bits when the enqueued write command begins execution.
      • The buffer object or memory objects created from this buffer object are not mapped.
      • The buffer object or memory objects created from this buffer object are not used by any command-queue until the write command has finished execution.
      Parameters:
      command_queue - the command-queue in which the write command will be queued. command_queue and buffer must be created with the same OpenCL context.
      buffer - a valid buffer object
      blocking_write - indicates if the write operation is blocking or nonblocking.

      If blocking_write is TRUE, the OpenCL implementation copies the data referred to by ptr and enqueues the write operation in the command-queue. The memory pointed to by ptr can be reused by the application after the clEnqueueWriteBufferRect call returns.

      If blocking_write is FALSE, the OpenCL implementation will use ptr to perform a non-blocking write. As the write is non-blocking the implementation can return immediately. The memory pointed to by ptr cannot be reused by the application after the call returns. The event argument returns an event object which can be used to query the execution status of the write command. When the write command has completed, the memory pointed to by ptr can then be reused by the application.

      buffer_origin - the (x, y, z) offset in the memory region associated with buffer. For a 2D rectangle region, the z value given by buffer_origin[2] should be 0. The offset in bytes is computed as buffer_origin[2] * buffer_slice_pitch + buffer_origin[1] * buffer_row_pitch + buffer_origin[0].
      host_origin - the (x, y, z) offset in the memory region pointed to by ptr. For a 2D rectangle region, the z value given by host_origin[2] should be 0. The offset in bytes is computed as host_origin[2] * host_slice_pitch + host_origin[1] * host_row_pitch + host_origin[0].
      region - the (width in bytes, height in rows, depth in slices) of the 2D or 3D rectangle being read or written. For a 2D rectangle copy, the depth value given by region[2] should be 1. The values in region cannot be 0.
      buffer_row_pitch - the length of each row in bytes to be used for the memory region associated with buffer. If buffer_row_pitch is 0, buffer_row_pitch is computed as region[0].
      buffer_slice_pitch - the length of each 2D slice in bytes to be used for the memory region associated with buffer. If buffer_slice_pitch is 0, buffer_slice_pitch is computed as region[1] * buffer_row_pitch.
      host_row_pitch - the length of each row in bytes to be used for the memory region pointed to by ptr. If host_row_pitch is 0, host_row_pitch is computed as region[0].
      host_slice_pitch - the length of each 2D slice in bytes to be used for the memory region pointed to by ptr. If host_slice_pitch is 0, host_slice_pitch is computed as region[1] * host_row_pitch.
      ptr - the pointer to buffer in host memory where data is to be written from
      event_wait_list - a list of events that need to complete before this particular command can be executed. If event_wait_list is NULL, then this particular command does not wait on any event to complete. The events specified in event_wait_list act as synchronization points. The context associated with events in event_wait_list and command_queue must be the same.
      event - Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete. event can be NULL in which case it will not be possible for the application to query the status of this command or queue a wait for this command to complete. If the event_wait_list and the event arguments are not NULL, the event argument should not refer to an element of the event_wait_list array.
      Returns:
      SUCCESS if the function is executed successfully. Otherwise, it returns one of the following errors:
      • INVALID_COMMAND_QUEUE if command_queue is not a valid command-queue.
      • INVALID_CONTEXT if the context associated with command_queue and buffer are not the same or if the context associated with command_queue and events in event_wait_list are not the same.
      • INVALID_MEM_OBJECT if buffer is not a valid buffer object.
      • INVALID_VALUE if the region being written specified by (buffer_origin, region, buffer_row_pitch, buffer_slice_pitch) is out of bounds.
      • INVALID_VALUE if ptr is a NULL value.
      • INVALID_VALUE if any region array element is 0.
      • INVALID_VALUE if buffer_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if host_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if buffer_slice_pitch is not 0 and is less than region[1] * buffer_row_pitch and not a multiple of buffer_row_pitch.
      • INVALID_VALUE if host_slice_pitch is not 0 and is less than region[1] * host_row_pitch and not a multiple of host_row_pitch.
      • INVALID_EVENT_WAIT_LIST if event_wait_list is NULL and num_events_in_wait_list > 0, or event_wait_list is not NULL and num_events_in_wait_list is 0, or if event objects in event_wait_list are not valid events.
      • MISALIGNED_SUB_BUFFER_OFFSET if buffer is a sub-buffer object and offset specified when the sub-buffer object is created is not aligned to DEVICE_MEM_BASE_ADDR_ALIGN value for device associated with queue.
      • EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST if the write operation is blocking and the execution status of any of the events in event_wait_list is a negative integer value.
      • MEM_OBJECT_ALLOCATION_FAILURE if there is a failure to allocate memory for data store associated with buffer.
      • INVALID_OPERATION if clEnqueueWriteBufferRect is called on buffer which has been created with MEM_HOST_READ_ONLY or MEM_HOST_NO_ACCESS.
      • OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL implementation on the device.
      • OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host.
      See Also:
    • clEnqueueWriteBufferRect

      public static int clEnqueueWriteBufferRect(long command_queue, long buffer, boolean 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, DoubleBuffer ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Enqueues a command to write a 2D or 3D rectangular region to a buffer object from host memory.

      Calling clEnqueueWriteBufferRect to update the latest bits in a region of the buffer object with the ptr argument value set to host_ptr and host_origin, buffer_origin values are the same, where host_ptr is a pointer to the memory region specified when the buffer object being written is created with MEM_USE_HOST_PTR, must meet the following requirements in order to avoid undefined behavior:

      • The host memory region given by (buffer_origin region) contains the latest bits when the enqueued write command begins execution.
      • The buffer object or memory objects created from this buffer object are not mapped.
      • The buffer object or memory objects created from this buffer object are not used by any command-queue until the write command has finished execution.
      Parameters:
      command_queue - the command-queue in which the write command will be queued. command_queue and buffer must be created with the same OpenCL context.
      buffer - a valid buffer object
      blocking_write - indicates if the write operation is blocking or nonblocking.

      If blocking_write is TRUE, the OpenCL implementation copies the data referred to by ptr and enqueues the write operation in the command-queue. The memory pointed to by ptr can be reused by the application after the clEnqueueWriteBufferRect call returns.

      If blocking_write is FALSE, the OpenCL implementation will use ptr to perform a non-blocking write. As the write is non-blocking the implementation can return immediately. The memory pointed to by ptr cannot be reused by the application after the call returns. The event argument returns an event object which can be used to query the execution status of the write command. When the write command has completed, the memory pointed to by ptr can then be reused by the application.

      buffer_origin - the (x, y, z) offset in the memory region associated with buffer. For a 2D rectangle region, the z value given by buffer_origin[2] should be 0. The offset in bytes is computed as buffer_origin[2] * buffer_slice_pitch + buffer_origin[1] * buffer_row_pitch + buffer_origin[0].
      host_origin - the (x, y, z) offset in the memory region pointed to by ptr. For a 2D rectangle region, the z value given by host_origin[2] should be 0. The offset in bytes is computed as host_origin[2] * host_slice_pitch + host_origin[1] * host_row_pitch + host_origin[0].
      region - the (width in bytes, height in rows, depth in slices) of the 2D or 3D rectangle being read or written. For a 2D rectangle copy, the depth value given by region[2] should be 1. The values in region cannot be 0.
      buffer_row_pitch - the length of each row in bytes to be used for the memory region associated with buffer. If buffer_row_pitch is 0, buffer_row_pitch is computed as region[0].
      buffer_slice_pitch - the length of each 2D slice in bytes to be used for the memory region associated with buffer. If buffer_slice_pitch is 0, buffer_slice_pitch is computed as region[1] * buffer_row_pitch.
      host_row_pitch - the length of each row in bytes to be used for the memory region pointed to by ptr. If host_row_pitch is 0, host_row_pitch is computed as region[0].
      host_slice_pitch - the length of each 2D slice in bytes to be used for the memory region pointed to by ptr. If host_slice_pitch is 0, host_slice_pitch is computed as region[1] * host_row_pitch.
      ptr - the pointer to buffer in host memory where data is to be written from
      event_wait_list - a list of events that need to complete before this particular command can be executed. If event_wait_list is NULL, then this particular command does not wait on any event to complete. The events specified in event_wait_list act as synchronization points. The context associated with events in event_wait_list and command_queue must be the same.
      event - Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete. event can be NULL in which case it will not be possible for the application to query the status of this command or queue a wait for this command to complete. If the event_wait_list and the event arguments are not NULL, the event argument should not refer to an element of the event_wait_list array.
      Returns:
      SUCCESS if the function is executed successfully. Otherwise, it returns one of the following errors:
      • INVALID_COMMAND_QUEUE if command_queue is not a valid command-queue.
      • INVALID_CONTEXT if the context associated with command_queue and buffer are not the same or if the context associated with command_queue and events in event_wait_list are not the same.
      • INVALID_MEM_OBJECT if buffer is not a valid buffer object.
      • INVALID_VALUE if the region being written specified by (buffer_origin, region, buffer_row_pitch, buffer_slice_pitch) is out of bounds.
      • INVALID_VALUE if ptr is a NULL value.
      • INVALID_VALUE if any region array element is 0.
      • INVALID_VALUE if buffer_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if host_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if buffer_slice_pitch is not 0 and is less than region[1] * buffer_row_pitch and not a multiple of buffer_row_pitch.
      • INVALID_VALUE if host_slice_pitch is not 0 and is less than region[1] * host_row_pitch and not a multiple of host_row_pitch.
      • INVALID_EVENT_WAIT_LIST if event_wait_list is NULL and num_events_in_wait_list > 0, or event_wait_list is not NULL and num_events_in_wait_list is 0, or if event objects in event_wait_list are not valid events.
      • MISALIGNED_SUB_BUFFER_OFFSET if buffer is a sub-buffer object and offset specified when the sub-buffer object is created is not aligned to DEVICE_MEM_BASE_ADDR_ALIGN value for device associated with queue.
      • EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST if the write operation is blocking and the execution status of any of the events in event_wait_list is a negative integer value.
      • MEM_OBJECT_ALLOCATION_FAILURE if there is a failure to allocate memory for data store associated with buffer.
      • INVALID_OPERATION if clEnqueueWriteBufferRect is called on buffer which has been created with MEM_HOST_READ_ONLY or MEM_HOST_NO_ACCESS.
      • OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL implementation on the device.
      • OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host.
      See Also:
    • nclEnqueueCopyBufferRect

      public static int nclEnqueueCopyBufferRect(long command_queue, long src_buffer, long dst_buffer, long src_origin, long dst_origin, long region, long src_row_pitch, long src_slice_pitch, long dst_row_pitch, long dst_slice_pitch, int num_events_in_wait_list, long event_wait_list, long event)
      Unsafe version of: EnqueueCopyBufferRect
      Parameters:
      num_events_in_wait_list - the number of events in event_wait_list
    • clEnqueueCopyBufferRect

      public static 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, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Enqueues a command to copy a 2D or 3D rectangular region from the buffer object identified by src_buffer to a 2D or 3D region in the buffer object identified by dst_buffer. Copying begins at the source offset and destination offset which are computed as described below in the description for src_origin and dst_origin. Each byte of the region's width is copied from the source offset to the destination offset. After copying each width, the source and destination offsets are incremented by their respective source and destination row pitches. After copying each 2D rectangle, the source and destination offsets are incremented by their respective source and destination slice pitches.

      NOTE: If src_buffer and dst_buffer are the same buffer object, src_row_pitch must equal dst_row_pitch and src_slice_pitch must equal dst_slice_pitch.

      Parameters:
      command_queue - the command-queue in which the copy command will be queued. The OpenCL context associated with command_queue, src_buffer and dst_buffer must be the same.
      src_buffer - the source buffer
      dst_buffer - the destination buffer
      src_origin - the (x, y, z) offset in the memory region associated with src_buffer. For a 2D rectangle region, the z value given by src_origin[2] should be 0. The offset in bytes is computed as src_origin[2] * src_slice_pitch + src_origin[1] * src_row_pitch + src_origin[0].
      dst_origin - the (x, y, z) offset in the memory region associated with dst_buffer. For a 2D rectangle region, the z value given by dst_origin[2] should be 0. The offset in bytes is computed as dst_origin[2] * dst_slice_pitch + dst_origin[1] * dst_row_pitch + dst_origin[0].
      region - the (width in bytes, height in rows, depth in slices) of the 2D or 3D rectangle being copied. For a 2D rectangle, the depth value given by region[2] should be 1. The values in region cannot be 0.
      src_row_pitch - the length of each row in bytes to be used for the memory region associated with src_buffer. If src_row_pitch is 0, src_row_pitch is computed as region[0].
      src_slice_pitch - the length of each 2D slice in bytes to be used for the memory region associated with src_buffer. If src_slice_pitch is 0, src_slice_pitch is computed as region[1] * src_row_pitch.
      dst_row_pitch - the length of each row in bytes to be used for the memory region associated with dst_buffer. If dst_row_pitch is 0, dst_row_pitch is computed as region[0].
      dst_slice_pitch - the length of each 2D slice in bytes to be used for the memory region associated with dst_buffer. If dst_slice_pitch is 0, dst_slice_pitch is computed as region[1] * dst_row_pitch.
      event_wait_list - a list of events that need to complete before this particular command can be executed. If event_wait_list is NULL, then this particular command does not wait on any event to complete. The events specified in event_wait_list act as synchronization points. The context associated with events in event_wait_list and command_queue must be the same.
      event - Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete. event can be NULL in which case it will not be possible for the application to query the status of this command or queue a wait for this command to complete. If the event_wait_list and the event arguments are not NULL, the event argument should not refer to an element of the event_wait_list array.
      Returns:
      SUCCESS if the function is executed successfully. Otherwise, it returns one of the following errors:
      • INVALID_COMMAND_QUEUE if command_queue is not a valid command-queue.
      • INVALID_CONTEXT if the context associated with command_queue, src_buffer and dst_buffer are not the same or if the context associated with command_queue and events in event_wait_list are not the same.
      • INVALID_MEM_OBJECT if src_buffer and dst_buffer are not valid buffer objects.
      • INVALID_VALUE if (src_origin, region, src_row_pitch, src_slice_pitch) or (dst_origin, region, dst_row_pitch, dst_slice_pitch) require accessing elements outside the src_buffer and dst_buffer buffer objects respectively.
      • INVALID_VALUE if any region array element is 0.
      • INVALID_VALUE if src_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if dst_row_pitch is not 0 and is less than region[0].
      • INVALID_VALUE if src_slice_pitch is not 0 and is less than region[1] * src_row_pitch or if src_slice_pitch is not 0 and is not a multiple of src_row_pitch.
      • INVALID_VALUE if dst_slice_pitch is not 0 and is less than region[1] * dst_row_pitch or if dst_slice_pitch is not 0 and is not a multiple of dst_row_pitch.
      • INVALID_VALUE if src_buffer and dst_buffer are the same buffer object and src_slice_pitch is not equal to dst_slice_pitch and src_row_pitch is not equal to dst_row_pitch.
      • INVALID_EVENT_WAIT_LIST if event_wait_list is NULL and num_events_in_wait_list > 0, or event_wait_list is not NULL and num_events_in_wait_list is 0, or if event objects in event_wait_list are not valid events.
      • MEM_COPY_OVERLAP if src_buffer and dst_buffer are the same buffer or subbuffer object and the source and destination regions overlap or if src_buffer and dst_buffer are different sub-buffers of the same associated buffer object and they overlap.
      • MISALIGNED_SUB_BUFFER_OFFSET if src_buffer is a sub-buffer object and offset specified when the sub-buffer object is created is not aligned to DEVICE_MEM_BASE_ADDR_ALIGN value for device associated with queue.
      • MISALIGNED_SUB_BUFFER_OFFSET if dst_buffer is a sub-buffer object and offset specified when the sub-buffer object is created is not aligned to DEVICE_MEM_BASE_ADDR_ALIGN value for device associated with queue.
      • MEM_OBJECT_ALLOCATION_FAILURE if there is a failure to allocate memory for data store associated with src_buffer or dst_buffer.
      • OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL implementation on the device.
      • OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host.
      See Also:
    • nclCreateUserEvent

      public static long nclCreateUserEvent(long context, long errcode_ret)
      Unsafe version of: CreateUserEvent
    • clCreateUserEvent

      public static long clCreateUserEvent(long context, @Nullable IntBuffer errcode_ret)
      Creates a user event object. User events allow applications to enqueue commands that wait on a user event to finish before the command is executed by the device.

      The execution status of the user event object created is set to SUBMITTED.

      Parameters:
      context - a valid OpenCL context
      errcode_ret - will return an appropriate error code. If errcode_ret is NULL, no error code is returned.
      Returns:
      a valid non-zero event object and errcode_ret is set to SUCCESS if the user event object is created successfully. Otherwise, it returns a NULL value with one of the following error values returned in errcode_ret:
      • INVALID_CONTEXT if context is not a valid context.
      • OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL implementation on the device.
      • OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host.
      See Also:
    • clSetUserEventStatus

      public static int clSetUserEventStatus(long event, int execution_status)
      Sets the execution status of a user event object.

      NOTE: Enqueued commands that specify user events in the event_wait_list argument of clEnqueue*** commands must ensure that the status of these user events being waited on are set using clSetUserEventStatus before any OpenCL APIs that release OpenCL objects except for event objects are called; otherwise the behavior is undefined.

      For example, the following code sequence will result in undefined behavior of ReleaseMemObject.

      
       ev1 = clCreateUserEvent(ctx, NULL);
       clEnqueueWriteBuffer(cq, buf1, CL_FALSE, ..., 1, &ev1, NULL);
       clEnqueueWriteBuffer(cq, buf2, CL_FALSE, ...);
       clReleaseMemObject(buf2);
       clSetUserEventStatus(ev1, CL_COMPLETE);

      The following code sequence, however, works correctly.

      
       ev1 = clCreateUserEvent(ctx, NULL);
       clEnqueueWriteBuffer(cq, buf1, CL_FALSE, ..., 1, &ev1, NULL);
       clEnqueueWriteBuffer(cq, buf2, CL_FALSE, ...);
       clSetUserEventStatus(ev1, CL_COMPLETE);
       clReleaseMemObject(buf2);
      Parameters:
      event - a user event object created using CreateUserEvent
      execution_status - the new execution status to be set and can be COMPLETE or a negative integer value to indicate an error. A negative integer value causes all enqueued commands that wait on this user event to be terminated. clSetUserEventStatus can only be called once to change the execution status of event.
      Returns:
      SUCCESS if the function was executed successfully. Otherwise, it returns one of the following errors:
      • INVALID_EVENT if event is not a valid user event object.
      • INVALID_VALUE if the execution_status is not COMPLETE or a negative integer value.
      • INVALID_OPERATION if the execution_status for event has already been changed by a previous call to clSetUserEventStatus.
      • OUT_OF_RESOURCES if there is a failure to allocate resources required by the OpenCL implementation on the device.
      • OUT_OF_HOST_MEMORY if there is a failure to allocate resources required by the OpenCL implementation on the host.
      See Also:
    • nclSetEventCallback

      public static int nclSetEventCallback(long event, int command_exec_callback_type, long pfn_notify, long user_data)
      Unsafe version of: SetEventCallback
    • clSetEventCallback

      public static int clSetEventCallback(long event, int command_exec_callback_type, CLEventCallbackI pfn_notify, long user_data)
      Registers a user callback function for a specific command execution status. The registered callback function will be called when the execution status of command associated with event changes to an execution status equal to or past the status specified by command_exec_status.

      Each call to clSetEventCallback registers the specified user callback function on a callback stack associated with event. The order in which the registered user callback functions are called is undefined.

      All callbacks registered for an event object must be called. All enqueued callbacks shall be called before the event object is destroyed. Callbacks must return promptly. The behavior of calling expensive system routines, OpenCL API calls to create contexts or command-queues, or blocking OpenCL operations from the following list below, in a callback is undefined.

      If an application needs to wait for completion of a routine from the above list in a callback, please use the non-blocking form of the function, and assign a completion callback to it to do the remainder of your work. Note that when a callback (or other code) enqueues commands to a command-queue, the commands are not required to begin execution until the queue is flushed. In standard usage, blocking enqueue calls serve this role by implicitly flushing the queue. Since blocking calls are not permitted in callbacks, those callbacks that enqueue commands on a command queue should either call Flush on the queue before returning or arrange for Flush to be called later on another thread.

      Parameters:
      event - a valid event object
      command_exec_callback_type - the command execution status for which the callback is registered. There is no guarantee that the callback functions registered for various execution status values for an event will be called in the exact order that the execution status of a command changes. Furthermore, it should be noted that receiving a call back for an event with a status other than COMPLETE, in no way implies that the memory model or execution model as defined by the OpenCL specification has changed. For example, it is not valid to assume that a corresponding memory transfer has completed unless the event is in a state COMPLETE. One of:
      SUBMITTEDRUNNINGCOMPLETE
      pfn_notify - the event callback function that can be registered by the application. This callback function may be called asynchronously by the OpenCL implementation. It is the application's responsibility to ensure that the callback function is thread-safe.
      user_data - will be passed as the user_data argument when pfn_notify is called. user_data can be NULL.
      Returns:
      SUCCESS if the function is executed successfully. Otherwise, it returns one of the following errors:
      See Also:
    • clCreateSubBuffer

      public static long clCreateSubBuffer(long buffer, long flags, int buffer_create_type, ByteBuffer buffer_create_info, @Nullable int[] errcode_ret)
      Array version of: CreateSubBuffer
      See Also:
    • clEnqueueReadBufferRect

      public static int clEnqueueReadBufferRect(long command_queue, long buffer, boolean 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, short[] ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Array version of: EnqueueReadBufferRect
      See Also:
    • clEnqueueReadBufferRect

      public static int clEnqueueReadBufferRect(long command_queue, long buffer, boolean 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, int[] ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Array version of: EnqueueReadBufferRect
      See Also:
    • clEnqueueReadBufferRect

      public static int clEnqueueReadBufferRect(long command_queue, long buffer, boolean 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, float[] ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Array version of: EnqueueReadBufferRect
      See Also:
    • clEnqueueReadBufferRect

      public static int clEnqueueReadBufferRect(long command_queue, long buffer, boolean 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, double[] ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Array version of: EnqueueReadBufferRect
      See Also:
    • clEnqueueWriteBufferRect

      public static int clEnqueueWriteBufferRect(long command_queue, long buffer, boolean 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, short[] ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Array version of: EnqueueWriteBufferRect
      See Also:
    • clEnqueueWriteBufferRect

      public static int clEnqueueWriteBufferRect(long command_queue, long buffer, boolean 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, int[] ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Array version of: EnqueueWriteBufferRect
      See Also:
    • clEnqueueWriteBufferRect

      public static int clEnqueueWriteBufferRect(long command_queue, long buffer, boolean 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, float[] ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Array version of: EnqueueWriteBufferRect
      See Also:
    • clEnqueueWriteBufferRect

      public static int clEnqueueWriteBufferRect(long command_queue, long buffer, boolean 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, double[] ptr, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event)
      Array version of: EnqueueWriteBufferRect
      See Also:
    • clCreateUserEvent

      public static long clCreateUserEvent(long context, @Nullable int[] errcode_ret)
      Array version of: CreateUserEvent
      See Also: