//*****************************************************************************************************\\ // Copyright (©) Cergey Latchenko ( github.com/SunSerega | forum.mmcs.sfedu.ru/u/sun_serega ) // This code is distributed under the Unlicense // For details see LICENSE file or this: // https://github.com/SunSerega/POCGL/blob/master/LICENSE //*****************************************************************************************************\\ // Copyright (©) Сергей Латченко ( github.com/SunSerega | forum.mmcs.sfedu.ru/u/sun_serega ) // Этот код распространяется под Unlicense // Для деталей смотрите в файл LICENSE или это: // https://github.com/SunSerega/POCGL/blob/master/LICENSE //*****************************************************************************************************\\ /// /// Код переведён отсюда: /// https://github.com/KhronosGroup/OpenCL-Headers/tree/master/CL /// /// Справка: /// www.khronos.org/registry/OpenCL/specs/2.2/html/OpenCL_API.html /// /// Если чего то не хватает - писать сюда: /// https://github.com/SunSerega/POCGL/issues /// unit OpenCL; //ToDo расширения с котороми я не знаю что делать: // // - cl_ext.h // -- cl_qcom_ext_host_ptr // -- cl_qcom_ext_host_ptr_iocoherent // -- cl_qcom_ion_host_ptr // -- cl_qcom_android_native_buffer_host_ptr // -- cl_img_yuv_image // // - cl_d3d11.h // -- там нет функций, есть только энумы и коды ошибок. Но в чём смысл если возвращать и принимать их нечему? // // - cl_platform.h // -- есть только описание типов и констант, которые нигде не используются. Где они нужны? // //ToDo кто что то знает - напишите в issue, пожалуйста //ToDo .h файлы которые осталось перевести: // - cl_ext_intel // - cl_va_api_media_sharing_intel // - cl_dx9_media_sharing_intel uses System; uses System.Runtime.InteropServices; {$region Основные типы} type cl_platform_id = IntPtr; cl_device_id = IntPtr; cl_context = IntPtr; cl_command_queue = IntPtr; cl_mem = IntPtr; cl_program = IntPtr; cl_kernel = IntPtr; cl_event = IntPtr; cl_sampler = IntPtr; ///0=false, остальное=true cl_bool = UInt32; cl_bitfield = UInt64; type OpenCLException = class(Exception) constructor(text: string) := inherited Create($'Ошибка OpenCL: "{text}"'); end; {$endregion Основные типы} {$region Энумы} type {$region case Result of} //SR ErrorCode = record public val: Int32; public constructor(val: Int32) := self.val := val; public const SUCCESS = -0; public const DEVICE_NOT_FOUND = -1; public const DEVICE_NOT_AVAILABLE = -2; public const COMPILER_NOT_AVAILABLE = -3; public const MEM_OBJECT_ALLOCATION_FAILURE = -4; public const OUT_OF_RESOURCES = -5; public const OUT_OF_HOST_MEMORY = -6; public const PROFILING_INFO_NOT_AVAILABLE = -7; public const MEM_COPY_OVERLAP = -8; public const IMAGE_FORMAT_MISMATCH = -9; public const IMAGE_FORMAT_NOT_SUPPORTED = -10; public const BUILD_PROGRAM_FAILURE = -11; public const MAP_FAILURE = -12; public const INVALID_VALUE = -30; public const INVALID_DEVICE_TYPE = -31; public const INVALID_PLATFORM = -32; public const INVALID_DEVICE = -33; public const INVALID_CONTEXT = -34; public const INVALID_QUEUE_PROPERTIES = -35; public const INVALID_COMMAND_QUEUE = -36; public const INVALID_HOST_PTR = -37; public const INVALID_MEM_OBJECT = -38; public const INVALID_IMAGE_FORMAT_DESCRIPTOR = -39; public const INVALID_IMAGE_SIZE = -40; public const INVALID_SAMPLER = -41; public const INVALID_BINARY = -42; public const INVALID_BUILD_OPTIONS = -43; public const INVALID_PROGRAM = -44; public const INVALID_PROGRAM_EXECUTABLE = -45; public const INVALID_KERNEL_NAME = -46; public const INVALID_KERNEL_DEFINITION = -47; public const INVALID_KERNEL = -48; public const INVALID_ARG_INDEX = -49; public const INVALID_ARG_VALUE = -50; public const INVALID_ARG_SIZE = -51; public const INVALID_KERNEL_ARGS = -52; public const INVALID_WORK_DIMENSION = -53; public const INVALID_WORK_GROUP_SIZE = -54; public const INVALID_WORK_ITEM_SIZE = -55; public const INVALID_GLOBAL_OFFSET = -56; public const INVALID_EVENT_WAIT_LIST = -57; public const INVALID_EVENT = -58; public const INVALID_OPERATION = -59; public const INVALID_GL_OBJECT = -60; public const INVALID_BUFFER_SIZE = -61; public const INVALID_MIP_LEVEL = -62; public const INVALID_GLOBAL_WORK_SIZE = -63; // cl_gl public const INVALID_GL_SHAREGROUP_REFERENCE_KHR = -1000; // cl_ext public const PLATFORM_NOT_FOUND_KHR = -1001; public const DEVICE_PARTITION_FAILED_EXT = -1057; public const INVALID_PARTITION_COUNT_EXT = -1058; public const INVALID_PARTITION_NAME_EXT = -1059; // cl_egl public const EGL_RESOURCE_NOT_ACQUIRED_KHR = -1092; public const INVALID_EGL_OBJECT_KHR = -1093; public function ToString: string; override; begin var res := typeof(ErrorCode).GetFields.Where(fi->fi.IsLiteral).FirstOrDefault(prop->integer(prop.GetValue(nil)) = self.val); Result := res=nil? $'ErrorCode[{self.val}]': res.Name.ToWords('_').Select(w->w[1].ToUpper+w.Substring(1).ToLower).JoinIntoString; end; public procedure RaiseIfError := if val<>SUCCESS then raise new OpenCLException(self.ToString); end; //R BuildStatus = record public val: Int32; public const SUCCESS = -0; public const NONE = -1; public const ERROR = -2; public const IN_PROGRESS = -3; public function ToString: string; override; begin var res := typeof(BuildStatus).GetFields.Where(fi->fi.IsLiteral).FirstOrDefault(prop->integer(prop.GetValue(nil)) = self.val); Result := res=nil? $'BuildStatus[{self.val}]': res.Name; end; end; {$endregion case Result of} {$region 1 значение} {$region ...InfoType} //S PlatformInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property PROFILE: PlatformInfoType read new PlatformInfoType($0900); public static property VERSION: PlatformInfoType read new PlatformInfoType($0901); public static property NAME: PlatformInfoType read new PlatformInfoType($0902); public static property VENDOR: PlatformInfoType read new PlatformInfoType($0903); public static property EXTENSIONS: PlatformInfoType read new PlatformInfoType($0904); public static property HOST_TIMER_RESOLUTION: PlatformInfoType read new PlatformInfoType($0905); // cl_ext public static property ICD_SUFFIX_KHR: PlatformInfoType read new PlatformInfoType($0920); end; //S DeviceInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property &TYPE: DeviceInfoType read new DeviceInfoType($1000); public static property VENDOR_ID: DeviceInfoType read new DeviceInfoType($1001); public static property MAX_COMPUTE_UNITS: DeviceInfoType read new DeviceInfoType($1002); public static property MAX_WORK_ITEM_DIMENSIONS: DeviceInfoType read new DeviceInfoType($1003); public static property MAX_WORK_GROUP_SIZE: DeviceInfoType read new DeviceInfoType($1004); public static property MAX_WORK_ITEM_SIZES: DeviceInfoType read new DeviceInfoType($1005); public static property PREFERRED_VECTOR_WIDTH_CHAR: DeviceInfoType read new DeviceInfoType($1006); public static property PREFERRED_VECTOR_WIDTH_SHORT: DeviceInfoType read new DeviceInfoType($1007); public static property PREFERRED_VECTOR_WIDTH_INT: DeviceInfoType read new DeviceInfoType($1008); public static property PREFERRED_VECTOR_WIDTH_LONG: DeviceInfoType read new DeviceInfoType($1009); public static property PREFERRED_VECTOR_WIDTH_FLOAT: DeviceInfoType read new DeviceInfoType($100A); public static property PREFERRED_VECTOR_WIDTH_DOUBLE: DeviceInfoType read new DeviceInfoType($100B); public static property MAX_CLOCK_FREQUENCY: DeviceInfoType read new DeviceInfoType($100C); public static property ADDRESS_BITS: DeviceInfoType read new DeviceInfoType($100D); public static property MAX_READ_IMAGE_ARGS: DeviceInfoType read new DeviceInfoType($100E); public static property MAX_WRITE_IMAGE_ARGS: DeviceInfoType read new DeviceInfoType($100F); public static property MAX_MEM_ALLOC_SIZE: DeviceInfoType read new DeviceInfoType($1010); public static property IMAGE2D_MAX_WIDTH: DeviceInfoType read new DeviceInfoType($1011); public static property IMAGE2D_MAX_HEIGHT: DeviceInfoType read new DeviceInfoType($1012); public static property IMAGE3D_MAX_WIDTH: DeviceInfoType read new DeviceInfoType($1013); public static property IMAGE3D_MAX_HEIGHT: DeviceInfoType read new DeviceInfoType($1014); public static property IMAGE3D_MAX_DEPTH: DeviceInfoType read new DeviceInfoType($1015); public static property IMAGE_SUPPORT: DeviceInfoType read new DeviceInfoType($1016); public static property MAX_PARAMETER_SIZE: DeviceInfoType read new DeviceInfoType($1017); public static property MAX_SAMPLERS: DeviceInfoType read new DeviceInfoType($1018); public static property MEM_BASE_ADDR_ALIGN: DeviceInfoType read new DeviceInfoType($1019); public static property MIN_DATA_TYPE_ALIGN_SIZE: DeviceInfoType read new DeviceInfoType($101A); public static property SINGLE_FP_CONFIG: DeviceInfoType read new DeviceInfoType($101B); public static property GLOBAL_MEM_CACHE_TYPE: DeviceInfoType read new DeviceInfoType($101C); public static property GLOBAL_MEM_CACHELINE_SIZE: DeviceInfoType read new DeviceInfoType($101D); public static property GLOBAL_MEM_CACHE_SIZE: DeviceInfoType read new DeviceInfoType($101E); public static property GLOBAL_MEM_SIZE: DeviceInfoType read new DeviceInfoType($101F); public static property MAX_CONSTANT_BUFFER_SIZE: DeviceInfoType read new DeviceInfoType($1020); public static property MAX_CONSTANT_ARGS: DeviceInfoType read new DeviceInfoType($1021); public static property LOCAL_MEM_TYPE: DeviceInfoType read new DeviceInfoType($1022); public static property LOCAL_MEM_SIZE: DeviceInfoType read new DeviceInfoType($1023); public static property ERROR_CORRECTION_SUPPORT: DeviceInfoType read new DeviceInfoType($1024); public static property PROFILING_TIMER_RESOLUTION: DeviceInfoType read new DeviceInfoType($1025); public static property ENDIAN_LITTLE: DeviceInfoType read new DeviceInfoType($1026); public static property AVAILABLE: DeviceInfoType read new DeviceInfoType($1027); public static property COMPILER_AVAILABLE: DeviceInfoType read new DeviceInfoType($1028); public static property EXECUTION_CAPABILITIES: DeviceInfoType read new DeviceInfoType($1029); /// Устарело public static property QUEUE_PROPERTIES: DeviceInfoType read new DeviceInfoType($102A); public static property QUEUE_ON_HOST_PROPERTIES: DeviceInfoType read new DeviceInfoType($102A); public static property NAME: DeviceInfoType read new DeviceInfoType($102B); public static property VENDOR: DeviceInfoType read new DeviceInfoType($102C); public static property CL_DRIVER_VERSION: DeviceInfoType read new DeviceInfoType($102D); public static property PROFILE: DeviceInfoType read new DeviceInfoType($102E); public static property VERSION: DeviceInfoType read new DeviceInfoType($102F); public static property EXTENSIONS: DeviceInfoType read new DeviceInfoType($1030); public static property PLATFORM: DeviceInfoType read new DeviceInfoType($1031); public static property DOUBLE_FP_CONFIG: DeviceInfoType read new DeviceInfoType($1032); public static property HALF_FP_CONFIG: DeviceInfoType read new DeviceInfoType($1033); public static property PREFERRED_VECTOR_WIDTH_HALF: DeviceInfoType read new DeviceInfoType($1034); /// Устарело public static property HOST_UNIFIED_MEMORY: DeviceInfoType read new DeviceInfoType($1035); public static property NATIVE_VECTOR_WIDTH_CHAR: DeviceInfoType read new DeviceInfoType($1036); public static property NATIVE_VECTOR_WIDTH_SHORT: DeviceInfoType read new DeviceInfoType($1037); public static property NATIVE_VECTOR_WIDTH_INT: DeviceInfoType read new DeviceInfoType($1038); public static property NATIVE_VECTOR_WIDTH_LONG: DeviceInfoType read new DeviceInfoType($1039); public static property NATIVE_VECTOR_WIDTH_FLOAT: DeviceInfoType read new DeviceInfoType($103A); public static property NATIVE_VECTOR_WIDTH_DOUBLE: DeviceInfoType read new DeviceInfoType($103B); public static property NATIVE_VECTOR_WIDTH_HALF: DeviceInfoType read new DeviceInfoType($103C); public static property OPENCL_C_VERSION: DeviceInfoType read new DeviceInfoType($103D); public static property LINKER_AVAILABLE: DeviceInfoType read new DeviceInfoType($103E); public static property BUILT_IN_KERNELS: DeviceInfoType read new DeviceInfoType($103F); public static property IMAGE_MAX_BUFFER_SIZE: DeviceInfoType read new DeviceInfoType($1040); public static property IMAGE_MAX_ARRAY_SIZE: DeviceInfoType read new DeviceInfoType($1041); public static property PARENT_DEVICE: DeviceInfoType read new DeviceInfoType($1042); public static property PARTITION_MAX_SUB_DEVICES: DeviceInfoType read new DeviceInfoType($1043); public static property PARTITION_PROPERTIES: DeviceInfoType read new DeviceInfoType($1044); public static property PARTITION_AFFINITY_DOMAIN: DeviceInfoType read new DeviceInfoType($1045); public static property PARTITION_TYPE: DeviceInfoType read new DeviceInfoType($1046); public static property REFERENCE_COUNT: DeviceInfoType read new DeviceInfoType($1047); public static property PREFERRED_INTEROP_USER_SYNC: DeviceInfoType read new DeviceInfoType($1048); public static property PRINTF_BUFFER_SIZE: DeviceInfoType read new DeviceInfoType($1049); public static property IMAGE_PITCH_ALIGNMENT: DeviceInfoType read new DeviceInfoType($104A); public static property IMAGE_BASE_ADDRESS_ALIGNMENT: DeviceInfoType read new DeviceInfoType($104B); public static property MAX_READ_WRITE_IMAGE_ARGS: DeviceInfoType read new DeviceInfoType($104C); public static property MAX_GLOBAL_VARIABLE_SIZE: DeviceInfoType read new DeviceInfoType($104D); public static property QUEUE_ON_DEVICE_PROPERTIES: DeviceInfoType read new DeviceInfoType($104E); public static property QUEUE_ON_DEVICE_PREFERRED_SIZE: DeviceInfoType read new DeviceInfoType($104F); public static property QUEUE_ON_DEVICE_MAX_SIZE: DeviceInfoType read new DeviceInfoType($1050); public static property MAX_ON_DEVICE_QUEUES: DeviceInfoType read new DeviceInfoType($1051); public static property MAX_ON_DEVICE_EVENTS: DeviceInfoType read new DeviceInfoType($1052); public static property SVM_CAPABILITIES: DeviceInfoType read new DeviceInfoType($1053); public static property GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE: DeviceInfoType read new DeviceInfoType($1054); public static property MAX_PIPE_ARGS: DeviceInfoType read new DeviceInfoType($1055); public static property PIPE_MAX_ACTIVE_RESERVATIONS: DeviceInfoType read new DeviceInfoType($1056); public static property PIPE_MAX_PACKET_SIZE: DeviceInfoType read new DeviceInfoType($1057); public static property PREFERRED_PLATFORM_ATOMIC_ALIGNMENT: DeviceInfoType read new DeviceInfoType($1058); public static property PREFERRED_GLOBAL_ATOMIC_ALIGNMENT: DeviceInfoType read new DeviceInfoType($1059); public static property PREFERRED_LOCAL_ATOMIC_ALIGNMENT: DeviceInfoType read new DeviceInfoType($105A); public static property IL_VERSION: DeviceInfoType read new DeviceInfoType($105B); public static property MAX_NUM_SUB_GROUPS: DeviceInfoType read new DeviceInfoType($105C); public static property SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS: DeviceInfoType read new DeviceInfoType($105D); // cl_ext public static property TERMINATE_CAPABILITY_KHR: DeviceInfoType read new DeviceInfoType($2031); public static property SPIR_VERSIONS: DeviceInfoType read new DeviceInfoType($40E0); public static property COMPUTE_CAPABILITY_MAJOR_NV: DeviceInfoType read new DeviceInfoType($4000); public static property COMPUTE_CAPABILITY_MINOR_NV: DeviceInfoType read new DeviceInfoType($4001); public static property REGISTERS_PER_BLOCK_NV: DeviceInfoType read new DeviceInfoType($4002); public static property WARP_SIZE_NV: DeviceInfoType read new DeviceInfoType($4003); public static property GPU_OVERLAP_NV: DeviceInfoType read new DeviceInfoType($4004); public static property KERNEL_EXEC_TIMEOUT_NV: DeviceInfoType read new DeviceInfoType($4005); public static property INTEGRATED_MEMORY_NV: DeviceInfoType read new DeviceInfoType($4006); public static property PROFILING_TIMER_OFFSET_AMD: DeviceInfoType read new DeviceInfoType($4036); public static property PARENT_DEVICE_EXT: DeviceInfoType read new DeviceInfoType($4054); public static property PARTITION_TYPES_EXT: DeviceInfoType read new DeviceInfoType($4055); public static property AFFINITY_DOMAINS_EXT: DeviceInfoType read new DeviceInfoType($4056); public static property REFERENCE_COUNT_EXT: DeviceInfoType read new DeviceInfoType($4057); public static property PARTITION_STYLE_EXT: DeviceInfoType read new DeviceInfoType($4058); public static property MAX_NAMED_BARRIER_COUNT_KHR: DeviceInfoType read new DeviceInfoType($2035); public static property SVM_CAPABILITIES_ARM: DeviceInfoType read new DeviceInfoType($40B6); public static property COMPUTE_UNITS_BITFIELD_ARM: DeviceInfoType read new DeviceInfoType($40BF); end; //S ContextInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CL_CONTEXT_REFERENCE_COUNT: ContextInfoType read new ContextInfoType($1080); public static property CL_CONTEXT_DEVICES: ContextInfoType read new ContextInfoType($1081); public static property CL_CONTEXT_PROPERTIES: ContextInfoType read new ContextInfoType($1082); public static property CL_CONTEXT_NUM_DEVICES: ContextInfoType read new ContextInfoType($1083); end; //S CommandQueueInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CONTEXT: CommandQueueInfoType read new CommandQueueInfoType($1090); public static property DEVICE: CommandQueueInfoType read new CommandQueueInfoType($1091); public static property REFERENCE_COUNT: CommandQueueInfoType read new CommandQueueInfoType($1092); public static property PROPERTIES: CommandQueueInfoType read new CommandQueueInfoType($1093); public static property SIZE: CommandQueueInfoType read new CommandQueueInfoType($1094); public static property DEVICE_DEFAULT: CommandQueueInfoType read new CommandQueueInfoType($1095); public static property PRIORITY_KHR: CommandQueueInfoType read new CommandQueueInfoType($1096); // cl_ext public static property THROTTLE_KHR: CommandQueueInfoType read new CommandQueueInfoType($1097); // cl_ext end; //S BufferCreateType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property REGION: BufferCreateType read new BufferCreateType($1220); end; //S ImageInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FORMAT: ImageInfoType read new ImageInfoType($1110); public static property ELEMENT_SIZE: ImageInfoType read new ImageInfoType($1111); public static property ROW_PITCH: ImageInfoType read new ImageInfoType($1112); public static property SLICE_PITCH: ImageInfoType read new ImageInfoType($1113); public static property WIDTH: ImageInfoType read new ImageInfoType($1114); public static property HEIGHT: ImageInfoType read new ImageInfoType($1115); public static property DEPTH: ImageInfoType read new ImageInfoType($1116); public static property ARRAY_SIZE: ImageInfoType read new ImageInfoType($1117); public static property BUFFER: ImageInfoType read new ImageInfoType($1118); public static property NUM_MIP_LEVELS: ImageInfoType read new ImageInfoType($1119); public static property NUM_SAMPLES: ImageInfoType read new ImageInfoType($111A); end; //S PipeInfoType = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public constructor(val: int64) := self.val := new IntPtr(val); public static property PACKET_SIZE: PipeInfoType read new PipeInfoType($1120); public static property MAX_PACKETS: PipeInfoType read new PipeInfoType($1121); end; //S MemObjInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property &TYPE: MemObjInfoType read new MemObjInfoType($1100); public static property FLAGS: MemObjInfoType read new MemObjInfoType($1101); public static property SIZE: MemObjInfoType read new MemObjInfoType($1102); public static property HOST_PTR: MemObjInfoType read new MemObjInfoType($1103); public static property MAP_COUNT: MemObjInfoType read new MemObjInfoType($1104); public static property REFERENCE_COUNT: MemObjInfoType read new MemObjInfoType($1105); public static property CONTEXT: MemObjInfoType read new MemObjInfoType($1106); public static property ASSOCIATED_MEMOBJECT: MemObjInfoType read new MemObjInfoType($1107); public static property OFFSET: MemObjInfoType read new MemObjInfoType($1108); public static property USES_SVM_POINTER: MemObjInfoType read new MemObjInfoType($1109); public static property USES_SVM_POINTER_ARM: MemObjInfoType read new MemObjInfoType($40B7); // cl_ext end; //S SamplerInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property REFERENCE_COUNT: SamplerInfoType read new SamplerInfoType($1150); public static property CONTEXT: SamplerInfoType read new SamplerInfoType($1151); public static property NORMALIZED_COORDS: SamplerInfoType read new SamplerInfoType($1152); public static property ADDRESSING_MODE: SamplerInfoType read new SamplerInfoType($1153); public static property FILTER_MODE: SamplerInfoType read new SamplerInfoType($1154); public static property MIP_FILTER_MODE: SamplerInfoType read new SamplerInfoType($1155); public static property LOD_MIN: SamplerInfoType read new SamplerInfoType($1156); public static property LOD_MAX: SamplerInfoType read new SamplerInfoType($1157); end; //S ProgramInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property REFERENCE_COUNT: ProgramInfoType read new ProgramInfoType($1160); public static property CONTEXT: ProgramInfoType read new ProgramInfoType($1161); public static property NUM_DEVICES: ProgramInfoType read new ProgramInfoType($1162); public static property DEVICES: ProgramInfoType read new ProgramInfoType($1163); public static property SOURCE: ProgramInfoType read new ProgramInfoType($1164); public static property BINARY_SIZES: ProgramInfoType read new ProgramInfoType($1165); public static property BINARIES: ProgramInfoType read new ProgramInfoType($1166); public static property NUM_KERNELS: ProgramInfoType read new ProgramInfoType($1167); public static property KERNEL_NAMES: ProgramInfoType read new ProgramInfoType($1168); public static property IL: ProgramInfoType read new ProgramInfoType($1169); public static property SCOPE_GLOBAL_CTORS_PRESENT: ProgramInfoType read new ProgramInfoType($116A); public static property SCOPE_GLOBAL_DTORS_PRESENT: ProgramInfoType read new ProgramInfoType($116B); // cl_ext public static property IL_KHR: ProgramInfoType read new ProgramInfoType($1169); end; //S ProgramBuildInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property STATUS: ProgramBuildInfoType read new ProgramBuildInfoType($1181); public static property OPTIONS: ProgramBuildInfoType read new ProgramBuildInfoType($1182); public static property LOG: ProgramBuildInfoType read new ProgramBuildInfoType($1183); public static property BINARY_TYPE: ProgramBuildInfoType read new ProgramBuildInfoType($1184); public static property GLOBAL_VARIABLE_TOTAL_SIZE: ProgramBuildInfoType read new ProgramBuildInfoType($1185); // cl_ext public static property BINARY_TYPE_INTERMEDIATE: ProgramBuildInfoType read new ProgramBuildInfoType($40E1); end; //S KernelExecInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SVM_PTRS: KernelExecInfoType read new KernelExecInfoType($11B6); public static property SVM_FINE_GRAIN_SYSTEM: KernelExecInfoType read new KernelExecInfoType($11B7); end; //S KernelExecARMInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SVM_PTRS: KernelExecARMInfoType read new KernelExecARMInfoType($40B8); public static property SVM_FINE_GRAIN_SYSTEM: KernelExecARMInfoType read new KernelExecARMInfoType($40B9); end; //S KernelArgInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property ADDRESS_QUALIFIER: KernelArgInfoType read new KernelArgInfoType($1196); public static property ACCESS_QUALIFIER: KernelArgInfoType read new KernelArgInfoType($1197); public static property TYPE_NAME: KernelArgInfoType read new KernelArgInfoType($1198); public static property TYPE_QUALIFIER: KernelArgInfoType read new KernelArgInfoType($1199); public static property NAME: KernelArgInfoType read new KernelArgInfoType($119A); end; //S KernelSubGroupInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property MAX_SUB_GROUP_SIZE_FOR_NDRANGE: KernelSubGroupInfoType read new KernelSubGroupInfoType($2033); public static property SUB_GROUP_COUNT_FOR_NDRANGE: KernelSubGroupInfoType read new KernelSubGroupInfoType($2034); public static property LOCAL_SIZE_FOR_SUB_GROUP_COUNT: KernelSubGroupInfoType read new KernelSubGroupInfoType($11B8); end; //S KernelInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property FUNCTION_NAME: KernelInfoType read new KernelInfoType($1190); public static property NUM_ARGS: KernelInfoType read new KernelInfoType($1191); public static property REFERENCE_COUNT: KernelInfoType read new KernelInfoType($1192); public static property CONTEXT: KernelInfoType read new KernelInfoType($1193); public static property &PROGRAM: KernelInfoType read new KernelInfoType($1194); public static property ATTRIBUTES: KernelInfoType read new KernelInfoType($1195); public static property MAX_NUM_SUB_GROUPS: KernelInfoType read new KernelInfoType($11B9); public static property COMPILE_NUM_SUB_GROUPS: KernelInfoType read new KernelInfoType($11BA); end; //S KernelWorkGroupInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SIZE: KernelWorkGroupInfoType read new KernelWorkGroupInfoType($11B0); public static property COMPILE_SIZE: KernelWorkGroupInfoType read new KernelWorkGroupInfoType($11B1); public static property LOCAL_MEM_SIZE: KernelWorkGroupInfoType read new KernelWorkGroupInfoType($11B2); public static property PREFERRED_SIZE_MULTIPLE: KernelWorkGroupInfoType read new KernelWorkGroupInfoType($11B3); public static property PRIVATE_MEM_SIZE: KernelWorkGroupInfoType read new KernelWorkGroupInfoType($11B4); public static property COMPILE_NUM_SUB_GROUPS: KernelWorkGroupInfoType read new KernelWorkGroupInfoType($11B5); end; //S EventInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property COMMAND_QUEUE: EventInfoType read new EventInfoType($11D0); public static property COMMAND_TYPE: EventInfoType read new EventInfoType($11D1); public static property REFERENCE_COUNT: EventInfoType read new EventInfoType($11D2); public static property COMMAND_EXECUTION_STATUS: EventInfoType read new EventInfoType($11D3); public static property CONTEXT: EventInfoType read new EventInfoType($11D4); end; //S ProfilingInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property COMMAND_QUEUED: ProfilingInfoType read new ProfilingInfoType($1280); public static property COMMAND_SUBMIT: ProfilingInfoType read new ProfilingInfoType($1281); public static property COMMAND_START: ProfilingInfoType read new ProfilingInfoType($1282); public static property COMMAND_END: ProfilingInfoType read new ProfilingInfoType($1283); public static property COMMAND_COMPLETE: ProfilingInfoType read new ProfilingInfoType($1284); end; //S GLTextureInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property TEXTURE_TARGET: GLTextureInfoType read new GLTextureInfoType($2004); public static property MIPMAP_LEVEL: GLTextureInfoType read new GLTextureInfoType($2005); public static property NUM_SAMPLES: GLTextureInfoType read new GLTextureInfoType($2012); end; //S GLContextInfoType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property CURRENT_DEVICE_FOR_GL_CONTEXT_KHR: GLContextInfoType read new GLContextInfoType($2006); public static property DEVICES_FOR_GL_CONTEXT_KHR: GLContextInfoType read new GLContextInfoType($2007); end; {$endregion ...InfoType} //S ImportPropertiesARM = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public constructor(val: int64) := self.val := new IntPtr(val); public static property TYPE_ARM: ImportPropertiesARM read new ImportPropertiesARM($40B2); public static property HOST_ARM: ImportPropertiesARM read new ImportPropertiesARM($40B3); public static property DMA_BUF_ARM: ImportPropertiesARM read new ImportPropertiesARM($40B4); public static property PROTECTED_ARM: ImportPropertiesARM read new ImportPropertiesARM($40B5); end; //SR DevicePartitionProperties = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public constructor(val: int64) := self.val := new IntPtr(val); public static property EQUALLY: DevicePartitionProperties read new DevicePartitionProperties($1086); public static property BY_COUNTS: DevicePartitionProperties read new DevicePartitionProperties($1087); public static property BY_COUNTS_LIST_END: DevicePartitionProperties read new DevicePartitionProperties( 0); public static property BY_AFFINITY_DOMAIN: DevicePartitionProperties read new DevicePartitionProperties($1088); // cl_ext public static property EQUALLY_EXT: DevicePartitionProperties read new DevicePartitionProperties($4050); public static property BY_COUNTS_EXT: DevicePartitionProperties read new DevicePartitionProperties($4051); public static property BY_NAMES_EXT: DevicePartitionProperties read new DevicePartitionProperties($4052); public static property BY_AFFINITY_DOMAIN_EXT: DevicePartitionProperties read new DevicePartitionProperties($4053); public static property LIST_END_EXT: DevicePartitionProperties read new DevicePartitionProperties( 0); public static property BY_COUNTS_LIST_END_EXT: DevicePartitionProperties read new DevicePartitionProperties( 0); public static property BY_NAMES_LIST_END_EXT: DevicePartitionProperties read new DevicePartitionProperties( -1); public property IS_EQUALLY: boolean read self = DevicePartitionProperties.EQUALLY; public property IS_BY_COUNTS: boolean read self = DevicePartitionProperties.BY_COUNTS; public property IS_BY_COUNTS_LIST_END: boolean read self = DevicePartitionProperties.BY_COUNTS_LIST_END; public property IS_BY_AFFINITY_DOMAIN: boolean read self = DevicePartitionProperties.BY_AFFINITY_DOMAIN; // cl_ext public property IS_EQUALLY_EXT: boolean read self = DevicePartitionProperties.EQUALLY_EXT; public property IS_BY_COUNTS_EXT: boolean read self = DevicePartitionProperties.BY_COUNTS_EXT; public property IS_BY_NAMES_EXT: boolean read self = DevicePartitionProperties.BY_NAMES_EXT; public property IS_BY_AFFINITY_DOMAIN_EXT: boolean read self = DevicePartitionProperties.BY_AFFINITY_DOMAIN_EXT; public property IS_LIST_END_EXT: boolean read self = DevicePartitionProperties.LIST_END_EXT; public property IS_BY_COUNTS_LIST_END_EXT: boolean read self = DevicePartitionProperties.BY_COUNTS_LIST_END_EXT; public property IS_BY_NAMES_LIST_END_EXT: boolean read self = DevicePartitionProperties.BY_NAMES_LIST_END_EXT; public function ToString: string; override; begin var res := typeof(DevicePartitionProperties).GetProperties.Where(prop->prop.PropertyType=typeof(boolean)).Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'DevicePartitionProperties[{self.val}]': res[0].Substring(3); end; end; //SR ContextProperties = record public val: IntPtr; public constructor(val: IntPtr) := self.val := val; public constructor(val: int64) := self.val := new IntPtr(val); public static property PLATFORM: ContextProperties read new ContextProperties($1084); public static property INTEROP_USER_SYNC: ContextProperties read new ContextProperties($1085); // cl_ext public static property TERMINATE_KHR: ContextProperties read new ContextProperties($2032); public static property PRINTF_CALLBACK_ARM: ContextProperties read new ContextProperties($40B0); public static property PRINTF_BUFFERSIZE_ARM: ContextProperties read new ContextProperties($40B1); // cl_gl public static property GL_CONTEXT_KHR: ContextProperties read new ContextProperties($2008); public static property EGL_DISPLAY_KHR: ContextProperties read new ContextProperties($2009); public static property GLX_DISPLAY_KHR: ContextProperties read new ContextProperties($200A); public static property WGL_HDC_KHR: ContextProperties read new ContextProperties($200B); public static property CGL_SHAREGROUP_KHR: ContextProperties read new ContextProperties($200C); public property IS_PLATFORM: boolean read self = ContextProperties.PLATFORM; public property IS_INTEROP_USER_SYNC: boolean read self = ContextProperties.INTEROP_USER_SYNC; // cl_ext public property IS_TERMINATE_KHR: boolean read self = ContextProperties.TERMINATE_KHR; public property IS_PRINTF_CALLBACK_ARM: boolean read self = ContextProperties.PRINTF_CALLBACK_ARM; public property IS_PRINTF_BUFFERSIZE_ARM: boolean read self = ContextProperties.PRINTF_BUFFERSIZE_ARM; // cl_gl public property IS_GL_CONTEXT_KHR: boolean read self = ContextProperties.GL_CONTEXT_KHR; public property IS_EGL_DISPLAY_KHR: boolean read self = ContextProperties.EGL_DISPLAY_KHR; public property IS_GLX_DISPLAY_KHR: boolean read self = ContextProperties.GLX_DISPLAY_KHR; public property IS_WGL_HDC_KHR: boolean read self = ContextProperties.WGL_HDC_KHR; public property IS_CGL_SHAREGROUP_KHR: boolean read self = ContextProperties.CGL_SHAREGROUP_KHR; public function ToString: string; override; begin var res := typeof(ContextProperties).GetProperties.Where(prop->prop.PropertyType=typeof(boolean)).Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'ContextProperties[{self.val}]': res[0].Substring(3); end; end; //SR ChannelOrder = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property R: ChannelOrder read new ChannelOrder($10B0); public static property A: ChannelOrder read new ChannelOrder($10B1); public static property RG: ChannelOrder read new ChannelOrder($10B2); public static property RA: ChannelOrder read new ChannelOrder($10B3); public static property RGB: ChannelOrder read new ChannelOrder($10B4); public static property RGBA: ChannelOrder read new ChannelOrder($10B5); public static property BGRA: ChannelOrder read new ChannelOrder($10B6); public static property ARGB: ChannelOrder read new ChannelOrder($10B7); public static property INTENSITY: ChannelOrder read new ChannelOrder($10B8); public static property LUMINANCE: ChannelOrder read new ChannelOrder($10B9); public static property Rx: ChannelOrder read new ChannelOrder($10BA); public static property RGx: ChannelOrder read new ChannelOrder($10BB); public static property RGBx: ChannelOrder read new ChannelOrder($10BC); public static property DEPTH: ChannelOrder read new ChannelOrder($10BD); public static property DEPTH_STENCIL: ChannelOrder read new ChannelOrder($10BE); public static property sRGB: ChannelOrder read new ChannelOrder($10BF); public static property sRGBx: ChannelOrder read new ChannelOrder($10C0); public static property sRGBA: ChannelOrder read new ChannelOrder($10C1); public static property sBGRA: ChannelOrder read new ChannelOrder($10C2); public static property ABGR: ChannelOrder read new ChannelOrder($10C3); public property IS_R: boolean read self = ChannelOrder.R; public property IS_A: boolean read self = ChannelOrder.A; public property IS_RG: boolean read self = ChannelOrder.RG; public property IS_RA: boolean read self = ChannelOrder.RA; public property IS_RGB: boolean read self = ChannelOrder.RGB; public property IS_RGBA: boolean read self = ChannelOrder.RGBA; public property IS_BGRA: boolean read self = ChannelOrder.BGRA; public property IS_ARGB: boolean read self = ChannelOrder.ARGB; public property IS_INTENSITY: boolean read self = ChannelOrder.INTENSITY; public property IS_LUMINANCE: boolean read self = ChannelOrder.LUMINANCE; public property IS_Rx: boolean read self = ChannelOrder.Rx; public property IS_RGx: boolean read self = ChannelOrder.RGx; public property IS_RGBx: boolean read self = ChannelOrder.RGBx; public property IS_DEPTH: boolean read self = ChannelOrder.DEPTH; public property IS_DEPTH_STENCIL: boolean read self = ChannelOrder.DEPTH_STENCIL; public property IS_sRGB: boolean read self = ChannelOrder.sRGB; public property IS_sRGBx: boolean read self = ChannelOrder.sRGBx; public property IS_sRGBA: boolean read self = ChannelOrder.sRGBA; public property IS_sBGRA: boolean read self = ChannelOrder.sBGRA; public property IS_ABGR: boolean read self = ChannelOrder.ABGR; public function ToString: string; override; begin var res := typeof(ChannelOrder).GetProperties.Where(prop->prop.PropertyType=typeof(boolean)).Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'ChannelOrder[{self.val}]': res[0].Substring(3); end; end; //SR ChannelType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property SNORM_INT8: ChannelType read new ChannelType($10D0); public static property SNORM_INT16: ChannelType read new ChannelType($10D1); public static property UNORM_INT8: ChannelType read new ChannelType($10D2); public static property UNORM_INT16: ChannelType read new ChannelType($10D3); public static property UNORM_SHORT_565: ChannelType read new ChannelType($10D4); public static property UNORM_SHORT_555: ChannelType read new ChannelType($10D5); public static property UNORM_INT_101010: ChannelType read new ChannelType($10D6); public static property SIGNED_INT8: ChannelType read new ChannelType($10D7); public static property SIGNED_INT16: ChannelType read new ChannelType($10D8); public static property SIGNED_INT32: ChannelType read new ChannelType($10D9); public static property UNSIGNED_INT8: ChannelType read new ChannelType($10DA); public static property UNSIGNED_INT16: ChannelType read new ChannelType($10DB); public static property UNSIGNED_INT32: ChannelType read new ChannelType($10DC); public static property HALF_FLOAT: ChannelType read new ChannelType($10DD); public static property FLOAT: ChannelType read new ChannelType($10DE); public static property UNORM_INT24: ChannelType read new ChannelType($10DF); public static property CL_UNORM_INT_101010_2: ChannelType read new ChannelType($10E0); public property IS_SNORM_INT8: boolean read self = ChannelType.SNORM_INT8; public property IS_SNORM_INT16: boolean read self = ChannelType.SNORM_INT16; public property IS_UNORM_INT8: boolean read self = ChannelType.UNORM_INT8; public property IS_UNORM_INT16: boolean read self = ChannelType.UNORM_INT16; public property IS_UNORM_SHORT_565: boolean read self = ChannelType.UNORM_SHORT_565; public property IS_UNORM_SHORT_555: boolean read self = ChannelType.UNORM_SHORT_555; public property IS_UNORM_INT_101010: boolean read self = ChannelType.UNORM_INT_101010; public property IS_SIGNED_INT8: boolean read self = ChannelType.SIGNED_INT8; public property IS_SIGNED_INT16: boolean read self = ChannelType.SIGNED_INT16; public property IS_SIGNED_INT32: boolean read self = ChannelType.SIGNED_INT32; public property IS_UNSIGNED_INT8: boolean read self = ChannelType.UNSIGNED_INT8; public property IS_UNSIGNED_INT16: boolean read self = ChannelType.UNSIGNED_INT16; public property IS_UNSIGNED_INT32: boolean read self = ChannelType.UNSIGNED_INT32; public property IS_HALF_FLOAT: boolean read self = ChannelType.HALF_FLOAT; public property IS_FLOAT: boolean read self = ChannelType.FLOAT; public property IS_UNORM_INT24: boolean read self = ChannelType.UNORM_INT24; public property IS_CL_UNORM_INT_101010_2: boolean read self = ChannelType.CL_UNORM_INT_101010_2; public function ToString: string; override; begin var res := typeof(ChannelType).GetProperties.Where(prop->prop.PropertyType=typeof(boolean)).Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'ChannelType[{self.val}]': res[0].Substring(3); end; end; //SR MemObjectType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property BUFFER: MemObjectType read new MemObjectType($10F0); public static property IMAGE2D: MemObjectType read new MemObjectType($10F1); public static property IMAGE3D: MemObjectType read new MemObjectType($10F2); public static property IMAGE2D_ARRAY: MemObjectType read new MemObjectType($10F3); public static property IMAGE1D: MemObjectType read new MemObjectType($10F4); public static property IMAGE1D_ARRAY: MemObjectType read new MemObjectType($10F5); public static property IMAGE1D_BUFFER: MemObjectType read new MemObjectType($10F6); public static property PIPE: MemObjectType read new MemObjectType($10F7); public property IS_BUFFER: boolean read self = MemObjectType.BUFFER; public property IS_IMAGE2D: boolean read self = MemObjectType.IMAGE2D; public property IS_IMAGE3D: boolean read self = MemObjectType.IMAGE3D; public property IS_IMAGE2D_ARRAY: boolean read self = MemObjectType.IMAGE2D_ARRAY; public property IS_IMAGE1D: boolean read self = MemObjectType.IMAGE1D; public property IS_IMAGE1D_ARRAY: boolean read self = MemObjectType.IMAGE1D_ARRAY; public property IS_IMAGE1D_BUFFER: boolean read self = MemObjectType.IMAGE1D_BUFFER; public property IS_PIPE: boolean read self = MemObjectType.PIPE; public function ToString: string; override; begin var res := typeof(MemObjectType).GetProperties.Where(prop->prop.PropertyType=typeof(boolean)).Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'MemObjectType[{self.val}]': res[0].Substring(3); end; end; //SR AddressingMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NONE: AddressingMode read new AddressingMode($1130); public static property CLAMP_TO_EDGE: AddressingMode read new AddressingMode($1131); public static property CLAMP: AddressingMode read new AddressingMode($1132); public static property &REPEAT: AddressingMode read new AddressingMode($1133); public static property MIRRORED_REPEAT: AddressingMode read new AddressingMode($1134); public property IS_NONE: boolean read self = AddressingMode.NONE; public property IS_CLAMP_TO_EDGE: boolean read self = AddressingMode.CLAMP_TO_EDGE; public property IS_CLAMP: boolean read self = AddressingMode.CLAMP; public property IS_REPEAT: boolean read self = AddressingMode.REPEAT; public property IS_MIRRORED_REPEAT: boolean read self = AddressingMode.MIRRORED_REPEAT; public function ToString: string; override; begin var res := typeof(AddressingMode).GetProperties.Where(prop->prop.PropertyType=typeof(boolean)).Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'AddressingMode[{self.val}]': res[0].Substring(3); end; end; //SR FilterMode = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property NEAREST: FilterMode read new FilterMode($1140); public static property LINEAR: FilterMode read new FilterMode($1141); public property IS_NEAREST: boolean read self = FilterMode.NEAREST; public property IS_LINEAR: boolean read self = FilterMode.LINEAR; public function ToString: string; override; begin var res := typeof(FilterMode).GetProperties.Where(prop->prop.PropertyType=typeof(boolean)).Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'FilterMode[{self.val}]': res[0].Substring(3); end; end; //SR CommandExecutionStatus = record public val: Int32; public constructor(val: Int32) := self.val := val; public static property COMPLETE: CommandExecutionStatus read new CommandExecutionStatus($0); public static property RUNNING: CommandExecutionStatus read new CommandExecutionStatus($1); public static property SUBMITTED: CommandExecutionStatus read new CommandExecutionStatus($2); public static property QUEUED: CommandExecutionStatus read new CommandExecutionStatus($3); public property IS_COMPLETE: boolean read self = CommandExecutionStatus.COMPLETE; public property IS_RUNNING: boolean read self = CommandExecutionStatus.RUNNING; public property IS_SUBMITTED: boolean read self = CommandExecutionStatus.SUBMITTED; public property IS_QUEUED: boolean read self = CommandExecutionStatus.QUEUED; public property IS_ERROR: boolean read self.val < 0; public function GetError := new ErrorCode(self.val); public static function operator implicit(ec: ErrorCode): CommandExecutionStatus := new CommandExecutionStatus(ec.val); public function ToString: string; override; begin var res := typeof(CommandExecutionStatus).GetProperties.Where(prop->prop.PropertyType=typeof(boolean)).Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := IS_ERROR? GetError.ToString: res<>nil? res[0].Substring(3): $'CommandExecutionStatus[{self.val}]'; end; end; //SR DeviceAffinityDomain = record public val: cl_bitfield; public constructor(val: cl_bitfield) := self.val := val; public static property NUMA: DeviceAffinityDomain read new DeviceAffinityDomain(1 shl 0); public static property L4_CACHE: DeviceAffinityDomain read new DeviceAffinityDomain(1 shl 1); public static property L3_CACHE: DeviceAffinityDomain read new DeviceAffinityDomain(1 shl 2); public static property L2_CACHE: DeviceAffinityDomain read new DeviceAffinityDomain(1 shl 3); public static property L1_CACHE: DeviceAffinityDomain read new DeviceAffinityDomain(1 shl 4); public static property NEXT_PARTITIONABLE: DeviceAffinityDomain read new DeviceAffinityDomain(1 shl 5); // cl_ext public static property L1_CACHE_EXT: DeviceAffinityDomain read new DeviceAffinityDomain( $1); public static property L2_CACHE_EXT: DeviceAffinityDomain read new DeviceAffinityDomain( $2); public static property L3_CACHE_EXT: DeviceAffinityDomain read new DeviceAffinityDomain( $3); public static property L4_CACHE_EXT: DeviceAffinityDomain read new DeviceAffinityDomain( $4); public static property NUMA_EXT: DeviceAffinityDomain read new DeviceAffinityDomain( $10); public static property NEXT_PARTITIONABLE_EXT: DeviceAffinityDomain read new DeviceAffinityDomain($100); public property IS_NUMA: boolean read self = DeviceAffinityDomain.NUMA; public property IS_L4_CACHE: boolean read self = DeviceAffinityDomain.L4_CACHE; public property IS_L3_CACHE: boolean read self = DeviceAffinityDomain.L3_CACHE; public property IS_L2_CACHE: boolean read self = DeviceAffinityDomain.L2_CACHE; public property IS_L1_CACHE: boolean read self = DeviceAffinityDomain.L1_CACHE; public property IS_NEXT_PARTITIONABLE: boolean read self = DeviceAffinityDomain.NEXT_PARTITIONABLE; public property IS_L1_CACHE_EXT: boolean read self = DeviceAffinityDomain.L1_CACHE_EXT; public property IS_L2_CACHE_EXT: boolean read self = DeviceAffinityDomain.L2_CACHE_EXT; public property IS_L3_CACHE_EXT: boolean read self = DeviceAffinityDomain.L3_CACHE_EXT; public property IS_L4_CACHE_EXT: boolean read self = DeviceAffinityDomain.L4_CACHE_EXT; public property IS_NUMA_EXT: boolean read self = DeviceAffinityDomain.NUMA_EXT; public property IS_NEXT_PARTITIONABLE_EXT: boolean read self = DeviceAffinityDomain.NEXT_PARTITIONABLE_EXT; public function ToString: string; override; begin var res := typeof(DeviceAffinityDomain).GetProperties.Where(prop->prop.PropertyType=typeof(boolean)).Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'DeviceAffinityDomain[{self.val}]': res[0].Substring(3); end; end; //SR CommandQueuePriority = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property HIGH: CommandQueuePriority read new CommandQueuePriority(1 shl 0); public static property MED: CommandQueuePriority read new CommandQueuePriority(1 shl 1); public static property LOW: CommandQueuePriority read new CommandQueuePriority(1 shl 2); public property IS_HIGH: boolean read self = CommandQueuePriority.HIGH; public property IS_MED: boolean read self = CommandQueuePriority.MED; public property IS_LOW: boolean read self = CommandQueuePriority.LOW; public function ToString: string; override; begin var res := typeof(DeviceAffinityDomain).GetProperties.Where(prop->prop.PropertyType=typeof(boolean)).Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'CommandQueuePriority[{self.val}]': res[0].Substring(3); end; end; //SR CommandQueueThrottle = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public static property HIGH: CommandQueueThrottle read new CommandQueueThrottle(1 shl 0); public static property MED: CommandQueueThrottle read new CommandQueueThrottle(1 shl 1); public static property LOW: CommandQueueThrottle read new CommandQueueThrottle(1 shl 2); public property IS_HIGH: boolean read self = CommandQueueThrottle.HIGH; public property IS_MED: boolean read self = CommandQueueThrottle.MED; public property IS_LOW: boolean read self = CommandQueueThrottle.LOW; public function ToString: string; override; begin var res := typeof(DeviceAffinityDomain).GetProperties.Where(prop->prop.PropertyType=typeof(boolean)).Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'CommandQueueThrottle[{self.val}]': res[0].Substring(3); end; end; //R DeviceMemCacheType = record public val: UInt32; public property NONE: boolean read self.val = $0; public property READ_ONLY_CACHE: boolean read self.val = $1; public property READ_WRITE_CACHE: boolean read self.val = $2; public function ToString: string; override; begin var res := typeof(DeviceMemCacheType).GetProperties.Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'DeviceMemCacheType[{self.val}]': res[0]; end; end; //R DeviceLocalMemType = record public val: UInt32; public property NONE: boolean read self.val = $0; public property LOCAL: boolean read self.val = $1; public property GLOBAL: boolean read self.val = $2; public function ToString: string; override; begin var res := typeof(DeviceLocalMemType).GetProperties.Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'DeviceLocalMemType[{self.val}]': res[0]; end; end; //R ProgramBinaryType = record public val: UInt32; public property NONE: boolean read self.val = $0; public property COMPILED_OBJECT: boolean read self.val = $1; public property &LIBRARY: boolean read self.val = $2; public property EXECUTABLE: boolean read self.val = $4; public function ToString: string; override; begin var res := typeof(ProgramBinaryType).GetProperties.Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'ProgramBinaryType[{self.val}]': res[0]; end; end; //R KernelArgAddressQualifier = record public val: UInt32; public property GLOBAL: boolean read self.val = $119B; public property LOCAL: boolean read self.val = $119C; public property CONSTANT: boolean read self.val = $119D; public property &PRIVATE: boolean read self.val = $119E; public function ToString: string; override; begin var res := typeof(KernelArgAddressQualifier).GetProperties.Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'KernelArgAddressQualifier[{self.val}]': res[0]; end; end; //R KernelArgAccessQualifier = record public val: UInt32; public property READ_ONLY: boolean read self.val = $11A0; public property WRITE_ONLY: boolean read self.val = $11A1; public property READ_WRITE: boolean read self.val = $11A2; public property NONE: boolean read self.val = $11A3; public function ToString: string; override; begin var res := typeof(KernelArgAccessQualifier).GetProperties.Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'KernelArgAccessQualifier[{self.val}]': res[0]; end; end; //R CommandType = record public val: UInt32; public property NDRANGE_KERNEL: boolean read self.val = $11F0; public property TASK: boolean read self.val = $11F1; public property NATIVE_KERNEL: boolean read self.val = $11F2; public property READ_BUFFER: boolean read self.val = $11F3; public property WRITE_BUFFER: boolean read self.val = $11F4; public property COPY_BUFFER: boolean read self.val = $11F5; public property READ_IMAGE: boolean read self.val = $11F6; public property WRITE_IMAGE: boolean read self.val = $11F7; public property COPY_IMAGE: boolean read self.val = $11F8; public property COPY_IMAGE_TO_BUFFER: boolean read self.val = $11F9; public property COPY_BUFFER_TO_IMAGE: boolean read self.val = $11FA; public property MAP_BUFFER: boolean read self.val = $11FB; public property MAP_IMAGE: boolean read self.val = $11FC; public property UNMAP_MEM_OBJECT: boolean read self.val = $11FD; public property MARKER: boolean read self.val = $11FE; public property ACQUIRE_GL_OBJECTS: boolean read self.val = $11FF; public property RELEASE_GL_OBJECTS: boolean read self.val = $1200; public property READ_BUFFER_RECT: boolean read self.val = $1201; public property WRITE_BUFFER_RECT: boolean read self.val = $1202; public property COPY_BUFFER_RECT: boolean read self.val = $1203; public property USER: boolean read self.val = $1204; public property BARRIER: boolean read self.val = $1205; public property MIGRATE_MEM_OBJECTS: boolean read self.val = $1206; public property FILL_BUFFER: boolean read self.val = $1207; public property FILL_IMAGE: boolean read self.val = $1208; public property SVM_FREE: boolean read self.val = $1209; public property SVM_MEMCPY: boolean read self.val = $120A; public property SVM_MEMFILL: boolean read self.val = $120B; public property SVM_MAP: boolean read self.val = $120C; public property SVM_UNMAP: boolean read self.val = $120D; // cl_ext public property ACQUIRE_GRALLOC_OBJECTS_IMG: boolean read self.val = $40D2; public property RELEASE_GRALLOC_OBJECTS_IMG: boolean read self.val = $40D3; public property SVM_FREE_ARM: boolean read self.val = $40BA; public property SVM_MEMCPY_ARM: boolean read self.val = $40BB; public property SVM_MEMFILL_ARM: boolean read self.val = $40BC; public property SVM_MAP_ARM: boolean read self.val = $40BD; public property SVM_UNMAP_ARM: boolean read self.val = $40BE; // cl_gl_ext public property GL_FENCE_SYNC_OBJECT_KHR: boolean read self.val = $200D; // cl_egl public property EGL_FENCE_SYNC_OBJECT_KHR: boolean read self.val = $202F; public property ACQUIRE_EGL_OBJECTS_KHR: boolean read self.val = $202D; public property RELEASE_EGL_OBJECTS_KHR: boolean read self.val = $202E; public function ToString: string; override; begin var res := typeof(CommandType).GetProperties.Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'CommandType[{self.val}]': res[0]; end; end; //R GLObjectType = record public val: UInt32; public constructor(val: UInt32) := self.val := val; public property BUFFER: boolean read self.val = $2000; public property TEXTURE2D: boolean read self.val = $2001; public property TEXTURE3D: boolean read self.val = $2002; public property RENDERBUFFER: boolean read self.val = $2003; public property TEXTURE2D_ARRAY: boolean read self.val = $200E; public property TEXTURE1D: boolean read self.val = $200F; public property TEXTURE1D_ARRAY: boolean read self.val = $2010; public property TEXTURE_BUFFER: boolean read self.val = $2011; public function ToString: string; override; begin var res := typeof(GLObjectType).GetProperties.Select(prop->(prop.Name,boolean(prop.GetValue(self)))).FirstOrDefault(t->t[1]); Result := res=nil? $'GLObjectType[{self.val}]': res[0]; end; end; {$endregion 1 значение} {$region Флаги} //S DeviceTypeFlags = record public val: cl_bitfield; public constructor(val: cl_bitfield) := self.val := val; public static property &Default: DeviceTypeFlags read new DeviceTypeFlags(1 shl 0); public static property CPU: DeviceTypeFlags read new DeviceTypeFlags(1 shl 1); public static property GPU: DeviceTypeFlags read new DeviceTypeFlags(1 shl 2); public static property Accelerator: DeviceTypeFlags read new DeviceTypeFlags(1 shl 3); public static property All: DeviceTypeFlags read new DeviceTypeFlags($FFFFFFFF); public static function operator or(a,b: DeviceTypeFlags) := new DeviceTypeFlags(a.val or b.val); end; //S CommandQueuePropertyFlags = record public val: cl_bitfield; public constructor(val: cl_bitfield) := self.val := val; public static property NONE: CommandQueuePropertyFlags read new CommandQueuePropertyFlags(0); public static property QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE: CommandQueuePropertyFlags read new CommandQueuePropertyFlags(1 shl 0); public static property QUEUE_PROFILING_ENABLE: CommandQueuePropertyFlags read new CommandQueuePropertyFlags(1 shl 1); public static function operator or(a,b: CommandQueuePropertyFlags) := new CommandQueuePropertyFlags(a.val or b.val); public static function operator implicit(cqpf: CommandQueuePropertyFlags): CommandQueueInfoType := new CommandQueueInfoType(cqpf.val); end; //S MapFlags = record public val: cl_bitfield; public constructor(val: cl_bitfield) := self.val := val; public static property MAP_READ: MapFlags read new MapFlags(1 shl 0); public static property MAP_WRITE: MapFlags read new MapFlags(1 shl 1); public static property WRITE_INVALIDATE_REGION: MapFlags read new MapFlags(1 shl 2); public static function operator or(a,b: MapFlags) := new MapFlags(a.val or b.val); end; //S MemMigrationFlags = record public val: cl_bitfield; public constructor(val: cl_bitfield) := self.val := val; public static property NONE: MemMigrationFlags read new MemMigrationFlags(0); public static property HOST: MemMigrationFlags read new MemMigrationFlags(1 shl 0); public static property CONTENT_UNDEFINED: MemMigrationFlags read new MemMigrationFlags(1 shl 1); public static function operator or(a,b: MemMigrationFlags) := new MemMigrationFlags(a.val or b.val); end; //SR MemoryFlags = record public val: cl_bitfield; public constructor(val: cl_bitfield) := self.val := val; public static property READ_WRITE: MemoryFlags read new MemoryFlags(1 shl 00); public static property WRITE_ONLY: MemoryFlags read new MemoryFlags(1 shl 01); public static property READ_ONLY: MemoryFlags read new MemoryFlags(1 shl 02); public static property USE_HOST_PTR: MemoryFlags read new MemoryFlags(1 shl 03); public static property ALLOC_HOST_PTR: MemoryFlags read new MemoryFlags(1 shl 04); public static property COPY_HOST_PTR: MemoryFlags read new MemoryFlags(1 shl 05); public static property HOST_WRITE_ONLY: MemoryFlags read new MemoryFlags(1 shl 07); public static property HOST_READ_ONLY: MemoryFlags read new MemoryFlags(1 shl 08); public static property HOST_NO_ACCESS: MemoryFlags read new MemoryFlags(1 shl 09); public static property SVM_FINE_GRAIN_BUFFER: MemoryFlags read new MemoryFlags(1 shl 10); public static property SVM_ATOMICS: MemoryFlags read new MemoryFlags(1 shl 11); public static property KERNEL_READ_AND_WRITE: MemoryFlags read new MemoryFlags(1 shl 12); // cl_ext public static property USE_UNCACHED_CPU_MEMORY_IMG: MemoryFlags read new MemoryFlags(1 shl 26); public static property USE_CACHED_CPU_MEMORY_IMG: MemoryFlags read new MemoryFlags(1 shl 27); public static property CL_MEM_USE_GRALLOC_PTR_IMG: MemoryFlags read new MemoryFlags(1 shl 28); public static property EXT_HOST_PTR_QCOM: MemoryFlags read new MemoryFlags(1 shl 29); public property IS_READ_WRITE: boolean read self.val and MemoryFlags.READ_WRITE .val <> 0; public property IS_WRITE_ONLY: boolean read self.val and MemoryFlags.WRITE_ONLY .val <> 0; public property IS_READ_ONLY: boolean read self.val and MemoryFlags.READ_ONLY .val <> 0; public property IS_USE_HOST_PTR: boolean read self.val and MemoryFlags.USE_HOST_PTR .val <> 0; public property IS_ALLOC_HOST_PTR: boolean read self.val and MemoryFlags.ALLOC_HOST_PTR .val <> 0; public property IS_COPY_HOST_PTR: boolean read self.val and MemoryFlags.COPY_HOST_PTR .val <> 0; public property IS_HOST_WRITE_ONLY: boolean read self.val and MemoryFlags.HOST_WRITE_ONLY .val <> 0; public property IS_HOST_READ_ONLY: boolean read self.val and MemoryFlags.HOST_READ_ONLY .val <> 0; public property IS_HOST_NO_ACCESS: boolean read self.val and MemoryFlags.HOST_NO_ACCESS .val <> 0; public property IS_SVM_FINE_GRAIN_BUFFER: boolean read self.val and MemoryFlags.SVM_FINE_GRAIN_BUFFER .val <> 0; public property IS_SVM_ATOMICS: boolean read self.val and MemoryFlags.SVM_ATOMICS .val <> 0; public property IS_KERNEL_READ_AND_WRITE: boolean read self.val and MemoryFlags.KERNEL_READ_AND_WRITE .val <> 0; // cl_ext public property IS_USE_UNCACHED_CPU_MEMORY_IMG: boolean read self.val and MemoryFlags.USE_UNCACHED_CPU_MEMORY_IMG .val <> 0; public property IS_USE_CACHED_CPU_MEMORY_IMG: boolean read self.val and MemoryFlags.USE_CACHED_CPU_MEMORY_IMG .val <> 0; public property IS_CL_MEM_USE_GRALLOC_PTR_IMG: boolean read self.val and MemoryFlags.CL_MEM_USE_GRALLOC_PTR_IMG .val <> 0; public property IS_EXT_HOST_PTR_QCOM: boolean read self.val and MemoryFlags.EXT_HOST_PTR_QCOM .val <> 0; public static function operator or(a,b: MemoryFlags) := new MemoryFlags(a.val or b.val); public function ToString: string; override; begin var res := typeof(MemoryFlags).GetProperties.Where(prop->prop.PropertyType=typeof(boolean)).Select(prop->(prop.Name,boolean(prop.GetValue(self)))).Where(t->t[1]).Select(t->t[0]).ToArray; Result := res.Length=0? $'MemoryFlags[{self.val}]': res.Select(pname->pname.Substring(3)).JoinIntoString('+'); end; end; //R DeviceFPConfigFlags = record public val: cl_bitfield; public property DENORM: boolean read self.val and (1 shl 0) <> 0; public property INF_NAN: boolean read self.val and (1 shl 1) <> 0; public property ROUND_TO_NEAREST: boolean read self.val and (1 shl 2) <> 0; public property ROUND_TO_ZERO: boolean read self.val and (1 shl 3) <> 0; public property ROUND_TO_INF: boolean read self.val and (1 shl 4) <> 0; public property FMA: boolean read self.val and (1 shl 5) <> 0; public property SOFT_FLOAT: boolean read self.val and (1 shl 6) <> 0; public property CORRECTLY_ROUNDED_DIVIDE_SQRT: boolean read self.val and (1 shl 7) <> 0; public function ToString: string; override; begin var res := typeof(DeviceFPConfigFlags).GetProperties.Select(prop->(prop.Name,boolean(prop.GetValue(self)))).Where(t->t[1]).Select(t->t[0]).ToArray; Result := res.Length=0? $'DeviceFPConfigFlags[{self.val}]': res.JoinIntoString('+'); end; end; //R DeviceExecCapabilities = record public val: cl_bitfield; public property KERNEL: boolean read self.val and (1 shl 0) <> 0; public property NATIVE_KERNEL: boolean read self.val and (1 shl 1) <> 0; public function ToString: string; override; begin var res := typeof(DeviceExecCapabilities).GetProperties.Select(prop->(prop.Name,boolean(prop.GetValue(self)))).Where(t->t[1]).Select(t->t[0]).ToArray; Result := res.Length=0? $'DeviceExecCapabilities[{self.val}]': res.JoinIntoString('+'); end; end; //R DeviceSVMCapabilityFlags = record public val: cl_bitfield; public property NONE: boolean read self.val = 0; public property COARSE_GRAIN_BUFFER: boolean read self.val = (1 shl 0); public property FINE_GRAIN_BUFFER: boolean read self.val = (1 shl 1); public property FINE_GRAIN_SYSTEM: boolean read self.val = (1 shl 2); public property ATOMICS: boolean read self.val = (1 shl 3); public function ToString: string; override; begin var res := typeof(DeviceSVMCapabilityFlags).GetProperties.Skip(1).Select(prop->(prop.Name,boolean(prop.GetValue(self)))).Where(t->t[1]).Select(t->t[0]).ToArray; Result := res.Length=0? val=0?'NONE':$'DeviceSVMCapabilities[{self.val}]': res.JoinIntoString('+'); end; end; //R KernelArgTypeQualifier = record public val: UInt32; public property NONE: boolean read self.val = 0; public property &CONST: boolean read self.val and (1 shl 0) <> 0; public property RESTRICT: boolean read self.val and (1 shl 1) <> 0; public property VOLATILE: boolean read self.val and (1 shl 2) <> 0; public property PIPE: boolean read self.val and (1 shl 3) <> 0; public function ToString: string; override; begin var res := typeof(KernelArgTypeQualifier).GetProperties.Skip(1).Select(prop->(prop.Name,boolean(prop.GetValue(self)))).Where(t->t[1]).Select(t->t[0]).ToArray; Result := res.Length=0? val=0?'NONE':$'KernelArgTypeQualifier[{self.val}]': res.JoinIntoString('+'); end; end; {$endregion Флаги} {$endregion Энумы} {$region Делегаты} type [UnmanagedFunctionPointer(CallingConvention.StdCall)] CreateContext_Callback = procedure(errinfo: ^char; private_info: pointer; cb: UIntPtr; user_data: pointer); [UnmanagedFunctionPointer(CallingConvention.StdCall)] Program_Callback = procedure(&program: cl_program; user_data: pointer); [UnmanagedFunctionPointer(CallingConvention.StdCall)] EnqueueNativeKernel_Callback = procedure(args: pointer); [UnmanagedFunctionPointer(CallingConvention.StdCall)] MemObjectDestructor_Callback = procedure(mem_obj: cl_mem; user_data: pointer); [UnmanagedFunctionPointer(CallingConvention.StdCall)] EnqueueSVMFree_Callback = procedure(queue: cl_command_queue; num_svm_pointers: UInt32; svm_pointers: ^UIntPtr; user_data: pointer); [UnmanagedFunctionPointer(CallingConvention.StdCall)] Event_Callback = procedure(&event: cl_event; event_command_exec_status: CommandExecutionStatus; user_data: pointer); {$endregion Делегаты} {$region Записи} type cl_buffer_region = record public origin: UIntPtr; public size: UIntPtr; public constructor(origin, size: UIntPtr); begin self.origin := origin; self.size := size; end; end; cl_image_format = record public image_channel_order: ChannelOrder; public image_channel_data_type: ChannelType; public constructor(image_channel_order: ChannelOrder; image_channel_data_type: ChannelType); begin self.image_channel_order := image_channel_order; self.image_channel_data_type := image_channel_data_type; end; end; cl_image_desc = record public image_type: MemObjectType; public image_width, image_height, image_depth, image_array_size, image_row_pitch, image_slice_pitch: UIntPtr; public num_mip_levels, num_samples: UInt32; public mem_object: cl_mem; public static function Create1D(image_width: UIntPtr): cl_image_desc; begin Result.image_type := MemObjectType.IMAGE1D; Result.image_width := image_width; end; public static function Create1D_BUFFER(image_width: UIntPtr; mem_object: cl_mem): cl_image_desc; begin Result.image_type := MemObjectType.IMAGE1D_BUFFER; Result.image_width := image_width; Result.mem_object := mem_object; end; public static function Create1D_ARRAY(image_width, image_array_size, image_row_pitch: UIntPtr): cl_image_desc; begin Result.image_type := MemObjectType.IMAGE1D_ARRAY; Result.image_width := image_width; Result.image_array_size := image_array_size; Result.image_row_pitch := image_row_pitch; end; public static function Create2D(image_width, image_height, image_row_pitch: UIntPtr; mem_object: cl_mem): cl_image_desc; begin Result.image_type := MemObjectType.IMAGE2D; Result.image_width := image_width; Result.image_height := image_height; Result.image_row_pitch := image_row_pitch; Result.mem_object := mem_object; end; public static function Create2D_ARRAY(image_width, image_height, image_array_size, image_row_pitch, image_slice_pitch: UIntPtr): cl_image_desc; begin Result.image_type := MemObjectType.IMAGE2D_ARRAY; Result.image_width := image_width; Result.image_height := image_height; Result.image_array_size := image_array_size; Result.image_row_pitch := image_row_pitch; Result.image_slice_pitch := image_slice_pitch; end; public static function Create3D(image_width, image_height, image_depth, image_row_pitch, image_slice_pitch: UIntPtr): cl_image_desc; begin Result.image_type := MemObjectType.IMAGE3D; Result.image_width := image_width; Result.image_height := image_height; Result.image_depth := image_depth; Result.image_row_pitch := image_row_pitch; Result.image_slice_pitch := image_slice_pitch; end; end; {$endregion Записи} type cl = static class {$region Platform} static function GetPlatformIDs(num_entries: UInt32; [MarshalAs(UnmanagedType.LPArray)] platforms: array of cl_platform_id; var num_platforms: UInt32): ErrorCode; external 'opencl.dll' name 'clGetPlatformIDs'; static function GetPlatformIDs(num_entries: UInt32; platforms: ^cl_platform_id; num_platforms: ^UInt32): ErrorCode; external 'opencl.dll' name 'clGetPlatformIDs'; static function GetPlatformInfo(platform: cl_platform_id; param_name: PlatformInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetPlatformInfo'; static function GetPlatformInfo(platform: cl_platform_id; param_name: PlatformInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetPlatformInfo'; static function UnloadPlatformCompiler(platform: cl_platform_id): ErrorCode; external 'opencl.dll' name 'clUnloadPlatformCompiler'; {$endregion Platform} {$region Device} static function GetDeviceIDs(platform: cl_platform_id; device_type: DeviceTypeFlags; num_entries: UInt32; [MarshalAs(UnmanagedType.LPArray)] devices: array of cl_device_id; var num_devices: UInt32): ErrorCode; external 'opencl.dll' name 'clGetDeviceIDs'; static function GetDeviceIDs(platform: cl_platform_id; device_type: DeviceTypeFlags; num_entries: UInt32; devices: ^cl_device_id; num_devices: ^UInt32): ErrorCode; external 'opencl.dll' name 'clGetDeviceIDs'; static function GetDeviceInfo(device: cl_device_id; param_name: DeviceInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetDeviceInfo'; static function GetDeviceInfo(device: cl_device_id; param_name: DeviceInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetDeviceInfo'; static function GetDeviceAndHostTimer(device: cl_device_id; var device_timestamp: uint64; var host_timestamp: uint64): ErrorCode; external 'opencl.dll' name 'clGetDeviceAndHostTimer'; static function GetDeviceAndHostTimer(device: cl_device_id; device_timestamp, host_timestamp: ^uint64): ErrorCode; external 'opencl.dll' name 'clGetDeviceAndHostTimer'; static function GetHostTimer(device: cl_device_id; var host_timestamp: uint64): ErrorCode; external 'opencl.dll' name 'clGetHostTimer'; static function GetHostTimer(device: cl_device_id; host_timestamp: ^uint64): ErrorCode; external 'opencl.dll' name 'clGetHostTimer'; static function CreateSubDevices(in_device: cl_device_id; [MarshalAs(UnmanagedType.LPArray)] properties: array of DevicePartitionProperties; num_devices: UInt32; [MarshalAs(UnmanagedType.LPArray)] out_devices: array of cl_device_id; var num_devices_ret: UInt32): ErrorCode; external 'opencl.dll' name 'clCreateSubDevices'; static function CreateSubDevices(in_device: cl_device_id; properties: ^DevicePartitionProperties; num_devices: UInt32; out_devices: ^cl_device_id; num_devices_ret: ^UInt32): ErrorCode; external 'opencl.dll' name 'clCreateSubDevices'; static function RetainDevice(device: cl_device_id): ErrorCode; external 'opencl.dll' name 'clRetainDevice'; static function ReleaseDevice(device: cl_device_id): ErrorCode; external 'opencl.dll' name 'clReleaseDevice'; {$endregion Device} {$region Context} static function CreateContext([MarshalAs(UnmanagedType.LPArray)] properties: array of ContextProperties; num_devices: UInt32; [MarshalAs(UnmanagedType.LPArray)] devices: array of cl_device_id; pfn_notify: CreateContext_Callback; user_data: IntPtr; var ec: ErrorCode): cl_context; external 'opencl.dll' name 'clCreateContext'; static function CreateContext(properties: ^ContextProperties; num_devices: UInt32; devices: ^cl_device_id; pfn_notify: CreateContext_Callback; user_data: pointer; ec: ^ErrorCode): cl_context; external 'opencl.dll' name 'clCreateContext'; static function CreateContextFromType([MarshalAs(UnmanagedType.LPArray)] properties: array of ContextProperties; device_type: DeviceTypeFlags; pfn_notify: CreateContext_Callback; user_data: IntPtr; var ec: ErrorCode): cl_context; external 'opencl.dll' name 'clCreateContext'; static function CreateContextFromType(properties: ^ContextProperties; device_type: DeviceTypeFlags; pfn_notify: CreateContext_Callback; user_data: pointer; ec: ^ErrorCode): cl_context; external 'opencl.dll' name 'clCreateContext'; static function RetainContext(context: cl_context): ErrorCode; external 'opencl.dll' name 'clRetainContext'; static function ReleaseContext(context: cl_context): ErrorCode; external 'opencl.dll' name 'clReleaseContext'; static function GetContextInfo(context: cl_context; param_name: ContextInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetContextInfo'; static function GetContextInfo(context: cl_context; param_name: ContextInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetContextInfo'; {$endregion Context} {$region CommandQueue} static function CreateCommandQueueWithProperties(context: cl_context; device: cl_device_id; [MarshalAs(UnmanagedType.LPArray)] properties: array of CommandQueueInfoType; var errcode_ret: ErrorCode): cl_command_queue; external 'opencl.dll' name 'clCreateCommandQueueWithProperties'; static function CreateCommandQueueWithProperties(context: cl_context; device: cl_device_id; properties: ^CommandQueueInfoType; errcode_ret: ^ErrorCode): cl_command_queue; external 'opencl.dll' name 'clCreateCommandQueueWithProperties'; /// Эта функция устарела static function CreateCommandQueue(context: cl_context; device: cl_device_id; properties: CommandQueuePropertyFlags; var errcode_ret: ErrorCode): cl_command_queue; external 'opencl.dll' name 'clCreateCommandQueue'; /// Эта функция устарела static function CreateCommandQueue(context: cl_context; device: cl_device_id; properties: CommandQueuePropertyFlags; errcode_ret: ^ErrorCode): cl_command_queue; external 'opencl.dll' name 'clCreateCommandQueue'; static function SetDefaultDeviceCommandQueue(context: cl_context; device: cl_device_id; command_queue: cl_command_queue): ErrorCode; external 'opencl.dll' name 'clSetDefaultDeviceCommandQueue'; static function RetainCommandQueue(command_queue: cl_command_queue): ErrorCode; external 'opencl.dll' name 'clRetainCommandQueue'; static function ReleaseCommandQueue(command_queue: cl_command_queue): ErrorCode; external 'opencl.dll' name 'clReleaseCommandQueue'; static function GetCommandQueueInfo(command_queue: cl_command_queue; param_name: CommandQueueInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetCommandQueueInfo'; static function GetCommandQueueInfo(command_queue: cl_command_queue; param_name: CommandQueueInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetCommandQueueInfo'; static function Flush(command_queue: cl_command_queue): ErrorCode; external 'opencl.dll' name 'clFlush'; static function Finish(command_queue: cl_command_queue): ErrorCode; external 'opencl.dll' name 'clFinish'; {$endregion CommandQueue} {$region cl_mem} {$region Buffer} static function CreateBuffer(context: cl_context; flags: MemoryFlags; size: UIntPtr; host_ptr: IntPtr; var errcode_ret: ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateBuffer'; static function CreateBuffer(context: cl_context; flags: MemoryFlags; size: UIntPtr; host_ptr: pointer; errcode_ret: ^ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateBuffer'; static function CreateSubBuffer(buffer: cl_mem; flags: MemoryFlags; buffer_create_type: BufferCreateType; buffer_create_info: pointer; var errcode_ret: ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateSubBuffer'; static function CreateSubBuffer(buffer: cl_mem; flags: MemoryFlags; buffer_create_type: BufferCreateType; buffer_create_info: pointer; errcode_ret: ^ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateSubBuffer'; static function EnqueueReadBuffer(command_queue: cl_command_queue; buffer: cl_mem; blocking_read: cl_bool; offset: UIntPtr; size: UIntPtr; ptr: IntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReadBuffer'; static function EnqueueReadBuffer(command_queue: cl_command_queue; buffer: cl_mem; blocking_read: cl_bool; offset: UIntPtr; size: UIntPtr; ptr: IntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReadBuffer'; static function EnqueueReadBuffer(command_queue: cl_command_queue; buffer: cl_mem; blocking_read: cl_bool; offset: UIntPtr; size: UIntPtr; ptr: pointer; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReadBuffer'; static function EnqueueReadBuffer(command_queue: cl_command_queue; buffer: cl_mem; blocking_read: cl_bool; offset: UIntPtr; size: UIntPtr; ptr: pointer; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReadBuffer'; static function EnqueueWriteBuffer(command_queue: cl_command_queue; buffer: cl_mem; blocking_write: cl_bool; offset: UIntPtr; size: UIntPtr; ptr: IntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueWriteBuffer'; static function EnqueueWriteBuffer(command_queue: cl_command_queue; buffer: cl_mem; blocking_write: cl_bool; offset: UIntPtr; size: UIntPtr; ptr: IntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueWriteBuffer'; static function EnqueueWriteBuffer(command_queue: cl_command_queue; buffer: cl_mem; blocking_write: cl_bool; offset: UIntPtr; size: UIntPtr; ptr: pointer; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueWriteBuffer'; static function EnqueueWriteBuffer(command_queue: cl_command_queue; buffer: cl_mem; blocking_write: cl_bool; offset: UIntPtr; size: UIntPtr; ptr: pointer; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueWriteBuffer'; static function EnqueueCopyBuffer(command_queue: cl_command_queue; src_buffer: cl_mem; dst_buffer: cl_mem; src_offset: UIntPtr; dst_offset: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyBuffer'; static function EnqueueCopyBuffer(command_queue: cl_command_queue; src_buffer: cl_mem; dst_buffer: cl_mem; src_offset: UIntPtr; dst_offset: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyBuffer'; static function EnqueueReadBufferRect(command_queue: cl_command_queue; buffer: cl_mem; blocking_read: cl_bool; [MarshalAs(UnmanagedType.LPArray)] buffer_offset: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] host_offset: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; buffer_row_pitch: UIntPtr; buffer_slice_pitch: UIntPtr; host_row_pitch: UIntPtr; host_slice_pitch: UIntPtr; ptr: IntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReadBufferRect'; static function EnqueueReadBufferRect(command_queue: cl_command_queue; buffer: cl_mem; blocking_read: cl_bool; [MarshalAs(UnmanagedType.LPArray)] buffer_offset: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] host_offset: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; buffer_row_pitch: UIntPtr; buffer_slice_pitch: UIntPtr; host_row_pitch: UIntPtr; host_slice_pitch: UIntPtr; ptr: IntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReadBufferRect'; static function EnqueueReadBufferRect(command_queue: cl_command_queue; buffer: cl_mem; blocking_read: cl_bool; buffer_offset: ^UIntPtr; host_offset: ^UIntPtr; region: ^UIntPtr; buffer_row_pitch: UIntPtr; buffer_slice_pitch: UIntPtr; host_row_pitch: UIntPtr; host_slice_pitch: UIntPtr; ptr: pointer; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReadBufferRect'; static function EnqueueReadBufferRect(command_queue: cl_command_queue; buffer: cl_mem; blocking_read: cl_bool; buffer_offset: ^UIntPtr; host_offset: ^UIntPtr; region: ^UIntPtr; buffer_row_pitch: UIntPtr; buffer_slice_pitch: UIntPtr; host_row_pitch: UIntPtr; host_slice_pitch: UIntPtr; ptr: pointer; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReadBufferRect'; static function EnqueueWriteBufferRect(command_queue: cl_command_queue; buffer: cl_mem; blocking_write: cl_bool; [MarshalAs(UnmanagedType.LPArray)] buffer_offset: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] host_offset: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; buffer_row_pitch: UIntPtr; buffer_slice_pitch: UIntPtr; host_row_pitch: UIntPtr; host_slice_pitch: UIntPtr; ptr: IntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueWriteBufferRect'; static function EnqueueWriteBufferRect(command_queue: cl_command_queue; buffer: cl_mem; blocking_write: cl_bool; [MarshalAs(UnmanagedType.LPArray)] buffer_offset: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] host_offset: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; buffer_row_pitch: UIntPtr; buffer_slice_pitch: UIntPtr; host_row_pitch: UIntPtr; host_slice_pitch: UIntPtr; ptr: IntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueWriteBufferRect'; static function EnqueueWriteBufferRect(command_queue: cl_command_queue; buffer: cl_mem; blocking_write: cl_bool; buffer_offset: ^UIntPtr; host_offset: ^UIntPtr; region: ^UIntPtr; buffer_row_pitch: UIntPtr; buffer_slice_pitch: UIntPtr; host_row_pitch: UIntPtr; host_slice_pitch: UIntPtr; ptr: pointer; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueWriteBufferRect'; static function EnqueueWriteBufferRect(command_queue: cl_command_queue; buffer: cl_mem; blocking_write: cl_bool; buffer_offset: ^UIntPtr; host_offset: ^UIntPtr; region: ^UIntPtr; buffer_row_pitch: UIntPtr; buffer_slice_pitch: UIntPtr; host_row_pitch: UIntPtr; host_slice_pitch: UIntPtr; ptr: pointer; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueWriteBufferRect'; static function EnqueueCopyBufferRect(command_queue: cl_command_queue; src_buffer: cl_mem; dst_buffer: cl_mem; [MarshalAs(UnmanagedType.LPArray)] src_origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] dst_origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; src_row_pitch: UIntPtr; src_slice_pitch: UIntPtr; dst_row_pitch: UIntPtr; dst_slice_pitch: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyBufferRect'; static function EnqueueCopyBufferRect(command_queue: cl_command_queue; src_buffer: cl_mem; dst_buffer: cl_mem; [MarshalAs(UnmanagedType.LPArray)] src_origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] dst_origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; src_row_pitch: UIntPtr; src_slice_pitch: UIntPtr; dst_row_pitch: UIntPtr; dst_slice_pitch: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyBufferRect'; static function EnqueueCopyBufferRect(command_queue: cl_command_queue; src_buffer: cl_mem; dst_buffer: cl_mem; src_origin: ^UIntPtr; dst_origin: ^UIntPtr; region: ^UIntPtr; src_row_pitch: UIntPtr; src_slice_pitch: UIntPtr; dst_row_pitch: UIntPtr; dst_slice_pitch: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyBufferRect'; static function EnqueueCopyBufferRect(command_queue: cl_command_queue; src_buffer: cl_mem; dst_buffer: cl_mem; src_origin: ^UIntPtr; dst_origin: ^UIntPtr; region: ^UIntPtr; src_row_pitch: UIntPtr; src_slice_pitch: UIntPtr; dst_row_pitch: UIntPtr; dst_slice_pitch: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyBufferRect'; static function EnqueueFillBuffer(command_queue: cl_command_queue; buffer: cl_mem; [MarshalAs(UnmanagedType.LPArray)] pattern: array of byte; pattern_size: UIntPtr; offset: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueFillBuffer'; static function EnqueueFillBuffer(command_queue: cl_command_queue; buffer: cl_mem; [MarshalAs(UnmanagedType.LPArray)] pattern: array of byte; pattern_size: UIntPtr; offset: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueFillBuffer'; static function EnqueueFillBuffer(command_queue: cl_command_queue; buffer: cl_mem; pattern: IntPtr; pattern_size: UIntPtr; offset: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueFillBuffer'; static function EnqueueFillBuffer(command_queue: cl_command_queue; buffer: cl_mem; pattern: IntPtr; pattern_size: UIntPtr; offset: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueFillBuffer'; static function EnqueueFillBuffer(command_queue: cl_command_queue; buffer: cl_mem; pattern: pointer; pattern_size: UIntPtr; offset: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueFillBuffer'; static function EnqueueFillBuffer(command_queue: cl_command_queue; buffer: cl_mem; pattern: pointer; pattern_size: UIntPtr; offset: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueFillBuffer'; static function EnqueueMapBuffer(command_queue: cl_command_queue; buffer: cl_mem; blocking_map: cl_bool; map_flags: MapFlags; offset: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event; var errcode_ret: ErrorCode): IntPtr; external 'opencl.dll' name 'clEnqueueMapBuffer'; static function EnqueueMapBuffer(command_queue: cl_command_queue; buffer: cl_mem; blocking_map: cl_bool; map_flags: MapFlags; offset: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event; errcode_ret: ^ErrorCode): IntPtr; external 'opencl.dll' name 'clEnqueueMapBuffer'; {$endregion Buffer} {$region Image} static function CreateImage(context: cl_context; flags: MemoryFlags; image_format: ^cl_image_format; image_desc: ^cl_image_desc; host_ptr: IntPtr; var errcode_ret: ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateImage'; static function CreateImage(context: cl_context; flags: MemoryFlags; image_format: ^cl_image_format; image_desc: ^cl_image_desc; host_ptr: pointer; errcode_ret: ^ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateImage'; static function GetSupportedImageFormats(context: cl_context; flags: MemoryFlags; image_type: MemObjectType; num_entries: UInt32; [MarshalAs(UnmanagedType.LPArray)] image_formats: array of cl_image_format; var num_image_formats: UInt32): ErrorCode; external 'opencl.dll' name 'clGetSupportedImageFormats'; static function GetSupportedImageFormats(context: cl_context; flags: MemoryFlags; image_type: MemObjectType; num_entries: UInt32; image_formats: ^cl_image_format; num_image_formats: ^UInt32): ErrorCode; external 'opencl.dll' name 'clGetSupportedImageFormats'; static function EnqueueReadImage(command_queue: cl_command_queue; image: cl_mem; blocking_read: cl_bool; [MarshalAs(UnmanagedType.LPArray)] origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; row_pitch: UIntPtr; slice_pitch: UIntPtr; ptr: pointer; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReadImage'; static function EnqueueReadImage(command_queue: cl_command_queue; image: cl_mem; blocking_read: cl_bool; [MarshalAs(UnmanagedType.LPArray)] origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; row_pitch: UIntPtr; slice_pitch: UIntPtr; ptr: pointer; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReadImage'; static function EnqueueReadImage(command_queue: cl_command_queue; image: cl_mem; blocking_read: cl_bool; origin: ^UIntPtr; region: ^UIntPtr; row_pitch: UIntPtr; slice_pitch: UIntPtr; ptr: pointer; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReadImage'; static function EnqueueReadImage(command_queue: cl_command_queue; image: cl_mem; blocking_read: cl_bool; origin: ^UIntPtr; region: ^UIntPtr; row_pitch: UIntPtr; slice_pitch: UIntPtr; ptr: pointer; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReadImage'; static function EnqueueWriteImage(command_queue: cl_command_queue; image: cl_mem; blocking_write: cl_bool; [MarshalAs(UnmanagedType.LPArray)] origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; input_row_pitch: UIntPtr; input_slice_pitch: UIntPtr; ptr: pointer; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueWriteImage'; static function EnqueueWriteImage(command_queue: cl_command_queue; image: cl_mem; blocking_write: cl_bool; [MarshalAs(UnmanagedType.LPArray)] origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; input_row_pitch: UIntPtr; input_slice_pitch: UIntPtr; ptr: pointer; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueWriteImage'; static function EnqueueWriteImage(command_queue: cl_command_queue; image: cl_mem; blocking_write: cl_bool; origin: ^UIntPtr; region: ^UIntPtr; input_row_pitch: UIntPtr; input_slice_pitch: UIntPtr; ptr: pointer; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueWriteImage'; static function EnqueueWriteImage(command_queue: cl_command_queue; image: cl_mem; blocking_write: cl_bool; origin: ^UIntPtr; region: ^UIntPtr; input_row_pitch: UIntPtr; input_slice_pitch: UIntPtr; ptr: pointer; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueWriteImage'; static function EnqueueCopyImage(command_queue: cl_command_queue; src_image: cl_mem; dst_image: cl_mem; [MarshalAs(UnmanagedType.LPArray)] src_origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyImage'; static function EnqueueCopyImage(command_queue: cl_command_queue; src_image: cl_mem; dst_image: cl_mem; [MarshalAs(UnmanagedType.LPArray)] src_origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyImage'; static function EnqueueCopyImage(command_queue: cl_command_queue; src_image: cl_mem; dst_image: cl_mem; src_origin: ^UIntPtr; dst_origin: ^UIntPtr; region: ^UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyImage'; static function EnqueueCopyImage(command_queue: cl_command_queue; src_image: cl_mem; dst_image: cl_mem; src_origin: ^UIntPtr; dst_origin: ^UIntPtr; region: ^UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyImage'; static function EnqueueFillImage(command_queue: cl_command_queue; image: cl_mem; fill_color: IntPtr; [MarshalAs(UnmanagedType.LPArray)] origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): System.Int32; external 'opencl.dll' name 'clEnqueueFillImage'; static function EnqueueFillImage(command_queue: cl_command_queue; image: cl_mem; fill_color: IntPtr; [MarshalAs(UnmanagedType.LPArray)] origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): System.Int32; external 'opencl.dll' name 'clEnqueueFillImage'; static function EnqueueFillImage(command_queue: cl_command_queue; image: cl_mem; fill_color: pointer; origin: ^UIntPtr; region: ^UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): System.Int32; external 'opencl.dll' name 'clEnqueueFillImage'; static function EnqueueFillImage(command_queue: cl_command_queue; image: cl_mem; fill_color: pointer; origin: ^UIntPtr; region: ^UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): System.Int32; external 'opencl.dll' name 'clEnqueueFillImage'; static function EnqueueMapImage(command_queue: cl_command_queue; image: cl_mem; blocking_map: cl_bool; map_flags: MapFlags; [MarshalAs(UnmanagedType.LPArray)] origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; var image_row_pitch: UIntPtr; var image_slice_pitch: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event; var errcode_ret: ErrorCode): pointer; external 'opencl.dll' name 'clEnqueueMapImage'; static function EnqueueMapImage(command_queue: cl_command_queue; image: cl_mem; blocking_map: cl_bool; map_flags: MapFlags; [MarshalAs(UnmanagedType.LPArray)] origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; var image_row_pitch: UIntPtr; var image_slice_pitch: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event; var errcode_ret: ErrorCode): pointer; external 'opencl.dll' name 'clEnqueueMapImage'; static function EnqueueMapImage(command_queue: cl_command_queue; image: cl_mem; blocking_map: cl_bool; map_flags: MapFlags; origin: ^UIntPtr; region: ^UIntPtr; image_row_pitch: ^UIntPtr; image_slice_pitch: ^UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event; errcode_ret: ^ErrorCode): pointer; external 'opencl.dll' name 'clEnqueueMapImage'; static function EnqueueMapImage(command_queue: cl_command_queue; image: cl_mem; blocking_map: cl_bool; map_flags: MapFlags; origin: ^UIntPtr; region: ^UIntPtr; image_row_pitch: ^UIntPtr; image_slice_pitch: ^UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event; errcode_ret: ^ErrorCode): pointer; external 'opencl.dll' name 'clEnqueueMapImage'; static function GetImageInfo(image: cl_mem; param_name: ImageInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetImageInfo'; static function GetImageInfo(image: cl_mem; param_name: ImageInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetImageInfo'; {$endregion Image} {$region Pipe} static function CreatePipe(context: cl_context; flags: MemoryFlags; pipe_packet_size: UInt32; pipe_max_packets: UInt32; [MarshalAs(UnmanagedType.LPArray)] properties: array of PipeInfoType; var errcode_ret: ErrorCode): cl_mem; external 'opencl.dll' name 'clCreatePipe'; static function CreatePipe(context: cl_context; flags: MemoryFlags; pipe_packet_size: UInt32; pipe_max_packets: UInt32; properties: ^PipeInfoType; errcode_ret: ^ErrorCode): cl_mem; external 'opencl.dll' name 'clCreatePipe'; static function GetPipeInfo(pipe: cl_mem; param_name: PipeInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetPipeInfo'; static function GetPipeInfo(pipe: cl_mem; param_name: PipeInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetPipeInfo'; {$endregion Pipe} {$region Общее} static function EnqueueCopyImageToBuffer(command_queue: cl_command_queue; src_image: cl_mem; dst_buffer: cl_mem; [MarshalAs(UnmanagedType.LPArray)] src_origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; dst_offset: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyImageToBuffer'; static function EnqueueCopyImageToBuffer(command_queue: cl_command_queue; src_image: cl_mem; dst_buffer: cl_mem; [MarshalAs(UnmanagedType.LPArray)] src_origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; dst_offset: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyImageToBuffer'; static function EnqueueCopyImageToBuffer(command_queue: cl_command_queue; src_image: cl_mem; dst_buffer: cl_mem; src_origin: ^UIntPtr; region: ^UIntPtr; dst_offset: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyImageToBuffer'; static function EnqueueCopyImageToBuffer(command_queue: cl_command_queue; src_image: cl_mem; dst_buffer: cl_mem; src_origin: ^UIntPtr; region: ^UIntPtr; dst_offset: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyImageToBuffer'; static function EnqueueCopyBufferToImage(command_queue: cl_command_queue; src_buffer: cl_mem; dst_image: cl_mem; src_offset: UIntPtr; [MarshalAs(UnmanagedType.LPArray)] dst_origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyBufferToImage'; static function EnqueueCopyBufferToImage(command_queue: cl_command_queue; src_buffer: cl_mem; dst_image: cl_mem; src_offset: UIntPtr; [MarshalAs(UnmanagedType.LPArray)] dst_origin: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] region: array of UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyBufferToImage'; static function EnqueueCopyBufferToImage(command_queue: cl_command_queue; src_buffer: cl_mem; dst_image: cl_mem; src_offset: UIntPtr; dst_origin: ^UIntPtr; region: ^UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyBufferToImage'; static function EnqueueCopyBufferToImage(command_queue: cl_command_queue; src_buffer: cl_mem; dst_image: cl_mem; src_offset: UIntPtr; dst_origin: ^UIntPtr; region: ^UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueCopyBufferToImage'; static function RetainMemObject(memobj: cl_mem): ErrorCode; external 'opencl.dll' name 'clRetainMemObject'; static function ReleaseMemObject(memobj: cl_mem): ErrorCode; external 'opencl.dll' name 'clReleaseMemObject'; static function SetMemObjectDestructor_Callback(memobj: cl_mem; pfn_notify: MemObjectDestructor_Callback; user_data: IntPtr): ErrorCode; external 'opencl.dll' name 'clSetMemObjectDestructor_Callback'; static function SetMemObjectDestructor_Callback(memobj: cl_mem; pfn_notify: MemObjectDestructor_Callback; user_data: pointer): ErrorCode; external 'opencl.dll' name 'clSetMemObjectDestructor_Callback'; static function EnqueueUnmapMemObject(command_queue: cl_command_queue; memobj: cl_mem; mapped_ptr: IntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueUnmapMemObject'; static function EnqueueUnmapMemObject(command_queue: cl_command_queue; memobj: cl_mem; mapped_ptr: IntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueUnmapMemObject'; static function EnqueueMigrateMemObjects(command_queue: cl_command_queue; num_mem_objects: UInt32; [MarshalAs(UnmanagedType.LPArray)] mem_objects: array of cl_mem; flags: MemMigrationFlags; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueMigrateMemObjects'; static function EnqueueMigrateMemObjects(command_queue: cl_command_queue; num_mem_objects: UInt32; [MarshalAs(UnmanagedType.LPArray)] mem_objects: array of cl_mem; flags: MemMigrationFlags; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueMigrateMemObjects'; static function EnqueueMigrateMemObjects(command_queue: cl_command_queue; num_mem_objects: UInt32; mem_objects: ^cl_mem; flags: MemMigrationFlags; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueMigrateMemObjects'; static function EnqueueMigrateMemObjects(command_queue: cl_command_queue; num_mem_objects: UInt32; mem_objects: ^cl_mem; flags: MemMigrationFlags; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueMigrateMemObjects'; static function GetMemObjectInfo(memobj: cl_mem; param_name: MemObjInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetMemObjectInfo'; static function GetMemObjectInfo(memobj: cl_mem; param_name: MemObjInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetMemObjectInfo'; {$endregion Общее} {$region SVM} static function SVMAlloc(context: cl_context; flags: MemoryFlags; size: UIntPtr; alignment: UInt32): IntPtr; external 'opencl.dll' name 'clSVMAlloc'; static procedure SVMFree(context: cl_context; svm_pointer: IntPtr); external 'opencl.dll' name 'clSVMFree'; static function EnqueueSVMFree(command_queue: cl_command_queue; num_svm_pointers: UInt32; [MarshalAs(UnmanagedType.LPArray)] svm_pointers: array of IntPtr; pfn_free_func: EnqueueSVMFree_Callback; user_data: IntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMFree'; static function EnqueueSVMFree(command_queue: cl_command_queue; num_svm_pointers: UInt32; [MarshalAs(UnmanagedType.LPArray)] svm_pointers: array of IntPtr; pfn_free_func: EnqueueSVMFree_Callback; user_data: IntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMFree'; static function EnqueueSVMFree(command_queue: cl_command_queue; num_svm_pointers: UInt32; svm_pointers: ^IntPtr; pfn_free_func: EnqueueSVMFree_Callback; user_data: pointer; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMFree'; static function EnqueueSVMFree(command_queue: cl_command_queue; num_svm_pointers: UInt32; svm_pointers: ^IntPtr; pfn_free_func: EnqueueSVMFree_Callback; user_data: pointer; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMFree'; static function EnqueueSVMMemcpy(command_queue: cl_command_queue; blocking_copy: cl_bool; dst_ptr: IntPtr; src_ptr: IntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMemcpy'; static function EnqueueSVMMemcpy(command_queue: cl_command_queue; blocking_copy: cl_bool; dst_ptr: IntPtr; src_ptr: IntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMemcpy'; static function EnqueueSVMMemFill(command_queue: cl_command_queue; svm_ptr: IntPtr; pattern: IntPtr; pattern_size: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMemFill'; static function EnqueueSVMMemFill(command_queue: cl_command_queue; svm_ptr: IntPtr; pattern: IntPtr; pattern_size: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMemFill'; static function EnqueueSVMMemFill(command_queue: cl_command_queue; svm_ptr: IntPtr; pattern: pointer; pattern_size: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMemFill'; static function EnqueueSVMMemFill(command_queue: cl_command_queue; svm_ptr: IntPtr; pattern: pointer; pattern_size: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMemFill'; static function EnqueueSVMMap(command_queue: cl_command_queue; blocking_map: cl_bool; flags: MapFlags; svm_ptr: IntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMap'; static function EnqueueSVMMap(command_queue: cl_command_queue; blocking_map: cl_bool; flags: MapFlags; svm_ptr: IntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMap'; static function EnqueueSVMUnmap(command_queue: cl_command_queue; svm_ptr: IntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMUnmap'; static function EnqueueSVMUnmap(command_queue: cl_command_queue; svm_ptr: IntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMUnmap'; static function EnqueueSVMMigrateMem(command_queue: cl_command_queue; num_svm_pointers: UInt32; [MarshalAs(UnmanagedType.LPArray)] svm_pointers: array of IntPtr; [MarshalAs(UnmanagedType.LPArray)] sizes: array of UIntPtr; flags: MemMigrationFlags; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMigrateMem'; static function EnqueueSVMMigrateMem(command_queue: cl_command_queue; num_svm_pointers: UInt32; [MarshalAs(UnmanagedType.LPArray)] svm_pointers: array of IntPtr; [MarshalAs(UnmanagedType.LPArray)] sizes: array of UIntPtr; flags: MemMigrationFlags; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMigrateMem'; static function EnqueueSVMMigrateMem(command_queue: cl_command_queue; num_svm_pointers: UInt32; svm_pointers: ^IntPtr; sizes: ^UIntPtr; flags: MemMigrationFlags; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMigrateMem'; static function EnqueueSVMMigrateMem(command_queue: cl_command_queue; num_svm_pointers: UInt32; svm_pointers: ^IntPtr; sizes: ^UIntPtr; flags: MemMigrationFlags; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMigrateMem'; {$endregion SVM} {$endregion cl_mem} {$region Sampler} static function CreateSamplerWithProperties(context: cl_context; [MarshalAs(UnmanagedType.LPArray)] sampler_properties: array of SamplerInfoType; var errcode_ret: ErrorCode): cl_sampler; external 'opencl.dll' name 'clCreateSamplerWithProperties'; static function CreateSamplerWithProperties(context: cl_context; sampler_properties: ^SamplerInfoType; errcode_ret: ^ErrorCode): cl_sampler; external 'opencl.dll' name 'clCreateSamplerWithProperties'; ///Эта функция устарела static function CreateSampler(context: cl_context; normalized_coords: cl_bool; addressing_mode: AddressingMode; filter_mode: FilterMode; var errcode_ret: ErrorCode): cl_sampler; external 'opencl.dll' name 'clCreateSampler'; ///Эта функция устарела static function CreateSampler(context: cl_context; normalized_coords: cl_bool; addressing_mode: AddressingMode; filter_mode: FilterMode; errcode_ret: ^ErrorCode): cl_sampler; external 'opencl.dll' name 'clCreateSampler'; static function RetainSampler(sampler: cl_sampler): ErrorCode; external 'opencl.dll' name 'clRetainSampler'; static function ReleaseSampler(sampler: cl_sampler): ErrorCode; external 'opencl.dll' name 'clReleaseSampler'; static function GetSamplerInfo(sampler: cl_sampler; param_name: SamplerInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetSamplerInfo'; static function GetSamplerInfo(sampler: cl_sampler; param_name: SamplerInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetSamplerInfo'; {$endregion Sampler} {$region Program} static function CreateProgramWithSource(context: cl_context; count: UInt32; [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPStr)] strings: array of string; [MarshalAs(UnmanagedType.LPArray)] lengths: array of UIntPtr; var errcode_ret: ErrorCode): cl_program; external 'opencl.dll' name 'clCreateProgramWithSource'; static function CreateProgramWithSource(context: cl_context; count: UInt32; strings: ^^char; lengths: ^UIntPtr; errcode_ret: ^ErrorCode): cl_program; external 'opencl.dll' name 'clCreateProgramWithSource'; static function CreateProgramWithIL(context: cl_context; il: IntPtr; length: UIntPtr; var errcode_ret: ErrorCode): cl_program; external 'opencl.dll' name 'clCreateProgramWithIL'; static function CreateProgramWithIL(context: cl_context; il: pointer; length: UIntPtr; errcode_ret: ^ErrorCode): cl_program; external 'opencl.dll' name 'clCreateProgramWithIL'; static function CreateProgramWithBinary(context: cl_context; num_devices: UInt32; [MarshalAs(UnmanagedType.LPArray)] device_list: array of cl_device_id; [MarshalAs(UnmanagedType.LPArray)] lengths: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPArray)] binaries: array of array of byte; [MarshalAs(UnmanagedType.LPArray)] binary_status: array of ErrorCode; var errcode_ret: ErrorCode): cl_program; external 'opencl.dll' name 'clCreateProgramWithBinary'; static function CreateProgramWithBinary(context: cl_context; num_devices: UInt32; [MarshalAs(UnmanagedType.LPArray)] device_list: array of cl_device_id; lengths: ^UIntPtr; binaries: ^^byte; binary_status: ^ErrorCode; errcode_ret: ^ErrorCode): cl_program; external 'opencl.dll' name 'clCreateProgramWithBinary'; static function CreateProgramWithBinary(context: cl_context; num_devices: UInt32; device_list: ^cl_device_id; [MarshalAs(UnmanagedType.LPArray)] lengths: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPArray)] binaries: array of array of byte; [MarshalAs(UnmanagedType.LPArray)] binary_status: array of ErrorCode; var errcode_ret: ErrorCode): cl_program; external 'opencl.dll' name 'clCreateProgramWithBinary'; static function CreateProgramWithBinary(context: cl_context; num_devices: UInt32; device_list: ^cl_device_id; lengths: ^UIntPtr; binaries: ^^byte; binary_status: ^ErrorCode; errcode_ret: ^ErrorCode): cl_program; external 'opencl.dll' name 'clCreateProgramWithBinary'; static function CreateProgramWithBuiltInKernels(context: cl_context; num_devices: UInt32; [MarshalAs(UnmanagedType.LPArray)] device_list: array of cl_device_id; [MarshalAs(UnmanagedType.LPStr)] kernel_names: string; var errcode_ret: ErrorCode): cl_program; external 'opencl.dll' name 'clCreateProgramWithBuiltInKernels'; static function CreateProgramWithBuiltInKernels(context: cl_context; num_devices: UInt32; [MarshalAs(UnmanagedType.LPArray)] device_list: array of cl_device_id; kernel_names: ^char; var errcode_ret: ErrorCode): cl_program; external 'opencl.dll' name 'clCreateProgramWithBuiltInKernels'; static function CreateProgramWithBuiltInKernels(context: cl_context; num_devices: UInt32; device_list: ^cl_device_id; [MarshalAs(UnmanagedType.LPStr)] kernel_names: string; errcode_ret: ^ErrorCode): cl_program; external 'opencl.dll' name 'clCreateProgramWithBuiltInKernels'; static function CreateProgramWithBuiltInKernels(context: cl_context; num_devices: UInt32; device_list: ^cl_device_id; kernel_names: ^char; errcode_ret: ^ErrorCode): cl_program; external 'opencl.dll' name 'clCreateProgramWithBuiltInKernels'; static function RetainProgram(&program: cl_program): ErrorCode; external 'opencl.dll' name 'clRetainProgram'; static function ReleaseProgram(&program: cl_program): ErrorCode; external 'opencl.dll' name 'clReleaseProgram'; static function SetProgramReleaseCallback(&program: cl_program; pfn_notify: Program_Callback; user_data: IntPtr): ErrorCode; external 'opencl.dll' name 'clSetProgramReleaseCallback'; static function SetProgramReleaseCallback(&program: cl_program; pfn_notify: Program_Callback; user_data: pointer): ErrorCode; external 'opencl.dll' name 'clSetProgramReleaseCallback'; static function SetProgramSpecializationConstant(&program: cl_program; spec_id: UInt32; spec_size: UIntPtr; spec_value: IntPtr): ErrorCode; external 'opencl.dll' name 'clSetProgramSpecializationConstant'; static function SetProgramSpecializationConstant(&program: cl_program; spec_id: UInt32; spec_size: UIntPtr; spec_value: pointer): ErrorCode; external 'opencl.dll' name 'clSetProgramSpecializationConstant'; static function BuildProgram(&program: cl_program; num_devices: UInt32; [MarshalAs(UnmanagedType.LPArray)] device_list: array of cl_device_id; [MarshalAs(UnmanagedType.LPStr)] options: string; pfn_notify: Program_Callback; user_data: IntPtr): ErrorCode; external 'opencl.dll' name 'clBuildProgram'; static function BuildProgram(&program: cl_program; num_devices: UInt32; device_list: ^cl_device_id; options: ^char; pfn_notify: Program_Callback; user_data: pointer): ErrorCode; external 'opencl.dll' name 'clBuildProgram'; static function CompileProgram(&program: cl_program; num_devices: UInt32; [MarshalAs(UnmanagedType.LPArray)] device_list: array of cl_device_id; [MarshalAs(UnmanagedType.LPStr)] options: string; num_input_headers: UInt32; [MarshalAs(UnmanagedType.LPArray)] input_headers: array of cl_program; [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPStr)] header_include_names: array of string; pfn_notify: Program_Callback; user_data: IntPtr): ErrorCode; external 'opencl.dll' name 'clCompileProgram'; static function CompileProgram(&program: cl_program; num_devices: UInt32; device_list: ^cl_device_id; options: ^char; num_input_headers: UInt32; input_headers: ^cl_program; header_include_names: ^^char; pfn_notify: Program_Callback; user_data: pointer): ErrorCode; external 'opencl.dll' name 'clCompileProgram'; static function LinkProgram(context: cl_context; num_devices: UInt32; [MarshalAs(UnmanagedType.LPArray)] device_list: array of cl_device_id; [MarshalAs(UnmanagedType.LPStr)] options: string; num_input_programs: UInt32; [MarshalAs(UnmanagedType.LPArray)] input_programs: array of cl_program; pfn_notify: Program_Callback; user_data: IntPtr; var errcode_ret: ErrorCode): cl_program; external 'opencl.dll' name 'clLinkProgram'; static function LinkProgram(context: cl_context; num_devices: UInt32; device_list: ^cl_device_id; options: ^char; num_input_programs: UInt32; input_programs: ^cl_program; pfn_notify: Program_Callback; user_data: pointer; errcode_ret: ^ErrorCode): cl_program; external 'opencl.dll' name 'clLinkProgram'; static function GetProgramInfo(&program: cl_program; param_name: ProgramInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetProgramInfo'; static function GetProgramInfo(&program: cl_program; param_name: ProgramInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetProgramInfo'; static function GetProgramBuildInfo(&program: cl_program; device: cl_device_id; param_name: ProgramBuildInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetProgramBuildInfo'; static function GetProgramBuildInfo(&program: cl_program; device: cl_device_id; param_name: ProgramBuildInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetProgramBuildInfo'; {$endregion Program} {$region Kernel} static function CreateKernel(&program: cl_program; [MarshalAs(UnmanagedType.LPStr)] kernel_name: string; var errcode_ret: ErrorCode): cl_kernel; external 'opencl.dll' name 'clCreateKernel'; static function CreateKernel(&program: cl_program; kernel_name: ^char; errcode_ret: ^ErrorCode): cl_kernel; external 'opencl.dll' name 'clCreateKernel'; static function CreateKernelsInProgram(&program: cl_program; num_kernels: UInt32; [MarshalAs(UnmanagedType.LPArray)] kernels: array of cl_kernel; var num_kernels_ret: UInt32): ErrorCode; external 'opencl.dll' name 'clCreateKernelsInProgram'; static function CreateKernelsInProgram(&program: cl_program; num_kernels: UInt32; kernels: ^cl_kernel; num_kernels_ret: ^UInt32): ErrorCode; external 'opencl.dll' name 'clCreateKernelsInProgram'; static function RetainKernel(kernel: cl_kernel): ErrorCode; external 'opencl.dll' name 'clRetainKernel'; static function ReleaseKernel(kernel: cl_kernel): ErrorCode; external 'opencl.dll' name 'clReleaseKernel'; static function SetKernelArg(kernel: cl_kernel; arg_index: UInt32; arg_size: UIntPtr; var arg_value: cl_mem): ErrorCode; external 'opencl.dll' name 'clSetKernelArg'; static function SetKernelArg(kernel: cl_kernel; arg_index: UInt32; arg_size: UIntPtr; arg_value: pointer): ErrorCode; external 'opencl.dll' name 'clSetKernelArg'; static function SetKernelArgSVMPointer(kernel: cl_kernel; arg_index: UInt32; arg_value: IntPtr): ErrorCode; external 'opencl.dll' name 'clSetKernelArgSVMPointer'; static function SetKernelArgSVMPointer(kernel: cl_kernel; arg_index: UInt32; arg_value: pointer): ErrorCode; external 'opencl.dll' name 'clSetKernelArgSVMPointer'; static function SetKernelExecInfo(kernel: cl_kernel; param_name: KernelExecInfoType; param_value_size: UIntPtr; param_value: pointer): ErrorCode; external 'opencl.dll' name 'clSetKernelExecInfo'; static function CloneKernel(source_kernel: cl_kernel; var errcode_ret: ErrorCode): cl_kernel; external 'opencl.dll' name 'clCloneKernel'; static function CloneKernel(source_kernel: cl_kernel; errcode_ret: ^ErrorCode): cl_kernel; external 'opencl.dll' name 'clCloneKernel'; static function GetKernelInfo(kernel: cl_kernel; param_name: KernelInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetKernelInfo'; static function GetKernelInfo(kernel: cl_kernel; param_name: KernelInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetKernelInfo'; static function GetKernelWorkGroupInfo(kernel: cl_kernel; device: cl_device_id; param_name: KernelWorkGroupInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetKernelWorkGroupInfo'; static function GetKernelWorkGroupInfo(kernel: cl_kernel; device: cl_device_id; param_name: KernelWorkGroupInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetKernelWorkGroupInfo'; static function GetKernelSubGroupInfo(kernel: cl_kernel; device: cl_device_id; param_name: KernelSubGroupInfoType; input_value_size: UIntPtr; input_value: pointer; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetKernelSubGroupInfo'; static function GetKernelSubGroupInfo(kernel: cl_kernel; device: cl_device_id; param_name: KernelSubGroupInfoType; input_value_size: UIntPtr; input_value: pointer; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetKernelSubGroupInfo'; static function GetKernelArgInfo(kernel: cl_kernel; arg_indx: UInt32; param_name: KernelArgInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetKernelArgInfo'; static function GetKernelArgInfo(kernel: cl_kernel; arg_indx: UInt32; param_name: KernelArgInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetKernelArgInfo'; static function EnqueueNDRangeKernel(command_queue: cl_command_queue; kernel: cl_kernel; work_dim: UInt32; [MarshalAs(UnmanagedType.LPArray)] global_work_offset: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] global_work_size: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] local_work_size: array of UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueNDRangeKernel'; static function EnqueueNDRangeKernel(command_queue: cl_command_queue; kernel: cl_kernel; work_dim: UInt32; [MarshalAs(UnmanagedType.LPArray)] global_work_offset: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] global_work_size: array of UIntPtr; [MarshalAs(UnmanagedType.LPArray)] local_work_size: array of UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueNDRangeKernel'; static function EnqueueNDRangeKernel(command_queue: cl_command_queue; kernel: cl_kernel; work_dim: UInt32; global_work_offset: ^UIntPtr; global_work_size: ^UIntPtr; local_work_size: ^UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueNDRangeKernel'; static function EnqueueNDRangeKernel(command_queue: cl_command_queue; kernel: cl_kernel; work_dim: UInt32; global_work_offset: ^UIntPtr; global_work_size: ^UIntPtr; local_work_size: ^UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueNDRangeKernel'; static function EnqueueNativeKernel(command_queue: cl_command_queue; user_func: EnqueueNativeKernel_Callback; args: pointer; cb_args: UIntPtr; num_mem_objects: UInt32; [MarshalAs(UnmanagedType.LPArray)] mem_list: array of cl_mem; [MarshalAs(UnmanagedType.LPArray)] args_mem_loc: array of IntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueNativeKernel'; static function EnqueueNativeKernel(command_queue: cl_command_queue; user_func: EnqueueNativeKernel_Callback; args: pointer; cb_args: UIntPtr; num_mem_objects: UInt32; mem_list: ^cl_mem; args_mem_loc: ^pointer; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueNativeKernel'; ///Эта функция устарела static function EnqueueTask(command_queue: cl_command_queue; kernel: cl_kernel; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueTask'; ///Эта функция устарела static function EnqueueTask(command_queue: cl_command_queue; kernel: cl_kernel; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueTask'; {$endregion Kernel} {$region Event} static function CreateUserEvent(context: cl_context; var errcode_ret: ErrorCode): cl_event; external 'opencl.dll' name 'clCreateUserEvent'; static function CreateUserEvent(context: cl_context; errcode_ret: ^ErrorCode): cl_event; external 'opencl.dll' name 'clCreateUserEvent'; static function SetUserEventStatus(&event: cl_event; execution_status: CommandExecutionStatus): ErrorCode; external 'opencl.dll' name 'clSetUserEventStatus'; static function WaitForEvents(num_events: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_list: array of cl_event): ErrorCode; external 'opencl.dll' name 'clWaitForEvents'; static function WaitForEvents(num_events: UInt32; event_list: ^cl_event): ErrorCode; external 'opencl.dll' name 'clWaitForEvents'; static function GetEventInfo(&event: cl_event; param_name: EventInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetEventInfo'; static function GetEventInfo(&event: cl_event; param_name: EventInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetEventInfo'; static function SetEventCallback(&event: cl_event; command_exec_callback_type: ErrorCode; pfn_notify: Event_Callback; user_data: pointer): ErrorCode; external 'opencl.dll' name 'clSetEventCallback'; static function RetainEvent(&event: cl_event): ErrorCode; external 'opencl.dll' name 'clRetainEvent'; static function ReleaseEvent(&event: cl_event): ErrorCode; external 'opencl.dll' name 'clReleaseEvent'; static function EnqueueMarkerWithWaitList(command_queue: cl_command_queue; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueMarkerWithWaitList'; static function EnqueueMarkerWithWaitList(command_queue: cl_command_queue; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueMarkerWithWaitList'; static function EnqueueBarrierWithWaitList(command_queue: cl_command_queue; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueBarrierWithWaitList'; static function EnqueueBarrierWithWaitList(command_queue: cl_command_queue; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueBarrierWithWaitList'; static function GetEventProfilingInfo(&event: cl_event; param_name: ProfilingInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetEventProfilingInfo'; static function GetEventProfilingInfo(&event: cl_event; param_name: ProfilingInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetEventProfilingInfo'; {$endregion Event} end; cl_ext = static class {$region Misc} static function TerminateContextKHR(context: cl_context): ErrorCode; external 'opencl.dll' name 'clTerminateContextKHR'; static function EnqueueAcquireGrallocObjectsIMG(command_queue: cl_command_queue; num_objects: UInt32; [MarshalAs(UnmanagedType.LPArray)] mem_objects: array of cl_mem; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueAcquireGrallocObjectsIMG'; static function EnqueueAcquireGrallocObjectsIMG(command_queue: cl_command_queue; num_objects: UInt32; [MarshalAs(UnmanagedType.LPArray)] mem_objects: array of cl_mem; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueAcquireGrallocObjectsIMG'; static function EnqueueAcquireGrallocObjectsIMG(command_queue: cl_command_queue; num_objects: UInt32; mem_objects: ^cl_mem; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueAcquireGrallocObjectsIMG'; static function EnqueueAcquireGrallocObjectsIMG(command_queue: cl_command_queue; num_objects: UInt32; mem_objects: ^cl_mem; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueAcquireGrallocObjectsIMG'; static function EnqueueReleaseGrallocObjectsIMG(command_queue: cl_command_queue; num_objects: UInt32; [MarshalAs(UnmanagedType.LPArray)] mem_objects: array of cl_mem; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueAcquireGrallocObjectsIMG'; static function EnqueueReleaseGrallocObjectsIMG(command_queue: cl_command_queue; num_objects: UInt32; [MarshalAs(UnmanagedType.LPArray)] mem_objects: array of cl_mem; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueAcquireGrallocObjectsIMG'; static function EnqueueReleaseGrallocObjectsIMG(command_queue: cl_command_queue; num_objects: UInt32; mem_objects: ^cl_mem; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueAcquireGrallocObjectsIMG'; static function EnqueueReleaseGrallocObjectsIMG(command_queue: cl_command_queue; num_objects: UInt32; mem_objects: ^cl_mem; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueAcquireGrallocObjectsIMG'; {$endregion Misc} {$region ARM} static function ImportMemoryARM(context: cl_context; flags: MemoryFlags; [MarshalAs(UnmanagedType.LPArray)] properties: array of ImportPropertiesARM; memory: IntPtr; size: UIntPtr; var errcode_ret: ErrorCode): cl_mem; external 'opencl.dll' name 'clImportMemoryARM'; static function ImportMemoryARM(context: cl_context; flags: MemoryFlags; properties: ^ImportPropertiesARM; memory: pointer; size: UIntPtr; errcode_ret: ^ErrorCode): cl_mem; external 'opencl.dll' name 'clImportMemoryARM'; static function SetKernelExecInfoARM(kernel: cl_kernel; param_name: KernelExecARMInfoType; param_value_size: UIntPtr; param_value: pointer): ErrorCode; external 'opencl.dll' name 'clSetKernelExecInfoARM'; static function SVMAllocARM(context: cl_context; flags: MemoryFlags; size: UIntPtr; alignment: UInt32): IntPtr; external 'opencl.dll' name 'clSVMAllocARM'; static procedure SVMFreeARM(context: cl_context; svm_pointer: IntPtr); external 'opencl.dll' name 'clSVMFreeARM'; static function EnqueueSVMFreeARM(command_queue: cl_command_queue; num_svm_pointers: UInt32; [MarshalAs(UnmanagedType.LPArray)] svm_pointers: array of IntPtr; pfn_free_func: EnqueueSVMFree_Callback; user_data: pointer; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMFreeARM'; static function EnqueueSVMFreeARM(command_queue: cl_command_queue; num_svm_pointers: UInt32; [MarshalAs(UnmanagedType.LPArray)] svm_pointers: array of IntPtr; pfn_free_func: EnqueueSVMFree_Callback; user_data: pointer; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMFreeARM'; static function EnqueueSVMFreeARM(command_queue: cl_command_queue; num_svm_pointers: UInt32; svm_pointers: ^IntPtr; pfn_free_func: EnqueueSVMFree_Callback; user_data: pointer; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMFreeARM'; static function EnqueueSVMFreeARM(command_queue: cl_command_queue; num_svm_pointers: UInt32; svm_pointers: ^IntPtr; pfn_free_func: EnqueueSVMFree_Callback; user_data: pointer; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMFreeARM'; static function EnqueueSVMMemcpyARM(command_queue: cl_command_queue; blocking_copy: cl_bool; dst_ptr: IntPtr; src_ptr: IntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMemcpyARM'; static function EnqueueSVMMemcpyARM(command_queue: cl_command_queue; blocking_copy: cl_bool; dst_ptr: IntPtr; src_ptr: IntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMemcpyARM'; static function EnqueueSVMMemcpyARM(command_queue: cl_command_queue; blocking_copy: cl_bool; dst_ptr: pointer; src_ptr: pointer; size: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMemcpyARM'; static function EnqueueSVMMemcpyARM(command_queue: cl_command_queue; blocking_copy: cl_bool; dst_ptr: pointer; src_ptr: pointer; size: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMemcpyARM'; static function EnqueueSVMMemFillARM(command_queue: cl_command_queue; svm_ptr: IntPtr; pattern: IntPtr; pattern_size: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMemFillARM'; static function EnqueueSVMMemFillARM(command_queue: cl_command_queue; svm_ptr: IntPtr; pattern: IntPtr; pattern_size: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMemFillARM'; static function EnqueueSVMMemFillARM(command_queue: cl_command_queue; svm_ptr: pointer; pattern: pointer; pattern_size: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMemFillARM'; static function EnqueueSVMMemFillARM(command_queue: cl_command_queue; svm_ptr: pointer; pattern: pointer; pattern_size: UIntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMemFillARM'; static function EnqueueSVMMapARM(command_queue: cl_command_queue; blocking_map: cl_bool; flags: MapFlags; svm_ptr: IntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMapARM'; static function EnqueueSVMMapARM(command_queue: cl_command_queue; blocking_map: cl_bool; flags: MapFlags; svm_ptr: IntPtr; size: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMapARM'; static function EnqueueSVMMapARM(command_queue: cl_command_queue; blocking_map: cl_bool; flags: MapFlags; svm_ptr: pointer; size: UIntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMapARM'; static function EnqueueSVMMapARM(command_queue: cl_command_queue; blocking_map: cl_bool; flags: MapFlags; svm_ptr: pointer; size: UIntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMMapARM'; static function EnqueueSVMUnmapARM(command_queue: cl_command_queue; svm_ptr: IntPtr; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMUnmapARM'; static function EnqueueSVMUnmapARM(command_queue: cl_command_queue; svm_ptr: IntPtr; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMUnmapARM'; static function EnqueueSVMUnmapARM(command_queue: cl_command_queue; svm_ptr: pointer; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMUnmapARM'; static function EnqueueSVMUnmapARM(command_queue: cl_command_queue; svm_ptr: pointer; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueSVMUnmapARM'; static function SetKernelArgSVMPointerARM(kernel: cl_kernel; arg_index: UInt32; arg_value: IntPtr): ErrorCode; external 'opencl.dll' name 'clSetKernelArgSVMPointerARM'; static function SetKernelArgSVMPointerARM(kernel: cl_kernel; arg_index: UInt32; arg_value: pointer): ErrorCode; external 'opencl.dll' name 'clSetKernelArgSVMPointerARM'; {$endregion ARM} end; cl_gl = static class {$region Buffer} static function CreateFromGLBuffer(context: cl_context; flags: MemoryFlags; bufobj: UInt32; var errcode_ret: ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateFromGLBuffer'; static function CreateFromGLBuffer(context: cl_context; flags: MemoryFlags; bufobj: UInt32; errcode_ret: ^ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateFromGLBuffer'; {$endregion Buffer} {$region RenderBuffer} static function CreateFromGLRenderbuffer(context: cl_context; flags: MemoryFlags; renderbuffer: UInt32; var errcode_ret: ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateFromGLRenderbuffer'; static function CreateFromGLRenderbuffer(context: cl_context; flags: MemoryFlags; renderbuffer: UInt32; errcode_ret: ^ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateFromGLRenderbuffer'; {$endregion RenderBuffer} {$region Texture} static function CreateFromGLTexture(context: cl_context; flags: MemoryFlags; target: UInt32; miplevel: Int32; texture: UInt32; var errcode_ret: ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateFromGLTexture'; static function CreateFromGLTexture(context: cl_context; flags: MemoryFlags; target: UInt32; miplevel: Int32; texture: UInt32; errcode_ret: ^ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateFromGLTexture'; static function CreateFromGLTexture2D(context: cl_context; flags: MemoryFlags; target: UInt32; miplevel: Int32; texture: UInt32; var errcode_ret: ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateFromGLTexture2D'; static function CreateFromGLTexture2D(context: cl_context; flags: MemoryFlags; target: UInt32; miplevel: Int32; texture: UInt32; errcode_ret: ^ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateFromGLTexture2D'; static function CreateFromGLTexture3D(context: cl_context; flags: MemoryFlags; target: UInt32; miplevel: Int32; texture: UInt32; var errcode_ret: ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateFromGLTexture3D'; static function CreateFromGLTexture3D(context: cl_context; flags: MemoryFlags; target: UInt32; miplevel: Int32; texture: UInt32; errcode_ret: ^ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateFromGLTexture3D'; static function GetGLTextureInfo(memobj: cl_mem; param_name: GLTextureInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetGLTextureInfo'; static function GetGLTextureInfo(memobj: cl_mem; param_name: GLTextureInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetGLTextureInfo'; {$endregion Texture} {$region Общее} static function GetGLContextInfoKHR([MarshalAs(UnmanagedType.LPArray)] properties: array of ContextProperties; param_name: GLContextInfoType; param_value_size: UIntPtr; param_value: pointer; var param_value_size_ret: UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetGLContextInfoKHR'; static function GetGLContextInfoKHR(properties: ^ContextProperties; param_name: GLContextInfoType; param_value_size: UIntPtr; param_value: pointer; param_value_size_ret: ^UIntPtr): ErrorCode; external 'opencl.dll' name 'clGetGLContextInfoKHR'; static function EnqueueAcquireGLObjects(command_queue: cl_command_queue; num_objects: UInt32; [MarshalAs(UnmanagedType.LPArray)] mem_objects: array of cl_mem; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueAcquireGLObjects'; static function EnqueueAcquireGLObjects(command_queue: cl_command_queue; num_objects: UInt32; [MarshalAs(UnmanagedType.LPArray)] mem_objects: array of cl_mem; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueAcquireGLObjects'; static function EnqueueAcquireGLObjects(command_queue: cl_command_queue; num_objects: UInt32; mem_objects: ^cl_mem; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueAcquireGLObjects'; static function EnqueueAcquireGLObjects(command_queue: cl_command_queue; num_objects: UInt32; mem_objects: ^cl_mem; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueAcquireGLObjects'; static function EnqueueReleaseGLObjects(command_queue: cl_command_queue; num_objects: UInt32; [MarshalAs(UnmanagedType.LPArray)] mem_objects: array of cl_mem; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReleaseGLObjects'; static function EnqueueReleaseGLObjects(command_queue: cl_command_queue; num_objects: UInt32; [MarshalAs(UnmanagedType.LPArray)] mem_objects: array of cl_mem; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReleaseGLObjects'; static function EnqueueReleaseGLObjects(command_queue: cl_command_queue; num_objects: UInt32; mem_objects: ^cl_mem; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReleaseGLObjects'; static function EnqueueReleaseGLObjects(command_queue: cl_command_queue; num_objects: UInt32; mem_objects: ^cl_mem; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReleaseGLObjects'; static function GetGLObjectInfo(memobj: cl_mem; var gl_object_type: GLObjectType; var gl_object_name: UInt32): ErrorCode; external 'opencl.dll' name 'clGetGLObjectInfo'; static function GetGLObjectInfo(memobj: cl_mem; gl_object_type: ^GLObjectType; gl_object_name: ^UInt32): ErrorCode; external 'opencl.dll' name 'clGetGLObjectInfo'; static function CreateEventFromGLsyncKHR(context: cl_context; cl_GLsync: IntPtr; var errcode_ret: ErrorCode): cl_event; external 'opencl.dll' name 'clCreateEventFromGLsyncKHR'; static function CreateEventFromGLsyncKHR(context: cl_context; cl_GLsync: IntPtr; errcode_ret: ^ErrorCode): cl_event; external 'opencl.dll' name 'clCreateEventFromGLsyncKHR'; {$endregion Общее} end; cl_egl = static class {$region Разное} static function CreateFromEGLImageKHR(context: cl_context; egldisplay: IntPtr; eglimage: IntPtr; flags: MemoryFlags; [MarshalAs(UnmanagedType.LPArray)] properties: array of IntPtr; var errcode_ret: ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateFromEGLImageKHR'; static function CreateFromEGLImageKHR(context: cl_context; egldisplay: IntPtr; eglimage: IntPtr; flags: MemoryFlags; properties: ^IntPtr; errcode_ret: ^ErrorCode): cl_mem; external 'opencl.dll' name 'clCreateFromEGLImageKHR'; static function EnqueueAcquireEGLObjectsKHR(command_queue: cl_command_queue; num_objects: UInt32; [MarshalAs(UnmanagedType.LPArray)] mem_objects: array of cl_mem; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueAcquireEGLObjectsKHR'; static function EnqueueAcquireEGLObjectsKHR(command_queue: cl_command_queue; num_objects: UInt32; [MarshalAs(UnmanagedType.LPArray)] mem_objects: array of cl_mem; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueAcquireEGLObjectsKHR'; static function EnqueueAcquireEGLObjectsKHR(command_queue: cl_command_queue; num_objects: UInt32; mem_objects: ^cl_mem; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueAcquireEGLObjectsKHR'; static function EnqueueAcquireEGLObjectsKHR(command_queue: cl_command_queue; num_objects: UInt32; mem_objects: ^cl_mem; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueAcquireEGLObjectsKHR'; static function EnqueueReleaseEGLObjectsKHR(command_queue: cl_command_queue; num_objects: UInt32; [MarshalAs(UnmanagedType.LPArray)] mem_objects: array of cl_mem; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReleaseEGLObjectsKHR'; static function EnqueueReleaseEGLObjectsKHR(command_queue: cl_command_queue; num_objects: UInt32; [MarshalAs(UnmanagedType.LPArray)] mem_objects: array of cl_mem; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReleaseEGLObjectsKHR'; static function EnqueueReleaseEGLObjectsKHR(command_queue: cl_command_queue; num_objects: UInt32; mem_objects: ^cl_mem; num_events_in_wait_list: UInt32; [MarshalAs(UnmanagedType.LPArray)] event_wait_list: array of cl_event; var &event: cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReleaseEGLObjectsKHR'; static function EnqueueReleaseEGLObjectsKHR(command_queue: cl_command_queue; num_objects: UInt32; mem_objects: ^cl_mem; num_events_in_wait_list: UInt32; event_wait_list: ^cl_event; &event: ^cl_event): ErrorCode; external 'opencl.dll' name 'clEnqueueReleaseEGLObjectsKHR'; static function CreateEventFromEGLSyncKHR(context: cl_context; sync: IntPtr; display: IntPtr; var errcode_ret: ErrorCode): cl_event; external 'opencl.dll' name 'clCreateEventFromEGLSyncKHR'; static function CreateEventFromEGLSyncKHR(context: cl_context; sync: IntPtr; display: IntPtr; errcode_ret: ^ErrorCode): cl_event; external 'opencl.dll' name 'clCreateEventFromEGLSyncKHR'; {$endregion Разное} end; end.