/* * Copyright (c) 2002-2010 LWJGL Project * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * * Neither the name of 'LWJGL' nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.lwjgl.opencl; import org.lwjgl.PointerBuffer; import org.lwjgl.util.generator.*; import org.lwjgl.util.generator.opencl.*; import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.IntBuffer; /** The core OpenCL 1.0 API */ public interface CL10 { /** Error Codes */ int CL_SUCCESS = 0, CL_DEVICE_NOT_FOUND = -1, CL_DEVICE_NOT_AVAILABLE = -2, CL_COMPILER_NOT_AVAILABLE = -3, CL_MEM_OBJECT_ALLOCATION_FAILURE = -4, CL_OUT_OF_RESOURCES = -5, CL_OUT_OF_HOST_MEMORY = -6, CL_PROFILING_INFO_NOT_AVAILABLE = -7, CL_MEM_COPY_OVERLAP = -8, CL_IMAGE_FORMAT_MISMATCH = -9, CL_IMAGE_FORMAT_NOT_SUPPORTED = -10, CL_BUILD_PROGRAM_FAILURE = -11, CL_MAP_FAILURE = -12, CL_INVALID_VALUE = -30, CL_INVALID_DEVICE_TYPE = -31, CL_INVALID_PLATFORM = -32, CL_INVALID_DEVICE = -33, CL_INVALID_CONTEXT = -34, CL_INVALID_QUEUE_PROPERTIES = -35, CL_INVALID_COMMAND_QUEUE = -36, CL_INVALID_HOST_PTR = -37, CL_INVALID_MEM_OBJECT = -38, CL_INVALID_IMAGE_FORMAT_DESCRIPTOR = -39, CL_INVALID_IMAGE_SIZE = -40, CL_INVALID_SAMPLER = -41, CL_INVALID_BINARY = -42, CL_INVALID_BUILD_OPTIONS = -43, CL_INVALID_PROGRAM = -44, CL_INVALID_PROGRAM_EXECUTABLE = -45, CL_INVALID_KERNEL_NAME = -46, CL_INVALID_KERNEL_DEFINITION = -47, CL_INVALID_KERNEL = -48, CL_INVALID_ARG_INDEX = -49, CL_INVALID_ARG_VALUE = -50, CL_INVALID_ARG_SIZE = -51, CL_INVALID_KERNEL_ARGS = -52, CL_INVALID_WORK_DIMENSION = -53, CL_INVALID_WORK_GROUP_SIZE = -54, CL_INVALID_WORK_ITEM_SIZE = -55, CL_INVALID_GLOBAL_OFFSET = -56, CL_INVALID_EVENT_WAIT_LIST = -57, CL_INVALID_EVENT = -58, CL_INVALID_OPERATION = -59, CL_INVALID_GL_OBJECT = -60, CL_INVALID_BUFFER_SIZE = -61, CL_INVALID_MIP_LEVEL = -62, CL_INVALID_GLOBAL_WORK_SIZE = -63; /** OpenCL Version */ int CL_VERSION_1_0 = 1; /** cl_bool */ int CL_FALSE = 0, CL_TRUE = 1; /** cl_platform_info */ int CL_PLATFORM_PROFILE = 0x0900, CL_PLATFORM_VERSION = 0x0901, CL_PLATFORM_NAME = 0x0902, CL_PLATFORM_VENDOR = 0x0903, CL_PLATFORM_EXTENSIONS = 0x0904; /** cl_device_type - bitfield */ int CL_DEVICE_TYPE_DEFAULT = (1 << 0), CL_DEVICE_TYPE_CPU = (1 << 1), CL_DEVICE_TYPE_GPU = (1 << 2), CL_DEVICE_TYPE_ACCELERATOR = (1 << 3), CL_DEVICE_TYPE_ALL = 0xFFFFFFFF; /** cl_device_info */ int CL_DEVICE_TYPE = 0x1000, CL_DEVICE_VENDOR_ID = 0x1001, CL_DEVICE_MAX_COMPUTE_UNITS = 0x1002, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS = 0x1003, CL_DEVICE_MAX_WORK_GROUP_SIZE = 0x1004, CL_DEVICE_MAX_WORK_ITEM_SIZES = 0x1005, CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR = 0x1006, CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT = 0x1007, CL_DEVICE_PREFERRED_VECTOR_WIDTH_ = 0x1008, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG = 0x1009, CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT = 0x100A, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE = 0x100B, CL_DEVICE_MAX_CLOCK_FREQUENCY = 0x100C, CL_DEVICE_ADDRESS_BITS = 0x100D, CL_DEVICE_MAX_READ_IMAGE_ARGS = 0x100E, CL_DEVICE_MAX_WRITE_IMAGE_ARGS = 0x100F, CL_DEVICE_MAX_MEM_ALLOC_SIZE = 0x1010, CL_DEVICE_IMAGE2D_MAX_WIDTH = 0x1011, CL_DEVICE_IMAGE2D_MAX_HEIGHT = 0x1012, CL_DEVICE_IMAGE3D_MAX_WIDTH = 0x1013, CL_DEVICE_IMAGE3D_MAX_HEIGHT = 0x1014, CL_DEVICE_IMAGE3D_MAX_DEPTH = 0x1015, CL_DEVICE_IMAGE_SUPPORT = 0x1016, CL_DEVICE_MAX_PARAMETER_SIZE = 0x1017, CL_DEVICE_MAX_SAMPLERS = 0x1018, CL_DEVICE_MEM_BASE_ADDR_ALIGN = 0x1019, CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE = 0x101A, CL_DEVICE_SINGLE_FP_CONFIG = 0x101B, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE = 0x101C, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE = 0x101D, CL_DEVICE_GLOBAL_MEM_CACHE_SIZE = 0x101E, CL_DEVICE_GLOBAL_MEM_SIZE = 0x101F, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE = 0x1020, CL_DEVICE_MAX_CONSTANT_ARGS = 0x1021, CL_DEVICE_LOCAL_MEM_TYPE = 0x1022, CL_DEVICE_LOCAL_MEM_SIZE = 0x1023, CL_DEVICE_ERROR_CORRECTION_SUPPORT = 0x1024, CL_DEVICE_PROFILING_TIMER_RESOLUTION = 0x1025, CL_DEVICE_ENDIAN_LITTLE = 0x1026, CL_DEVICE_AVAILABLE = 0x1027, CL_DEVICE_COMPILER_AVAILABLE = 0x1028, CL_DEVICE_EXECUTION_CAPABILITIES = 0x1029, CL_DEVICE_QUEUE_PROPERTIES = 0x102A, CL_DEVICE_NAME = 0x102B, CL_DEVICE_VENDOR = 0x102C, CL_DRIVER_VERSION = 0x102D, CL_DEVICE_PROFILE = 0x102E, CL_DEVICE_VERSION = 0x102F, CL_DEVICE_EXTENSIONS = 0x1030, CL_DEVICE_PLATFORM = 0x1031; /* 0x1032 reserved for CL_DEVICE_DOUBLE_FP_CONFIG */ /* 0x1033 reserved for CL_DEVICE_HALF_FP_CONFIG */ /** cl_device_fp_config - bitfield */ int CL_FP_DENORM = (1 << 0), CL_FP_INF_NAN = (1 << 1), CL_FP_ROUND_TO_NEAREST = (1 << 2), CL_FP_ROUND_TO_ZERO = (1 << 3), CL_FP_ROUND_TO_INF = (1 << 4), CL_FP_FMA = (1 << 5); /** cl_device_mem_cache_type */ int CL_NONE = 0x0, CL_READ_ONLY_CACHE = 0x1, CL_READ_WRITE_CACHE = 0x2; /** cl_device_local_mem_type */ int CL_LOCAL = 0x1, CL_GLOBAL = 0x2; /** cl_device_exec_capabilities - bitfield */ int CL_EXEC_KERNEL = (1 << 0), CL_EXEC_NATIVE_KERNEL = (1 << 1); /** cl_command_queue_properties - bitfield */ int CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE = (1 << 0), CL_QUEUE_PROFILING_ENABLE = (1 << 1); /** cl_context_info */ int CL_CONTEXT_REFERENCE_COUNT = 0x1080, CL_CONTEXT_DEVICES = 0x1081, CL_CONTEXT_PROPERTIES = 0x1082; /** cl_context_info + cl_context_properties */ int CL_CONTEXT_PLATFORM = 0x1084; /** cl_command_queue_info */ int CL_QUEUE_CONTEXT = 0x1090, CL_QUEUE_DEVICE = 0x1091, CL_QUEUE_REFERENCE_COUNT = 0x1092, CL_QUEUE_PROPERTIES = 0x1093; /** cl_mem_flags - bitfield */ int CL_MEM_READ_WRITE = (1 << 0), CL_MEM_WRITE_ONLY = (1 << 1), CL_MEM_READ_ONLY = (1 << 2), CL_MEM_USE_HOST_PTR = (1 << 3), CL_MEM_ALLOC_HOST_PTR = (1 << 4), CL_MEM_COPY_HOST_PTR = (1 << 5); /** cl_channel_order */ int CL_R = 0x10B0, CL_A = 0x10B1, CL_RG = 0x10B2, CL_RA = 0x10B3, CL_RGB = 0x10B4, CL_RGBA = 0x10B5, CL_BGRA = 0x10B6, CL_ARGB = 0x10B7, CL_INTENSITY = 0x10B8, CL_LUMINANCE = 0x10B9; /** cl_channel_type */ int CL_SNORM_INT8 = 0x10D0, CL_SNORM_INT16 = 0x10D1, CL_UNORM_INT8 = 0x10D2, CL_UNORM_INT16 = 0x10D3, CL_UNORM_SHORT_565 = 0x10D4, CL_UNORM_SHORT_555 = 0x10D5, CL_UNORM_INT_101010 = 0x10D6, CL_SIGNED_INT8 = 0x10D7, CL_SIGNED_INT16 = 0x10D8, CL_SIGNED_INT32 = 0x10D9, CL_UNSIGNED_INT8 = 0x10DA, CL_UNSIGNED_INT16 = 0x10DB, CL_UNSIGNED_INT32 = 0x10DC, CL_HALF_FLOAT = 0x10DD, CL_FLOAT = 0x10DE; /** cl_mem_object_type */ int CL_MEM_OBJECT_BUFFER = 0x10F0, CL_MEM_OBJECT_IMAGE2D = 0x10F1, CL_MEM_OBJECT_IMAGE3D = 0x10F2; /** cl_mem_info */ int CL_MEM_TYPE = 0x1100, CL_MEM_FLAGS = 0x1101, CL_MEM_SIZE = 0x1102, CL_MEM_HOST_PTR = 0x1103, CL_MEM_MAP_COUNT = 0x1104, CL_MEM_REFERENCE_COUNT = 0x1105, CL_MEM_CONTEXT = 0x1106; /** cl_image_info */ int CL_IMAGE_FORMAT = 0x1110, CL_IMAGE_ELEMENT_SIZE = 0x1111, CL_IMAGE_ROW_PITCH = 0x1112, CL_IMAGE_SLICE_PITCH = 0x1113, CL_IMAGE_WIDTH = 0x1114, CL_IMAGE_HEIGHT = 0x1115, CL_IMAGE_DEPTH = 0x1116; /** cl_addressing_mode */ int CL_ADDRESS_NONE = 0x1130, CL_ADDRESS_CLAMP_TO_EDGE = 0x1131, CL_ADDRESS_CLAMP = 0x1132, CL_ADDRESS_REPEAT = 0x1133; /** cl_filter_mode */ int CL_FILTER_NEAREST = 0x1140, CL_FILTER_LINEAR = 0x1141; /** cl_sampler_info */ int CL_SAMPLER_REFERENCE_COUNT = 0x1150, CL_SAMPLER_CONTEXT = 0x1151, CL_SAMPLER_NORMALIZED_COORDS = 0x1152, CL_SAMPLER_ADDRESSING_MODE = 0x1153, CL_SAMPLER_FILTER_MODE = 0x1154; /** cl_map_flags - bitfield */ int CL_MAP_READ = (1 << 0), CL_MAP_WRITE = (1 << 1); /** cl_program_info */ int CL_PROGRAM_REFERENCE_COUNT = 0x1160, CL_PROGRAM_CONTEXT = 0x1161, CL_PROGRAM_NUM_DEVICES = 0x1162, CL_PROGRAM_DEVICES = 0x1163, CL_PROGRAM_SOURCE = 0x1164, CL_PROGRAM_BINARY_SIZES = 0x1165, CL_PROGRAM_BINARIES = 0x1166; /** cl_program_build_info */ int CL_PROGRAM_BUILD_STATUS = 0x1181, CL_PROGRAM_BUILD_OPTIONS = 0x1182, CL_PROGRAM_BUILD_LOG = 0x1183; /** cl_build_status */ int CL_BUILD_SUCCESS = 0, CL_BUILD_NONE = -1, CL_BUILD_ERROR = -2, CL_BUILD_IN_PROGRESS = -3; /** cl_kernel_info */ int CL_KERNEL_FUNCTION_NAME = 0x1190, CL_KERNEL_NUM_ARGS = 0x1191, CL_KERNEL_REFERENCE_COUNT = 0x1192, CL_KERNEL_CONTEXT = 0x1193, CL_KERNEL_PROGRAM = 0x1194; /** cl_kernel_work_group_info */ int CL_KERNEL_WORK_GROUP_SIZE = 0x11B0, CL_KERNEL_COMPILE_WORK_GROUP_SIZE = 0x11B1, CL_KERNEL_LOCAL_MEM_SIZE = 0x11B2; /** cl_event_info */ int CL_EVENT_COMMAND_QUEUE = 0x11D0, CL_EVENT_COMMAND_TYPE = 0x11D1, CL_EVENT_REFERENCE_COUNT = 0x11D2, CL_EVENT_COMMAND_EXECUTION_STATUS = 0x11D3; /** cl_command_type */ int CL_COMMAND_NDRANGE_KERNEL = 0x11F0, CL_COMMAND_TASK = 0x11F1, CL_COMMAND_NATIVE_KERNEL = 0x11F2, CL_COMMAND_READ_BUFFER = 0x11F3, CL_COMMAND_WRITE_BUFFER = 0x11F4, CL_COMMAND_COPY_BUFFER = 0x11F5, CL_COMMAND_READ_IMAGE = 0x11F6, CL_COMMAND_WRITE_IMAGE = 0x11F7, CL_COMMAND_COPY_IMAGE = 0x11F8, CL_COMMAND_COPY_IMAGE_TO_BUFFER = 0x11F9, CL_COMMAND_COPY_BUFFER_TO_IMAGE = 0x11FA, CL_COMMAND_MAP_BUFFER = 0x11FB, CL_COMMAND_MAP_IMAGE = 0x11FC, CL_COMMAND_UNMAP_MEM_OBJECT = 0x11FD, CL_COMMAND_MARKER = 0x11FE, CL_COMMAND_ACQUIRE_GL_OBJECTS = 0x11FF, CL_COMMAND_RELEASE_GL_OBJECTS = 0x1200; /** command execution status */ int CL_COMPLETE = 0x0, CL_RUNNING = 0x1, CL_SUBMITTED = 0x2, CL_QUEUED = 0x3; /** cl_profiling_info */ int CL_PROFILING_COMMAND_QUEUED = 0x1280, CL_PROFILING_COMMAND_SUBMIT = 0x1281, CL_PROFILING_COMMAND_START = 0x1282, CL_PROFILING_COMMAND_END = 0x1283; /* Platform API */ @Code( javaBeforeNative = "\t\tif ( num_platforms == null ) num_platforms = APIUtil.getBufferInt();", javaAfterNative = "\t\tif ( __result == CL_SUCCESS && platforms != null ) CLPlatform.registerCLPlatforms(platforms, num_platforms);" ) @cl_int int clGetPlatformIDs(@AutoSize(value = "platforms", canBeNull = true) @cl_uint int num_entries, @OutParameter @Check(canBeNull = true) @NativeType("cl_platform_id") PointerBuffer platforms, @OutParameter @Check(value = "1", canBeNull = true) @cl_uint IntBuffer num_platforms); @cl_int int clGetPlatformInfo(@PointerWrapper(value = "cl_platform_id", canBeNull = true) CLPlatform platform, @NativeType("cl_platform_info") int param_name, @AutoSize(value = "param_value", canBeNull = true) @size_t long param_value_size, @OutParameter @Check(canBeNull = true) @cl_void ByteBuffer param_value, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer param_value_size_ret); @Code( javaBeforeNative = "\t\telse\n" + "\t\t\tnum_devices = APIUtil.getBufferInt();", javaAfterNative = "\t\tif ( __result == CL_SUCCESS && devices != null ) platform.registerCLDevices(devices, num_devices);" ) @cl_int int clGetDeviceIDs(@PointerWrapper("cl_platform_id") CLPlatform platform, @NativeType("cl_device_type") long device_type, @AutoSize(value = "devices", canBeNull = true) @cl_uint int num_entries, @OutParameter @Check(canBeNull = true) @NativeType("cl_device_id") PointerBuffer devices, @OutParameter @Check(value = "1", canBeNull = true) @cl_uint IntBuffer num_devices); @cl_int int clGetDeviceInfo(@PointerWrapper("cl_device_id") CLDevice device, @NativeType("cl_device_info") int param_name, @AutoSize(value = "param_value", canBeNull = true) @size_t long param_value_size, @OutParameter @Check(canBeNull = true) @cl_void ByteBuffer param_value, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer param_value_size_ret); /** LWJGL requires CL_CONTEXT_PLATFORM to be present in the cl_context_properties buffer. */ @Code( tryBlock = true, // Create a GlobalRef to the callback object. javaBeforeNative = "\t\tlong user_data = pfn_notify == null || pfn_notify.isCustom() ? 0 : CallbackUtil.createGlobalRef(pfn_notify);", // Associate context with the GlobalRef, so we can delete it later. javaFinally = "\t\t\tif ( __result != null ) __result.setContextCallback(user_data);" ) @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_context", params = "APIUtil.getCLPlatform(properties)") CLContext clCreateContext(@NullTerminated @Check("3") @Const @NativeType("cl_context_properties") PointerBuffer properties, @AutoSize("devices") @cl_uint int num_devices, @Check("1") @Const @NativeType("cl_device_id") PointerBuffer devices, @PointerWrapper(value = "cl_create_context_callback", canBeNull = true) CLContextCallback pfn_notify, @Constant("user_data") @PointerWrapper("void *") long user_data, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); /** LWJGL requires CL_CONTEXT_PLATFORM to be present in the cl_context_properties buffer. */ @Alternate("clCreateContext") @Code( tryBlock = true, // Create a GlobalRef to the callback object. javaBeforeNative = "\t\tlong user_data = pfn_notify == null || pfn_notify.isCustom() ? 0 : CallbackUtil.createGlobalRef(pfn_notify);", // Associate context with the GlobalRef, so we can delete it later. javaFinally = "\t\t\tif ( __result != null ) __result.setContextCallback(user_data);" ) @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_context", params = "APIUtil.getCLPlatform(properties)") CLContext clCreateContext(@NullTerminated @Check("3") @Const @NativeType("cl_context_properties") PointerBuffer properties, @Constant("1") @cl_uint int num_devices, @Constant(value = "APIUtil.getPointer(device)", keepParam = true) CLDevice device, @PointerWrapper(value = "cl_create_context_callback", canBeNull = true) CLContextCallback pfn_notify, @Constant("user_data") @PointerWrapper("void *") long user_data, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); /** LWJGL requires CL_CONTEXT_PLATFORM to be present in the cl_context_properties buffer. */ @Code( tryBlock = true, // Create a GlobalRef to the callback object. javaBeforeNative = "\t\tlong user_data = pfn_notify == null || pfn_notify.isCustom() ? 0 : CallbackUtil.createGlobalRef(pfn_notify);", // Associate context with the GlobalRef, so we can delete it later. javaFinally = "\t\t\tif ( __result != null ) __result.setContextCallback(user_data);" ) @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_context", params = "APIUtil.getCLPlatform(properties)") CLContext clCreateContextFromType(@NullTerminated @Check("3") @Const @NativeType("cl_context_properties") PointerBuffer properties, @NativeType("cl_device_type") long device_type, @PointerWrapper(value = "cl_create_context_callback", canBeNull = true) CLContextCallback pfn_notify, @Constant("user_data") @PointerWrapper("void *") long user_data, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) context.retain();") @cl_int int clRetainContext(@PointerWrapper("cl_context") CLContext context); @Code( javaBeforeNative = "\t\tAPIUtil.releaseObjects(context);", javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) context.releaseImpl();" ) @cl_int int clReleaseContext(@PointerWrapper("cl_context") CLContext context); @Code( javaBeforeNative = "\t\tif ( param_value_size_ret == null && APIUtil.isDevicesParam(param_name) ) param_value_size_ret = APIUtil.getBufferPointer();", javaAfterNative = "\t\tif ( __result == CL_SUCCESS && param_value != null && APIUtil.isDevicesParam(param_name) ) context.getParent().registerCLDevices(param_value, param_value_size_ret);" ) @cl_int int clGetContextInfo(@PointerWrapper("cl_context") CLContext context, @NativeType("cl_context_info") int param_name, @AutoSize(value = "param_value", canBeNull = true) @size_t long param_value_size, @OutParameter @Check(canBeNull = true) @cl_void ByteBuffer param_value, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer param_value_size_ret); @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_command_queue", params = "context, device") CLCommandQueue clCreateCommandQueue(@PointerWrapper("cl_context") CLContext context, @PointerWrapper("cl_device_id") CLDevice device, @NativeType("cl_command_queue_properties") long properties, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) command_queue.retain();") @cl_int int clRetainCommandQueue(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue); @Code( javaBeforeNative = "\t\tAPIUtil.releaseObjects(command_queue);", javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) command_queue.release();" ) @cl_int int clReleaseCommandQueue(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue); @cl_int int clGetCommandQueueInfo(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @NativeType("cl_command_queue_info") int param_name, @AutoSize(value = "param_value", canBeNull = true) @size_t long param_value_size, @OutParameter @Check(canBeNull = true) @cl_void ByteBuffer param_value, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer param_value_size_ret); @GenerateAutos @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_mem", params = "context") CLMem clCreateBuffer(@PointerWrapper("cl_context") CLContext context, @NativeType("cl_mem_flags") long flags, @AutoSize("host_ptr") @size_t long size, @cl_byte @cl_short @cl_int @cl_long @cl_float @cl_double Buffer host_ptr, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) command_queue.registerCLEvent(event);") @cl_int int clEnqueueReadBuffer(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @PointerWrapper("cl_mem") CLMem buffer, @cl_bool int blocking_read, @size_t long offset, @AutoSize("ptr") @size_t long size, @OutParameter @cl_byte @cl_short @cl_int @cl_long @cl_float @cl_double Buffer ptr, @AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list, @Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) command_queue.registerCLEvent(event);") @cl_int int clEnqueueWriteBuffer(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @PointerWrapper("cl_mem") CLMem buffer, @cl_bool int blocking_write, @size_t long offset, @AutoSize("ptr") @size_t long size, @Const @cl_byte @cl_short @cl_int @cl_long @cl_float @cl_double Buffer ptr, @AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list, @Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) command_queue.registerCLEvent(event);") @cl_int int clEnqueueCopyBuffer(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @PointerWrapper("cl_mem") CLMem src_buffer, @PointerWrapper("cl_mem") CLMem dst_buffer, @size_t long src_offset, @size_t long dst_offset, @size_t long size, @AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list, @Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event); @Code(javaAfterNative = "\t\tif ( __result != null ) command_queue.registerCLEvent(event);") @Check(value = "errcode_ret", canBeNull = true) @cl_void @AutoSize("size") ByteBuffer clEnqueueMapBuffer(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @PointerWrapper("cl_mem") CLMem buffer, @cl_bool int blocking_map, @NativeType("cl_map_flags") long map_flags, @size_t long offset, @size_t long size, @AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list, @Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_mem", params = "context") CLMem clCreateImage2D(@PointerWrapper("cl_context") CLContext context, @NativeType("cl_mem_flags") long flags, @Check("2 * 4") @Const @NativeType("cl_image_format") ByteBuffer image_format, @size_t long image_width, @size_t long image_height, @size_t long image_row_pitch, @Check(value = "CLChecks.calculateImage2DSize(host_ptr, image_format, image_width, image_height, image_row_pitch)", canBeNull = true) @cl_byte @cl_short @cl_int @cl_float Buffer host_ptr, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_mem", params = "context") CLMem clCreateImage3D(@PointerWrapper("cl_context") CLContext context, @NativeType("cl_mem_flags") long flags, @Check("2 * 4") @Const @NativeType("cl_image_format") ByteBuffer image_format, @size_t long image_width, @size_t long image_height, @size_t long image_depth, @size_t long image_row_pitch, @size_t long image_slice_pitch, @Check(value = "CLChecks.calculateImage3DSize(host_ptr, image_format, image_width, image_height, image_height, image_row_pitch, image_slice_pitch)", canBeNull = true) @cl_byte @cl_short @cl_int @cl_float Buffer host_ptr, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @cl_int int clGetSupportedImageFormats(@PointerWrapper("cl_context") CLContext context, @NativeType("cl_mem_flags") long flags, @NativeType("cl_mem_object_type") int image_type, @AutoSize(value = "image_formats", expression = " / (2 * 4)", canBeNull = true) @cl_uint int num_entries, @OutParameter @Check(canBeNull = true) @NativeType("cl_image_format") ByteBuffer image_formats, @OutParameter @Check(value = "1", canBeNull = true) @cl_uint IntBuffer num_image_formats); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) command_queue.registerCLEvent(event);") @cl_int int clEnqueueReadImage(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @PointerWrapper("cl_mem") CLMem image, @cl_bool int blocking_read, @Check("3") @Const @NativeType("size_t") PointerBuffer origin, @Check("3") @Const @NativeType("size_t") PointerBuffer region, @size_t long row_pitch, @size_t long slice_pitch, @OutParameter @Check("CLChecks.calculateImageSize(region, row_pitch, slice_pitch)") @cl_byte @cl_short @cl_int @cl_float Buffer ptr, @AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list, @Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) command_queue.registerCLEvent(event);") @cl_int int clEnqueueWriteImage(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @PointerWrapper("cl_mem") CLMem image, @cl_bool int blocking_write, @Check("3") @Const @NativeType("size_t") PointerBuffer origin, @Check("3") @Const @NativeType("size_t") PointerBuffer region, @size_t long input_row_pitch, @size_t long input_slice_pitch, @Check("CLChecks.calculateImageSize(region, input_row_pitch, input_slice_pitch)") @Const @cl_byte @cl_short @cl_int @cl_float Buffer ptr, @AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list, @Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) command_queue.registerCLEvent(event);") @cl_int int clEnqueueCopyImage(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @PointerWrapper("cl_mem") CLMem src_image, @PointerWrapper("cl_mem") CLMem dst_image, @Check("3") @Const @NativeType("size_t") PointerBuffer src_origin, @Check("3") @Const @NativeType("size_t") PointerBuffer dst_origin, @Check("3") @Const @NativeType("size_t") PointerBuffer region, @AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list, @Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) command_queue.registerCLEvent(event);") @cl_int int clEnqueueCopyImageToBuffer(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @PointerWrapper("cl_mem") CLMem src_image, @PointerWrapper("cl_mem") CLMem dst_buffer, @Check("3") @Const @NativeType("size_t") PointerBuffer src_origin, @Check("3") @Const @NativeType("size_t") PointerBuffer region, @size_t long dst_offset, @AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list, @Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) command_queue.registerCLEvent(event);") @cl_int int clEnqueueCopyBufferToImage(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @PointerWrapper("cl_mem") CLMem src_buffer, @PointerWrapper("cl_mem") CLMem dst_image, @size_t long src_offset, @Check("3") @Const @NativeType("size_t") PointerBuffer dst_origin, @Check("3") @Const @NativeType("size_t") PointerBuffer region, @AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list, @Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event); @Code(javaAfterNative = "\t\tif ( __result != null ) command_queue.registerCLEvent(event);") @Check(value = "errcode_ret", canBeNull = true) @cl_void @AutoSize(value = "extcl_CalculateImageSize(region_address, *image_row_pitch_address, image_slice_pitch_address == NULL ? 0 : *image_slice_pitch_address)", isNative = true) ByteBuffer clEnqueueMapImage(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @PointerWrapper("cl_mem") CLMem image, @cl_bool int blocking_map, @NativeType("cl_map_flags") long map_flags, @Check("3") @Const @NativeType("size_t") PointerBuffer origin, @Check("3") @Const @NativeType("size_t") PointerBuffer region, @OutParameter @Check("1") @NativeType("size_t") PointerBuffer image_row_pitch, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer image_slice_pitch, @AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list, @Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @cl_int int clGetImageInfo(@PointerWrapper("cl_mem") CLMem image, @NativeType("cl_image_info") int param_name, @AutoSize(value = "param_value", canBeNull = true) @size_t long param_value_size, @OutParameter @Check(canBeNull = true) @cl_void ByteBuffer param_value, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer param_value_size_ret); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) memobj.retain();") @cl_int int clRetainMemObject(@PointerWrapper("cl_mem") CLMem memobj); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) memobj.release();") @cl_int int clReleaseMemObject(@PointerWrapper("cl_mem") CLMem memobj); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) command_queue.registerCLEvent(event);") @cl_int int clEnqueueUnmapMemObject(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @PointerWrapper("cl_mem") CLMem memobj, @Check @cl_void ByteBuffer mapped_ptr, @AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list, @Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event); @cl_int int clGetMemObjectInfo(@PointerWrapper("cl_mem") CLMem memobj, @NativeType("cl_mem_info") int param_name, @AutoSize(value = "param_value", canBeNull = true) @size_t long param_value_size, @OutParameter @Check(canBeNull = true) @cl_void ByteBuffer param_value, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer param_value_size_ret); @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_sampler", params = "context") CLSampler clCreateSampler(@PointerWrapper("cl_context") CLContext context, @cl_bool int normalized_coords, @NativeType("cl_addressing_mode") int addressing_mode, @NativeType("cl_filter_mode") int filter_mode, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) sampler.retain();") @cl_int int clRetainSampler(@PointerWrapper("cl_sampler") CLSampler sampler); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) sampler.release();") @cl_int int clReleaseSampler(@PointerWrapper("cl_sampler") CLSampler sampler); @cl_int int clGetSamplerInfo(@PointerWrapper("cl_sampler") CLSampler sampler, @NativeType("cl_sampler_info") int param_name, @AutoSize(value = "param_value", canBeNull = true) @size_t long param_value_size, @OutParameter @Check(canBeNull = true) @cl_void ByteBuffer param_value, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer param_value_size_ret); // ------[ clCreateProgramWithSource ]------ @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_program", params = "context") CLProgram clCreateProgramWithSource(@PointerWrapper("cl_context") CLContext context, @Constant("1") @cl_uint int count, @Check @Indirect @Const @cl_char ByteBuffer string, @AutoSize("string") @Indirect @Const @size_t long lengths, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @Alternate(value = "clCreateProgramWithSource", nativeAlt = true) @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_program", params = "context") CLProgram clCreateProgramWithSource2(@PointerWrapper("cl_context") CLContext context, @AutoSize("lengths") @cl_uint int count, @Check("APIUtil.getSize(lengths)") @PointerArray(value = "count", lengths = "lengths") @Const @NativeType("cl_char") ByteBuffer strings, @Check("1") @Const @NativeType("size_t") PointerBuffer lengths, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @Alternate(value = "clCreateProgramWithSource", nativeAlt = true) @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_program", params = "context") CLProgram clCreateProgramWithSource3(@PointerWrapper("cl_context") CLContext context, @Constant("strings.length") @cl_uint int count, @Check("1") @PointerArray(value = "count") @Const @NativeType("cl_char") ByteBuffer[] strings, @Constant("APIUtil.getLengths(strings)") @Const @NativeType("size_t") PointerBuffer lengths, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @Alternate("clCreateProgramWithSource") @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_program", params = "context") CLProgram clCreateProgramWithSource(@PointerWrapper("cl_context") CLContext context, @Constant("1") @cl_uint int count, CharSequence string, @Constant("string.length()") @Indirect @Const @size_t long lengths, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @Alternate(value = "clCreateProgramWithSource", nativeAlt = true) @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_program", params = "context") CLProgram clCreateProgramWithSource4(@PointerWrapper("cl_context") CLContext context, @Constant("strings.length") @cl_uint int count, @Const @PointerArray(value = "count", lengths = "lengths") CharSequence[] strings, @Constant("APIUtil.getLengths(strings)") @Const @NativeType("size_t") PointerBuffer lengths, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); // ------[ clCreateProgramWithBinary ]------ @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_program", params = "context") CLProgram clCreateProgramWithBinary(@PointerWrapper("cl_context") CLContext context, @Constant("1") @cl_uint int num_devices, @Const @Indirect @PointerWrapper("cl_device_id") CLDevice device, @AutoSize("binary") @Const @Indirect @size_t long lengths, @Const @Indirect @cl_uchar ByteBuffer binary, @OutParameter @Check("1") @cl_int IntBuffer binary_status, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @Alternate(value = "clCreateProgramWithBinary", nativeAlt = true) @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_program", params = "context") CLProgram clCreateProgramWithBinary2(@PointerWrapper("cl_context") CLContext context, @AutoSize("device_list") @cl_uint int num_devices, @Check("1") @Const @NativeType("cl_device_id") PointerBuffer device_list, @Check("device_list.remaining()") @Const @NativeType("size_t") PointerBuffer lengths, @Check("APIUtil.getSize(lengths)") @PointerArray(value = "num_devices", lengths = "lengths") @Const @NativeType("cl_uchar") ByteBuffer binaries, @OutParameter @Check("device_list.remaining()") @cl_int IntBuffer binary_status, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @Alternate(value = "clCreateProgramWithBinary", nativeAlt = true) @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_program", params = "context") CLProgram clCreateProgramWithBinary3(@PointerWrapper("cl_context") CLContext context, @Constant("binaries.length") @cl_uint int num_devices, @Check("binaries.length") @Const @NativeType("cl_device_id") PointerBuffer device_list, @Constant("APIUtil.getLengths(binaries)") @Const @NativeType("size_t") PointerBuffer lengths, @Check("1") @PointerArray("num_devices") @Const @NativeType("cl_uchar") ByteBuffer[] binaries, @OutParameter @Check("binaries.length") @cl_int IntBuffer binary_status, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) program.retain();") @cl_int int clRetainProgram(@PointerWrapper("cl_program") CLProgram program); @Code( javaBeforeNative = "\t\tAPIUtil.releaseObjects(program);", javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) program.release();" ) @cl_int int clReleaseProgram(@PointerWrapper("cl_program") CLProgram program); @Code( tryBlock = true, // Create a GlobalRef to the callback object. javaBeforeNative = "\t\tlong user_data = CallbackUtil.createGlobalRef(pfn_notify);\n" + "\t\tif ( pfn_notify != null ) pfn_notify.setContext(program.getParent());", // Check if we need to delete the GlobalRef. javaFinally = "\t\t\tCallbackUtil.checkCallback(__result, user_data);" ) @cl_int int clBuildProgram(@PointerWrapper("cl_program") CLProgram program, @AutoSize(value = "device_list", canBeNull = true) @cl_uint int num_devices, @Check(canBeNull = true) @Const @NativeType("cl_device_id") PointerBuffer device_list, @Check @NullTerminated @Const @cl_char ByteBuffer options, @PointerWrapper(value = "cl_program_callback", canBeNull = true) CLBuildProgramCallback pfn_notify, @Constant("user_data") @PointerWrapper("void *") long user_data); @Alternate("clBuildProgram") @Code( tryBlock = true, // Create a GlobalRef to the callback object. javaBeforeNative = "\t\tlong user_data = CallbackUtil.createGlobalRef(pfn_notify);\n" + "\t\tif ( pfn_notify != null ) pfn_notify.setContext(program.getParent());", // Check if we need to delete the GlobalRef. javaFinally = "\t\t\tCallbackUtil.checkCallback(__result, user_data);" ) @cl_int int clBuildProgram(@PointerWrapper("cl_program") CLProgram program, @AutoSize(value = "device_list", canBeNull = true) @cl_uint int num_devices, @Check(canBeNull = true) @Const @NativeType("cl_device_id") PointerBuffer device_list, @NullTerminated @Const CharSequence options, @PointerWrapper(value = "cl_program_callback", canBeNull = true) CLBuildProgramCallback pfn_notify, @Constant("user_data") @PointerWrapper("void *") long user_data); @Alternate("clBuildProgram") @Code( tryBlock = true, // Create a GlobalRef to the callback object. javaBeforeNative = "\t\tlong user_data = CallbackUtil.createGlobalRef(pfn_notify);\n" + "\t\tif ( pfn_notify != null ) pfn_notify.setContext(program.getParent());", // Check if we need to delete the GlobalRef. javaFinally = "\t\t\tCallbackUtil.checkCallback(__result, user_data);" ) @cl_int int clBuildProgram(@PointerWrapper("cl_program") CLProgram program, @Constant("1") @cl_uint int num_devices, @Constant(value = "APIUtil.getPointer(device)", keepParam = true) CLDevice device, @NullTerminated @Const CharSequence options, @PointerWrapper(value = "cl_program_callback", canBeNull = true) CLBuildProgramCallback pfn_notify, @Constant("user_data") @PointerWrapper("void *") long user_data); @cl_int int clUnloadCompiler(); @cl_int int clGetProgramInfo(@PointerWrapper("cl_program") CLProgram program, @NativeType("cl_program_info") int param_name, @AutoSize(value = "param_value", canBeNull = true) @size_t long param_value_size, @OutParameter @Check(canBeNull = true) @cl_void ByteBuffer param_value, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer param_value_size_ret); /** * This method can be used to get program binaries. The binary for each device (in the * order returned by <code>CL_PROGRAM_DEVICES</code>) will be written sequentially to * the <code>param_value</code> buffer. The buffer size must be big enough to hold * all the binaries, as returned by <code>CL_PROGRAM_BINARY_SIZES</code>. * * @param program the program * @param param_value the buffers where the binaries will be written to. * @param param_value_size_ret optional size result * * @return the error code */ @Alternate(value = "clGetProgramInfo", nativeAlt = true) @cl_int int clGetProgramInfo2(@PointerWrapper("cl_program") CLProgram program, @Constant("CL_PROGRAM_BINARIES") @NativeType("cl_program_info") int param_name, @Constant(value = "sizes_len * sizeof(cl_uchar *)", isNative = true) @size_t long param_value_size, @Constant("sizes.remaining()") @Helper(passToNative = true) @size_t long sizes_len, @Helper(passToNative = true) @Check("1") @Const @NativeType("size_t") PointerBuffer sizes, @OutParameter @Check("APIUtil.getSize(sizes)") @PointerArray(value = "sizes_len", lengths = "sizes") @NativeType("cl_uchar") ByteBuffer param_value, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer param_value_size_ret); /** * This method can be used to get program binaries. The binary for each device (in the * order returned by <code>CL_PROGRAM_DEVICES</code>) will be written to the corresponding * slot of the <code>param_value</code> array. The size of each buffer must be big enough to * hold the corresponding binary, as returned by <code>CL_PROGRAM_BINARY_SIZES</code>. * * @param program the program * @param param_value the buffers where the binaries will be written to. * @param param_value_size_ret optional size result * * @return the error code */ @Alternate(value = "clGetProgramInfo", nativeAlt = true) @cl_int int clGetProgramInfo3(@PointerWrapper("cl_program") CLProgram program, @Constant("CL_PROGRAM_BINARIES") @NativeType("cl_program_info") int param_name, @Constant(value = "param_value_len * sizeof(cl_uchar *)", isNative = true) @size_t long param_value_size, @Constant("param_value.length") @Helper(passToNative = true) @size_t long param_value_len, @PointerArray("param_value_len") @NativeType("cl_uchar") ByteBuffer[] param_value, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer param_value_size_ret); @cl_int int clGetProgramBuildInfo(@PointerWrapper("cl_program") CLProgram program, @PointerWrapper("cl_device_id") CLDevice device, @NativeType("cl_program_build_info") int param_name, @AutoSize(value = "param_value", canBeNull = true) @size_t long param_value_size, @OutParameter @Check(canBeNull = true) @cl_void ByteBuffer param_value, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer param_value_size_ret); @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_kernel", params = "program") CLKernel clCreateKernel(@PointerWrapper("cl_program") CLProgram program, @NullTerminated @Const @cl_char ByteBuffer kernel_name, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @Alternate("clCreateKernel") @Check(value = "errcode_ret", canBeNull = true) @PointerWrapper(value = "cl_kernel", params = "program") CLKernel clCreateKernel(@PointerWrapper("cl_program") CLProgram program, @NullTerminated @Const CharSequence kernel_name, @OutParameter @Check(value = "1", canBeNull = true) @cl_int IntBuffer errcode_ret); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS && kernels != null ) program.registerCLKernels(kernels);") @cl_int int clCreateKernelsInProgram(@PointerWrapper("cl_program") CLProgram program, @AutoSize(value = "kernels", canBeNull = true) @cl_uint int num_kernels, @OutParameter @Check(canBeNull = true) @NativeType("cl_kernel") PointerBuffer kernels, @OutParameter @Check(value = "1", canBeNull = true) @cl_uint IntBuffer num_kernels_ret); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) kernel.retain();") @cl_int int clRetainKernel(@PointerWrapper("cl_kernel") CLKernel kernel); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) kernel.release();") @cl_int int clReleaseKernel(@PointerWrapper("cl_kernel") CLKernel kernel); @GenerateAutos @cl_int int clSetKernelArg(@PointerWrapper("cl_kernel") CLKernel kernel, @cl_uint int arg_index, @AutoSize("arg_value") @size_t long arg_size, @Const @cl_byte @cl_short @cl_int @cl_long @cl_float @cl_double Buffer arg_value); @Alternate("clSetKernelArg") @cl_int int clSetKernelArg(@PointerWrapper("cl_kernel") CLKernel kernel, @cl_uint int arg_index, @Constant("PointerBuffer.getPointerSize()") @size_t long arg_size, @Check(canBeNull = true) @Const @Constant(value = "APIUtil.getPointerSafe(arg_value)", keepParam = true) CLObject arg_value); // This is used by CLKernelUtil. Assumes arg_value.position() == 0. @Alternate("clSetKernelArg") @Private @cl_int int clSetKernelArg3(@PointerWrapper("cl_kernel") CLKernel kernel, @cl_uint int arg_index, @size_t long arg_size, @Constant(value = "MemoryUtil.getAddress0(arg_value)", keepParam = true) Buffer arg_value); @cl_int int clGetKernelInfo(@PointerWrapper("cl_kernel") CLKernel kernel, @NativeType("cl_kernel_info") int param_name, @AutoSize(value = "param_value", canBeNull = true) @size_t long param_value_size, @OutParameter @Check(canBeNull = true) @cl_void ByteBuffer param_value, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer param_value_size_ret); @cl_int int clGetKernelWorkGroupInfo(@PointerWrapper("cl_kernel") CLKernel kernel, @PointerWrapper(value = "cl_device_id", canBeNull = true) CLDevice device, @NativeType("cl_kernel_work_group_info") int param_name, @AutoSize(value = "param_value", canBeNull = true) @size_t long param_value_size, @OutParameter @Check(canBeNull = true) @cl_void ByteBuffer param_value, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer param_value_size_ret); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) command_queue.registerCLEvent(event);") @cl_int int clEnqueueNDRangeKernel(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @PointerWrapper("cl_kernel") CLKernel kernel, @cl_uint int work_dim, @Check(value = "work_dim", canBeNull = true) @Const @NativeType("size_t") PointerBuffer global_work_offset, @Check(value = "work_dim", canBeNull = true) @Const @NativeType("size_t") PointerBuffer global_work_size, @Check(value = "work_dim", canBeNull = true) @Const @NativeType("size_t") PointerBuffer local_work_size, @AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list, @Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) command_queue.registerCLEvent(event);") @cl_int int clEnqueueTask(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @PointerWrapper("cl_kernel") CLKernel kernel, @AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list, @Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event); /** * Enqueues a native kernel to the specified command queue. The <code>mem_list</code> parameter * can be used to pass a list of <code>CLMem</code> objects that will be mapped to global memory space and * exposed as a <code>ByteBuffer</code> array in the <code>CLNativeKernel#execute</code> method. The * <code>sizes</code> parameter will be used to allocate direct <code>ByteBuffer</code>s with the correct * capacities. The user is responsible for passing appropriate values to avoid crashes. * * @param command_queue the command queue * @param user_func the native kernel * @param mem_list the CLMem objects * @param sizes the CLMem object sizes * @param event_wait_list the event wait list * @param event the queue event * * @return the error code */ @Code( tryBlock = true, // Build the args buffer and create a GlobalRef to the user_func object. javaBeforeNative = "\t\tlong user_func_ref = CallbackUtil.createGlobalRef(user_func);\n" + "\t\tByteBuffer args = APIUtil.getNativeKernelArgs(user_func_ref, mem_list, sizes);", // Register CLEvent javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) command_queue.registerCLEvent(event);", // Check if we need to delete the GlobalRef. javaFinally = "\t\t\tCallbackUtil.checkCallback(__result, user_func_ref);", nativeAfterVars = "\tvoid **args_mem_loc = num_mem_objects == 0 ? NULL : (void **)malloc(num_mem_objects * sizeof(void *));", nativeBeforeCall = "\t_ptr_i = 0;\n" + "\twhile ( _ptr_i < num_mem_objects ) {\n" + "\t\targs_mem_loc[_ptr_i] = (cl_void *)((char *)args_address + (12 + 4 + _ptr_i * (4 + sizeof(void *))));\n" + "\t\t_ptr_i++;\n" + "\t}", nativeAfterCall = "\tfree(args_mem_loc);" ) @cl_int int clEnqueueNativeKernel(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @PointerWrapper("cl_native_kernel_func") CLNativeKernel user_func, @Constant("MemoryUtil.getAddress0(args)") @cl_void ByteBuffer args, @AutoSize("args") @size_t long cb_args, @Constant("mem_list == null ? 0 : mem_list.length") @cl_uint int num_mem_objects, @Check(value = "1", canBeNull = true) @PointerArray("num_mem_objects") @Const @NativeType("cl_mem") CLMem[] mem_list, @Check(value = "mem_list.length", canBeNull = true) @Helper long[] sizes, @Constant(value = "(const void**)args_mem_loc", isNative = true) @Const @Indirect @cl_void ByteBuffer args_mem_loc, @AutoSize(value = "event_wait_list", canBeNull = true) @cl_uint int num_events_in_wait_list, @Check(canBeNull = true) @Const @NativeType("cl_event") PointerBuffer event_wait_list, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("cl_event") PointerBuffer event); @cl_int int clWaitForEvents(@AutoSize("event_list") @cl_uint int num_events, @Check("1") @Const @NativeType("cl_event") PointerBuffer event_list); @Alternate("clWaitForEvents") @cl_int int clWaitForEvents(@Constant("1") @cl_uint int num_events, @Constant(value = "APIUtil.getPointer(event)", keepParam = true) CLEvent event); @cl_int int clGetEventInfo(@PointerWrapper("cl_event") CLEvent event, @NativeType("cl_event_info") int param_name, @AutoSize(value = "param_value", canBeNull = true) @size_t long param_value_size, @OutParameter @Check(canBeNull = true) @cl_void ByteBuffer param_value, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer param_value_size_ret); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) event.retain();") @cl_int int clRetainEvent(@PointerWrapper("cl_event") CLEvent event); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) event.release();") @cl_int int clReleaseEvent(@PointerWrapper("cl_event") CLEvent event); @Code(javaAfterNative = "\t\tif ( __result == CL_SUCCESS ) command_queue.registerCLEvent(event);") @cl_int int clEnqueueMarker(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @OutParameter @Check("1") @NativeType("cl_event") PointerBuffer event); @cl_int int clEnqueueBarrier(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue); @cl_int int clEnqueueWaitForEvents(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @AutoSize("event_list") @cl_uint int num_events, @Check("1") @Const @NativeType("cl_event") PointerBuffer event_list); @Alternate("clEnqueueWaitForEvents") @cl_int int clEnqueueWaitForEvents(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue, @Constant("1") @cl_uint int num_events, @Constant(value = "APIUtil.getPointer(event)", keepParam = true) CLEvent event); @cl_int int clGetEventProfilingInfo(@PointerWrapper("cl_event") CLEvent event, @NativeType("cl_profiling_info") int param_name, @AutoSize(value = "param_value", canBeNull = true) @size_t long param_value_size, @OutParameter @Check(canBeNull = true) @cl_void ByteBuffer param_value, @OutParameter @Check(value = "1", canBeNull = true) @NativeType("size_t") PointerBuffer param_value_size_ret); @cl_int int clFlush(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue); @cl_int int clFinish(@PointerWrapper("cl_command_queue") CLCommandQueue command_queue); @Private @PointerWrapper("void *") CLFunctionAddress clGetExtensionFunctionAddress(@NullTerminated @Const @cl_char ByteBuffer func_name); @Alternate("clGetExtensionFunctionAddress") @Private @PointerWrapper("void *") CLFunctionAddress clGetExtensionFunctionAddress(@NullTerminated CharSequence func_name); }