1#![allow(non_camel_case_types, dead_code)]
3#![allow(missing_docs, missing_debug_implementations, missing_copy_implementations)]
4
5use libc;
6use super::types as cl;
7
8#[link(name = "OpenCL")]
9extern
10{
11 pub fn clGetPlatformIDs(
13 num_entries: cl::uint,
14 platforms: *mut cl::platform_id,
15 num_platforms: *mut cl::uint) -> cl::Status;
16
17 pub fn clGetPlatformInfo(
18 platform: cl::platform_id,
19 param_name: cl::platform_info,
20 param_value_size: libc::size_t,
21 param_value: *mut libc::c_void,
22 param_value_size_ret: *mut libc::size_t) -> cl::Status;
23
24
25 pub fn clGetDeviceIDs(
27 platform: cl::platform_id,
28 device_type: cl::device_type,
29 num_entries: cl::uint,
30 devices: *mut cl::device_id,
31 num_devices: *mut cl::uint) -> cl::Status;
32
33 pub fn clGetDeviceInfo(
34 device: cl::device_id,
35 param_name: cl::device_info,
36 param_value_size: libc::size_t,
37 param_value: *mut libc::c_void,
38 param_value_size_ret: *mut libc::size_t) -> cl::Status;
39
40 pub fn clCreateContext(
42 properties: *const cl::context_properties,
43 num_devices: cl::uint,
44 devices: *const cl::device_id,
45 pfn_notify: extern fn (*const libc::c_char, *const libc::c_void, libc::size_t, *mut libc::c_void),
46 user_data: *mut libc::c_void,
47 errcode_ret: *mut cl::int) -> cl::context_id;
48
49 pub fn clCreateContextFromType(
50 properties: *mut cl::context_properties,
51 device_type: cl::device_type,
52 pfn_notify: extern fn (*mut libc::c_char, *mut libc::c_void, libc::size_t, *mut libc::c_void),
53 user_data: *mut libc::c_void,
54 errcode_ret: *mut cl::int) -> cl::context_id;
55
56 pub fn clRetainContext(context: cl::context_id) -> cl::Status;
57
58 pub fn clReleaseContext(context: cl::context_id) -> cl::Status;
59
60 pub fn clGetContextInfo(
61 context: cl::context_id,
62 param_name: cl::context_info,
63 param_value_size: libc::size_t,
64 param_value: *mut libc::c_void,
65 param_value_size_ret: *mut libc::size_t) -> cl::Status;
66
67 pub fn clCreateCommandQueue(
69 context: cl::context_id,
70 device: cl::device_id,
71 properties: cl::command_queue_properties,
72 errcode_ret: *mut cl::int) -> cl::queue_id;
73
74 pub fn clRetainCommandQueue(command_queue: cl::queue_id) -> cl::Status;
75
76 pub fn clReleaseCommandQueue(command_queue: cl::queue_id) -> cl::Status;
77
78 pub fn clGetCommandQueueInfo(
79 command_queue: cl::queue_id,
80 param_name: cl::command_queue_info,
81 param_value_size: libc::size_t,
82 param_value: *mut libc::c_void,
83 param_value_size_ret: *mut libc::size_t) -> cl::Status;
84
85 pub fn clCreateBuffer(
87 context: cl::context_id,
88 flags: cl::mem_flags,
89 size: libc::size_t,
90 host_ptr: *mut libc::c_void,
91 errcode_ret: *mut cl::int) -> cl::memory_id;
92
93 pub fn clCreateSubBuffer(
94 buffer: cl::memory_id,
95 flags: cl::mem_flags,
96 buffer_create_type: cl::buffer_create_type,
97 buffer_create_info: *mut libc::c_void,
98 errcode_ret: *mut cl::int) -> cl::memory_id;
99
100 pub fn clCreateImage2D(
101 context: cl::context_id,
102 flags: cl::mem_flags,
103 image_format: *mut cl::image_format,
104 image_width: libc::size_t,
105 image_height: libc::size_t,
106 image_row_pitch: libc::size_t,
107 host_ptr: *mut libc::c_void,
108 errcode_ret: *mut cl::int) -> cl::memory_id;
109
110 pub fn clCreateImage3D(
111 context: cl::context_id,
112 flags: cl::mem_flags,
113 image_format: *mut cl::image_format,
114 image_width: libc::size_t,
115 image_height: libc::size_t,
116 image_depth: libc::size_t,
117 image_row_pitch: libc::size_t,
118 image_depth: libc::size_t,
119 image_row_pitch: libc::size_t,
120 image_slice_pitch: libc::size_t,
121 host_ptr: *mut libc::c_void,
122 errcode_ret: *mut cl::int) -> cl::memory_id;
123
124 pub fn clRetainMemObject(memobj: cl::memory_id) -> cl::Status;
125
126 pub fn clReleaseMemObject(memobj: cl::memory_id) -> cl::Status;
127
128 pub fn clGetSupportedImageFormats(
129 context: cl::context_id,
130 flags: cl::mem_flags,
131 image_type: cl::mem_object_type,
132 num_entries: cl::uint,
133 image_formats: *mut cl::image_format,
134 num_image_formats: *mut cl::uint) -> cl::Status;
135
136 pub fn clGetMemObjectInfo(
137 memobj: cl::memory_id,
138 param_name: cl::mem_info,
139 param_value_size: libc::size_t,
140 param_value: *mut libc::c_void,
141 param_value_size_ret: *mut libc::size_t) -> cl::Status;
142
143 pub fn clGetImageInfo(
144 image: cl::memory_id,
145 param_name: cl::image_info,
146 param_value_size: libc::size_t,
147 param_value: *mut libc::c_void,
148 param_value_size_ret: *mut libc::size_t) -> cl::Status;
149
150 pub fn clSetMemObjectDestructorCallback(
151 memobj: cl::memory_id,
152 pfn_notify: extern fn (cl::memory_id, *mut libc::c_void),
153 user_data: *mut libc::c_void) -> cl::Status;
154
155
156 pub fn clCreateSampler(
158 context: cl::context_id,
159 normalize_coords: cl::boolean,
160 addressing_mode: cl::addressing_mode,
161 filter_mode: cl::filter_mode,
162 errcode_ret: *mut cl::int) -> cl::sampler;
163
164 pub fn clRetainSampler(sampler: cl::sampler) -> cl::Status;
165
166 pub fn clReleaseSampler(sampler: cl::sampler) ->cl::int;
167
168 pub fn clGetSamplerInfo(
169 sampler: cl::sampler,
170 param_name: cl::sampler_info,
171 param_value_size: libc::size_t,
172 param_value: *mut libc::c_void,
173 param_value_size_ret: *mut libc::size_t) -> cl::Status;
174
175
176 pub fn clCreateProgramWithSource(
178 context: cl::context_id,
179 count: cl::uint,
180 strings: *const *const libc::c_char,
181 lengths: *const libc::size_t,
182 errcode_ret: *mut cl::int) -> cl::program;
183
184 pub fn clCreateProgramWithBinary(
185 context: cl::context_id,
186 num_devices: cl::uint,
187 device_list: *const cl::device_id,
188 lengths: *const libc::size_t,
189 binaries: *const *const libc::c_uchar,
190 binary_status: *mut cl::int,
191 errcode_ret: *mut cl::int) -> cl::program;
192
193 pub fn clRetainProgram(program: cl::program) -> cl::Status;
194
195 pub fn clReleaseProgram(program: cl::program) -> cl::Status;
196
197 pub fn clBuildProgram(
198 program: cl::program,
199 num_devices: cl::uint,
200 device_list: *const cl::device_id,
201 options: *const libc::c_char,
202 pfn_notify: extern fn (cl::program, *mut libc::c_void),
203 user_data: *mut libc::c_void) -> cl::Status;
204
205 pub fn clUnloadCompiler() -> cl::Status;
206
207 pub fn clGetProgramInfo(
208 program: cl::program,
209 param_name: cl::program_info,
210 param_value_size: libc::size_t,
211 param_value: *mut libc::c_void,
212 param_value_size_ret: *mut libc::size_t) -> cl::Status;
213
214 pub fn clGetProgramBuildInfo(
215 program: cl::program,
216 device: cl::device_id,
217 param_name: cl::program_info,
218 param_value_size: libc::size_t,
219 param_value: *mut libc::c_void,
220 param_value_size_ret: *mut libc::size_t) -> cl::Status;
221
222 pub fn clCreateKernel(
224 program: cl::program,
225 kernel_name: *const libc::c_char,
226 errcode_ret: *mut cl::int) -> cl::kernel_id;
227
228 pub fn clCreateKernelsInProgram(
229 program: cl::program,
230 num_kernels: cl::uint,
231 kernels: *mut cl::kernel_id,
232 num_kernels_ret: *mut cl::uint) -> cl::Status;
233
234 pub fn clRetainKernel(kernel: cl::kernel_id) -> cl::Status;
235
236 pub fn clReleaseKernel(kernel: cl::kernel_id) -> cl::Status;
237
238 pub fn clSetKernelArg(
239 kernel: cl::kernel_id,
240 arg_index: cl::uint,
241 arg_size: libc::size_t,
242 arg_value: *const libc::c_void) -> cl::Status;
243
244 pub fn clGetKernelInfo(
245 kernel: cl::kernel_id,
246 param_name: cl::kernel_info,
247 param_value_size: libc::size_t,
248 param_value: *mut libc::c_void,
249 param_value_size_ret: *mut libc::size_t) -> cl::Status;
250
251 pub fn clGetKernelWorkGroupInfo(
252 kernel: cl::kernel_id,
253 device: cl::device_id,
254 param_name: cl::kernel_work_group_info,
255 param_value_size: libc::size_t,
256 param_value: *mut libc::c_void,
257 param_value_size_ret: *mut libc::size_t) -> cl::Status;
258
259
260 pub fn clWaitForEvents(
262 num_events: cl::uint,
263 event_list: *const cl::event) -> cl::Status;
264
265 pub fn clGetEventInfo(
266 event: cl::event,
267 param_name: cl::event_info,
268 param_value_size: libc::size_t,
269 param_value: *mut libc::c_void,
270 param_value_size_ret: *mut libc::size_t) -> cl::Status;
271
272 pub fn clCreateUserEvent(
273 context: cl::context_id,
274 errcode_ret: *mut cl::int) -> cl::event;
275
276 pub fn clRetainEvent(event: cl::event) -> cl::Status;
277
278 pub fn clReleaseEvent(event: cl::event) -> cl::Status;
279
280 pub fn clSetUserEventStatus(
281 event: cl::event,
282 execution_status: cl::int) -> cl::Status;
283
284 pub fn clSetEventCallback(
285 event: cl::event,
286 command_exec_callback_type: cl::int,
287 pfn_notify: extern fn (cl::event, cl::int, *mut libc::c_void),
288 user_data: *mut libc::c_void) -> cl::Status;
289
290
291 pub fn clGetEventProfilingInfo(
293 event: cl::event,
294 param_name: cl::profiling_info,
295 param_value_size: libc::size_t,
296 param_value: *mut libc::c_void,
297 param_value_size_ret: *mut libc::size_t) -> cl::Status;
298
299
300 pub fn clFlush(command_queue: cl::queue_id) -> cl::Status;
302
303 pub fn clFinish(command_queue: cl::queue_id) -> cl::Status;
304
305 pub fn clEnqueueReadBuffer(
307 command_queue: cl::queue_id,
308 buffer: cl::memory_id,
309 blocking_read: cl::boolean,
310 offset: libc::size_t,
311 cb: libc::size_t,
312 ptr: *mut libc::c_void,
313 num_events_in_wait_list: cl::uint,
314 event_wait_list: *const cl::event,
315 event: *mut cl::event) -> cl::Status;
316
317 pub fn clEnqueueReadBufferRect(
318 command_queue: cl::queue_id,
319 buffer: cl::memory_id,
320 blocking_read: cl::boolean,
321 buffer_origin: *mut libc::size_t,
322 host_origin: *mut libc::size_t,
323 region: *mut libc::size_t,
324 buffer_row_pitch: libc::size_t,
325 buffer_slice_pitch: libc::size_t,
326 host_row_pitch: libc::size_t,
327 host_slice_pitch: libc::size_t,
328 ptr: *mut libc::c_void,
329 num_events_in_wait_list: cl::uint,
330 event_wait_list: *const cl::event,
331 event: *mut cl::event) -> cl::Status;
332
333 pub fn clEnqueueWriteBuffer(
334 command_queue: cl::queue_id,
335 buffer: cl::memory_id,
336 blocking_write: cl::boolean,
337 offset: libc::size_t,
338 cb: libc::size_t,
339 ptr: *const libc::c_void,
340 num_events_in_wait_list: cl::uint,
341 event_wait_list: *const cl::event,
342 event: *mut cl::event) -> cl::Status;
343
344 pub fn clEnqueueWriteBufferRect(
345 command_queue: cl::queue_id,
346 blocking_write: cl::boolean,
347 buffer_origin: *mut libc::size_t,
348 host_origin: *mut libc::size_t,
349 region: *mut libc::size_t,
350 buffer_row_pitch: libc::size_t,
351 buffer_slice_pitch: libc::size_t,
352 host_row_pitch: libc::size_t,
353 host_slice_pitch: libc::size_t,
354 ptr: *mut libc::c_void,
355 num_events_in_wait_list: cl::uint,
356 event_wait_list: *const cl::event,
357 event: *mut cl::event) -> cl::Status;
358
359 pub fn clEnqueueCopyBuffer(
360 command_queue: cl::queue_id,
361 src_buffer: cl::memory_id,
362 dst_buffer: cl::memory_id,
363 src_offset: libc::size_t,
364 dst_offset: libc::size_t,
365 cb: libc::size_t,
366 num_events_in_wait_list: cl::uint,
367 event_wait_list: *const cl::event,
368 event: *mut cl::event) -> cl::Status;
369
370 pub fn clEnqueueCopyBufferRect(
371 command_queue: cl::queue_id,
372 src_buffer: cl::memory_id,
373 dst_buffer: cl::memory_id,
374 src_origin: *mut libc::size_t,
375 dst_origin: *mut libc::size_t,
376 region: *mut libc::size_t,
377 src_row_pitch: libc::size_t,
378 src_slice_pitch: libc::size_t,
379 dst_row_pitch: libc::size_t,
380 dst_slice_pitch: libc::size_t,
381 num_events_in_wait_list: cl::uint,
382 event_wait_list: *const cl::event,
383 event: *mut cl::event) -> cl::Status;
384
385 pub fn clEnqueueReadImage(
386 command_queue: cl::queue_id,
387 image: cl::memory_id,
388 blocking_read: cl::boolean,
389 origin: *mut libc::size_t,
390 region: *mut libc::size_t,
391 row_pitch: libc::size_t,
392 slice_pitch: libc::size_t,
393 ptr: *mut libc::c_void,
394 num_events_in_wait_list: cl::uint,
395 event_wait_list: *const cl::event,
396 event: *mut cl::event) -> cl::Status;
397
398 pub fn clEnqueueWriteImage(
399 command_queue: cl::queue_id,
400 image: cl::memory_id,
401 blocking_write: cl::boolean,
402 origin: *mut libc::size_t,
403 region: *mut libc::size_t,
404 input_row_pitch: libc::size_t,
405 input_slice_pitch: libc::size_t,
406 ptr: *mut libc::c_void,
407 num_events_in_wait_list: cl::uint,
408 event_wait_list: *const cl::event,
409 event: *mut cl::event) -> cl::Status;
410
411 pub fn clEnqueueCopyImage(
412 command_queue: cl::queue_id,
413 src_image: cl::memory_id,
414 dst_image: cl::memory_id,
415 src_origin: *mut libc::size_t,
416 dst_origin: *mut libc::size_t,
417 region: *mut libc::size_t,
418 num_events_in_wait_list: cl::uint,
419 event_wait_list: *const cl::event,
420 event: *mut cl::event) -> cl::Status;
421
422 pub fn clEnqueueCopyImageToBuffer(
423 command_queue: cl::queue_id,
424 src_image: cl::memory_id,
425 dst_buffer: cl::memory_id,
426 src_origin: *mut libc::size_t,
427 region: *mut libc::size_t,
428 dst_offset: libc::size_t,
429 num_events_in_wait_list: cl::uint,
430 event_wait_list: *const cl::event,
431 event: *mut cl::event) -> cl::Status;
432
433 pub fn clEnqueueCopyBufferToImage(
434 command_queue: cl::queue_id,
435 src_buffer: cl::memory_id,
436 dst_image: cl::memory_id,
437 src_offset: libc::size_t,
438 dst_origin: *mut libc::size_t,
439 region: *mut libc::size_t,
440 num_events_in_wait_list: cl::uint,
441 event_wait_list: *const cl::event,
442 event: *mut cl::event) -> cl::Status;
443
444 pub fn clEnqueueMapBuffer(
445 command_queue: cl::queue_id,
446 buffer: cl::memory_id,
447 blocking_map: cl::boolean,
448 map_flags: cl::map_flags,
449 offset: libc::size_t,
450 cb: libc::size_t,
451 num_events_in_wait_list: cl::uint,
452 event_wait_list: *const cl::event,
453 event: *mut cl::event,
454 errorcode_ret: *mut cl::int);
455
456 pub fn clEnqueueMapImage(
457 command_queue: cl::queue_id,
458 image: cl::memory_id,
459 blocking_map: cl::boolean,
460 map_flags: cl::map_flags,
461 origin: *mut libc::size_t,
462 region: *mut libc::size_t,
463 image_row_pitch: libc::size_t,
464 image_slice_pitch: libc::size_t,
465 num_events_in_wait_list: cl::uint,
466 event_wait_list: *const cl::event,
467 event: *mut cl::event,
468 errorcode_ret: *mut cl::int);
469
470 pub fn clEnqueueUnmapMemObject(
471 command_queue: cl::queue_id,
472 memobj: cl::memory_id,
473 mapped_ptr: *mut libc::c_void,
474 num_events_in_wait_list: cl::uint,
475 event_wait_list: *const cl::event,
476 event: *mut cl::event) -> cl::Status;
477
478 pub fn clEnqueueNDRangeKernel(
479 command_queue: cl::queue_id,
480 kernel: cl::kernel_id,
481 work_dim: cl::uint,
482 global_work_offset: *const libc::size_t,
483 global_work_size: *const libc::size_t,
484 local_work_size: *const libc::size_t,
485 num_events_in_wait_list: cl::uint,
486 event_wait_list: *const cl::event,
487 event: *mut cl::event) -> cl::Status;
488
489 pub fn clEnqueueTask(
490 command_queue: cl::queue_id,
491 kernel: cl::kernel_id,
492 num_events_in_wait_list: cl::uint,
493 event_wait_list: *const cl::event,
494 event: *mut cl::event) -> cl::Status;
495
496 pub fn clEnqueueNativeKernel(
497 command_queue: cl::queue_id,
498 user_func: extern fn (*mut libc::c_void),
499 args: *mut libc::c_void,
500 cb_args: libc::size_t,
501 num_mem_objects: cl::uint,
502 mem_list: *const cl::memory_id,
503 args_mem_loc: *const *const libc::c_void,
504 num_events_in_wait_list: cl::uint,
505 event_wait_list: *const cl::event,
506 event: *mut cl::event) -> cl::Status;
507
508 pub fn clEnqueueMarker(
509 command_queue: cl::queue_id,
510 event: *mut cl::event) -> cl::Status;
511
512 pub fn clEnqueueWaitForEvents(
513 command_queue: cl::queue_id,
514 num_events: cl::uint,
515 event_list: *mut cl::event) -> cl::Status;
516
517 pub fn clEnqueueBarrier(command_queue: cl::queue_id) -> cl::Status;
518
519 pub fn clGetExtensionFunctionAddress(func_name: *const libc::c_char) -> *mut libc::c_void;
527}