clover: Stub implementation of CL 1.2 sub-devices.
[mesa.git] / src / gallium / state_trackers / clover / api / dispatch.hpp
1 //
2 // Copyright 2013 Francisco Jerez
3 //
4 // Permission is hereby granted, free of charge, to any person obtaining a
5 // copy of this software and associated documentation files (the "Software"),
6 // to deal in the Software without restriction, including without limitation
7 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 // and/or sell copies of the Software, and to permit persons to whom the
9 // Software is furnished to do so, subject to the following conditions:
10 //
11 // The above copyright notice and this permission notice shall be included in
12 // all copies or substantial portions of the Software.
13 //
14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 // OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 // OTHER DEALINGS IN THE SOFTWARE.
21 //
22
23 #ifndef API_DISPATCH_HPP
24 #define API_DISPATCH_HPP
25
26 #define CL_USE_DEPRECATED_OPENCL_1_1_APIS
27
28 #include "CL/cl.h"
29 #include "CL/cl_ext.h"
30 #include "CL/cl_gl.h"
31
32 ///
33 /// OpenCL ICD vendor dispatch table.
34 ///
35 /// The entry point ordering should always be in agreement with
36 /// Khronos' ICD loader.
37 ///
38 struct _cl_icd_dispatch {
39 CL_API_ENTRY cl_int (CL_API_CALL *clGetPlatformIDs)(
40 cl_uint num_entries,
41 cl_platform_id *platforms,
42 cl_uint *num_platforms);
43
44 CL_API_ENTRY cl_int (CL_API_CALL *clGetPlatformInfo)(
45 cl_platform_id platform,
46 cl_platform_info param_name,
47 size_t param_value_size,
48 void *param_value,
49 size_t *param_value_size_ret);
50
51 CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDs)(
52 cl_platform_id platform,
53 cl_device_type device_type,
54 cl_uint num_entries,
55 cl_device_id *devices,
56 cl_uint *num_devices);
57
58 CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceInfo)(
59 cl_device_id device,
60 cl_device_info param_name,
61 size_t param_value_size,
62 void *param_value,
63 size_t *param_value_size_ret);
64
65 CL_API_ENTRY cl_context (CL_API_CALL *clCreateContext)(
66 const cl_context_properties *properties,
67 cl_uint num_devices,
68 const cl_device_id *devices,
69 void (CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *),
70 void *user_data,
71 cl_int *errcode_ret);
72
73 CL_API_ENTRY cl_context (CL_API_CALL *clCreateContextFromType)(
74 const cl_context_properties *properties,
75 cl_device_type device_type,
76 void (CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *),
77 void *user_data,
78 cl_int *errcode_ret);
79
80 CL_API_ENTRY cl_int (CL_API_CALL *clRetainContext)(
81 cl_context context);
82
83 CL_API_ENTRY cl_int (CL_API_CALL *clReleaseContext)(
84 cl_context context);
85
86 CL_API_ENTRY cl_int (CL_API_CALL *clGetContextInfo)(
87 cl_context context,
88 cl_context_info param_name,
89 size_t param_value_size,
90 void *param_value,
91 size_t *param_value_size_ret);
92
93 CL_API_ENTRY cl_command_queue (CL_API_CALL *clCreateCommandQueue)(
94 cl_context context,
95 cl_device_id device,
96 cl_command_queue_properties properties,
97 cl_int *errcode_ret);
98
99 CL_API_ENTRY cl_int (CL_API_CALL *clRetainCommandQueue)(
100 cl_command_queue command_queue);
101
102 CL_API_ENTRY cl_int (CL_API_CALL *clReleaseCommandQueue)(
103 cl_command_queue command_queue);
104
105 CL_API_ENTRY cl_int (CL_API_CALL *clGetCommandQueueInfo)(
106 cl_command_queue command_queue,
107 cl_command_queue_info param_name,
108 size_t param_value_size,
109 void *param_value,
110 size_t *param_value_size_ret);
111
112 CL_API_ENTRY cl_int (CL_API_CALL *clSetCommandQueueProperty)(
113 cl_command_queue command_queue,
114 cl_command_queue_properties properties,
115 cl_bool enable,
116 cl_command_queue_properties *old_properties);
117
118 CL_API_ENTRY cl_mem (CL_API_CALL *clCreateBuffer)(
119 cl_context context,
120 cl_mem_flags flags,
121 size_t size,
122 void *host_ptr,
123 cl_int *errcode_ret);
124
125 CL_API_ENTRY cl_mem (CL_API_CALL *clCreateImage2D)(
126 cl_context context,
127 cl_mem_flags flags,
128 const cl_image_format *image_format,
129 size_t image_width,
130 size_t image_height,
131 size_t image_row_pitch,
132 void *host_ptr,
133 cl_int *errcode_ret);
134
135 CL_API_ENTRY cl_mem (CL_API_CALL *clCreateImage3D)(
136 cl_context context,
137 cl_mem_flags flags,
138 const cl_image_format *image_format,
139 size_t image_width,
140 size_t image_height,
141 size_t image_depth,
142 size_t image_row_pitch,
143 size_t image_slice_pitch,
144 void *host_ptr,
145 cl_int *errcode_ret);
146
147 CL_API_ENTRY cl_int (CL_API_CALL *clRetainMemObject)(
148 cl_mem memobj);
149
150 CL_API_ENTRY cl_int (CL_API_CALL *clReleaseMemObject)(
151 cl_mem memobj);
152
153 CL_API_ENTRY cl_int (CL_API_CALL *clGetSupportedImageFormats)(
154 cl_context context,
155 cl_mem_flags flags,
156 cl_mem_object_type image_type,
157 cl_uint num_entries,
158 cl_image_format *image_formats,
159 cl_uint *num_image_formats);
160
161 CL_API_ENTRY cl_int (CL_API_CALL *clGetMemObjectInfo)(
162 cl_mem memobj,
163 cl_mem_info param_name,
164 size_t param_value_size,
165 void *param_value,
166 size_t *param_value_size_ret);
167
168 CL_API_ENTRY cl_int (CL_API_CALL *clGetImageInfo)(
169 cl_mem image,
170 cl_image_info param_name,
171 size_t param_value_size,
172 void *param_value,
173 size_t *param_value_size_ret);
174
175 CL_API_ENTRY cl_sampler (CL_API_CALL *clCreateSampler)(
176 cl_context context,
177 cl_bool normalized_coords,
178 cl_addressing_mode addressing_mode,
179 cl_filter_mode filter_mode,
180 cl_int *errcode_ret);
181
182 CL_API_ENTRY cl_int (CL_API_CALL *clRetainSampler)(
183 cl_sampler sampler);
184
185 CL_API_ENTRY cl_int (CL_API_CALL *clReleaseSampler)(
186 cl_sampler sampler);
187
188 CL_API_ENTRY cl_int (CL_API_CALL *clGetSamplerInfo)(
189 cl_sampler sampler,
190 cl_sampler_info param_name,
191 size_t param_value_size,
192 void *param_value,
193 size_t *param_value_size_ret);
194
195 CL_API_ENTRY cl_program (CL_API_CALL *clCreateProgramWithSource)(
196 cl_context context,
197 cl_uint count,
198 const char **strings,
199 const size_t *lengths,
200 cl_int *errcode_ret);
201
202 CL_API_ENTRY cl_program (CL_API_CALL *clCreateProgramWithBinary)(
203 cl_context context,
204 cl_uint num_devices,
205 const cl_device_id *device_list,
206 const size_t *lengths,
207 const unsigned char **binaries,
208 cl_int *binary_status,
209 cl_int *errcode_ret);
210
211 CL_API_ENTRY cl_int (CL_API_CALL *clRetainProgram)(
212 cl_program program);
213
214 CL_API_ENTRY cl_int (CL_API_CALL *clReleaseProgram)(
215 cl_program program);
216
217 CL_API_ENTRY cl_int (CL_API_CALL *clBuildProgram)(
218 cl_program program,
219 cl_uint num_devices,
220 const cl_device_id *device_list,
221 const char *options,
222 void (CL_CALLBACK *pfn_notify)(cl_program, void *),
223 void *user_data);
224
225 CL_API_ENTRY cl_int (CL_API_CALL *clUnloadCompiler)(
226 void);
227
228 CL_API_ENTRY cl_int (CL_API_CALL *clGetProgramInfo)(
229 cl_program program,
230 cl_program_info param_name,
231 size_t param_value_size,
232 void *param_value,
233 size_t *param_value_size_ret);
234
235 CL_API_ENTRY cl_int (CL_API_CALL *clGetProgramBuildInfo)(
236 cl_program program,
237 cl_device_id device,
238 cl_program_build_info param_name,
239 size_t param_value_size,
240 void *param_value,
241 size_t *param_value_size_ret);
242
243 CL_API_ENTRY cl_kernel (CL_API_CALL *clCreateKernel)(
244 cl_program program,
245 const char *kernel_name,
246 cl_int *errcode_ret);
247
248 CL_API_ENTRY cl_int (CL_API_CALL *clCreateKernelsInProgram)(
249 cl_program program,
250 cl_uint num_kernels,
251 cl_kernel *kernels,
252 cl_uint *num_kernels_ret);
253
254 CL_API_ENTRY cl_int (CL_API_CALL *clRetainKernel)(
255 cl_kernel kernel);
256
257 CL_API_ENTRY cl_int (CL_API_CALL *clReleaseKernel)(
258 cl_kernel kernel);
259
260 CL_API_ENTRY cl_int (CL_API_CALL *clSetKernelArg)(
261 cl_kernel kernel,
262 cl_uint arg_index,
263 size_t arg_size,
264 const void *arg_value);
265
266 CL_API_ENTRY cl_int (CL_API_CALL *clGetKernelInfo)(
267 cl_kernel kernel,
268 cl_kernel_info param_name,
269 size_t param_value_size,
270 void *param_value,
271 size_t *param_value_size_ret);
272
273 CL_API_ENTRY cl_int (CL_API_CALL *clGetKernelWorkGroupInfo)(
274 cl_kernel kernel,
275 cl_device_id device,
276 cl_kernel_work_group_info param_name,
277 size_t param_value_size,
278 void *param_value,
279 size_t *param_value_size_ret);
280
281 CL_API_ENTRY cl_int (CL_API_CALL *clWaitForEvents)(
282 cl_uint num_events,
283 const cl_event *event_list);
284
285 CL_API_ENTRY cl_int (CL_API_CALL *clGetEventInfo)(
286 cl_event event,
287 cl_event_info param_name,
288 size_t param_value_size,
289 void *param_value,
290 size_t *param_value_size_ret);
291
292 CL_API_ENTRY cl_int (CL_API_CALL *clRetainEvent)(
293 cl_event event);
294
295 CL_API_ENTRY cl_int (CL_API_CALL *clReleaseEvent)(
296 cl_event event);
297
298 CL_API_ENTRY cl_int (CL_API_CALL *clGetEventProfilingInfo)(
299 cl_event event,
300 cl_profiling_info param_name,
301 size_t param_value_size,
302 void *param_value,
303 size_t *param_value_size_ret);
304
305 CL_API_ENTRY cl_int (CL_API_CALL *clFlush)(
306 cl_command_queue command_queue);
307
308 CL_API_ENTRY cl_int (CL_API_CALL *clFinish)(
309 cl_command_queue command_queue);
310
311 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReadBuffer)(
312 cl_command_queue command_queue,
313 cl_mem buffer,
314 cl_bool blocking_read,
315 size_t offset,
316 size_t cb,
317 void *ptr,
318 cl_uint num_events_in_wait_list,
319 const cl_event *event_wait_list,
320 cl_event *event);
321
322 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueWriteBuffer)(
323 cl_command_queue command_queue,
324 cl_mem buffer,
325 cl_bool blocking_write,
326 size_t offset,
327 size_t cb,
328 const void *ptr,
329 cl_uint num_events_in_wait_list,
330 const cl_event *event_wait_list,
331 cl_event *event);
332
333 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueCopyBuffer)(
334 cl_command_queue command_queue,
335 cl_mem src_buffer,
336 cl_mem dst_buffer,
337 size_t src_offset,
338 size_t dst_offset,
339 size_t cb,
340 cl_uint num_events_in_wait_list,
341 const cl_event *event_wait_list,
342 cl_event *event);
343
344 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReadImage)(
345 cl_command_queue command_queue,
346 cl_mem image,
347 cl_bool blocking_read,
348 const size_t *origin,
349 const size_t *region,
350 size_t row_pitch,
351 size_t slice_pitch,
352 void *ptr,
353 cl_uint num_events_in_wait_list,
354 const cl_event *event_wait_list,
355 cl_event *event);
356
357 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueWriteImage)(
358 cl_command_queue command_queue,
359 cl_mem image,
360 cl_bool blocking_write,
361 const size_t *origin,
362 const size_t *region,
363 size_t input_row_pitch,
364 size_t input_slice_pitch,
365 const void *ptr,
366 cl_uint num_events_in_wait_list,
367 const cl_event *event_wait_list,
368 cl_event *event);
369
370 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueCopyImage)(
371 cl_command_queue command_queue,
372 cl_mem src_image,
373 cl_mem dst_image,
374 const size_t *src_origin,
375 const size_t *dst_origin,
376 const size_t *region,
377 cl_uint num_events_in_wait_list,
378 const cl_event *event_wait_list,
379 cl_event *event);
380
381 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueCopyImageToBuffer)(
382 cl_command_queue command_queue,
383 cl_mem src_image,
384 cl_mem dst_buffer,
385 const size_t *src_origin,
386 const size_t *region,
387 size_t dst_offset,
388 cl_uint num_events_in_wait_list,
389 const cl_event *event_wait_list,
390 cl_event *event);
391
392 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueCopyBufferToImage)(
393 cl_command_queue command_queue,
394 cl_mem src_buffer,
395 cl_mem dst_image,
396 size_t src_offset,
397 const size_t *dst_origin,
398 const size_t *region,
399 cl_uint num_events_in_wait_list,
400 const cl_event *event_wait_list,
401 cl_event *event);
402
403 CL_API_ENTRY void *(CL_API_CALL *clEnqueueMapBuffer)(
404 cl_command_queue command_queue,
405 cl_mem buffer,
406 cl_bool blocking_map,
407 cl_map_flags map_flags,
408 size_t offset,
409 size_t cb,
410 cl_uint num_events_in_wait_list,
411 const cl_event *event_wait_list,
412 cl_event *event,
413 cl_int *errcode_ret);
414
415 CL_API_ENTRY void *(CL_API_CALL *clEnqueueMapImage)(
416 cl_command_queue command_queue,
417 cl_mem image,
418 cl_bool blocking_map,
419 cl_map_flags map_flags,
420 const size_t *origin,
421 const size_t *region,
422 size_t *image_row_pitch,
423 size_t *image_slice_pitch,
424 cl_uint num_events_in_wait_list,
425 const cl_event *event_wait_list,
426 cl_event *event,
427 cl_int *errcode_ret);
428
429 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueUnmapMemObject)(
430 cl_command_queue command_queue,
431 cl_mem memobj,
432 void *mapped_ptr,
433 cl_uint num_events_in_wait_list,
434 const cl_event *event_wait_list,
435 cl_event *event);
436
437 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueNDRangeKernel)(
438 cl_command_queue command_queue,
439 cl_kernel kernel,
440 cl_uint work_dim,
441 const size_t *global_work_offset,
442 const size_t *global_work_size,
443 const size_t *local_work_size,
444 cl_uint num_events_in_wait_list,
445 const cl_event *event_wait_list,
446 cl_event *event);
447
448 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueTask)(
449 cl_command_queue command_queue,
450 cl_kernel kernel,
451 cl_uint num_events_in_wait_list,
452 const cl_event *event_wait_list,
453 cl_event *event);
454
455 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueNativeKernel)(
456 cl_command_queue command_queue,
457 void (CL_CALLBACK *user_func)(void *),
458 void *args,
459 size_t cb_args,
460 cl_uint num_mem_objects,
461 const cl_mem *mem_list,
462 const void **args_mem_loc,
463 cl_uint num_events_in_wait_list,
464 const cl_event *event_wait_list,
465 cl_event *event);
466
467 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueMarker)(
468 cl_command_queue command_queue,
469 cl_event *event);
470
471 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueWaitForEvents)(
472 cl_command_queue command_queue,
473 cl_uint num_events,
474 const cl_event *event_list);
475
476 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueBarrier)(
477 cl_command_queue command_queue);
478
479 CL_API_ENTRY void *(CL_API_CALL *clGetExtensionFunctionAddress)(
480 const char *function_name);
481
482 CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromGLBuffer)(
483 cl_context context,
484 cl_mem_flags flags,
485 cl_GLuint bufobj,
486 int *errcode_ret);
487
488 CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromGLTexture2D)(
489 cl_context context,
490 cl_mem_flags flags,
491 cl_GLenum target,
492 cl_GLint miplevel,
493 cl_GLuint texture,
494 cl_int *errcode_ret);
495
496 CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromGLTexture3D)(
497 cl_context context,
498 cl_mem_flags flags,
499 cl_GLenum target,
500 cl_GLint miplevel,
501 cl_GLuint texture,
502 cl_int *errcode_ret);
503
504 CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromGLRenderbuffer)(
505 cl_context context,
506 cl_mem_flags flags,
507 cl_GLuint renderbuffer,
508 cl_int *errcode_ret);
509
510 CL_API_ENTRY cl_int (CL_API_CALL *clGetGLObjectInfo)(
511 cl_mem memobj,
512 cl_gl_object_type *gl_object_type,
513 cl_GLuint *gl_object_name);
514
515 CL_API_ENTRY cl_int (CL_API_CALL *clGetGLTextureInfo)(
516 cl_mem memobj,
517 cl_gl_texture_info param_name,
518 size_t param_value_size,
519 void *param_value,
520 size_t *param_value_size_ret);
521
522 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireGLObjects)(
523 cl_command_queue command_queue,
524 cl_uint num_objects,
525 const cl_mem *mem_objects,
526 cl_uint num_events_in_wait_list,
527 const cl_event *event_wait_list,
528 cl_event *event);
529
530 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseGLObjects)(
531 cl_command_queue command_queue,
532 cl_uint num_objects,
533 const cl_mem *mem_objects,
534 cl_uint num_events_in_wait_list,
535 const cl_event *event_wait_list,
536 cl_event *event);
537
538 CL_API_ENTRY cl_int (CL_API_CALL *clGetGLContextInfoKHR)(
539 const cl_context_properties *properties,
540 cl_gl_context_info param_name,
541 size_t param_value_size,
542 void *param_value,
543 size_t *param_value_size_ret);
544
545 void *clGetDeviceIDsFromD3D10KHR;
546 void *clCreateFromD3D10BufferKHR;
547 void *clCreateFromD3D10Texture2DKHR;
548 void *clCreateFromD3D10Texture3DKHR;
549 void *clEnqueueAcquireD3D10ObjectsKHR;
550 void *clEnqueueReleaseD3D10ObjectsKHR;
551
552 CL_API_ENTRY cl_int (CL_API_CALL *clSetEventCallback)(
553 cl_event event,
554 cl_int type,
555 void (CL_CALLBACK *pfn_notify)(cl_event, cl_int, void *),
556 void *user_data);
557
558 CL_API_ENTRY cl_mem (CL_API_CALL *clCreateSubBuffer)(
559 cl_mem buffer,
560 cl_mem_flags flags,
561 cl_buffer_create_type buffer_create_type,
562 const void *buffer_create_info,
563 cl_int *errcode_ret);
564
565 CL_API_ENTRY cl_int (CL_API_CALL *clSetMemObjectDestructorCallback)(
566 cl_mem memobj,
567 void (CL_CALLBACK *pfn_notify)(cl_mem, void *),
568 void *user_data);
569
570 CL_API_ENTRY cl_event (CL_API_CALL *clCreateUserEvent)(
571 cl_context context,
572 cl_int *errcode_ret);
573
574 CL_API_ENTRY cl_int (CL_API_CALL *clSetUserEventStatus)(
575 cl_event event,
576 cl_int status);
577
578 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReadBufferRect)(
579 cl_command_queue command_queue,
580 cl_mem buffer,
581 cl_bool blocking_read,
582 const size_t *buffer_origin,
583 const size_t *host_origin,
584 const size_t *region,
585 size_t buffer_row_pitch,
586 size_t buffer_slice_pitch,
587 size_t host_row_pitch,
588 size_t host_slice_pitch,
589 void *ptr,
590 cl_uint num_events_in_wait_list,
591 const cl_event *event_wait_list,
592 cl_event *event);
593
594 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueWriteBufferRect)(
595 cl_command_queue command_queue,
596 cl_mem buffer,
597 cl_bool blocking_read,
598 const size_t *buffer_origin,
599 const size_t *host_origin,
600 const size_t *region,
601 size_t buffer_row_pitch,
602 size_t buffer_slice_pitch,
603 size_t host_row_pitch,
604 size_t host_slice_pitch,
605 const void *ptr,
606 cl_uint num_events_in_wait_list,
607 const cl_event *event_wait_list,
608 cl_event *event);
609
610 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueCopyBufferRect)(
611 cl_command_queue command_queue,
612 cl_mem src_buffer,
613 cl_mem dst_buffer,
614 const size_t *src_origin,
615 const size_t *dst_origin,
616 const size_t *region,
617 size_t src_row_pitch,
618 size_t src_slice_pitch,
619 size_t dst_row_pitch,
620 size_t dst_slice_pitch,
621 cl_uint num_events_in_wait_list,
622 const cl_event *event_wait_list,
623 cl_event *event);
624
625 CL_API_ENTRY cl_int (CL_API_CALL *clCreateSubDevicesEXT)(
626 cl_device_id in_device,
627 const cl_device_partition_property_ext *partition_properties,
628 cl_uint num_entries,
629 cl_device_id *out_devices,
630 cl_uint *num_devices);
631
632 CL_API_ENTRY cl_int (CL_API_CALL *clRetainDeviceEXT)(
633 cl_device_id device);
634
635 CL_API_ENTRY cl_int (CL_API_CALL *clReleaseDeviceEXT)(
636 cl_device_id device);
637
638 CL_API_ENTRY cl_event (CL_API_CALL *clCreateEventFromGLsyncKHR)(
639 cl_context context,
640 cl_GLsync sync,
641 cl_int *errcode_ret);
642
643 CL_API_ENTRY cl_int (CL_API_CALL *clCreateSubDevices)(
644 cl_device_id in_device,
645 const cl_device_partition_property *partition_properties,
646 cl_uint num_entries,
647 cl_device_id *out_devices,
648 cl_uint *num_devices);
649
650 CL_API_ENTRY cl_int (CL_API_CALL *clRetainDevice)(
651 cl_device_id device);
652
653 CL_API_ENTRY cl_int (CL_API_CALL *clReleaseDevice)(
654 cl_device_id device);
655
656 void *clCreateImage;
657
658 CL_API_ENTRY cl_program (CL_API_CALL *clCreateProgramWithBuiltInKernels)(
659 cl_context context,
660 cl_uint num_devices,
661 const cl_device_id *device_list,
662 const char *kernel_names,
663 cl_int *errcode_ret);
664
665 CL_API_ENTRY cl_int (CL_API_CALL *clCompileProgram)(
666 cl_program program,
667 cl_uint num_devices,
668 const cl_device_id *device_list,
669 const char *options,
670 cl_uint num_input_headers,
671 const cl_program *input_headers,
672 const char **header_include_names,
673 void (CL_CALLBACK *pfn_notify)(cl_program, void *),
674 void *user_data);
675
676 CL_API_ENTRY cl_program (CL_API_CALL *clLinkProgram)(
677 cl_context context,
678 cl_uint num_devices,
679 const cl_device_id *device_list,
680 const char *options,
681 cl_uint num_input_programs,
682 const cl_program *input_programs,
683 void (CL_CALLBACK *pfn_notify)(cl_program, void *),
684 void *user_data,
685 cl_int *errcode_ret);
686
687 CL_API_ENTRY cl_int (CL_API_CALL *clUnloadPlatformCompiler)(
688 cl_platform_id platform);
689
690 void *clGetKernelArgInfo;
691
692 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueFillBuffer)(
693 cl_command_queue command_queue,
694 cl_mem buffer,
695 const void *pattern,
696 size_t pattern_size,
697 size_t offset,
698 size_t cb,
699 cl_uint num_events_in_wait_list,
700 const cl_event *event_wait_list,
701 cl_event *event);
702
703 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueFillImage)(
704 cl_command_queue command_queue,
705 cl_mem image,
706 const void *fill_color,
707 const size_t origin[3],
708 const size_t region[3],
709 cl_uint num_events_in_wait_list,
710 const cl_event *event_wait_list,
711 cl_event *event);
712
713 void *clEnqueueMigrateMemObjects;
714
715 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueMarkerWithWaitList)(
716 cl_command_queue command_queue,
717 cl_uint num_events_in_wait_list,
718 const cl_event *event_wait_list,
719 cl_event *event);
720
721 CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueBarrierWithWaitList)(
722 cl_command_queue command_queue,
723 cl_uint num_events_in_wait_list,
724 const cl_event *event_wait_list,
725 cl_event *event);
726
727 CL_API_ENTRY void *(CL_API_CALL *clGetExtensionFunctionAddressForPlatform)(
728 cl_platform_id platform,
729 const char *function_name);
730
731 CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromGLTexture)(
732 cl_context context,
733 cl_mem_flags flags,
734 cl_GLenum target,
735 cl_GLint miplevel,
736 cl_GLuint texture,
737 cl_int *errcode_ret);
738
739 void *clGetDeviceIDsFromD3D11KHR;
740 void *clCreateFromD3D11BufferKHR;
741 void *clCreateFromD3D11Texture2DKHR;
742 void *clCreateFromD3D11Texture3DKHR;
743 void *clCreateFromDX9MediaSurfaceKHR;
744 void *clEnqueueAcquireD3D11ObjectsKHR;
745 void *clEnqueueReleaseD3D11ObjectsKHR;
746 void *clGetDeviceIDsFromDX9MediaAdapterKHR;
747 void *clEnqueueAcquireDX9MediaSurfacesKHR;
748 void *clEnqueueReleaseDX9MediaSurfacesKHR;
749 };
750
751 namespace clover {
752 extern const _cl_icd_dispatch _dispatch;
753
754 cl_int
755 GetPlatformInfo(cl_platform_id d_platform, cl_platform_info param,
756 size_t size, void *r_buf, size_t *r_size);
757
758 void *
759 GetExtensionFunctionAddress(const char *p_name);
760
761 cl_int
762 IcdGetPlatformIDsKHR(cl_uint num_entries, cl_platform_id *rd_platforms,
763 cl_uint *rnum_platforms);
764 }
765
766 #endif