cl_sys/
lib.rs

1//! FFI bindings for OpenCL.
2//!
3//! For low level API access with Rust's safety and convenience, use the
4//! extremely lightweight functions and types in the [ocl-core] crate.
5//!
6//! See [ocl-core] for usage examples.
7//!
8//! [ocl-core]: https://github.com/cogciprocate/ocl-core
9
10pub extern crate libc;
11
12mod cl_d3d10_h;
13mod cl_d3d11_h;
14mod cl_dx9_media_sharing_h;
15mod cl_egl_h;
16mod cl_gl_ext_h;
17mod cl_gl_h;
18mod cl_h;
19mod glcorearb_h;
20mod platform_h;
21
22pub use libc::{
23    c_char, c_double, c_float, c_int, c_longlong, c_short, c_uchar, c_uint, c_ulonglong, c_ushort,
24    c_void, size_t,
25};
26
27pub use self::platform_h::{cl_GLenum, cl_GLint, cl_GLuint};
28
29pub use self::glcorearb_h::{
30    GL_TEXTURE_1D, GL_TEXTURE_1D_ARRAY, GL_TEXTURE_2D, GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D,
31    GL_TEXTURE_BUFFER, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
32    GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
33    GL_TEXTURE_CUBE_MAP_POSITIVE_Z, GL_TEXTURE_RECTANGLE,
34};
35
36pub use self::cl_gl_h::{
37    cl_gl_context_info, cl_gl_object_type, cl_gl_platform_info, cl_gl_texture_info,
38};
39
40pub use self::cl_gl_h::{
41    CL_CGL_SHAREGROUP_KHR, CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR, CL_DEVICES_FOR_GL_CONTEXT_KHR,
42    CL_EGL_DISPLAY_KHR, CL_GLX_DISPLAY_KHR, CL_GL_CONTEXT_KHR, CL_GL_MIPMAP_LEVEL,
43    CL_GL_NUM_SAMPLES, CL_GL_OBJECT_BUFFER, CL_GL_OBJECT_RENDERBUFFER, CL_GL_OBJECT_TEXTURE1D,
44    CL_GL_OBJECT_TEXTURE1D_ARRAY, CL_GL_OBJECT_TEXTURE2D, CL_GL_OBJECT_TEXTURE2D_ARRAY,
45    CL_GL_OBJECT_TEXTURE3D, CL_GL_OBJECT_TEXTURE_BUFFER, CL_GL_TEXTURE_TARGET,
46    CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR, CL_KHR_GL_SHARING, CL_WGL_HDC_KHR,
47};
48
49#[cfg(not(feature = "opencl_vendor_mesa"))]
50pub use self::cl_gl_h::{
51    clCreateFromGLBuffer, clCreateFromGLRenderbuffer, clCreateFromGLTexture,
52    clCreateFromGLTexture2D, clCreateFromGLTexture3D, clEnqueueAcquireGLObjects,
53    clEnqueueReleaseGLObjects, clGetGLContextInfoKHR, clGetGLContextInfoKHR_fn, clGetGLObjectInfo,
54    clGetGLTextureInfo,
55};
56
57pub use self::cl_egl_h::{
58    cl_egl_image_properties_khr, CLeglDisplayKHR, CLeglImageKHR, CLeglSyncKHR,
59};
60
61pub use self::cl_gl_ext_h::CL_CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE;
62
63pub use self::cl_d3d10_h::{
64    cl_d3d10_device_set_khr, cl_d3d10_device_source_khr, CL_CONTEXT_D3D10_DEVICE_KHR,
65};
66
67pub use self::cl_dx9_media_sharing_h::{
68    CL_CONTEXT_ADAPTER_D3D9EX_KHR, CL_CONTEXT_ADAPTER_D3D9_KHR, CL_CONTEXT_ADAPTER_DXVA_KHR,
69};
70
71pub use self::cl_d3d11_h::{
72    clCreateFromD3D11Buffer_fn, clCreateFromD3D11Texture2D_fn, clCreateFromD3D11Texture3D_fn,
73    clEnqueueAcquireD3D11Objects_fn, clEnqueueReleaseD3D11Objects_fn, clGetDeviceIDsFromD3D11_fn,
74    cl_d3d11_device_set, cl_d3d11_device_source, cl_id3d11_buffer, cl_id3d11_texture2d,
75    cl_id3d11_texture3d, CL_CONTEXT_D3D11_DEVICE_KHR,
76};
77
78// Types:
79pub use self::cl_h::{
80    cl_addressing_mode, cl_bitfield, cl_bool, cl_buffer_create_type, cl_build_status,
81    cl_channel_order, cl_channel_type, cl_char, cl_command_queue, cl_command_queue_info,
82    cl_command_queue_properties, cl_command_type, cl_context, cl_context_info,
83    cl_context_properties, cl_device_affinity_domain, cl_device_exec_capabilities,
84    cl_device_fp_config, cl_device_id, cl_device_info, cl_device_local_mem_type,
85    cl_device_mem_cache_type, cl_device_partition_property, cl_device_svm_capabilities,
86    cl_device_type, cl_double, cl_event, cl_event_info, cl_filter_mode, cl_float, cl_half,
87    cl_image_info, cl_int, cl_kernel, cl_kernel_arg_access_qualifier,
88    cl_kernel_arg_address_qualifier, cl_kernel_arg_info, cl_kernel_arg_type_qualifier,
89    cl_kernel_exec_info, cl_kernel_info, cl_kernel_sub_group_info, cl_kernel_work_group_info,
90    cl_long, cl_map_flags, cl_mem, cl_mem_flags, cl_mem_info, cl_mem_migration_flags,
91    cl_mem_object_type, cl_pipe_info, cl_pipe_properties, cl_platform_id, cl_platform_info,
92    cl_profiling_info, cl_program, cl_program_binary_type, cl_program_build_info, cl_program_info,
93    cl_queue_properties, cl_sampler, cl_sampler_info, cl_sampler_properties, cl_short,
94    cl_svm_mem_flags, cl_uchar, cl_uint, cl_ulong, cl_ushort,
95};
96
97// Structs:
98pub use self::cl_h::{cl_buffer_region, cl_image_desc, cl_image_format};
99
100// Consts:
101pub use self::cl_h::{
102    CL_BUILD_PROGRAM_FAILURE, CL_COMPILER_NOT_AVAILABLE, CL_COMPILE_PROGRAM_FAILURE,
103    CL_DEVICE_NOT_AVAILABLE, CL_DEVICE_NOT_FOUND, CL_DEVICE_PARTITION_FAILED,
104    CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST, CL_IMAGE_FORMAT_MISMATCH,
105    CL_IMAGE_FORMAT_NOT_SUPPORTED, CL_INVALID_ARG_INDEX, CL_INVALID_ARG_SIZE, CL_INVALID_ARG_VALUE,
106    CL_INVALID_BINARY, CL_INVALID_BUFFER_SIZE, CL_INVALID_BUILD_OPTIONS, CL_INVALID_COMMAND_QUEUE,
107    CL_INVALID_COMPILER_OPTIONS, CL_INVALID_CONTEXT, CL_INVALID_DEVICE,
108    CL_INVALID_DEVICE_PARTITION_COUNT, CL_INVALID_DEVICE_QUEUE, CL_INVALID_DEVICE_TYPE,
109    CL_INVALID_EVENT, CL_INVALID_EVENT_WAIT_LIST, CL_INVALID_GLOBAL_OFFSET,
110    CL_INVALID_GLOBAL_WORK_SIZE, CL_INVALID_GL_OBJECT, CL_INVALID_HOST_PTR,
111    CL_INVALID_IMAGE_DESCRIPTOR, CL_INVALID_IMAGE_FORMAT_DESCRIPTOR, CL_INVALID_IMAGE_SIZE,
112    CL_INVALID_KERNEL, CL_INVALID_KERNEL_ARGS, CL_INVALID_KERNEL_DEFINITION,
113    CL_INVALID_KERNEL_NAME, CL_INVALID_LINKER_OPTIONS, CL_INVALID_MEM_OBJECT, CL_INVALID_MIP_LEVEL,
114    CL_INVALID_OPERATION, CL_INVALID_PIPE_SIZE, CL_INVALID_PLATFORM, CL_INVALID_PROGRAM,
115    CL_INVALID_PROGRAM_EXECUTABLE, CL_INVALID_PROPERTY, CL_INVALID_QUEUE_PROPERTIES,
116    CL_INVALID_SAMPLER, CL_INVALID_VALUE, CL_INVALID_WORK_DIMENSION, CL_INVALID_WORK_GROUP_SIZE,
117    CL_INVALID_WORK_ITEM_SIZE, CL_KERNEL_ARG_INFO_NOT_AVAILABLE, CL_LINKER_NOT_AVAILABLE,
118    CL_LINK_PROGRAM_FAILURE, CL_MAP_FAILURE, CL_MEM_COPY_OVERLAP, CL_MEM_OBJECT_ALLOCATION_FAILURE,
119    CL_MISALIGNED_SUB_BUFFER_OFFSET, CL_OUT_OF_HOST_MEMORY, CL_OUT_OF_RESOURCES,
120    CL_PLATFORM_NOT_FOUND_KHR, CL_PROFILING_INFO_NOT_AVAILABLE, CL_SUCCESS,
121};
122
123pub use self::cl_h::{
124    CL_RGBx, CL_RGx, CL_Rx, CL_sBGRA, CL_sRGB, CL_sRGBA, CL_sRGBx, CL_A, CL_ABGR, CL_ADDRESS_CLAMP,
125    CL_ADDRESS_CLAMP_TO_EDGE, CL_ADDRESS_MIRRORED_REPEAT, CL_ADDRESS_NONE, CL_ADDRESS_REPEAT,
126    CL_ARGB, CL_BGRA, CL_BLOCKING, CL_BUFFER_CREATE_TYPE_REGION, CL_BUILD_ERROR,
127    CL_BUILD_IN_PROGRESS, CL_BUILD_NONE, CL_BUILD_SUCCESS, CL_COMMAND_ACQUIRE_GL_OBJECTS,
128    CL_COMMAND_BARRIER, CL_COMMAND_COPY_BUFFER, CL_COMMAND_COPY_BUFFER_RECT,
129    CL_COMMAND_COPY_BUFFER_TO_IMAGE, CL_COMMAND_COPY_IMAGE, CL_COMMAND_COPY_IMAGE_TO_BUFFER,
130    CL_COMMAND_FILL_BUFFER, CL_COMMAND_FILL_IMAGE, CL_COMMAND_MAP_BUFFER, CL_COMMAND_MAP_IMAGE,
131    CL_COMMAND_MARKER, CL_COMMAND_MIGRATE_MEM_OBJECTS, CL_COMMAND_NATIVE_KERNEL,
132    CL_COMMAND_NDRANGE_KERNEL, CL_COMMAND_READ_BUFFER, CL_COMMAND_READ_BUFFER_RECT,
133    CL_COMMAND_READ_IMAGE, CL_COMMAND_RELEASE_GL_OBJECTS, CL_COMMAND_SVM_FREE, CL_COMMAND_SVM_MAP,
134    CL_COMMAND_SVM_MEMCPY, CL_COMMAND_SVM_MEMFILL, CL_COMMAND_SVM_UNMAP, CL_COMMAND_TASK,
135    CL_COMMAND_UNMAP_MEM_OBJECT, CL_COMMAND_USER, CL_COMMAND_WRITE_BUFFER,
136    CL_COMMAND_WRITE_BUFFER_RECT, CL_COMMAND_WRITE_IMAGE, CL_COMPLETE, CL_CONTEXT_DEVICES,
137    CL_CONTEXT_INTEROP_USER_SYNC, CL_CONTEXT_NUM_DEVICES, CL_CONTEXT_PLATFORM,
138    CL_CONTEXT_PROPERTIES, CL_CONTEXT_REFERENCE_COUNT, CL_DEPTH, CL_DEPTH_STENCIL,
139    CL_DEVICE_ADDRESS_BITS, CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE, CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE,
140    CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE, CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE,
141    CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE, CL_DEVICE_AFFINITY_DOMAIN_NUMA,
142    CL_DEVICE_AVAILABLE, CL_DEVICE_BUILT_IN_KERNELS, CL_DEVICE_COMPILER_AVAILABLE,
143    CL_DEVICE_DOUBLE_FP_CONFIG, CL_DEVICE_ENDIAN_LITTLE, CL_DEVICE_ERROR_CORRECTION_SUPPORT,
144    CL_DEVICE_EXECUTION_CAPABILITIES, CL_DEVICE_EXTENSIONS, CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE,
145    CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, CL_DEVICE_GLOBAL_MEM_CACHE_TYPE, CL_DEVICE_GLOBAL_MEM_SIZE,
146    CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE, CL_DEVICE_HALF_FP_CONFIG,
147    CL_DEVICE_HOST_UNIFIED_MEMORY, CL_DEVICE_IL_VERSION, CL_DEVICE_IMAGE2D_MAX_HEIGHT,
148    CL_DEVICE_IMAGE2D_MAX_WIDTH, CL_DEVICE_IMAGE3D_MAX_DEPTH, CL_DEVICE_IMAGE3D_MAX_HEIGHT,
149    CL_DEVICE_IMAGE3D_MAX_WIDTH, CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT,
150    CL_DEVICE_IMAGE_MAX_ARRAY_SIZE, CL_DEVICE_IMAGE_MAX_BUFFER_SIZE,
151    CL_DEVICE_IMAGE_PITCH_ALIGNMENT, CL_DEVICE_IMAGE_SUPPORT, CL_DEVICE_LINKER_AVAILABLE,
152    CL_DEVICE_LOCAL_MEM_SIZE, CL_DEVICE_LOCAL_MEM_TYPE, CL_DEVICE_MAX_CLOCK_FREQUENCY,
153    CL_DEVICE_MAX_COMPUTE_UNITS, CL_DEVICE_MAX_CONSTANT_ARGS, CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE,
154    CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE, CL_DEVICE_MAX_MEM_ALLOC_SIZE, CL_DEVICE_MAX_NUM_SUB_GROUPS,
155    CL_DEVICE_MAX_ON_DEVICE_EVENTS, CL_DEVICE_MAX_ON_DEVICE_QUEUES, CL_DEVICE_MAX_PARAMETER_SIZE,
156    CL_DEVICE_MAX_PIPE_ARGS, CL_DEVICE_MAX_READ_IMAGE_ARGS, CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS,
157    CL_DEVICE_MAX_SAMPLERS, CL_DEVICE_MAX_WORK_GROUP_SIZE, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS,
158    CL_DEVICE_MAX_WORK_ITEM_SIZES, CL_DEVICE_MAX_WRITE_IMAGE_ARGS, CL_DEVICE_MEM_BASE_ADDR_ALIGN,
159    CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE, CL_DEVICE_NAME, CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR,
160    CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE, CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT,
161    CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT,
162    CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG, CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT,
163    CL_DEVICE_OPENCL_C_VERSION, CL_DEVICE_PARENT_DEVICE, CL_DEVICE_PARTITION_AFFINITY_DOMAIN,
164    CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN, CL_DEVICE_PARTITION_BY_COUNTS,
165    CL_DEVICE_PARTITION_BY_COUNTS_LIST_END, CL_DEVICE_PARTITION_EQUALLY,
166    CL_DEVICE_PARTITION_MAX_SUB_DEVICES, CL_DEVICE_PARTITION_PROPERTIES, CL_DEVICE_PARTITION_TYPE,
167    CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS, CL_DEVICE_PIPE_MAX_PACKET_SIZE, CL_DEVICE_PLATFORM,
168    CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT, CL_DEVICE_PREFERRED_INTEROP_USER_SYNC,
169    CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT, CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT,
170    CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR, CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE,
171    CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF,
172    CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG,
173    CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT, CL_DEVICE_PRINTF_BUFFER_SIZE, CL_DEVICE_PROFILE,
174    CL_DEVICE_PROFILING_TIMER_RESOLUTION, CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE,
175    CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE, CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES,
176    CL_DEVICE_QUEUE_ON_HOST_PROPERTIES, CL_DEVICE_QUEUE_PROPERTIES, CL_DEVICE_REFERENCE_COUNT,
177    CL_DEVICE_SINGLE_FP_CONFIG, CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS,
178    CL_DEVICE_SVM_ATOMICS, CL_DEVICE_SVM_CAPABILITIES, CL_DEVICE_SVM_COARSE_GRAIN_BUFFER,
179    CL_DEVICE_SVM_FINE_GRAIN_BUFFER, CL_DEVICE_SVM_FINE_GRAIN_SYSTEM, CL_DEVICE_TYPE,
180    CL_DEVICE_TYPE_ACCELERATOR, CL_DEVICE_TYPE_ALL, CL_DEVICE_TYPE_CPU, CL_DEVICE_TYPE_CUSTOM,
181    CL_DEVICE_TYPE_DEFAULT, CL_DEVICE_TYPE_GPU, CL_DEVICE_VENDOR, CL_DEVICE_VENDOR_ID,
182    CL_DEVICE_VERSION, CL_DRIVER_VERSION, CL_EVENT_COMMAND_EXECUTION_STATUS,
183    CL_EVENT_COMMAND_QUEUE, CL_EVENT_COMMAND_TYPE, CL_EVENT_CONTEXT, CL_EVENT_REFERENCE_COUNT,
184    CL_EXEC_KERNEL, CL_EXEC_NATIVE_KERNEL, CL_FALSE, CL_FILTER_LINEAR, CL_FILTER_NEAREST, CL_FLOAT,
185    CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT, CL_FP_DENORM, CL_FP_FMA, CL_FP_INF_NAN,
186    CL_FP_ROUND_TO_INF, CL_FP_ROUND_TO_NEAREST, CL_FP_ROUND_TO_ZERO, CL_FP_SOFT_FLOAT, CL_GLOBAL,
187    CL_HALF_FLOAT, CL_IMAGE_ARRAY_SIZE, CL_IMAGE_BUFFER, CL_IMAGE_DEPTH, CL_IMAGE_ELEMENT_SIZE,
188    CL_IMAGE_FORMAT, CL_IMAGE_HEIGHT, CL_IMAGE_NUM_MIP_LEVELS, CL_IMAGE_NUM_SAMPLES,
189    CL_IMAGE_ROW_PITCH, CL_IMAGE_SLICE_PITCH, CL_IMAGE_WIDTH, CL_INTENSITY,
190    CL_KERNEL_ARG_ACCESS_NONE, CL_KERNEL_ARG_ACCESS_QUALIFIER, CL_KERNEL_ARG_ACCESS_READ_ONLY,
191    CL_KERNEL_ARG_ACCESS_READ_WRITE, CL_KERNEL_ARG_ACCESS_WRITE_ONLY,
192    CL_KERNEL_ARG_ADDRESS_CONSTANT, CL_KERNEL_ARG_ADDRESS_GLOBAL, CL_KERNEL_ARG_ADDRESS_LOCAL,
193    CL_KERNEL_ARG_ADDRESS_PRIVATE, CL_KERNEL_ARG_ADDRESS_QUALIFIER, CL_KERNEL_ARG_NAME,
194    CL_KERNEL_ARG_TYPE_CONST, CL_KERNEL_ARG_TYPE_NAME, CL_KERNEL_ARG_TYPE_NONE,
195    CL_KERNEL_ARG_TYPE_PIPE, CL_KERNEL_ARG_TYPE_QUALIFIER, CL_KERNEL_ARG_TYPE_RESTRICT,
196    CL_KERNEL_ARG_TYPE_VOLATILE, CL_KERNEL_ATTRIBUTES, CL_KERNEL_COMPILE_NUM_SUB_GROUPS,
197    CL_KERNEL_COMPILE_WORK_GROUP_SIZE, CL_KERNEL_CONTEXT,
198    CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM, CL_KERNEL_EXEC_INFO_SVM_PTRS,
199    CL_KERNEL_FUNCTION_NAME, CL_KERNEL_GLOBAL_WORK_SIZE, CL_KERNEL_LOCAL_MEM_SIZE,
200    CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT, CL_KERNEL_MAX_NUM_SUB_GROUPS,
201    CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE, CL_KERNEL_NUM_ARGS,
202    CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE, CL_KERNEL_PRIVATE_MEM_SIZE, CL_KERNEL_PROGRAM,
203    CL_KERNEL_REFERENCE_COUNT, CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE, CL_KERNEL_WORK_GROUP_SIZE,
204    CL_LOCAL, CL_LUMINANCE, CL_MAP_READ, CL_MAP_WRITE, CL_MAP_WRITE_INVALIDATE_REGION,
205    CL_MEM_ALLOC_HOST_PTR, CL_MEM_ASSOCIATED_MEMOBJECT, CL_MEM_CONTEXT, CL_MEM_COPY_HOST_PTR,
206    CL_MEM_FLAGS, CL_MEM_HOST_NO_ACCESS, CL_MEM_HOST_PTR, CL_MEM_HOST_READ_ONLY,
207    CL_MEM_HOST_WRITE_ONLY, CL_MEM_KERNEL_READ_AND_WRITE, CL_MEM_MAP_COUNT, CL_MEM_OBJECT_BUFFER,
208    CL_MEM_OBJECT_IMAGE1D, CL_MEM_OBJECT_IMAGE1D_ARRAY, CL_MEM_OBJECT_IMAGE1D_BUFFER,
209    CL_MEM_OBJECT_IMAGE2D, CL_MEM_OBJECT_IMAGE2D_ARRAY, CL_MEM_OBJECT_IMAGE3D, CL_MEM_OBJECT_PIPE,
210    CL_MEM_OFFSET, CL_MEM_READ_ONLY, CL_MEM_READ_WRITE, CL_MEM_REFERENCE_COUNT, CL_MEM_SIZE,
211    CL_MEM_SVM_ATOMICS, CL_MEM_SVM_FINE_GRAIN_BUFFER, CL_MEM_TYPE, CL_MEM_USES_SVM_POINTER,
212    CL_MEM_USE_HOST_PTR, CL_MEM_WRITE_ONLY, CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED,
213    CL_MIGRATE_MEM_OBJECT_HOST, CL_NONE, CL_NON_BLOCKING, CL_PIPE_MAX_PACKETS, CL_PIPE_PACKET_SIZE,
214    CL_PLATFORM_EXTENSIONS, CL_PLATFORM_HOST_TIMER_RESOLUTION, CL_PLATFORM_NAME,
215    CL_PLATFORM_PROFILE, CL_PLATFORM_VENDOR, CL_PLATFORM_VERSION, CL_PROFILING_COMMAND_COMPLETE,
216    CL_PROFILING_COMMAND_END, CL_PROFILING_COMMAND_QUEUED, CL_PROFILING_COMMAND_START,
217    CL_PROFILING_COMMAND_SUBMIT, CL_PROGRAM_BINARIES, CL_PROGRAM_BINARY_SIZES,
218    CL_PROGRAM_BINARY_TYPE, CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT,
219    CL_PROGRAM_BINARY_TYPE_EXECUTABLE, CL_PROGRAM_BINARY_TYPE_LIBRARY, CL_PROGRAM_BINARY_TYPE_NONE,
220    CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE, CL_PROGRAM_BUILD_LOG, CL_PROGRAM_BUILD_OPTIONS,
221    CL_PROGRAM_BUILD_STATUS, CL_PROGRAM_CONTEXT, CL_PROGRAM_DEVICES, CL_PROGRAM_IL,
222    CL_PROGRAM_KERNEL_NAMES, CL_PROGRAM_NUM_DEVICES, CL_PROGRAM_NUM_KERNELS,
223    CL_PROGRAM_REFERENCE_COUNT, CL_PROGRAM_SOURCE, CL_QUEUED, CL_QUEUE_CONTEXT, CL_QUEUE_DEVICE,
224    CL_QUEUE_DEVICE_DEFAULT, CL_QUEUE_ON_DEVICE, CL_QUEUE_ON_DEVICE_DEFAULT,
225    CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE, CL_QUEUE_PROFILING_ENABLE, CL_QUEUE_PROPERTIES,
226    CL_QUEUE_REFERENCE_COUNT, CL_QUEUE_SIZE, CL_R, CL_RA, CL_READ_ONLY_CACHE, CL_READ_WRITE_CACHE,
227    CL_RG, CL_RGB, CL_RGBA, CL_RUNNING, CL_SAMPLER_ADDRESSING_MODE, CL_SAMPLER_CONTEXT,
228    CL_SAMPLER_FILTER_MODE, CL_SAMPLER_LOD_MAX, CL_SAMPLER_LOD_MIN, CL_SAMPLER_MIP_FILTER_MODE,
229    CL_SAMPLER_NORMALIZED_COORDS, CL_SAMPLER_REFERENCE_COUNT, CL_SIGNED_INT16, CL_SIGNED_INT32,
230    CL_SIGNED_INT8, CL_SNORM_INT16, CL_SNORM_INT8, CL_SUBMITTED, CL_TRUE, CL_UNORM_INT16,
231    CL_UNORM_INT24, CL_UNORM_INT8, CL_UNORM_INT_101010, CL_UNORM_INT_101010_2, CL_UNORM_SHORT_555,
232    CL_UNORM_SHORT_565, CL_UNSIGNED_INT16, CL_UNSIGNED_INT32, CL_UNSIGNED_INT8, CL_VERSION_1_0,
233    CL_VERSION_1_1, CL_VERSION_1_2, CL_VERSION_2_0, CL_VERSION_2_1,
234};
235
236// Functions:
237pub use self::cl_h::{
238    clBuildProgram, clCreateBuffer, clCreateCommandQueue, clCreateContext, clCreateContextFromType,
239    clCreateImage2D, clCreateImage3D, clCreateKernel, clCreateKernelsInProgram,
240    clCreateProgramWithBinary, clCreateProgramWithSource, clCreateSampler, clCreateSubBuffer,
241    clCreateUserEvent, clEnqueueBarrier, clEnqueueCopyBuffer, clEnqueueCopyBufferRect,
242    clEnqueueCopyBufferToImage, clEnqueueCopyImage, clEnqueueCopyImageToBuffer, clEnqueueMapBuffer,
243    clEnqueueMapImage, clEnqueueMarker, clEnqueueNDRangeKernel, clEnqueueNativeKernel,
244    clEnqueueReadBuffer, clEnqueueReadBufferRect, clEnqueueReadImage, clEnqueueTask,
245    clEnqueueUnmapMemObject, clEnqueueWaitForEvents, clEnqueueWriteBuffer,
246    clEnqueueWriteBufferRect, clEnqueueWriteImage, clFinish, clFlush, clGetCommandQueueInfo,
247    clGetContextInfo, clGetDeviceIDs, clGetDeviceInfo, clGetEventInfo, clGetEventProfilingInfo,
248    clGetExtensionFunctionAddress, clGetImageInfo, clGetKernelInfo, clGetKernelWorkGroupInfo,
249    clGetMemObjectInfo, clGetPlatformIDs, clGetPlatformInfo, clGetProgramBuildInfo,
250    clGetProgramInfo, clGetSamplerInfo, clGetSupportedImageFormats, clReleaseCommandQueue,
251    clReleaseContext, clReleaseEvent, clReleaseKernel, clReleaseMemObject, clReleaseProgram,
252    clReleaseSampler, clRetainCommandQueue, clRetainContext, clRetainEvent, clRetainKernel,
253    clRetainMemObject, clRetainProgram, clRetainSampler, clSetEventCallback, clSetKernelArg,
254    clSetMemObjectDestructorCallback, clSetUserEventStatus, clUnloadCompiler, clWaitForEvents,
255};
256
257#[cfg(feature = "opencl_version_1_2")]
258pub use self::cl_h::{
259    clCompileProgram, clCreateImage, clCreateProgramWithBuiltInKernels, clCreateSubDevices,
260    clEnqueueBarrierWithWaitList, clEnqueueFillBuffer, clEnqueueFillImage,
261    clEnqueueMarkerWithWaitList, clEnqueueMigrateMemObjects,
262    clGetExtensionFunctionAddressForPlatform, clGetKernelArgInfo, clLinkProgram, clReleaseDevice,
263    clRetainDevice,
264};
265
266#[cfg(feature = "opencl_version_2_0")]
267pub use self::cl_h::{
268    clCreateCommandQueueWithProperties, clCreatePipe, clCreateSamplerWithProperties,
269    clEnqueueSVMFree, clEnqueueSVMMap, clEnqueueSVMMemFill, clEnqueueSVMMemcpy, clEnqueueSVMUnmap,
270    clGetPipeInfo, clSVMAlloc, clSVMFree, clSetKernelArgSVMPointer, clSetKernelExecInfo,
271};
272
273#[cfg(feature = "opencl_version_2_1")]
274pub use self::cl_h::{
275    clCloneKernel, clCreateProgramWithIL, clEnqueueSVMMigrateMem, clGetDeviceAndHostTimer,
276    clGetHostTimer, clGetKernelSubGroupInfo, clSetDefaultDeviceCommandQueue,
277};