1 #ifndef _PARAM_STRUCT_H_
2 #define _PARAM_STRUCT_H_
6 #include<CL/cl_gl_ext.h>
9 #include <windows.h> /* Needed for gl.h */
13 struct clCreateCommandQueue_st
17 cl_command_queue_properties properties;
21 struct clSetCommandQueueProperty_st
23 cl_command_queue command_queue;
24 cl_command_queue_properties properties;
26 cl_command_queue_properties *old_properties;
29 struct clGetCommandQueueInfo_st
31 cl_command_queue command_queue;
32 cl_command_queue_info param_name;
33 size_t param_value_size;
35 size_t *param_value_size_ret;
38 struct clCreateContext_st
40 const cl_context_properties *properties;
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);
48 struct clCreateContextFromType_st
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);
57 struct clRetainContext_st
62 struct clReleaseContext_st
67 struct clGetContextInfo_st
70 cl_context_info param_name;
71 size_t param_value_size;
73 size_t *param_value_size_ret;
76 struct clGetPlatformIDs_st
79 cl_platform_id *platforms;
80 cl_uint *num_platforms;
83 struct clGetPlatformInfo_st
85 cl_platform_id platform;
86 cl_platform_info param_name;
87 size_t param_value_size;
89 size_t *param_value_size_ret;
92 struct clGetDeviceIDs_st
94 cl_platform_id platform;
95 cl_device_type device_type;
97 cl_device_id *devices;
101 struct clRetainCommandQueue_st
103 cl_command_queue command_queue;
106 struct clReleaseCommandQueue_st
108 cl_command_queue command_queue;
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
129 struct clGetDeviceInfo_st
132 cl_device_info param_name;
133 size_t param_value_size;
135 size_t *param_value_size_ret;
138 struct clCreateSubDevices_st
140 cl_device_id in_device;
141 cl_device_partition_property *properties;
143 cl_device_id *out_devices;
144 cl_uint *num_devices;
147 struct clRetainDevice_st
152 struct clReleaseDevice_st
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
174 struct clCreateBuffer_st
182 struct clCreateSubBuffer_st
186 cl_buffer_create_type buffer_create_type;
187 const void *buffer_create_info;
191 struct clEnqueueReadBuffer_st
193 cl_command_queue command_queue;
195 cl_bool blocking_read;
199 cl_uint num_events_in_wait_list;
200 const cl_event *event_wait_list;
204 struct clEnqueueWriteBuffer_st
206 cl_command_queue command_queue;
208 cl_bool blocking_write;
212 cl_uint num_events_in_wait_list;
213 const cl_event *event_wait_list;
217 struct clEnqueueReadBufferRect_st
219 cl_command_queue command_queue;
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;
230 cl_uint num_events_in_wait_list;
231 const cl_event *event_wait_list;
235 struct clEnqueueWriteBufferRect_st
237 cl_command_queue command_queue;
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;
248 cl_uint num_events_in_wait_list;
249 const cl_event *event_wait_list;
253 struct clEnqueueFillBuffer_st
255 cl_command_queue command_queue;
261 cl_uint num_events_in_wait_list;
262 const cl_event *event_wait_list;
266 struct clEnqueueCopyBuffer_st
268 cl_command_queue command_queue;
274 cl_uint num_events_in_wait_list;
275 const cl_event *event_wait_list;
279 struct clEnqueueCopyBufferRect_st
281 cl_command_queue command_queue;
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;
296 struct clEnqueueMapBuffer_st
298 cl_command_queue command_queue;
300 cl_bool blocking_map;
301 cl_map_flags map_flags;
304 cl_uint num_events_in_wait_list;
305 const cl_event *event_wait_list;
310 struct clRetainMemObject_st
315 struct clReleaseMemObject_st
320 struct clSetMemObjectDestructorCallback_st
323 void (CL_CALLBACK *pfn_notify)(cl_mem memobj, void *user_data);
327 struct clEnqueueUnmapMemObject_st
329 cl_command_queue command_queue;
332 cl_uint num_events_in_wait_list;
333 const cl_event *event_wait_list;
337 struct clGetMemObjectInfo_st
340 cl_mem_info param_name;
341 size_t param_value_size;
343 size_t *param_value_size_ret;
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
361 struct clCreateProgramWithSource_st
365 const char **strings;
366 const size_t *lengths;
370 struct clCreateProgramWithBinary_st
374 const cl_device_id *device_list;
375 const size_t *lengths;
376 const unsigned char **binaries;
377 cl_int *binary_status;
381 struct clCreateProgramWithBuiltInKernels_st
385 const cl_device_id *device_list;
386 const char *kernel_names;
390 struct clRetainProgram_st
395 struct clReleaseProgram_st
400 struct clBuildProgram_st
404 const cl_device_id *device_list;
406 void (CL_CALLBACK*pfn_notify)(cl_program program, void *user_data);
410 struct clCompileProgram_st
414 const cl_device_id *device_list;
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);
423 struct clLinkProgram_st
427 const cl_device_id *device_list;
429 cl_uint num_input_programs;
430 const cl_program *input_programs;
431 void (CL_CALLBACK *pfn_notify)(cl_program program, void *user_data);
436 struct clUnloadPlatformCompiler_st
438 cl_platform_id platform;
442 struct clUnloadCompiler_st
448 struct clGetExtensionFunctionAddress_st
450 const char *func_name;
453 struct clGetExtensionFunctionAddressForPlatform_st
455 cl_platform_id platform;
456 const char *func_name;
459 struct clGetProgramInfo_st
462 cl_program_info param_name;
463 size_t param_value_size;
465 size_t *param_value_size_ret;
468 struct clGetProgramBuildInfo_st
472 cl_program_build_info param_name;
473 size_t param_value_size;
475 size_t *param_value_size_ret;
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
492 struct clCreateImage_st
496 const cl_image_format *image_format;
497 const cl_image_desc *image_desc;
502 struct clCreateImage2D_st
506 const cl_image_format *image_format;
509 size_t image_row_pitch;
514 struct clCreateImage3D_st
518 const cl_image_format *image_format;
522 size_t image_row_pitch;
523 size_t image_slice_pitch;
528 struct clGetSupportedImageFormats_st
532 cl_mem_object_type image_type;
534 cl_image_format *image_formats;
535 cl_uint *num_image_formats;
538 struct clEnqueueCopyImageToBuffer_st
540 cl_command_queue command_queue;
543 const size_t *src_origin;
544 const size_t *region;
546 cl_uint num_events_in_wait_list;
547 const cl_event *event_wait_list;
551 struct clEnqueueCopyBufferToImage_st
553 cl_command_queue command_queue;
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;
564 struct clEnqueueMapImage_st
566 cl_command_queue command_queue;
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;
580 struct clEnqueueReadImage_st
582 cl_command_queue command_queue;
584 cl_bool blocking_read;
585 const size_t *origin;
586 const size_t *region;
590 cl_uint num_events_in_wait_list;
591 const cl_event *event_wait_list;
595 struct clEnqueueWriteImage_st
597 cl_command_queue command_queue;
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;
605 cl_uint num_events_in_wait_list;
606 const cl_event *event_wait_list;
610 struct clEnqueueFillImage_st
612 cl_command_queue command_queue;
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;
622 struct clEnqueueCopyImage_st
624 cl_command_queue command_queue;
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;
636 struct clGetMemObjectInfo_st
639 cl_mem_info param_name;
640 size_t param_value_size;
642 size_t *param_value_size_ret;
646 struct clGetImageInfo_st
649 cl_image_info param_name;
650 size_t param_value_size;
652 size_t *param_value_size_ret;
655 #define NUM_ITEMS_clCreateSampler 1
656 #define NUM_ITEMS_clRetainSampler 1
657 #define NUM_ITEMS_clReleaseSampler 1
658 #define NUM_ITEMS_clGetSamplerInfo 1
660 struct clCreateSampler_st
663 cl_bool normalized_coords;
664 cl_addressing_mode addressing_mode;
665 cl_filter_mode filter_mode;
669 struct clRetainSampler_st
674 struct clReleaseSampler_st
679 struct clGetSamplerInfo_st
682 cl_sampler_info param_name;
683 size_t param_value_size;
685 size_t *param_value_size_ret;
688 #define NUM_ITEMS_clCreateKernel 1
689 #define NUM_ITEMS_clCreateKernelsInProgram 1
690 #define NUM_ITEMS_clRetainKernel 1
691 #define NUM_ITEMS_clReleaseKernel 1
693 struct clCreateKernel_st
696 const char *kernel_name;
700 struct clCreateKernelsInProgram_st
705 cl_uint *num_kernels_ret;
708 struct clRetainKernel_st
713 struct clReleaseKernel_st
718 #define NUM_ITEMS_clSetKernelArg 1
719 #define NUM_ITEMS_clGetKernelInfo 1
720 #define NUM_ITEMS_clGetKernelArgInfo 1
721 #define NUM_ITEMS_clGetKernelWorkGroupInfo 1
723 struct clSetKernelArg_st
728 const void *arg_value;
731 struct clGetKernelInfo_st
734 cl_kernel_info param_name;
735 size_t param_value_size;
737 size_t *param_value_size_ret;
740 struct clGetKernelArgInfo_st
744 cl_kernel_arg_info param_name;
745 size_t param_value_size;
747 size_t *param_value_size_ret;
750 struct clGetKernelWorkGroupInfo_st
754 cl_kernel_work_group_info param_name;
755 size_t param_value_size;
757 size_t *param_value_size_ret;
760 #define NUM_ITEMS_clEnqueueMigrateMemObjects 1
761 #define NUM_ITEMS_clEnqueueNDRangeKernel 1
762 #define NUM_ITEMS_clEnqueueTask 1
763 #define NUM_ITEMS_clEnqueueNativeKernel 1
765 struct clEnqueueMigrateMemObjects_st
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;
776 struct clEnqueueNDRangeKernel_st
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;
788 struct clEnqueueTask_st
790 cl_command_queue command_queue;
792 cl_uint num_events_in_wait_list;
793 const cl_event *event_wait_list;
797 struct clEnqueueNativeKernel_st
799 cl_command_queue command_queue;
800 void (CL_CALLBACK *user_func)(void *);
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;
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
819 struct clCreateUserEvent_st
825 struct clSetUserEventStatus_st
828 cl_int execution_status;
831 struct clWaitForEvents_st
834 const cl_event *event_list;
837 struct clGetEventInfo_st
840 cl_event_info param_name;
841 size_t param_value_size;
843 size_t *param_value_size_ret;
846 struct clSetEventCallback_st
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);
854 struct clRetainEvent_st
859 struct clReleaseEvent_st
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
870 struct clEnqueueMarker_st
872 cl_command_queue command_queue;
876 struct clEnqueueWaitForEvents_st
878 cl_command_queue command_queue;
880 const cl_event *event_list;
883 struct clEnqueueBarrier_st
885 cl_command_queue command_queue;
888 struct clEnqueueMarkerWithWaitList_st
890 cl_command_queue command_queue;
891 cl_uint num_events_in_wait_list;
892 const cl_event *event_wait_list;
896 struct clEnqueueBarrierWithWaitList_st
898 cl_command_queue command_queue;
899 cl_uint num_events_in_wait_list;
900 const cl_event *event_wait_list;
904 #define NUM_ITEMS_clGetEventProfilingInfo 1
906 struct clGetEventProfilingInfo_st
909 cl_profiling_info param_name;
910 size_t param_value_size;
912 size_t *param_value_size_ret;
915 #define NUM_ITEMS_clFlush 1
916 #define NUM_ITEMS_clFinish 1
920 cl_command_queue command_queue;
925 cl_command_queue command_queue;
928 #define NUM_ITEMS_clCreateFromGLBuffer 1
929 struct clCreateFromGLBuffer_st
937 #define NUM_ITEMS_clCreateFromGLTexture 1
938 #define NUM_ITEMS_clCreateFromGLTexture2D 1
939 #define NUM_ITEMS_clCreateFromGLTexture3D 1
941 struct clCreateFromGLTexture_st
945 GLenum texture_target;
951 struct clCreateFromGLTexture2D_st
955 GLenum texture_target;
961 struct clCreateFromGLTexture3D_st
965 GLenum texture_target;
971 #define NUM_ITEMS_clCreateFromGLRenderbuffer 1
973 struct clCreateFromGLRenderbuffer_st
982 // Query Information [9.8.5]
983 #define NUM_ITEMS_clGetGLObjectInfo 1
984 #define NUM_ITEMS_clGetGLTextureInfo 1
986 struct clGetGLObjectInfo_st
989 cl_gl_object_type *gl_object_type;
990 GLuint *gl_object_name;
993 struct clGetGLTextureInfo_st
996 cl_gl_texture_info param_name;
997 size_t param_value_size;
999 size_t *param_value_size_ret;
1002 // Share Objects [9.8.6]
1004 #define NUM_ITEMS_clEnqueueAcquireGLObjects 1
1005 #define NUM_ITEMS_clEnqueueReleaseGLObjects 1
1007 struct clEnqueueAcquireGLObjects_st
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;
1017 struct clEnqueueReleaseGLObjects_st
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;
1027 // CL Event Objects > GL Sync Objects [9.9]
1028 #define NUM_ITEMS_clCreateEventFromGLsyncKHR 1
1030 struct clCreateEventFromGLsyncKHR_st
1034 cl_int *errcode_ret;
1037 // CL Context > GL Context; Sharegroup [9.7]
1038 #define NUM_ITEMS_clGetGLContextInfoKHR 1
1040 struct clGetGLContextInfoKHR_st
1042 const cl_context_properties *properties;
1043 cl_gl_context_info param_name;
1044 size_t param_value_size;
1046 size_t *param_value_size_ret;
1050 // OpenCL/Direct3D 10 Sharing APIs [9.10]
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
1059 struct clGetDeviceIDsFromD3D10KHR_st
1061 cl_platform_id platform;
1062 cl_d3d10_device_source_khr d3d_device_source;
1064 cl_d3d10_device_set_khr d3d_device_set;
1065 cl_uint num_entries;
1066 cl_device_id *devices; cl_uint *num_devices;
1069 struct clCreateFromD3D10BufferKHR_st
1073 ID3D10Buffer *resource;
1074 cl_int *errcode_ret;
1077 struct clCreateFromD3D10Texture2DKHR_st
1081 ID3D10Texture2D *resource;
1083 cl_int *errcode_ret;
1086 struct clCreateFromD3D10Texture3DKHR_st
1090 ID3D10Texture3D *resource;
1092 cl_int *errcode_ret;
1095 struct clEnqueueAcquireD3D10ObjectsKHR_st
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;
1104 struct clEnqueueReleaseD3D10ObjectsKHR_st
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;
1115 #endif /* _PARAM_STRUCT_H_ */