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