blob: 360b870305523f2fef692d24a8ce0f9672e6c65d [file] [log] [blame]
Sheri Zhang67354e02021-06-30 16:08:29 +01001/*******************************************************************************
Sheri Zhang79cb9452021-09-07 14:51:49 +01002 * Copyright (c) 2019-2020 The Khronos Group Inc.
Sheri Zhang67354e02021-06-30 16:08:29 +01003 *
Sheri Zhang79cb9452021-09-07 14:51:49 +01004 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
Sheri Zhang67354e02021-06-30 16:08:29 +01007 *
Sheri Zhang79cb9452021-09-07 14:51:49 +01008 * http://www.apache.org/licenses/LICENSE-2.0
Sheri Zhang67354e02021-06-30 16:08:29 +01009 *
Sheri Zhang79cb9452021-09-07 14:51:49 +010010 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
Sheri Zhang67354e02021-06-30 16:08:29 +010015 ******************************************************************************/
16
17#ifndef OPENCL_CL_ICD_H
18#define OPENCL_CL_ICD_H
19
20#include <CL/cl.h>
21#include <CL/cl_egl.h>
22#include <CL/cl_ext.h>
23#include <CL/cl_gl.h>
24
Sheri Zhang79cb9452021-09-07 14:51:49 +010025#if defined(_WIN32)
26#include <CL/cl_d3d11.h>
27#include <CL/cl_d3d10.h>
28#include <CL/cl_dx9_media_sharing.h>
29#endif
30
Sheri Zhang67354e02021-06-30 16:08:29 +010031#ifdef __cplusplus
32extern "C" {
33#endif
34
35/*
36 * This file contains pointer type definitions for each of the CL API calls as
37 * well as a type definition for the dispatch table used by the Khronos ICD
38 * loader (see cl_khr_icd extension specification for background).
39 */
40
41/* API function pointer definitions */
42
43// Platform APIs
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +000044typedef cl_int(CL_API_CALL *cl_api_clGetPlatformIDs)(
Sheri Zhang67354e02021-06-30 16:08:29 +010045 cl_uint num_entries, cl_platform_id *platforms,
46 cl_uint *num_platforms) CL_API_SUFFIX__VERSION_1_0;
47
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +000048typedef cl_int(CL_API_CALL *cl_api_clGetPlatformInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +010049 cl_platform_id platform, cl_platform_info param_name,
50 size_t param_value_size, void *param_value,
51 size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
52
53// Device APIs
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +000054typedef cl_int(CL_API_CALL *cl_api_clGetDeviceIDs)(
Sheri Zhang67354e02021-06-30 16:08:29 +010055 cl_platform_id platform, cl_device_type device_type, cl_uint num_entries,
56 cl_device_id *devices, cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_0;
57
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +000058typedef cl_int(CL_API_CALL *cl_api_clGetDeviceInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +010059 cl_device_id device, cl_device_info param_name, size_t param_value_size,
60 void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
61
62#ifdef CL_VERSION_1_2
63
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +000064typedef cl_int(CL_API_CALL *cl_api_clCreateSubDevices)(
Sheri Zhang67354e02021-06-30 16:08:29 +010065 cl_device_id in_device,
66 const cl_device_partition_property *partition_properties,
67 cl_uint num_entries, cl_device_id *out_devices, cl_uint *num_devices);
68
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +000069typedef cl_int(CL_API_CALL *cl_api_clRetainDevice)(
Sheri Zhang67354e02021-06-30 16:08:29 +010070 cl_device_id device) CL_API_SUFFIX__VERSION_1_2;
71
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +000072typedef cl_int(CL_API_CALL *cl_api_clReleaseDevice)(
Sheri Zhang67354e02021-06-30 16:08:29 +010073 cl_device_id device) CL_API_SUFFIX__VERSION_1_2;
74
75#else
76
77typedef void *cl_api_clCreateSubDevices;
78typedef void *cl_api_clRetainDevice;
79typedef void *cl_api_clReleaseDevice;
80
81#endif
82
83// Context APIs
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +000084typedef cl_context(CL_API_CALL *cl_api_clCreateContext)(
Sheri Zhang67354e02021-06-30 16:08:29 +010085 const cl_context_properties *properties, cl_uint num_devices,
86 const cl_device_id *devices,
87 void(CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *),
88 void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
89
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +000090typedef cl_context(CL_API_CALL *cl_api_clCreateContextFromType)(
Sheri Zhang67354e02021-06-30 16:08:29 +010091 const cl_context_properties *properties, cl_device_type device_type,
92 void(CL_CALLBACK *pfn_notify)(const char *, const void *, size_t, void *),
93 void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
94
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +000095typedef cl_int(CL_API_CALL *cl_api_clRetainContext)(
Sheri Zhang67354e02021-06-30 16:08:29 +010096 cl_context context) CL_API_SUFFIX__VERSION_1_0;
97
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +000098typedef cl_int(CL_API_CALL *cl_api_clReleaseContext)(
Sheri Zhang67354e02021-06-30 16:08:29 +010099 cl_context context) CL_API_SUFFIX__VERSION_1_0;
100
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000101typedef cl_int(CL_API_CALL *cl_api_clGetContextInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100102 cl_context context, cl_context_info param_name, size_t param_value_size,
103 void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
104
105// Command Queue APIs
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000106typedef cl_command_queue(CL_API_CALL *cl_api_clCreateCommandQueue)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100107 cl_context context, cl_device_id device,
108 cl_command_queue_properties properties,
109 cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
110
111#ifdef CL_VERSION_2_0
112
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000113typedef
Sheri Zhang67354e02021-06-30 16:08:29 +0100114cl_command_queue(CL_API_CALL *cl_api_clCreateCommandQueueWithProperties)(
115 cl_context /* context */, cl_device_id /* device */,
116 const cl_queue_properties * /* properties */,
117 cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0;
118
119#else
120
121typedef void *cl_api_clCreateCommandQueueWithProperties;
122
123#endif
124
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000125typedef cl_int(CL_API_CALL *cl_api_clRetainCommandQueue)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100126 cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0;
127
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000128typedef cl_int(CL_API_CALL *cl_api_clReleaseCommandQueue)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100129 cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0;
130
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000131typedef cl_int(CL_API_CALL *cl_api_clGetCommandQueueInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100132 cl_command_queue command_queue, cl_command_queue_info param_name,
133 size_t param_value_size, void *param_value,
134 size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
135
136// Memory Object APIs
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000137typedef cl_mem(CL_API_CALL *cl_api_clCreateBuffer)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100138 cl_context context, cl_mem_flags flags, size_t size, void *host_ptr,
139 cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
140
141#ifdef CL_VERSION_1_2
142
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000143typedef cl_mem(CL_API_CALL *cl_api_clCreateImage)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100144 cl_context context, cl_mem_flags flags, const cl_image_format *image_format,
145 const cl_image_desc *image_desc, void *host_ptr,
146 cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
147
148#else
149
150typedef void *cl_api_clCreateImage;
151
152#endif
153
Sheri Zhang79cb9452021-09-07 14:51:49 +0100154#ifdef CL_VERSION_3_0
155
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000156typedef cl_mem(CL_API_CALL *cl_api_clCreateBufferWithProperties)(
Sheri Zhang79cb9452021-09-07 14:51:49 +0100157 cl_context context, const cl_mem_properties *properties, cl_mem_flags flags,
158 size_t size, void *host_ptr,
159 cl_int *errcode_ret) CL_API_SUFFIX__VERSION_3_0;
160
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000161typedef cl_mem(CL_API_CALL *cl_api_clCreateImageWithProperties)(
Sheri Zhang79cb9452021-09-07 14:51:49 +0100162 cl_context context, const cl_mem_properties *properties, cl_mem_flags flags,
163 const cl_image_format *image_format, const cl_image_desc *image_desc,
164 void *host_ptr, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_3_0;
165
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000166typedef cl_int(CL_API_CALL* cl_api_clSetContextDestructorCallback)(
Sheri Zhang79cb9452021-09-07 14:51:49 +0100167 cl_context context,
168 void(CL_CALLBACK* pfn_notify)(cl_context context, void* user_data),
169 void* user_data) CL_API_SUFFIX__VERSION_3_0;
170
171#else
172
173typedef void *cl_api_clCreateBufferWithProperties;
174typedef void *cl_api_clCreateImageWithProperties;
175typedef void *cl_api_clSetContextDestructorCallback;
176
177#endif
178
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000179typedef cl_int(CL_API_CALL *cl_api_clRetainMemObject)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100180 cl_mem memobj) CL_API_SUFFIX__VERSION_1_0;
181
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000182typedef cl_int(CL_API_CALL *cl_api_clReleaseMemObject)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100183 cl_mem memobj) CL_API_SUFFIX__VERSION_1_0;
184
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000185typedef cl_int(CL_API_CALL *cl_api_clGetSupportedImageFormats)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100186 cl_context context, cl_mem_flags flags, cl_mem_object_type image_type,
187 cl_uint num_entries, cl_image_format *image_formats,
188 cl_uint *num_image_formats) CL_API_SUFFIX__VERSION_1_0;
189
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000190typedef cl_int(CL_API_CALL *cl_api_clGetMemObjectInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100191 cl_mem memobj, cl_mem_info param_name, size_t param_value_size,
192 void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
193
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000194typedef cl_int(CL_API_CALL *cl_api_clGetImageInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100195 cl_mem image, cl_image_info param_name, size_t param_value_size,
196 void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
197
198#ifdef CL_VERSION_2_0
199
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000200typedef cl_mem(CL_API_CALL *cl_api_clCreatePipe)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100201 cl_context /* context */, cl_mem_flags /* flags */,
202 cl_uint /* pipe_packet_size */, cl_uint /* pipe_max_packets */,
203 const cl_pipe_properties * /* properties */,
204 cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0;
205
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000206typedef cl_int(CL_API_CALL *cl_api_clGetPipeInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100207 cl_mem /* pipe */, cl_pipe_info /* param_name */,
208 size_t /* param_value_size */, void * /* param_value */,
209 size_t * /* param_value_size_ret */) CL_API_SUFFIX__VERSION_2_0;
210
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000211typedef void *(CL_API_CALL *cl_api_clSVMAlloc)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100212 cl_context /* context */, cl_svm_mem_flags /* flags */, size_t /* size */,
213 unsigned int /* alignment */)CL_API_SUFFIX__VERSION_2_0;
214
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000215typedef void(CL_API_CALL *cl_api_clSVMFree)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100216 cl_context /* context */,
217 void * /* svm_pointer */) CL_API_SUFFIX__VERSION_2_0;
218
219#else
220
221typedef void *cl_api_clCreatePipe;
222typedef void *cl_api_clGetPipeInfo;
223typedef void *cl_api_clSVMAlloc;
224typedef void *cl_api_clSVMFree;
225
226#endif
227
228// Sampler APIs
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000229typedef cl_sampler(CL_API_CALL *cl_api_clCreateSampler)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100230 cl_context context, cl_bool normalized_coords,
231 cl_addressing_mode addressing_mode, cl_filter_mode filter_mode,
232 cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
233
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000234typedef cl_int(CL_API_CALL *cl_api_clRetainSampler)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100235 cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0;
236
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000237typedef cl_int(CL_API_CALL *cl_api_clReleaseSampler)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100238 cl_sampler sampler) CL_API_SUFFIX__VERSION_1_0;
239
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000240typedef cl_int(CL_API_CALL *cl_api_clGetSamplerInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100241 cl_sampler sampler, cl_sampler_info param_name, size_t param_value_size,
242 void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
243
244#ifdef CL_VERSION_2_0
245
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000246typedef
Sheri Zhang67354e02021-06-30 16:08:29 +0100247cl_sampler(CL_API_CALL *cl_api_clCreateSamplerWithProperties)(
248 cl_context /* context */,
249 const cl_sampler_properties * /* sampler_properties */,
250 cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_2_0;
251
252#else
253
254typedef void *cl_api_clCreateSamplerWithProperties;
255
256#endif
257
258// Program Object APIs
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000259typedef cl_program(CL_API_CALL *cl_api_clCreateProgramWithSource)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100260 cl_context context, cl_uint count, const char **strings,
261 const size_t *lengths, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
262
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000263typedef cl_program(CL_API_CALL *cl_api_clCreateProgramWithBinary)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100264 cl_context context, cl_uint num_devices, const cl_device_id *device_list,
265 const size_t *lengths, const unsigned char **binaries,
266 cl_int *binary_status, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
267
268#ifdef CL_VERSION_1_2
269
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000270typedef
Sheri Zhang67354e02021-06-30 16:08:29 +0100271cl_program(CL_API_CALL *cl_api_clCreateProgramWithBuiltInKernels)(
272 cl_context context, cl_uint num_devices, const cl_device_id *device_list,
273 const char *kernel_names, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
274
275#else
276
277typedef void *cl_api_clCreateProgramWithBuiltInKernels;
278
279#endif
280
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000281typedef cl_int(CL_API_CALL *cl_api_clRetainProgram)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100282 cl_program program) CL_API_SUFFIX__VERSION_1_0;
283
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000284typedef cl_int(CL_API_CALL *cl_api_clReleaseProgram)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100285 cl_program program) CL_API_SUFFIX__VERSION_1_0;
286
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000287typedef cl_int(CL_API_CALL *cl_api_clBuildProgram)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100288 cl_program program, cl_uint num_devices, const cl_device_id *device_list,
289 const char *options,
290 void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data),
291 void *user_data) CL_API_SUFFIX__VERSION_1_0;
292
293#ifdef CL_VERSION_1_2
294
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000295typedef cl_int(CL_API_CALL *cl_api_clCompileProgram)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100296 cl_program program, cl_uint num_devices, const cl_device_id *device_list,
297 const char *options, cl_uint num_input_headers,
298 const cl_program *input_headers, const char **header_include_names,
299 void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data),
300 void *user_data) CL_API_SUFFIX__VERSION_1_2;
301
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000302typedef cl_program(CL_API_CALL *cl_api_clLinkProgram)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100303 cl_context context, cl_uint num_devices, const cl_device_id *device_list,
304 const char *options, cl_uint num_input_programs,
305 const cl_program *input_programs,
306 void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data),
307 void *user_data, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
308
309#else
310
311typedef void *cl_api_clCompileProgram;
312typedef void *cl_api_clLinkProgram;
313
314#endif
315
316#ifdef CL_VERSION_2_2
317
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000318typedef
Sheri Zhang67354e02021-06-30 16:08:29 +0100319cl_int(CL_API_CALL *cl_api_clSetProgramSpecializationConstant)(
320 cl_program program, cl_uint spec_id, size_t spec_size,
321 const void *spec_value) CL_API_SUFFIX__VERSION_2_2;
322
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000323typedef cl_int(CL_API_CALL *cl_api_clSetProgramReleaseCallback)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100324 cl_program program,
325 void(CL_CALLBACK *pfn_notify)(cl_program program, void *user_data),
326 void *user_data) CL_API_SUFFIX__VERSION_2_2;
327
328#else
329
330typedef void *cl_api_clSetProgramSpecializationConstant;
331typedef void *cl_api_clSetProgramReleaseCallback;
332
333#endif
334
335#ifdef CL_VERSION_1_2
336
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000337typedef cl_int(CL_API_CALL *cl_api_clUnloadPlatformCompiler)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100338 cl_platform_id platform) CL_API_SUFFIX__VERSION_1_2;
339
340#else
341
342typedef void *cl_api_clUnloadPlatformCompiler;
343
344#endif
345
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000346typedef cl_int(CL_API_CALL *cl_api_clGetProgramInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100347 cl_program program, cl_program_info param_name, size_t param_value_size,
348 void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
349
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000350typedef cl_int(CL_API_CALL *cl_api_clGetProgramBuildInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100351 cl_program program, cl_device_id device, cl_program_build_info param_name,
352 size_t param_value_size, void *param_value,
353 size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
354
355// Kernel Object APIs
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000356typedef cl_kernel(CL_API_CALL *cl_api_clCreateKernel)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100357 cl_program program, const char *kernel_name,
358 cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
359
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000360typedef cl_int(CL_API_CALL *cl_api_clCreateKernelsInProgram)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100361 cl_program program, cl_uint num_kernels, cl_kernel *kernels,
362 cl_uint *num_kernels_ret) CL_API_SUFFIX__VERSION_1_0;
363
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000364typedef cl_int(CL_API_CALL *cl_api_clRetainKernel)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100365 cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0;
366
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000367typedef cl_int(CL_API_CALL *cl_api_clReleaseKernel)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100368 cl_kernel kernel) CL_API_SUFFIX__VERSION_1_0;
369
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000370typedef cl_int(CL_API_CALL *cl_api_clSetKernelArg)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100371 cl_kernel kernel, cl_uint arg_index, size_t arg_size,
372 const void *arg_value) CL_API_SUFFIX__VERSION_1_0;
373
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000374typedef cl_int(CL_API_CALL *cl_api_clGetKernelInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100375 cl_kernel kernel, cl_kernel_info param_name, size_t param_value_size,
376 void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
377
378#ifdef CL_VERSION_1_2
379
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000380typedef cl_int(CL_API_CALL *cl_api_clGetKernelArgInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100381 cl_kernel kernel, cl_uint arg_indx, cl_kernel_arg_info param_name,
382 size_t param_value_size, void *param_value,
383 size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_2;
384
385#else
386
387typedef void *cl_api_clGetKernelArgInfo;
388
389#endif
390
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000391typedef cl_int(CL_API_CALL *cl_api_clGetKernelWorkGroupInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100392 cl_kernel kernel, cl_device_id device, cl_kernel_work_group_info param_name,
393 size_t param_value_size, void *param_value,
394 size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
395
396#ifdef CL_VERSION_2_0
397
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000398typedef cl_int(CL_API_CALL *cl_api_clSetKernelArgSVMPointer)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100399 cl_kernel /* kernel */, cl_uint /* arg_index */,
400 const void * /* arg_value */) CL_API_SUFFIX__VERSION_2_0;
401
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000402typedef cl_int(CL_API_CALL *cl_api_clSetKernelExecInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100403 cl_kernel /* kernel */, cl_kernel_exec_info /* param_name */,
404 size_t /* param_value_size */,
405 const void * /* param_value */) CL_API_SUFFIX__VERSION_2_0;
406
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000407typedef cl_int(CL_API_CALL *cl_api_clGetKernelSubGroupInfoKHR)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100408 cl_kernel /* in_kernel */, cl_device_id /*in_device*/,
409 cl_kernel_sub_group_info /* param_name */, size_t /*input_value_size*/,
410 const void * /*input_value*/, size_t /*param_value_size*/,
411 void * /*param_value*/,
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000412 size_t * /*param_value_size_ret*/) CL_API_SUFFIX__VERSION_2_0;
Sheri Zhang67354e02021-06-30 16:08:29 +0100413
414#else
415
416typedef void *cl_api_clSetKernelArgSVMPointer;
417typedef void *cl_api_clSetKernelExecInfo;
418typedef void *cl_api_clGetKernelSubGroupInfoKHR;
419
420#endif
421
422// Event Object APIs
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000423typedef cl_int(CL_API_CALL *cl_api_clWaitForEvents)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100424 cl_uint num_events, const cl_event *event_list) CL_API_SUFFIX__VERSION_1_0;
425
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000426typedef cl_int(CL_API_CALL *cl_api_clGetEventInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100427 cl_event event, cl_event_info param_name, size_t param_value_size,
428 void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
429
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000430typedef cl_int(CL_API_CALL *cl_api_clRetainEvent)(cl_event event)
Sheri Zhang67354e02021-06-30 16:08:29 +0100431 CL_API_SUFFIX__VERSION_1_0;
432
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000433typedef cl_int(CL_API_CALL *cl_api_clReleaseEvent)(cl_event event)
Sheri Zhang67354e02021-06-30 16:08:29 +0100434 CL_API_SUFFIX__VERSION_1_0;
435
436// Profiling APIs
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000437typedef cl_int(CL_API_CALL *cl_api_clGetEventProfilingInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100438 cl_event event, cl_profiling_info param_name, size_t param_value_size,
439 void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
440
441// Flush and Finish APIs
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000442typedef cl_int(CL_API_CALL *cl_api_clFlush)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100443 cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0;
444
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000445typedef cl_int(CL_API_CALL *cl_api_clFinish)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100446 cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_0;
447
448// Enqueued Commands APIs
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000449typedef cl_int(CL_API_CALL *cl_api_clEnqueueReadBuffer)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100450 cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read,
451 size_t offset, size_t cb, void *ptr, cl_uint num_events_in_wait_list,
452 const cl_event *event_wait_list,
453 cl_event *event) CL_API_SUFFIX__VERSION_1_0;
454
455#ifdef CL_VERSION_1_1
456
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000457typedef cl_int(CL_API_CALL *cl_api_clEnqueueReadBufferRect)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100458 cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read,
459 const size_t *buffer_origin, const size_t *host_origin,
460 const size_t *region, size_t buffer_row_pitch, size_t buffer_slice_pitch,
461 size_t host_row_pitch, size_t host_slice_pitch, void *ptr,
462 cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
463 cl_event *event) CL_API_SUFFIX__VERSION_1_1;
464
465#else
466
467typedef void *cl_api_clEnqueueReadBufferRect;
468
469#endif
470
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000471typedef cl_int(CL_API_CALL *cl_api_clEnqueueWriteBuffer)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100472 cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_write,
473 size_t offset, size_t cb, const void *ptr, cl_uint num_events_in_wait_list,
474 const cl_event *event_wait_list,
475 cl_event *event) CL_API_SUFFIX__VERSION_1_0;
476
477#ifdef CL_VERSION_1_1
478
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000479typedef cl_int(CL_API_CALL *cl_api_clEnqueueWriteBufferRect)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100480 cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_read,
481 const size_t *buffer_origin, const size_t *host_origin,
482 const size_t *region, size_t buffer_row_pitch, size_t buffer_slice_pitch,
483 size_t host_row_pitch, size_t host_slice_pitch, const void *ptr,
484 cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
485 cl_event *event) CL_API_SUFFIX__VERSION_1_1;
486
487#else
488
489typedef void *cl_api_clEnqueueWriteBufferRect;
490
491#endif
492
493#ifdef CL_VERSION_1_2
494
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000495typedef cl_int(CL_API_CALL *cl_api_clEnqueueFillBuffer)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100496 cl_command_queue command_queue, cl_mem buffer, const void *pattern,
497 size_t pattern_size, size_t offset, size_t cb,
498 cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
499 cl_event *event) CL_API_SUFFIX__VERSION_1_2;
500
501#else
502
503typedef void *cl_api_clEnqueueFillBuffer;
504
505#endif
506
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000507typedef cl_int(CL_API_CALL *cl_api_clEnqueueCopyBuffer)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100508 cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer,
509 size_t src_offset, size_t dst_offset, size_t cb,
510 cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
511 cl_event *event) CL_API_SUFFIX__VERSION_1_0;
512
513#ifdef CL_VERSION_1_1
514
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000515typedef cl_int(CL_API_CALL *cl_api_clEnqueueCopyBufferRect)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100516 cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_buffer,
517 const size_t *src_origin, const size_t *dst_origin, const size_t *region,
518 size_t src_row_pitch, size_t src_slice_pitch, size_t dst_row_pitch,
519 size_t dst_slice_pitch, cl_uint num_events_in_wait_list,
520 const cl_event *event_wait_list,
521 cl_event *event) CL_API_SUFFIX__VERSION_1_1;
522
523#else
524
525typedef void *cl_api_clEnqueueCopyBufferRect;
526
527#endif
528
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000529typedef cl_int(CL_API_CALL *cl_api_clEnqueueReadImage)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100530 cl_command_queue command_queue, cl_mem image, cl_bool blocking_read,
531 const size_t *origin, const size_t *region, size_t row_pitch,
532 size_t slice_pitch, void *ptr, cl_uint num_events_in_wait_list,
533 const cl_event *event_wait_list,
534 cl_event *event) CL_API_SUFFIX__VERSION_1_0;
535
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000536typedef cl_int(CL_API_CALL *cl_api_clEnqueueWriteImage)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100537 cl_command_queue command_queue, cl_mem image, cl_bool blocking_write,
538 const size_t *origin, const size_t *region, size_t input_row_pitch,
539 size_t input_slice_pitch, const void *ptr, cl_uint num_events_in_wait_list,
540 const cl_event *event_wait_list,
541 cl_event *event) CL_API_SUFFIX__VERSION_1_0;
542
543#ifdef CL_VERSION_1_2
544
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000545typedef cl_int(CL_API_CALL *cl_api_clEnqueueFillImage)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100546 cl_command_queue command_queue, cl_mem image, const void *fill_color,
547 const size_t origin[3], const size_t region[3],
548 cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
549 cl_event *event) CL_API_SUFFIX__VERSION_1_2;
550
551#else
552
553typedef void *cl_api_clEnqueueFillImage;
554
555#endif
556
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000557typedef cl_int(CL_API_CALL *cl_api_clEnqueueCopyImage)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100558 cl_command_queue command_queue, cl_mem src_image, cl_mem dst_image,
559 const size_t *src_origin, const size_t *dst_origin, const size_t *region,
560 cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
561 cl_event *event) CL_API_SUFFIX__VERSION_1_0;
562
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000563typedef cl_int(CL_API_CALL *cl_api_clEnqueueCopyImageToBuffer)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100564 cl_command_queue command_queue, cl_mem src_image, cl_mem dst_buffer,
565 const size_t *src_origin, const size_t *region, size_t dst_offset,
566 cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
567 cl_event *event) CL_API_SUFFIX__VERSION_1_0;
568
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000569typedef cl_int(CL_API_CALL *cl_api_clEnqueueCopyBufferToImage)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100570 cl_command_queue command_queue, cl_mem src_buffer, cl_mem dst_image,
571 size_t src_offset, const size_t *dst_origin, const size_t *region,
572 cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
573 cl_event *event) CL_API_SUFFIX__VERSION_1_0;
574
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000575typedef void *(CL_API_CALL *cl_api_clEnqueueMapBuffer)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100576 cl_command_queue command_queue, cl_mem buffer, cl_bool blocking_map,
577 cl_map_flags map_flags, size_t offset, size_t cb,
578 cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
579 cl_event *event, cl_int *errcode_ret)CL_API_SUFFIX__VERSION_1_0;
580
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000581typedef void *(CL_API_CALL *cl_api_clEnqueueMapImage)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100582 cl_command_queue command_queue, cl_mem image, cl_bool blocking_map,
583 cl_map_flags map_flags, const size_t *origin, const size_t *region,
584 size_t *image_row_pitch, size_t *image_slice_pitch,
585 cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
586 cl_event *event, cl_int *errcode_ret)CL_API_SUFFIX__VERSION_1_0;
587
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000588typedef cl_int(CL_API_CALL *cl_api_clEnqueueUnmapMemObject)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100589 cl_command_queue command_queue, cl_mem memobj, void *mapped_ptr,
590 cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
591 cl_event *event) CL_API_SUFFIX__VERSION_1_0;
592
593#ifdef CL_VERSION_1_2
594
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000595typedef cl_int(CL_API_CALL *cl_api_clEnqueueMigrateMemObjects)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100596 cl_command_queue command_queue, cl_uint num_mem_objects,
597 const cl_mem *mem_objects, cl_mem_migration_flags flags,
598 cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
599 cl_event *event) CL_API_SUFFIX__VERSION_1_2;
600
601#else
602
603typedef void *cl_api_clEnqueueMigrateMemObjects;
604
605#endif
606
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000607typedef cl_int(CL_API_CALL *cl_api_clEnqueueNDRangeKernel)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100608 cl_command_queue command_queue, cl_kernel kernel, cl_uint work_dim,
609 const size_t *global_work_offset, const size_t *global_work_size,
610 const size_t *local_work_size, cl_uint num_events_in_wait_list,
611 const cl_event *event_wait_list,
612 cl_event *event) CL_API_SUFFIX__VERSION_1_0;
613
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000614typedef cl_int(CL_API_CALL *cl_api_clEnqueueTask)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100615 cl_command_queue command_queue, cl_kernel kernel,
616 cl_uint num_events_in_wait_list, const cl_event *event_wait_list,
617 cl_event *event) CL_API_SUFFIX__VERSION_1_0;
618
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000619typedef cl_int(CL_API_CALL *cl_api_clEnqueueNativeKernel)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100620 cl_command_queue command_queue, void(CL_CALLBACK *user_func)(void *),
621 void *args, size_t cb_args, cl_uint num_mem_objects, const cl_mem *mem_list,
622 const void **args_mem_loc, cl_uint num_events_in_wait_list,
623 const cl_event *event_wait_list,
624 cl_event *event) CL_API_SUFFIX__VERSION_1_0;
625
626#ifdef CL_VERSION_1_2
627
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000628typedef cl_int(CL_API_CALL *cl_api_clEnqueueMarkerWithWaitList)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100629 cl_command_queue command_queue, cl_uint num_events_in_wait_list,
630 const cl_event *event_wait_list,
631 cl_event *event) CL_API_SUFFIX__VERSION_1_2;
632
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000633typedef cl_int(CL_API_CALL *cl_api_clEnqueueBarrierWithWaitList)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100634 cl_command_queue command_queue, cl_uint num_events_in_wait_list,
635 const cl_event *event_wait_list,
636 cl_event *event) CL_API_SUFFIX__VERSION_1_2;
637
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000638typedef void *(
Sheri Zhang67354e02021-06-30 16:08:29 +0100639 CL_API_CALL *cl_api_clGetExtensionFunctionAddressForPlatform)(
640 cl_platform_id platform,
641 const char *function_name)CL_API_SUFFIX__VERSION_1_2;
642
643#else
644
645typedef void *cl_api_clEnqueueMarkerWithWaitList;
646typedef void *cl_api_clEnqueueBarrierWithWaitList;
647typedef void *cl_api_clGetExtensionFunctionAddressForPlatform;
648
649#endif
650
651// Shared Virtual Memory APIs
652
653#ifdef CL_VERSION_2_0
654
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000655typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMFree)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100656 cl_command_queue /* command_queue */, cl_uint /* num_svm_pointers */,
657 void ** /* svm_pointers */,
658 void(CL_CALLBACK *pfn_free_func)(cl_command_queue /* queue */,
659 cl_uint /* num_svm_pointers */,
660 void ** /* svm_pointers[] */,
661 void * /* user_data */),
662 void * /* user_data */, cl_uint /* num_events_in_wait_list */,
663 const cl_event * /* event_wait_list */,
664 cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0;
665
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000666typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMMemcpy)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100667 cl_command_queue /* command_queue */, cl_bool /* blocking_copy */,
668 void * /* dst_ptr */, const void * /* src_ptr */, size_t /* size */,
669 cl_uint /* num_events_in_wait_list */,
670 const cl_event * /* event_wait_list */,
671 cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0;
672
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000673typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMMemFill)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100674 cl_command_queue /* command_queue */, void * /* svm_ptr */,
675 const void * /* pattern */, size_t /* pattern_size */, size_t /* size */,
676 cl_uint /* num_events_in_wait_list */,
677 const cl_event * /* event_wait_list */,
678 cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0;
679
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000680typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMMap)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100681 cl_command_queue /* command_queue */, cl_bool /* blocking_map */,
682 cl_map_flags /* map_flags */, void * /* svm_ptr */, size_t /* size */,
683 cl_uint /* num_events_in_wait_list */,
684 const cl_event * /* event_wait_list */,
685 cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0;
686
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000687typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMUnmap)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100688 cl_command_queue /* command_queue */, void * /* svm_ptr */,
689 cl_uint /* num_events_in_wait_list */,
690 const cl_event * /* event_wait_list */,
691 cl_event * /* event */) CL_API_SUFFIX__VERSION_2_0;
692
693#else
694
695typedef void *cl_api_clEnqueueSVMFree;
696typedef void *cl_api_clEnqueueSVMMemcpy;
697typedef void *cl_api_clEnqueueSVMMemFill;
698typedef void *cl_api_clEnqueueSVMMap;
699typedef void *cl_api_clEnqueueSVMUnmap;
700
701#endif
702
703// Deprecated APIs
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000704typedef cl_int(CL_API_CALL *cl_api_clSetCommandQueueProperty)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100705 cl_command_queue command_queue, cl_command_queue_properties properties,
706 cl_bool enable, cl_command_queue_properties *old_properties)
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000707 CL_API_SUFFIX__VERSION_1_0_DEPRECATED;
Sheri Zhang67354e02021-06-30 16:08:29 +0100708
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000709typedef cl_mem(CL_API_CALL *cl_api_clCreateImage2D)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100710 cl_context context, cl_mem_flags flags, const cl_image_format *image_format,
711 size_t image_width, size_t image_height, size_t image_row_pitch,
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000712 void *host_ptr, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_1_DEPRECATED;
Sheri Zhang67354e02021-06-30 16:08:29 +0100713
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000714typedef cl_mem(CL_API_CALL *cl_api_clCreateImage3D)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100715 cl_context context, cl_mem_flags flags, const cl_image_format *image_format,
716 size_t image_width, size_t image_height, size_t image_depth,
717 size_t image_row_pitch, size_t image_slice_pitch, void *host_ptr,
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000718 cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_1_DEPRECATED;
Sheri Zhang67354e02021-06-30 16:08:29 +0100719
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000720typedef cl_int(CL_API_CALL *cl_api_clUnloadCompiler)(void)
721 CL_API_SUFFIX__VERSION_1_1_DEPRECATED;
Sheri Zhang67354e02021-06-30 16:08:29 +0100722
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000723typedef cl_int(CL_API_CALL *cl_api_clEnqueueMarker)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100724 cl_command_queue command_queue,
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000725 cl_event *event) CL_API_SUFFIX__VERSION_1_1_DEPRECATED;
Sheri Zhang67354e02021-06-30 16:08:29 +0100726
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000727typedef cl_int(CL_API_CALL *cl_api_clEnqueueWaitForEvents)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100728 cl_command_queue command_queue, cl_uint num_events,
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000729 const cl_event *event_list) CL_API_SUFFIX__VERSION_1_1_DEPRECATED;
Sheri Zhang67354e02021-06-30 16:08:29 +0100730
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000731typedef cl_int(CL_API_CALL *cl_api_clEnqueueBarrier)(
732 cl_command_queue command_queue) CL_API_SUFFIX__VERSION_1_1_DEPRECATED;
Sheri Zhang67354e02021-06-30 16:08:29 +0100733
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000734typedef void *(CL_API_CALL *cl_api_clGetExtensionFunctionAddress)(
735 const char *function_name)CL_API_SUFFIX__VERSION_1_1_DEPRECATED;
Sheri Zhang67354e02021-06-30 16:08:29 +0100736
737// GL and other APIs
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000738typedef cl_mem(CL_API_CALL *cl_api_clCreateFromGLBuffer)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100739 cl_context context, cl_mem_flags flags, cl_GLuint bufobj,
740 int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
741
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000742typedef cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100743 cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel,
744 cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
745
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000746typedef cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture2D)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100747 cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel,
748 cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
749
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000750typedef cl_mem(CL_API_CALL *cl_api_clCreateFromGLTexture3D)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100751 cl_context context, cl_mem_flags flags, cl_GLenum target, cl_GLint miplevel,
752 cl_GLuint texture, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
753
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000754typedef cl_mem(CL_API_CALL *cl_api_clCreateFromGLRenderbuffer)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100755 cl_context context, cl_mem_flags flags, cl_GLuint renderbuffer,
756 cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
757
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000758typedef cl_int(CL_API_CALL *cl_api_clGetGLObjectInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100759 cl_mem memobj, cl_gl_object_type *gl_object_type,
760 cl_GLuint *gl_object_name) CL_API_SUFFIX__VERSION_1_0;
761
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000762typedef cl_int(CL_API_CALL *cl_api_clGetGLTextureInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100763 cl_mem memobj, cl_gl_texture_info param_name, size_t param_value_size,
764 void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_1_0;
765
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000766typedef cl_int(CL_API_CALL *cl_api_clEnqueueAcquireGLObjects)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100767 cl_command_queue command_queue, cl_uint num_objects,
768 const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
769 const cl_event *event_wait_list,
770 cl_event *event) CL_API_SUFFIX__VERSION_1_0;
771
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000772typedef cl_int(CL_API_CALL *cl_api_clEnqueueReleaseGLObjects)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100773 cl_command_queue command_queue, cl_uint num_objects,
774 const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
775 const cl_event *event_wait_list,
776 cl_event *event) CL_API_SUFFIX__VERSION_1_0;
777
778/* cl_khr_gl_sharing */
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000779typedef cl_int(CL_API_CALL *cl_api_clGetGLContextInfoKHR)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100780 const cl_context_properties *properties, cl_gl_context_info param_name,
781 size_t param_value_size, void *param_value, size_t *param_value_size_ret);
782
783/* cl_khr_gl_event */
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000784typedef cl_event(CL_API_CALL *cl_api_clCreateEventFromGLsyncKHR)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100785 cl_context context, cl_GLsync sync, cl_int *errcode_ret);
786
787#if defined(_WIN32)
788
789/* cl_khr_d3d10_sharing */
790
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000791typedef cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromD3D10KHR)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100792 cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source,
793 void *d3d_object, cl_d3d10_device_set_khr d3d_device_set,
794 cl_uint num_entries, cl_device_id *devices,
795 cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_0;
796
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000797typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10BufferKHR)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100798 cl_context context, cl_mem_flags flags, ID3D10Buffer *resource,
799 cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
800
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000801typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10Texture2DKHR)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100802 cl_context context, cl_mem_flags flags, ID3D10Texture2D *resource,
803 UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
804
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000805typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D10Texture3DKHR)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100806 cl_context context, cl_mem_flags flags, ID3D10Texture3D *resource,
807 UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
808
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000809typedef
Sheri Zhang67354e02021-06-30 16:08:29 +0100810cl_int(CL_API_CALL *cl_api_clEnqueueAcquireD3D10ObjectsKHR)(
811 cl_command_queue command_queue, cl_uint num_objects,
812 const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
813 const cl_event *event_wait_list,
814 cl_event *event) CL_API_SUFFIX__VERSION_1_0;
815
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000816typedef
Sheri Zhang67354e02021-06-30 16:08:29 +0100817cl_int(CL_API_CALL *cl_api_clEnqueueReleaseD3D10ObjectsKHR)(
818 cl_command_queue command_queue, cl_uint num_objects,
819 const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
820 const cl_event *event_wait_list,
821 cl_event *event) CL_API_SUFFIX__VERSION_1_0;
822
823extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromD3D10KHR(
824 cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source,
825 void *d3d_object, cl_d3d10_device_set_khr d3d_device_set,
826 cl_uint num_entries, cl_device_id *devices, cl_uint *num_devices);
827
828extern CL_API_ENTRY cl_mem CL_API_CALL
829clCreateFromD3D10BufferKHR(cl_context context, cl_mem_flags flags,
830 ID3D10Buffer *resource, cl_int *errcode_ret);
831
832extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10Texture2DKHR(
833 cl_context context, cl_mem_flags flags, ID3D10Texture2D *resource,
834 UINT subresource, cl_int *errcode_ret);
835
836extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D10Texture3DKHR(
837 cl_context context, cl_mem_flags flags, ID3D10Texture3D *resource,
838 UINT subresource, cl_int *errcode_ret);
839
840extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireD3D10ObjectsKHR(
841 cl_command_queue command_queue, cl_uint num_objects,
842 const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
843 const cl_event *event_wait_list, cl_event *event);
844
845extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseD3D10ObjectsKHR(
846 cl_command_queue command_queue, cl_uint num_objects,
847 const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
848 const cl_event *event_wait_list, cl_event *event);
849
850/* cl_khr_d3d11_sharing */
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000851typedef cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromD3D11KHR)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100852 cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source,
853 void *d3d_object, cl_d3d11_device_set_khr d3d_device_set,
854 cl_uint num_entries, cl_device_id *devices,
855 cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_2;
856
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000857typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11BufferKHR)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100858 cl_context context, cl_mem_flags flags, ID3D11Buffer *resource,
859 cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
860
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000861typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11Texture2DKHR)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100862 cl_context context, cl_mem_flags flags, ID3D11Texture2D *resource,
863 UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
864
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000865typedef cl_mem(CL_API_CALL *cl_api_clCreateFromD3D11Texture3DKHR)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100866 cl_context context, cl_mem_flags flags, ID3D11Texture3D *resource,
867 UINT subresource, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
868
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000869typedef
Sheri Zhang67354e02021-06-30 16:08:29 +0100870cl_int(CL_API_CALL *cl_api_clEnqueueAcquireD3D11ObjectsKHR)(
871 cl_command_queue command_queue, cl_uint num_objects,
872 const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
873 const cl_event *event_wait_list,
874 cl_event *event) CL_API_SUFFIX__VERSION_1_2;
875
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000876typedef
Sheri Zhang67354e02021-06-30 16:08:29 +0100877cl_int(CL_API_CALL *cl_api_clEnqueueReleaseD3D11ObjectsKHR)(
878 cl_command_queue command_queue, cl_uint num_objects,
879 const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
880 const cl_event *event_wait_list,
881 cl_event *event) CL_API_SUFFIX__VERSION_1_2;
882
883/* cl_khr_dx9_media_sharing */
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000884typedef
Sheri Zhang67354e02021-06-30 16:08:29 +0100885cl_int(CL_API_CALL *cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR)(
886 cl_platform_id platform, cl_uint num_media_adapters,
887 cl_dx9_media_adapter_type_khr *media_adapters_type, void *media_adapters,
888 cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries,
889 cl_device_id *devices, cl_uint *num_devices) CL_API_SUFFIX__VERSION_1_2;
890
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000891typedef cl_mem(CL_API_CALL *cl_api_clCreateFromDX9MediaSurfaceKHR)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100892 cl_context context, cl_mem_flags flags,
893 cl_dx9_media_adapter_type_khr adapter_type, void *surface_info,
894 cl_uint plane, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_2;
895
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000896typedef
Sheri Zhang67354e02021-06-30 16:08:29 +0100897cl_int(CL_API_CALL *cl_api_clEnqueueAcquireDX9MediaSurfacesKHR)(
898 cl_command_queue command_queue, cl_uint num_objects,
899 const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
900 const cl_event *event_wait_list,
901 cl_event *event) CL_API_SUFFIX__VERSION_1_2;
902
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000903typedef
Sheri Zhang67354e02021-06-30 16:08:29 +0100904cl_int(CL_API_CALL *cl_api_clEnqueueReleaseDX9MediaSurfacesKHR)(
905 cl_command_queue command_queue, cl_uint num_objects,
906 const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
907 const cl_event *event_wait_list,
908 cl_event *event) CL_API_SUFFIX__VERSION_1_2;
909
910/* cl_khr_d3d11_sharing */
911extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromD3D11KHR(
912 cl_platform_id platform, cl_d3d11_device_source_khr d3d_device_source,
913 void *d3d_object, cl_d3d11_device_set_khr d3d_device_set,
914 cl_uint num_entries, cl_device_id *devices, cl_uint *num_devices);
915
916extern CL_API_ENTRY cl_mem CL_API_CALL
917clCreateFromD3D11BufferKHR(cl_context context, cl_mem_flags flags,
918 ID3D11Buffer *resource, cl_int *errcode_ret);
919
920extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11Texture2DKHR(
921 cl_context context, cl_mem_flags flags, ID3D11Texture2D *resource,
922 UINT subresource, cl_int *errcode_ret);
923
924extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromD3D11Texture3DKHR(
925 cl_context context, cl_mem_flags flags, ID3D11Texture3D *resource,
926 UINT subresource, cl_int *errcode_ret);
927
928extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireD3D11ObjectsKHR(
929 cl_command_queue command_queue, cl_uint num_objects,
930 const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
931 const cl_event *event_wait_list, cl_event *event);
932
933extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseD3D11ObjectsKHR(
934 cl_command_queue command_queue, cl_uint num_objects,
935 const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
936 const cl_event *event_wait_list, cl_event *event);
937
938/* cl_khr_dx9_media_sharing */
939extern CL_API_ENTRY cl_int CL_API_CALL clGetDeviceIDsFromDX9MediaAdapterKHR(
940 cl_platform_id platform, cl_uint num_media_adapters,
941 cl_dx9_media_adapter_type_khr *media_adapter_type, void *media_adapters,
942 cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries,
943 cl_device_id *devices, cl_uint *num_devices);
944
945extern CL_API_ENTRY cl_mem CL_API_CALL clCreateFromDX9MediaSurfaceKHR(
946 cl_context context, cl_mem_flags flags,
947 cl_dx9_media_adapter_type_khr adapter_type, void *surface_info,
948 cl_uint plane, cl_int *errcode_ret);
949
950extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueAcquireDX9MediaSurfacesKHR(
951 cl_command_queue command_queue, cl_uint num_objects,
952 const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
953 const cl_event *event_wait_list, cl_event *event);
954
955extern CL_API_ENTRY cl_int CL_API_CALL clEnqueueReleaseDX9MediaSurfacesKHR(
956 cl_command_queue command_queue, cl_uint num_objects,
957 const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
958 const cl_event *event_wait_list, cl_event *event);
959
960#else
961
962/* cl_khr_d3d10_sharing */
963typedef void *cl_api_clGetDeviceIDsFromD3D10KHR;
964typedef void *cl_api_clCreateFromD3D10BufferKHR;
965typedef void *cl_api_clCreateFromD3D10Texture2DKHR;
966typedef void *cl_api_clCreateFromD3D10Texture3DKHR;
967typedef void *cl_api_clEnqueueAcquireD3D10ObjectsKHR;
968typedef void *cl_api_clEnqueueReleaseD3D10ObjectsKHR;
969
970/* cl_khr_d3d11_sharing */
971typedef void *cl_api_clGetDeviceIDsFromD3D11KHR;
972typedef void *cl_api_clCreateFromD3D11BufferKHR;
973typedef void *cl_api_clCreateFromD3D11Texture2DKHR;
974typedef void *cl_api_clCreateFromD3D11Texture3DKHR;
975typedef void *cl_api_clEnqueueAcquireD3D11ObjectsKHR;
976typedef void *cl_api_clEnqueueReleaseD3D11ObjectsKHR;
977
978/* cl_khr_dx9_media_sharing */
979typedef void *cl_api_clCreateFromDX9MediaSurfaceKHR;
980typedef void *cl_api_clEnqueueAcquireDX9MediaSurfacesKHR;
981typedef void *cl_api_clEnqueueReleaseDX9MediaSurfacesKHR;
982typedef void *cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR;
983
984#endif
985
986/* OpenCL 1.1 */
987
988#ifdef CL_VERSION_1_1
989
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000990typedef cl_int(CL_API_CALL *cl_api_clSetEventCallback)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100991 cl_event /* event */, cl_int /* command_exec_callback_type */,
992 void(CL_CALLBACK * /* pfn_notify */)(cl_event, cl_int, void *),
993 void * /* user_data */) CL_API_SUFFIX__VERSION_1_1;
994
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +0000995typedef cl_mem(CL_API_CALL *cl_api_clCreateSubBuffer)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100996 cl_mem /* buffer */, cl_mem_flags /* flags */,
997 cl_buffer_create_type /* buffer_create_type */,
998 const void * /* buffer_create_info */,
999 cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1;
1000
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001001typedef
Sheri Zhang67354e02021-06-30 16:08:29 +01001002cl_int(CL_API_CALL *cl_api_clSetMemObjectDestructorCallback)(
1003 cl_mem /* memobj */,
1004 void(CL_CALLBACK * /*pfn_notify*/)(cl_mem /* memobj */,
1005 void * /*user_data*/),
1006 void * /*user_data */) CL_API_SUFFIX__VERSION_1_1;
1007
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001008typedef cl_event(CL_API_CALL *cl_api_clCreateUserEvent)(
Sheri Zhang67354e02021-06-30 16:08:29 +01001009 cl_context /* context */,
1010 cl_int * /* errcode_ret */) CL_API_SUFFIX__VERSION_1_1;
1011
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001012typedef cl_int(CL_API_CALL *cl_api_clSetUserEventStatus)(
Sheri Zhang67354e02021-06-30 16:08:29 +01001013 cl_event /* event */,
1014 cl_int /* execution_status */) CL_API_SUFFIX__VERSION_1_1;
1015
1016#else
1017
1018typedef void *cl_api_clSetEventCallback;
1019typedef void *cl_api_clCreateSubBuffer;
1020typedef void *cl_api_clSetMemObjectDestructorCallback;
1021typedef void *cl_api_clCreateUserEvent;
1022typedef void *cl_api_clSetUserEventStatus;
1023
1024#endif
1025
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001026typedef cl_int(CL_API_CALL *cl_api_clCreateSubDevicesEXT)(
Sheri Zhang67354e02021-06-30 16:08:29 +01001027 cl_device_id in_device,
1028 const cl_device_partition_property_ext *partition_properties,
1029 cl_uint num_entries, cl_device_id *out_devices, cl_uint *num_devices);
1030
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001031typedef cl_int(CL_API_CALL *cl_api_clRetainDeviceEXT)(
Sheri Zhang67354e02021-06-30 16:08:29 +01001032 cl_device_id device) CL_API_SUFFIX__VERSION_1_0;
1033
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001034typedef cl_int(CL_API_CALL *cl_api_clReleaseDeviceEXT)(
Sheri Zhang67354e02021-06-30 16:08:29 +01001035 cl_device_id device) CL_API_SUFFIX__VERSION_1_0;
1036
1037/* cl_khr_egl_image */
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001038typedef cl_mem(CL_API_CALL *cl_api_clCreateFromEGLImageKHR)(
Sheri Zhang67354e02021-06-30 16:08:29 +01001039 cl_context context, CLeglDisplayKHR display, CLeglImageKHR image,
1040 cl_mem_flags flags, const cl_egl_image_properties_khr *properties,
1041 cl_int *errcode_ret);
1042
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001043typedef cl_int(CL_API_CALL *cl_api_clEnqueueAcquireEGLObjectsKHR)(
Sheri Zhang67354e02021-06-30 16:08:29 +01001044 cl_command_queue command_queue, cl_uint num_objects,
1045 const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
1046 const cl_event *event_wait_list, cl_event *event);
1047
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001048typedef cl_int(CL_API_CALL *cl_api_clEnqueueReleaseEGLObjectsKHR)(
Sheri Zhang67354e02021-06-30 16:08:29 +01001049 cl_command_queue command_queue, cl_uint num_objects,
1050 const cl_mem *mem_objects, cl_uint num_events_in_wait_list,
1051 const cl_event *event_wait_list, cl_event *event);
1052
1053/* cl_khr_egl_event */
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001054typedef cl_event(CL_API_CALL *cl_api_clCreateEventFromEGLSyncKHR)(
Sheri Zhang67354e02021-06-30 16:08:29 +01001055 cl_context context, CLeglSyncKHR sync, CLeglDisplayKHR display,
1056 cl_int *errcode_ret);
1057
1058#ifdef CL_VERSION_2_1
1059
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001060typedef cl_int(CL_API_CALL *cl_api_clSetDefaultDeviceCommandQueue)(
Sheri Zhang67354e02021-06-30 16:08:29 +01001061 cl_context context, cl_device_id device,
1062 cl_command_queue command_queue) CL_API_SUFFIX__VERSION_2_1;
1063
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001064typedef cl_program(CL_API_CALL *cl_api_clCreateProgramWithIL)(
Sheri Zhang67354e02021-06-30 16:08:29 +01001065 cl_context context, const void *il, size_t length,
1066 cl_int *errcode_ret) CL_API_SUFFIX__VERSION_2_1;
1067
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001068typedef cl_int(CL_API_CALL *cl_api_clGetKernelSubGroupInfo)(
Sheri Zhang67354e02021-06-30 16:08:29 +01001069 cl_kernel kernel, cl_device_id device, cl_kernel_sub_group_info param_name,
1070 size_t input_value_size, const void *input_value, size_t param_value_size,
1071 void *param_value, size_t *param_value_size_ret) CL_API_SUFFIX__VERSION_2_1;
1072
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001073typedef cl_kernel(CL_API_CALL *cl_api_clCloneKernel)(
Sheri Zhang67354e02021-06-30 16:08:29 +01001074 cl_kernel source_kernel, cl_int *errcode_ret) CL_API_SUFFIX__VERSION_2_1;
1075
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001076typedef cl_int(CL_API_CALL *cl_api_clEnqueueSVMMigrateMem)(
Sheri Zhang67354e02021-06-30 16:08:29 +01001077 cl_command_queue command_queue, cl_uint num_svm_pointers,
1078 const void **svm_pointers, const size_t *sizes,
1079 cl_mem_migration_flags flags, cl_uint num_events_in_wait_list,
1080 const cl_event *event_wait_list,
1081 cl_event *event) CL_API_SUFFIX__VERSION_2_1;
1082
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001083typedef cl_int(CL_API_CALL *cl_api_clGetDeviceAndHostTimer)(
Sheri Zhang67354e02021-06-30 16:08:29 +01001084 cl_device_id device, cl_ulong *device_timestamp,
1085 cl_ulong *host_timestamp) CL_API_SUFFIX__VERSION_2_1;
1086
Pablo Marquez Tellodc2282f2021-11-23 15:16:00 +00001087typedef cl_int(CL_API_CALL *cl_api_clGetHostTimer)(
Sheri Zhang67354e02021-06-30 16:08:29 +01001088 cl_device_id device, cl_ulong *host_timestamp) CL_API_SUFFIX__VERSION_2_1;
1089
1090#else
1091
1092typedef void *cl_api_clSetDefaultDeviceCommandQueue;
1093typedef void *cl_api_clCreateProgramWithIL;
1094typedef void *cl_api_clGetKernelSubGroupInfo;
1095typedef void *cl_api_clCloneKernel;
1096typedef void *cl_api_clEnqueueSVMMigrateMem;
1097typedef void *cl_api_clGetDeviceAndHostTimer;
1098typedef void *cl_api_clGetHostTimer;
1099
1100#endif
1101
Viet-Hoa Do633ebd12023-08-11 12:27:59 +01001102/* Vendor dispatch table structure */
Sheri Zhang67354e02021-06-30 16:08:29 +01001103
1104typedef struct _cl_icd_dispatch {
1105 /* OpenCL 1.0 */
1106 cl_api_clGetPlatformIDs clGetPlatformIDs;
1107 cl_api_clGetPlatformInfo clGetPlatformInfo;
1108 cl_api_clGetDeviceIDs clGetDeviceIDs;
1109 cl_api_clGetDeviceInfo clGetDeviceInfo;
1110 cl_api_clCreateContext clCreateContext;
1111 cl_api_clCreateContextFromType clCreateContextFromType;
1112 cl_api_clRetainContext clRetainContext;
1113 cl_api_clReleaseContext clReleaseContext;
1114 cl_api_clGetContextInfo clGetContextInfo;
1115 cl_api_clCreateCommandQueue clCreateCommandQueue;
1116 cl_api_clRetainCommandQueue clRetainCommandQueue;
1117 cl_api_clReleaseCommandQueue clReleaseCommandQueue;
1118 cl_api_clGetCommandQueueInfo clGetCommandQueueInfo;
1119 cl_api_clSetCommandQueueProperty clSetCommandQueueProperty;
1120 cl_api_clCreateBuffer clCreateBuffer;
1121 cl_api_clCreateImage2D clCreateImage2D;
1122 cl_api_clCreateImage3D clCreateImage3D;
1123 cl_api_clRetainMemObject clRetainMemObject;
1124 cl_api_clReleaseMemObject clReleaseMemObject;
1125 cl_api_clGetSupportedImageFormats clGetSupportedImageFormats;
1126 cl_api_clGetMemObjectInfo clGetMemObjectInfo;
1127 cl_api_clGetImageInfo clGetImageInfo;
1128 cl_api_clCreateSampler clCreateSampler;
1129 cl_api_clRetainSampler clRetainSampler;
1130 cl_api_clReleaseSampler clReleaseSampler;
1131 cl_api_clGetSamplerInfo clGetSamplerInfo;
1132 cl_api_clCreateProgramWithSource clCreateProgramWithSource;
1133 cl_api_clCreateProgramWithBinary clCreateProgramWithBinary;
1134 cl_api_clRetainProgram clRetainProgram;
1135 cl_api_clReleaseProgram clReleaseProgram;
1136 cl_api_clBuildProgram clBuildProgram;
1137 cl_api_clUnloadCompiler clUnloadCompiler;
1138 cl_api_clGetProgramInfo clGetProgramInfo;
1139 cl_api_clGetProgramBuildInfo clGetProgramBuildInfo;
1140 cl_api_clCreateKernel clCreateKernel;
1141 cl_api_clCreateKernelsInProgram clCreateKernelsInProgram;
1142 cl_api_clRetainKernel clRetainKernel;
1143 cl_api_clReleaseKernel clReleaseKernel;
1144 cl_api_clSetKernelArg clSetKernelArg;
1145 cl_api_clGetKernelInfo clGetKernelInfo;
1146 cl_api_clGetKernelWorkGroupInfo clGetKernelWorkGroupInfo;
1147 cl_api_clWaitForEvents clWaitForEvents;
1148 cl_api_clGetEventInfo clGetEventInfo;
1149 cl_api_clRetainEvent clRetainEvent;
1150 cl_api_clReleaseEvent clReleaseEvent;
1151 cl_api_clGetEventProfilingInfo clGetEventProfilingInfo;
1152 cl_api_clFlush clFlush;
1153 cl_api_clFinish clFinish;
1154 cl_api_clEnqueueReadBuffer clEnqueueReadBuffer;
1155 cl_api_clEnqueueWriteBuffer clEnqueueWriteBuffer;
1156 cl_api_clEnqueueCopyBuffer clEnqueueCopyBuffer;
1157 cl_api_clEnqueueReadImage clEnqueueReadImage;
1158 cl_api_clEnqueueWriteImage clEnqueueWriteImage;
1159 cl_api_clEnqueueCopyImage clEnqueueCopyImage;
1160 cl_api_clEnqueueCopyImageToBuffer clEnqueueCopyImageToBuffer;
1161 cl_api_clEnqueueCopyBufferToImage clEnqueueCopyBufferToImage;
1162 cl_api_clEnqueueMapBuffer clEnqueueMapBuffer;
1163 cl_api_clEnqueueMapImage clEnqueueMapImage;
1164 cl_api_clEnqueueUnmapMemObject clEnqueueUnmapMemObject;
1165 cl_api_clEnqueueNDRangeKernel clEnqueueNDRangeKernel;
1166 cl_api_clEnqueueTask clEnqueueTask;
1167 cl_api_clEnqueueNativeKernel clEnqueueNativeKernel;
1168 cl_api_clEnqueueMarker clEnqueueMarker;
1169 cl_api_clEnqueueWaitForEvents clEnqueueWaitForEvents;
1170 cl_api_clEnqueueBarrier clEnqueueBarrier;
1171 cl_api_clGetExtensionFunctionAddress clGetExtensionFunctionAddress;
1172 cl_api_clCreateFromGLBuffer clCreateFromGLBuffer;
1173 cl_api_clCreateFromGLTexture2D clCreateFromGLTexture2D;
1174 cl_api_clCreateFromGLTexture3D clCreateFromGLTexture3D;
1175 cl_api_clCreateFromGLRenderbuffer clCreateFromGLRenderbuffer;
1176 cl_api_clGetGLObjectInfo clGetGLObjectInfo;
1177 cl_api_clGetGLTextureInfo clGetGLTextureInfo;
1178 cl_api_clEnqueueAcquireGLObjects clEnqueueAcquireGLObjects;
1179 cl_api_clEnqueueReleaseGLObjects clEnqueueReleaseGLObjects;
1180 cl_api_clGetGLContextInfoKHR clGetGLContextInfoKHR;
1181
1182 /* cl_khr_d3d10_sharing */
1183 cl_api_clGetDeviceIDsFromD3D10KHR clGetDeviceIDsFromD3D10KHR;
1184 cl_api_clCreateFromD3D10BufferKHR clCreateFromD3D10BufferKHR;
1185 cl_api_clCreateFromD3D10Texture2DKHR clCreateFromD3D10Texture2DKHR;
1186 cl_api_clCreateFromD3D10Texture3DKHR clCreateFromD3D10Texture3DKHR;
1187 cl_api_clEnqueueAcquireD3D10ObjectsKHR clEnqueueAcquireD3D10ObjectsKHR;
1188 cl_api_clEnqueueReleaseD3D10ObjectsKHR clEnqueueReleaseD3D10ObjectsKHR;
1189
1190 /* OpenCL 1.1 */
1191 cl_api_clSetEventCallback clSetEventCallback;
1192 cl_api_clCreateSubBuffer clCreateSubBuffer;
1193 cl_api_clSetMemObjectDestructorCallback clSetMemObjectDestructorCallback;
1194 cl_api_clCreateUserEvent clCreateUserEvent;
1195 cl_api_clSetUserEventStatus clSetUserEventStatus;
1196 cl_api_clEnqueueReadBufferRect clEnqueueReadBufferRect;
1197 cl_api_clEnqueueWriteBufferRect clEnqueueWriteBufferRect;
1198 cl_api_clEnqueueCopyBufferRect clEnqueueCopyBufferRect;
1199
1200 /* cl_ext_device_fission */
1201 cl_api_clCreateSubDevicesEXT clCreateSubDevicesEXT;
1202 cl_api_clRetainDeviceEXT clRetainDeviceEXT;
1203 cl_api_clReleaseDeviceEXT clReleaseDeviceEXT;
1204
1205 /* cl_khr_gl_event */
1206 cl_api_clCreateEventFromGLsyncKHR clCreateEventFromGLsyncKHR;
1207
1208 /* OpenCL 1.2 */
1209 cl_api_clCreateSubDevices clCreateSubDevices;
1210 cl_api_clRetainDevice clRetainDevice;
1211 cl_api_clReleaseDevice clReleaseDevice;
1212 cl_api_clCreateImage clCreateImage;
1213 cl_api_clCreateProgramWithBuiltInKernels clCreateProgramWithBuiltInKernels;
1214 cl_api_clCompileProgram clCompileProgram;
1215 cl_api_clLinkProgram clLinkProgram;
1216 cl_api_clUnloadPlatformCompiler clUnloadPlatformCompiler;
1217 cl_api_clGetKernelArgInfo clGetKernelArgInfo;
1218 cl_api_clEnqueueFillBuffer clEnqueueFillBuffer;
1219 cl_api_clEnqueueFillImage clEnqueueFillImage;
1220 cl_api_clEnqueueMigrateMemObjects clEnqueueMigrateMemObjects;
1221 cl_api_clEnqueueMarkerWithWaitList clEnqueueMarkerWithWaitList;
1222 cl_api_clEnqueueBarrierWithWaitList clEnqueueBarrierWithWaitList;
1223 cl_api_clGetExtensionFunctionAddressForPlatform
1224 clGetExtensionFunctionAddressForPlatform;
1225 cl_api_clCreateFromGLTexture clCreateFromGLTexture;
1226
1227 /* cl_khr_d3d11_sharing */
1228 cl_api_clGetDeviceIDsFromD3D11KHR clGetDeviceIDsFromD3D11KHR;
1229 cl_api_clCreateFromD3D11BufferKHR clCreateFromD3D11BufferKHR;
1230 cl_api_clCreateFromD3D11Texture2DKHR clCreateFromD3D11Texture2DKHR;
1231 cl_api_clCreateFromD3D11Texture3DKHR clCreateFromD3D11Texture3DKHR;
1232 cl_api_clCreateFromDX9MediaSurfaceKHR clCreateFromDX9MediaSurfaceKHR;
1233 cl_api_clEnqueueAcquireD3D11ObjectsKHR clEnqueueAcquireD3D11ObjectsKHR;
1234 cl_api_clEnqueueReleaseD3D11ObjectsKHR clEnqueueReleaseD3D11ObjectsKHR;
1235
1236 /* cl_khr_dx9_media_sharing */
1237 cl_api_clGetDeviceIDsFromDX9MediaAdapterKHR
1238 clGetDeviceIDsFromDX9MediaAdapterKHR;
1239 cl_api_clEnqueueAcquireDX9MediaSurfacesKHR
1240 clEnqueueAcquireDX9MediaSurfacesKHR;
1241 cl_api_clEnqueueReleaseDX9MediaSurfacesKHR
1242 clEnqueueReleaseDX9MediaSurfacesKHR;
1243
1244 /* cl_khr_egl_image */
1245 cl_api_clCreateFromEGLImageKHR clCreateFromEGLImageKHR;
1246 cl_api_clEnqueueAcquireEGLObjectsKHR clEnqueueAcquireEGLObjectsKHR;
1247 cl_api_clEnqueueReleaseEGLObjectsKHR clEnqueueReleaseEGLObjectsKHR;
1248
1249 /* cl_khr_egl_event */
1250 cl_api_clCreateEventFromEGLSyncKHR clCreateEventFromEGLSyncKHR;
1251
1252 /* OpenCL 2.0 */
1253 cl_api_clCreateCommandQueueWithProperties clCreateCommandQueueWithProperties;
1254 cl_api_clCreatePipe clCreatePipe;
1255 cl_api_clGetPipeInfo clGetPipeInfo;
1256 cl_api_clSVMAlloc clSVMAlloc;
1257 cl_api_clSVMFree clSVMFree;
1258 cl_api_clEnqueueSVMFree clEnqueueSVMFree;
1259 cl_api_clEnqueueSVMMemcpy clEnqueueSVMMemcpy;
1260 cl_api_clEnqueueSVMMemFill clEnqueueSVMMemFill;
1261 cl_api_clEnqueueSVMMap clEnqueueSVMMap;
1262 cl_api_clEnqueueSVMUnmap clEnqueueSVMUnmap;
1263 cl_api_clCreateSamplerWithProperties clCreateSamplerWithProperties;
1264 cl_api_clSetKernelArgSVMPointer clSetKernelArgSVMPointer;
1265 cl_api_clSetKernelExecInfo clSetKernelExecInfo;
1266
1267 /* cl_khr_sub_groups */
1268 cl_api_clGetKernelSubGroupInfoKHR clGetKernelSubGroupInfoKHR;
1269
1270 /* OpenCL 2.1 */
1271 cl_api_clCloneKernel clCloneKernel;
1272 cl_api_clCreateProgramWithIL clCreateProgramWithIL;
1273 cl_api_clEnqueueSVMMigrateMem clEnqueueSVMMigrateMem;
1274 cl_api_clGetDeviceAndHostTimer clGetDeviceAndHostTimer;
1275 cl_api_clGetHostTimer clGetHostTimer;
1276 cl_api_clGetKernelSubGroupInfo clGetKernelSubGroupInfo;
1277 cl_api_clSetDefaultDeviceCommandQueue clSetDefaultDeviceCommandQueue;
1278
1279 /* OpenCL 2.2 */
1280 cl_api_clSetProgramReleaseCallback clSetProgramReleaseCallback;
1281 cl_api_clSetProgramSpecializationConstant clSetProgramSpecializationConstant;
Sheri Zhang79cb9452021-09-07 14:51:49 +01001282
1283 /* OpenCL 3.0 */
1284 cl_api_clCreateBufferWithProperties clCreateBufferWithProperties;
1285 cl_api_clCreateImageWithProperties clCreateImageWithProperties;
1286 cl_api_clSetContextDestructorCallback clSetContextDestructorCallback;
1287
Sheri Zhang67354e02021-06-30 16:08:29 +01001288} cl_icd_dispatch;
1289
1290#ifdef __cplusplus
1291}
1292#endif
1293
1294#endif /* #ifndef OPENCL_CL_ICD_H */