xref: /aosp_15_r20/external/OpenCL-ICD-Loader/test/loader_test/param_struct.h (revision 1cddb830dba8aa7c1cc1039338e56b3b9fa24952)
1 #ifndef _PARAM_STRUCT_H_
2 #define _PARAM_STRUCT_H_
3 
4 #include<CL/cl.h>
5 #include<CL/cl_gl.h>
6 
7 struct clCreateCommandQueue_st
8 {
9     cl_context context;
10     cl_device_id device;
11     cl_command_queue_properties properties;
12     cl_int *errcode_ret;
13 };
14 
15 struct clSetCommandQueueProperty_st
16 {
17     cl_command_queue command_queue;
18     cl_command_queue_properties properties;
19     cl_bool enable;
20     cl_command_queue_properties *old_properties;
21 };
22 
23 struct clGetCommandQueueInfo_st
24 {
25     cl_command_queue command_queue;
26     cl_command_queue_info param_name;
27     size_t param_value_size;
28     void *param_value;
29     size_t *param_value_size_ret;
30 };
31 
32 struct clCreateContext_st
33 {
34     const cl_context_properties *properties;
35     cl_uint num_devices;
36     const cl_device_id *devices;
37     void (CL_CALLBACK*pfn_notify)(const char *errinfo, const void *private_info, size_t cb, void *user_data);
38     void *user_data;
39     cl_int *errcode_ret;
40 };
41 
42 struct clCreateContextFromType_st
43 {
44     const cl_context_properties *properties;
45     cl_device_type device_type;
46     void (CL_CALLBACK *pfn_notify)(const char *errinfo, const void *private_info, size_t cb,void *user_data);
47     void *user_data;
48     cl_int *errcode_ret;
49 };
50 
51 struct clRetainContext_st
52 {
53     cl_context context;
54 };
55 
56 struct clReleaseContext_st
57 {
58     cl_context context;
59 };
60 
61 struct clGetContextInfo_st
62 {
63     cl_context context;
64     cl_context_info param_name;
65     size_t param_value_size;
66     void *param_value;
67     size_t *param_value_size_ret;
68 };
69 
70 struct clSetContextDestructorCallback_st
71 {
72     cl_context context;
73     void (CL_CALLBACK *pfn_notify)(cl_context context, void *user_data);
74     void *user_data;
75 };
76 
77 struct clGetPlatformIDs_st
78 {
79     cl_uint num_entries;
80     cl_platform_id *platforms;
81     cl_uint *num_platforms;
82 };
83 
84 struct clGetPlatformInfo_st
85 {
86     cl_platform_id platform;
87     cl_platform_info param_name;
88     size_t param_value_size;
89     void *param_value;
90     size_t *param_value_size_ret;
91 };
92 
93 struct clGetDeviceIDs_st
94 {
95     cl_platform_id platform;
96     cl_device_type device_type;
97     cl_uint num_entries;
98     cl_device_id *devices;
99     cl_uint *num_devices;
100 };
101 
102 struct clRetainCommandQueue_st
103 {
104     cl_command_queue command_queue;
105 };
106 
107 struct clReleaseCommandQueue_st
108 {
109     cl_command_queue command_queue;
110 };
111 
112 #define NUM_ITEMS_clCreateCommandQueue 1
113 #define NUM_ITEMS_clRetainCommandQueue 1
114 #define NUM_ITEMS_clReleaseCommandQueue 1
115 #define NUM_ITEMS_clGetCommandQueueInfo 1
116 #define NUM_ITEMS_clSetCommandQueueProperty 1
117 #define NUM_ITEMS_clCreateContext 1
118 #define NUM_ITEMS_clCreateContextFromType 1
119 #define NUM_ITEMS_clRetainContext 1
120 #define NUM_ITEMS_clReleaseContext 1
121 #define NUM_ITEMS_clGetContextInfo 1
122 #define NUM_ITEMS_clSetContextDestructorCallback 1
123 #define NUM_ITEMS_clGetPlatformIDs 1
124 #define NUM_ITEMS_clGetPlatformInfo 1
125 #define NUM_ITEMS_clGetDeviceIDs 1
126 #define NUM_ITEMS_clGetDeviceInfo 1
127 #define NUM_ITEMS_clCreateSubDevices 1
128 #define NUM_ITEMS_clRetainDevice 1
129 #define NUM_ITEMS_clReleaseDevice 1
130 
131 struct clGetDeviceInfo_st
132 {
133     cl_device_id device;
134     cl_device_info param_name;
135     size_t param_value_size;
136     void *param_value;
137     size_t *param_value_size_ret;
138 };
139 
140 struct clCreateSubDevices_st
141 {
142     cl_device_id in_device;
143     cl_device_partition_property *properties;
144     cl_uint num_entries;
145     cl_device_id *out_devices;
146     cl_uint *num_devices;
147 };
148 
149 struct clRetainDevice_st
150 {
151     cl_device_id device;
152 };
153 
154 struct clReleaseDevice_st
155 {
156     cl_device_id device;
157 };
158 
159 
160 #define NUM_ITEMS_clCreateBuffer 1
161 #define NUM_ITEMS_clCreateBufferWithProperties 1
162 #define NUM_ITEMS_clCreateSubBuffer 1
163 #define NUM_ITEMS_clEnqueueReadBuffer 1
164 #define NUM_ITEMS_clEnqueueWriteBuffer 1
165 #define NUM_ITEMS_clEnqueueReadBufferRect 1
166 #define NUM_ITEMS_clEnqueueWriteBufferRect 1
167 #define NUM_ITEMS_clEnqueueFillBuffer 1
168 #define NUM_ITEMS_clEnqueueCopyBuffer 1
169 #define NUM_ITEMS_clEnqueueCopyBufferRect 1
170 #define NUM_ITEMS_clEnqueueMapBuffer 1
171 #define NUM_ITEMS_clRetainMemObject 1
172 #define NUM_ITEMS_clReleaseMemObject 1
173 #define NUM_ITEMS_clSetMemObjectDestructorCallback 1
174 #define NUM_ITEMS_clEnqueueUnmapMemObject 1
175 #define NUM_ITEMS_clGetMemObjectInfo 1
176 
177 struct clCreateBuffer_st
178 {
179     cl_context context;
180     cl_mem_flags flags;
181     size_t size;
182     void *host_ptr;
183     cl_int *errcode_ret;
184 };
185 
186 struct clCreateBufferWithProperties_st
187 {
188     cl_context context;
189     const cl_mem_properties * properties;
190     cl_mem_flags flags;
191     size_t size;
192     void *host_ptr;
193     cl_int *errcode_ret;
194 };
195 
196 struct clCreateSubBuffer_st
197 {
198     cl_mem buffer;
199     cl_mem_flags flags;
200     cl_buffer_create_type buffer_create_type;
201     const void *buffer_create_info;
202     cl_int *errcode_ret;
203 };
204 
205 struct clEnqueueReadBuffer_st
206 {
207     cl_command_queue command_queue;
208     cl_mem buffer;
209     cl_bool blocking_read;
210     size_t offset;
211     size_t cb;
212     void *ptr;
213     cl_uint num_events_in_wait_list;
214     const cl_event *event_wait_list;
215     cl_event *event;
216 };
217 
218 struct clEnqueueWriteBuffer_st
219 {
220     cl_command_queue command_queue;
221     cl_mem buffer;
222     cl_bool blocking_write;
223     size_t offset;
224     size_t cb;
225     const void *ptr;
226     cl_uint num_events_in_wait_list;
227     const cl_event *event_wait_list;
228     cl_event *event;
229 };
230 
231 struct clEnqueueReadBufferRect_st
232 {
233     cl_command_queue command_queue;
234     cl_mem buffer;
235     cl_bool blocking_read;
236     const size_t * buffer_offset;
237     const size_t * host_offset;
238     const size_t * region;
239     size_t buffer_row_pitch;
240     size_t buffer_slice_pitch;
241     size_t host_row_pitch;
242     size_t host_slice_pitch;
243     void *ptr;
244     cl_uint num_events_in_wait_list;
245     const cl_event *event_wait_list;
246     cl_event *event;
247 };
248 
249 struct clEnqueueWriteBufferRect_st
250 {
251     cl_command_queue command_queue;
252     cl_mem buffer;
253     cl_bool blocking_write;
254     const size_t *buffer_offset;
255     const size_t *host_offset;
256     const size_t *region;
257     size_t buffer_row_pitch;
258     size_t buffer_slice_pitch;
259     size_t host_row_pitch;
260     size_t host_slice_pitch;
261     void *ptr;
262     cl_uint num_events_in_wait_list;
263     const cl_event *event_wait_list;
264     cl_event *event;
265 };
266 
267 struct clEnqueueFillBuffer_st
268 {
269     cl_command_queue command_queue;
270     cl_mem buffer;
271     const void *pattern;
272     size_t pattern_size;
273     size_t offset;
274     size_t cb;
275     cl_uint num_events_in_wait_list;
276     const cl_event *event_wait_list;
277     cl_event *event;
278 };
279 
280 struct clEnqueueCopyBuffer_st
281 {
282     cl_command_queue command_queue;
283     cl_mem src_buffer;
284     cl_mem dst_buffer;
285     size_t src_offset;
286     size_t dst_offset;
287     size_t cb;
288     cl_uint num_events_in_wait_list;
289     const cl_event *event_wait_list;
290     cl_event *event;
291 };
292 
293 struct clEnqueueCopyBufferRect_st
294 {
295     cl_command_queue command_queue;
296     cl_mem src_buffer;
297     cl_mem dst_buffer;
298     const size_t *src_origin;
299     const size_t *dst_origin;
300     const size_t *region;
301     size_t src_row_pitch;
302     size_t src_slice_pitch;
303     size_t dst_row_pitch;
304     size_t dst_slice_pitch;
305     cl_uint num_events_in_wait_list;
306     const cl_event *event_wait_list;
307     cl_event *event;
308 };
309 
310 struct clEnqueueMapBuffer_st
311 {
312     cl_command_queue command_queue;
313     cl_mem buffer;
314     cl_bool blocking_map;
315     cl_map_flags map_flags;
316     size_t offset;
317     size_t cb;
318     cl_uint num_events_in_wait_list;
319     const cl_event *event_wait_list;
320     cl_event *event;
321     cl_int *errcode_ret;
322 };
323 
324 struct clRetainMemObject_st
325 {
326     cl_mem memobj;
327 };
328 
329 struct clReleaseMemObject_st
330 {
331     cl_mem memobj;
332 };
333 
334 struct clSetMemObjectDestructorCallback_st
335 {
336     cl_mem memobj;
337     void (CL_CALLBACK *pfn_notify)(cl_mem memobj, void *user_data);
338     void *user_data;
339 };
340 
341 struct clEnqueueUnmapMemObject_st
342 {
343     cl_command_queue command_queue;
344     cl_mem memobj;
345     void *mapped_ptr;
346     cl_uint num_events_in_wait_list;
347     const cl_event *event_wait_list;
348     cl_event *event;
349 };
350 
351 struct clGetMemObjectInfo_st
352 {
353     cl_mem memobj;
354     cl_mem_info param_name;
355     size_t param_value_size;
356     void *param_value;
357     size_t *param_value_size_ret;
358 };
359 
360 #define NUM_ITEMS_clCreateProgramWithSource 1
361 #define NUM_ITEMS_clCreateProgramWithBinary 1
362 #define NUM_ITEMS_clCreateProgramWithBuiltInKernels 1
363 #define NUM_ITEMS_clRetainProgram 1
364 #define NUM_ITEMS_clReleaseProgram 1
365 #define NUM_ITEMS_clBuildProgram 1
366 #define NUM_ITEMS_clCompileProgram 1
367 #define NUM_ITEMS_clLinkProgram 1
368 #define NUM_ITEMS_clUnloadPlatformCompiler 1
369 #define NUM_ITEMS_clGetProgramInfo 1
370 #define NUM_ITEMS_clGetProgramBuildInfo 1
371 #define NUM_ITEMS_clUnloadCompiler 1
372 #define NUM_ITEMS_clGetExtensionFunctionAddress 1
373 #define NUM_ITEMS_clGetExtensionFunctionAddressForPlatform 1
374 
375 struct clCreateProgramWithSource_st
376 {
377     cl_context context;
378     cl_uint count;
379     const char **strings;
380     const size_t *lengths;
381     cl_int *errcode_ret;
382 };
383 
384 struct clCreateProgramWithBinary_st
385 {
386     cl_context context;
387     cl_uint num_devices;
388     const cl_device_id *device_list;
389     const size_t *lengths;
390     const unsigned char **binaries;
391     cl_int *binary_status;
392     cl_int *errcode_ret;
393 };
394 
395 struct clCreateProgramWithBuiltInKernels_st
396 {
397     cl_context context;
398     cl_uint num_devices;
399     const cl_device_id *device_list;
400     const char *kernel_names;
401     cl_int *errcode_ret;
402 };
403 
404 struct clRetainProgram_st
405 {
406     cl_program program;
407 };
408 
409 struct clReleaseProgram_st
410 {
411     cl_program program;
412 };
413 
414 struct clBuildProgram_st
415 {
416     cl_program program;
417     cl_uint num_devices;
418     const cl_device_id *device_list;
419     const char *options;
420     void (CL_CALLBACK*pfn_notify)(cl_program program, void *user_data);
421     void *user_data;
422 };
423 
424 struct clCompileProgram_st
425 {
426     cl_program program;
427     cl_uint num_devices;
428     const cl_device_id *device_list;
429     const char *options;
430     cl_uint num_input_headers;
431     const cl_program *headers;
432     const char **header_include_names;
433     void (CL_CALLBACK *pfn_notify)(cl_program program, void * user_data);
434     void *user_data;
435 };
436 
437 struct clLinkProgram_st
438 {
439     cl_context context;
440     cl_uint num_devices;
441     const cl_device_id *device_list;
442     const char *options;
443     cl_uint num_input_programs;
444     const cl_program *input_programs;
445     void (CL_CALLBACK *pfn_notify)(cl_program program, void *user_data);
446     void *user_data;
447     cl_int *errcode_ret;
448 };
449 
450 struct clUnloadPlatformCompiler_st
451 {
452     cl_platform_id platform;
453 };
454 
455 #if 0
456 struct clUnloadCompiler_st
457 {
458     void ;
459 };
460 #endif
461 
462 struct clGetExtensionFunctionAddress_st
463 {
464     const char *func_name;
465 };
466 
467 struct clGetExtensionFunctionAddressForPlatform_st
468 {
469     cl_platform_id platform;
470     const char *func_name;
471 };
472 
473 struct clGetProgramInfo_st
474 {
475     cl_program program;
476     cl_program_info param_name;
477     size_t param_value_size;
478     void *param_value;
479     size_t *param_value_size_ret;
480 };
481 
482 struct clGetProgramBuildInfo_st
483 {
484     cl_program program;
485     cl_device_id device;
486     cl_program_build_info param_name;
487     size_t param_value_size;
488     void *param_value;
489     size_t *param_value_size_ret;
490 };
491 
492 #define NUM_ITEMS_clCreateImage2D 1
493 #define NUM_ITEMS_clCreateImage3D 1
494 #define NUM_ITEMS_clCreateImage 1
495 #define NUM_ITEMS_clCreateImageWithProperties 1
496 #define NUM_ITEMS_clGetSupportedImageFormats 1
497 #define NUM_ITEMS_clEnqueueCopyImageToBuffer 1
498 #define NUM_ITEMS_clEnqueueCopyBufferToImage 1
499 #define NUM_ITEMS_clEnqueueMapImage 1
500 #define NUM_ITEMS_clEnqueueReadImage 1
501 #define NUM_ITEMS_clEnqueueWriteImage 1
502 #define NUM_ITEMS_clEnqueueFillImage 1
503 #define NUM_ITEMS_clEnqueueCopyImage 1
504 #define NUM_ITEMS_clGetMemObjectInfo 1
505 #define NUM_ITEMS_clGetImageInfo 1
506 
507 struct clCreateImage_st
508 {
509     cl_context context;
510     cl_mem_flags flags;
511     const cl_image_format *image_format;
512     const cl_image_desc *image_desc;
513     void *host_ptr;
514     cl_int *errcode_ret;
515 };
516 
517 struct clCreateImageWithProperties_st
518 {
519     cl_context context;
520     const cl_mem_properties * properties;
521     cl_mem_flags flags;
522     const cl_image_format *image_format;
523     const cl_image_desc *image_desc;
524     void *host_ptr;
525     cl_int *errcode_ret;
526 };
527 
528 struct clCreateImage2D_st
529 {
530     cl_context context;
531     cl_mem_flags flags;
532     const cl_image_format *image_format;
533     size_t image_width;
534     size_t image_height;
535     size_t image_row_pitch;
536     void *host_ptr;
537     cl_int *errcode_ret;
538 };
539 
540 struct clCreateImage3D_st
541 {
542     cl_context context;
543     cl_mem_flags flags;
544     const cl_image_format *image_format;
545     size_t image_width;
546     size_t image_height;
547     size_t image_depth;
548     size_t image_row_pitch;
549     size_t image_slice_pitch;
550     void *host_ptr;
551     cl_int *errcode_ret;
552 };
553 
554 struct clGetSupportedImageFormats_st
555 {
556     cl_context context;
557     cl_mem_flags flags;
558     cl_mem_object_type image_type;
559     cl_uint num_entries;
560     cl_image_format *image_formats;
561     cl_uint *num_image_formats;
562 };
563 
564 struct clEnqueueCopyImageToBuffer_st
565 {
566     cl_command_queue command_queue;
567     cl_mem src_image;
568     cl_mem dst_buffer;
569     const size_t *src_origin;
570     const size_t *region;
571     size_t dst_offset;
572     cl_uint num_events_in_wait_list;
573     const cl_event *event_wait_list;
574     cl_event *event;
575 };
576 
577 struct clEnqueueCopyBufferToImage_st
578 {
579     cl_command_queue command_queue;
580     cl_mem src_buffer;
581     cl_mem dst_image;
582     size_t src_offset;
583     const size_t *dst_origin;
584     const size_t *region;
585     cl_uint num_events_in_wait_list;
586     const cl_event *event_wait_list;
587     cl_event *event;
588 };
589 
590 struct clEnqueueMapImage_st
591 {
592     cl_command_queue command_queue;
593     cl_mem image;
594     cl_bool blocking_map;
595     cl_map_flags map_flags;
596     const size_t *origin;
597     const size_t *region;
598     size_t *image_row_pitch;
599     size_t *image_slice_pitch;
600     cl_uint num_events_in_wait_list;
601     const cl_event *event_wait_list;
602     cl_event *event;
603     cl_int *errcode_ret;
604 };
605 
606 struct clEnqueueReadImage_st
607 {
608     cl_command_queue command_queue;
609     cl_mem image;
610     cl_bool blocking_read;
611     const size_t *origin;
612     const size_t *region;
613     size_t row_pitch;
614     size_t slice_pitch;
615     void *ptr;
616     cl_uint num_events_in_wait_list;
617     const cl_event *event_wait_list;
618     cl_event *event;
619 };
620 
621 struct clEnqueueWriteImage_st
622 {
623     cl_command_queue command_queue;
624     cl_mem image;
625     cl_bool blocking_write;
626     const size_t *origin;
627     const size_t *region;
628     size_t input_row_pitch;
629     size_t input_slice_pitch;
630     const void *ptr;
631     cl_uint num_events_in_wait_list;
632     const cl_event *event_wait_list;
633     cl_event *event;
634 };
635 
636 struct clEnqueueFillImage_st
637 {
638     cl_command_queue command_queue;
639     cl_mem image;
640     const void *fill_color;
641     const size_t *origin;
642     const size_t *region;
643     cl_uint num_events_in_wait_list;
644     const cl_event *event_wait_list;
645     cl_event *event;
646 };
647 
648 struct clEnqueueCopyImage_st
649 {
650     cl_command_queue command_queue;
651     cl_mem src_image;
652     cl_mem dst_image;
653     const size_t *src_origin;
654     const size_t *dst_origin;
655     const size_t *region;
656     cl_uint num_events_in_wait_list;
657     const cl_event *event_wait_list;
658     cl_event *event;
659 };
660 
661 #if 0
662 struct clGetMemObjectInfo_st
663 {
664     cl_mem memobj;
665     cl_mem_info param_name;
666     size_t param_value_size;
667     void *param_value;
668     size_t *param_value_size_ret;
669 };
670 #endif
671 
672 struct clGetImageInfo_st
673 {
674     cl_mem image;
675     cl_image_info param_name;
676     size_t param_value_size;
677     void *param_value;
678     size_t *param_value_size_ret;
679 };
680 
681 #define NUM_ITEMS_clCreateSampler 1
682 #define NUM_ITEMS_clRetainSampler 1
683 #define NUM_ITEMS_clReleaseSampler 1
684 #define NUM_ITEMS_clGetSamplerInfo 1
685 
686 struct clCreateSampler_st
687 {
688     cl_context context;
689     cl_bool normalized_coords;
690     cl_addressing_mode addressing_mode;
691     cl_filter_mode filter_mode;
692     cl_int *errcode_ret;
693 };
694 
695 struct clRetainSampler_st
696 {
697     cl_sampler sampler;
698 };
699 
700 struct clReleaseSampler_st
701 {
702     cl_sampler sampler;
703 };
704 
705 struct clGetSamplerInfo_st
706 {
707     cl_sampler sampler;
708     cl_sampler_info param_name;
709     size_t param_value_size;
710     void *param_value;
711     size_t *param_value_size_ret;
712 };
713 
714 #define NUM_ITEMS_clCreateKernel 1
715 #define NUM_ITEMS_clCreateKernelsInProgram 1
716 #define NUM_ITEMS_clRetainKernel 1
717 #define NUM_ITEMS_clReleaseKernel 1
718 
719 struct clCreateKernel_st
720 {
721     cl_program program;
722     const char *kernel_name;
723     cl_int *errcode_ret;
724 };
725 
726 struct clCreateKernelsInProgram_st
727 {
728     cl_program program;
729     cl_uint num_kernels;
730     cl_kernel *kernels;
731     cl_uint *num_kernels_ret;
732 };
733 
734 struct clRetainKernel_st
735 {
736     cl_kernel kernel;
737 };
738 
739 struct clReleaseKernel_st
740 {
741     cl_kernel kernel;
742 };
743 
744 #define NUM_ITEMS_clSetKernelArg 1
745 #define NUM_ITEMS_clGetKernelInfo 1
746 #define NUM_ITEMS_clGetKernelArgInfo 1
747 #define NUM_ITEMS_clGetKernelWorkGroupInfo 1
748 
749 struct clSetKernelArg_st
750 {
751     cl_kernel kernel;
752     cl_uint arg_index;
753     size_t arg_size;
754     const void *arg_value;
755 };
756 
757 struct clGetKernelInfo_st
758 {
759     cl_kernel kernel;
760     cl_kernel_info param_name;
761     size_t param_value_size;
762     void *param_value;
763     size_t *param_value_size_ret;
764 };
765 
766 struct clGetKernelArgInfo_st
767 {
768     cl_kernel kernel;
769     cl_uint arg_indx;
770     cl_kernel_arg_info param_name;
771     size_t param_value_size;
772     void *param_value;
773     size_t *param_value_size_ret;
774 };
775 
776 struct clGetKernelWorkGroupInfo_st
777 {
778     cl_kernel kernel;
779     cl_device_id device;
780     cl_kernel_work_group_info param_name;
781     size_t param_value_size;
782     void *param_value;
783     size_t *param_value_size_ret;
784 };
785 
786 #define NUM_ITEMS_clEnqueueMigrateMemObjects 1
787 #define NUM_ITEMS_clEnqueueNDRangeKernel 1
788 #define NUM_ITEMS_clEnqueueTask 1
789 #define NUM_ITEMS_clEnqueueNativeKernel 1
790 
791 struct clEnqueueMigrateMemObjects_st
792 {
793     cl_command_queue command_queue;
794     cl_uint num_mem_objects;
795     const cl_mem *mem_objects;
796     cl_mem_migration_flags flags;
797     cl_uint num_events_in_wait_list;
798     const cl_event *event_wait_list;
799     cl_event *event;
800 };
801 
802 struct clEnqueueNDRangeKernel_st
803 {
804     cl_command_queue command_queue;
805     cl_kernel kernel;
806     cl_uint work_dim;
807     const size_t *global_work_offset;
808     const size_t *global_work_size;
809     const size_t *local_work_size;
810     cl_uint num_events_in_wait_list;
811     const cl_event *event_wait_list;
812     cl_event *event;
813 };
814 
815 struct clEnqueueTask_st
816 {
817     cl_command_queue command_queue;
818     cl_kernel kernel;
819     cl_uint num_events_in_wait_list;
820     const cl_event *event_wait_list;
821     cl_event *event;
822 };
823 
824 struct clEnqueueNativeKernel_st
825 {
826     cl_command_queue command_queue;
827     void (CL_CALLBACK *user_func)(void *);
828     void *args;
829     size_t cb_args;
830     cl_uint num_mem_objects;
831     const cl_mem *mem_list;
832     const void **args_mem_loc;
833     cl_uint num_events_in_wait_list;
834     const cl_event *event_wait_list;
835     cl_event *event;
836 };
837 
838 #define NUM_ITEMS_clCreateUserEvent 1
839 #define NUM_ITEMS_clSetUserEventStatus 1
840 #define NUM_ITEMS_clWaitForEvents 1
841 #define NUM_ITEMS_clGetEventInfo 1
842 #define NUM_ITEMS_clSetEventCallback 1
843 #define NUM_ITEMS_clRetainEvent 1
844 #define NUM_ITEMS_clReleaseEvent 1
845 
846 struct clCreateUserEvent_st
847 {
848     cl_context context;
849     cl_int *errcode_ret;
850 };
851 
852 struct clSetUserEventStatus_st
853 {
854     cl_event event;
855     cl_int execution_status;
856 };
857 
858 struct clWaitForEvents_st
859 {
860     cl_uint num_events;
861     const cl_event *event_list;
862 };
863 
864 struct clGetEventInfo_st
865 {
866     cl_event event;
867     cl_event_info param_name;
868     size_t param_value_size;
869     void *param_value;
870     size_t *param_value_size_ret;
871 };
872 
873 struct clSetEventCallback_st
874 {
875     cl_event event;
876     cl_int command_exec_callback_type;
877     void (CL_CALLBACK *pfn_event_notify)(cl_event event, cl_int event_command_exec_status,void *user_data);
878     void *user_data;
879 };
880 
881 struct clRetainEvent_st
882 {
883     cl_event event;
884 };
885 
886 struct clReleaseEvent_st
887 {
888     cl_event event;
889 };
890 
891 #define NUM_ITEMS_clEnqueueMarker 1
892 #define NUM_ITEMS_clEnqueueWaitForEvents 1
893 #define NUM_ITEMS_clEnqueueBarrier 1
894 #define NUM_ITEMS_clEnqueueMarkerWithWaitList 1
895 #define NUM_ITEMS_clEnqueueBarrierWithWaitList 1
896 
897 struct clEnqueueMarker_st
898 {
899     cl_command_queue command_queue;
900     cl_event *event;
901 };
902 
903 struct clEnqueueWaitForEvents_st
904 {
905     cl_command_queue command_queue;
906     cl_uint num_events;
907     const cl_event *event_list;
908 };
909 
910 struct clEnqueueBarrier_st
911 {
912     cl_command_queue command_queue;
913 };
914 
915 struct clEnqueueMarkerWithWaitList_st
916 {
917     cl_command_queue command_queue;
918     cl_uint num_events_in_wait_list;
919     const cl_event *event_wait_list;
920     cl_event *event;
921 };
922 
923 struct clEnqueueBarrierWithWaitList_st
924 {
925     cl_command_queue command_queue;
926     cl_uint num_events_in_wait_list;
927     const cl_event *event_wait_list;
928     cl_event *event;
929 };
930 
931 #define NUM_ITEMS_clGetEventProfilingInfo 1
932 
933 struct clGetEventProfilingInfo_st
934 {
935     cl_event event;
936     cl_profiling_info param_name;
937     size_t param_value_size;
938     void *param_value;
939     size_t *param_value_size_ret;
940 };
941 
942 #define NUM_ITEMS_clFlush 1
943 #define NUM_ITEMS_clFinish 1
944 
945 struct clFlush_st
946 {
947     cl_command_queue command_queue;
948 };
949 
950 struct clFinish_st
951 {
952     cl_command_queue command_queue;
953 };
954 
955 #define NUM_ITEMS_clCreateFromGLBuffer 1
956 struct clCreateFromGLBuffer_st
957 {
958     cl_context context;
959     cl_mem_flags flags;
960     cl_GLuint bufobj;
961     int *errcode_ret;
962 };
963 
964 #define NUM_ITEMS_clCreateFromGLTexture 1
965 #define NUM_ITEMS_clCreateFromGLTexture2D 1
966 #define NUM_ITEMS_clCreateFromGLTexture3D 1
967 
968 struct clCreateFromGLTexture_st
969 {
970     cl_context context;
971     cl_mem_flags flags;
972     cl_GLenum texture_target;
973     cl_GLint miplevel;
974     cl_GLuint texture;
975     cl_int *errcode_ret;
976 };
977 
978 struct clCreateFromGLTexture2D_st
979 {
980     cl_context context;
981     cl_mem_flags flags;
982     cl_GLenum texture_target;
983     cl_GLint miplevel;
984     cl_GLuint texture;
985     cl_int *errcode_ret;
986 };
987 
988 struct clCreateFromGLTexture3D_st
989 {
990     cl_context context;
991     cl_mem_flags flags;
992     cl_GLenum texture_target;
993     cl_GLint miplevel;
994     cl_GLuint texture;
995     cl_int *errcode_ret;
996 };
997 
998 #define NUM_ITEMS_clCreateFromGLRenderbuffer 1
999 
1000 struct clCreateFromGLRenderbuffer_st
1001 {
1002     cl_context context;
1003     cl_mem_flags flags;
1004     cl_GLuint renderbuffer;
1005     cl_int *errcode_ret;
1006 };
1007 
1008 
1009     // Query Information [9.8.5]
1010 #define NUM_ITEMS_clGetGLObjectInfo 1
1011 #define NUM_ITEMS_clGetGLTextureInfo 1
1012 
1013 struct clGetGLObjectInfo_st
1014 {
1015     cl_mem memobj;
1016     cl_gl_object_type *gl_object_type;
1017     cl_GLuint *gl_object_name;
1018 };
1019 
1020 struct clGetGLTextureInfo_st
1021 {
1022     cl_mem memobj;
1023     cl_gl_texture_info param_name;
1024     size_t param_value_size;
1025     void *param_value;
1026     size_t *param_value_size_ret;
1027 };
1028 
1029 // Share Objects [9.8.6]
1030 
1031 #define NUM_ITEMS_clEnqueueAcquireGLObjects 1
1032 #define NUM_ITEMS_clEnqueueReleaseGLObjects 1
1033 
1034 struct clEnqueueAcquireGLObjects_st
1035 {
1036     cl_command_queue command_queue;
1037     cl_uint num_objects;
1038     const cl_mem *mem_objects;
1039     cl_uint num_events_in_wait_list;
1040     const cl_event *event_wait_list;
1041     cl_event *event;
1042 };
1043 
1044 struct clEnqueueReleaseGLObjects_st
1045 {
1046     cl_command_queue command_queue;
1047     cl_uint num_objects;
1048     const cl_mem *mem_objects;
1049     cl_uint num_events_in_wait_list;
1050     const cl_event *event_wait_list;
1051     cl_event *event;
1052 };
1053 
1054 // CL Event Objects > GL Sync Objects [9.9]
1055 #define NUM_ITEMS_clCreateEventFromGLsyncKHR 1
1056 
1057 struct clCreateEventFromGLsyncKHR_st
1058 {
1059     cl_context context;
1060     cl_GLsync sync;
1061     cl_int *errcode_ret;
1062 };
1063 
1064 // CL Context > GL Context; Sharegroup [9.7]
1065 #define NUM_ITEMS_clGetGLContextInfoKHR 1
1066 
1067 struct clGetGLContextInfoKHR_st
1068 {
1069     const cl_context_properties *properties;
1070     cl_gl_context_info param_name;
1071     size_t param_value_size;
1072     void *param_value;
1073     size_t *param_value_size_ret;
1074 };
1075 
1076 #if 0
1077 // OpenCL/Direct3D 10 Sharing APIs [9.10]
1078 
1079 #define NUM_ITEMS_clGetDeviceIDsFromD3D10KHR 1
1080 #define NUM_ITEMS_clCreateFromD3D10BufferKHR 1
1081 #define NUM_ITEMS_clCreateFromD3D10Texture2DKHR 1
1082 #define NUM_ITEMS_clCreateFromD3D10Texture3DKHR 1
1083 #define NUM_ITEMS_clEnqueueAcquireD3D10ObjectsKHR 1
1084 #define NUM_ITEMS_clEnqueueReleaseD3D10ObjectsKHR 1
1085 
1086 struct clGetDeviceIDsFromD3D10KHR_st
1087 {
1088     cl_platform_id platform;
1089     cl_d3d10_device_source_khr d3d_device_source;
1090     void *d3d_object;
1091     cl_d3d10_device_set_khr d3d_device_set;
1092     cl_uint num_entries;
1093     cl_device_id *devices; cl_uint *num_devices;
1094 };
1095 
1096 struct clCreateFromD3D10BufferKHR_st
1097 {
1098     cl_context context;
1099     cl_mem_flags flags;
1100     ID3D10Buffer *resource;
1101     cl_int *errcode_ret;
1102 };
1103 
1104 struct clCreateFromD3D10Texture2DKHR_st
1105 {
1106     cl_context context;
1107     cl_mem_flags flags;
1108     ID3D10Texture2D *resource;
1109     UINT subresource;
1110     cl_int *errcode_ret;
1111 };
1112 
1113 struct clCreateFromD3D10Texture3DKHR_st
1114 {
1115     cl_context context;
1116     cl_mem_flags flags;
1117     ID3D10Texture3D *resource;
1118     UINT subresource;
1119     cl_int *errcode_ret;
1120 };
1121 
1122 struct clEnqueueAcquireD3D10ObjectsKHR_st
1123 {
1124     cl_command_queue command_queue;
1125     cl_uint num_objects;
1126     const cl_mem *mem_objects;
1127     cl_uint num_events_in_wait_list;
1128     const cl_event *event_wait_list;
1129     cl_event *event;};
1130 
1131 struct clEnqueueReleaseD3D10ObjectsKHR_st
1132 {
1133     cl_command_queue command_queue;
1134     cl_uint num_objects;
1135     const cl_mem *mem_objects;
1136     cl_uint num_events_in_wait_list;
1137     const cl_event *event_wait_list;
1138     cl_event *event;
1139 };
1140 #endif
1141 
1142 #endif /* _PARAM_STRUCT_H_ */
1143