• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*******************************************************************************
2  * Copyright (c) 2008-2023 The Khronos Group Inc.
3  *
4  * 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
7  *
8  *    http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * 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.
15  ******************************************************************************/
16 
17 #ifndef OPENCL_CL_EXT_H_
18 #define OPENCL_CL_EXT_H_
19 
20 /*
21 ** This header is generated from the Khronos OpenCL XML API Registry.
22 */
23 
24 #include <CL/cl.h>
25 
26 /* CL_NO_PROTOTYPES implies CL_NO_EXTENSION_PROTOTYPES: */
27 #if defined(CL_NO_PROTOTYPES) && !defined(CL_NO_EXTENSION_PROTOTYPES)
28 #define CL_NO_EXTENSION_PROTOTYPES
29 #endif
30 
31 /* CL_NO_EXTENSION_PROTOTYPES implies
32    CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES and
33    CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES: */
34 #if defined(CL_NO_EXTENSION_PROTOTYPES) && \
35     !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES)
36 #define CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES
37 #endif
38 #if defined(CL_NO_EXTENSION_PROTOTYPES) && \
39     !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
40 #define CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES
41 #endif
42 
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46 
47 /***************************************************************
48 * cl_khr_command_buffer
49 ***************************************************************/
50 #define cl_khr_command_buffer 1
51 #define CL_KHR_COMMAND_BUFFER_EXTENSION_NAME \
52     "cl_khr_command_buffer"
53 
54 typedef cl_bitfield         cl_device_command_buffer_capabilities_khr;
55 typedef struct _cl_command_buffer_khr* cl_command_buffer_khr;
56 typedef cl_uint             cl_sync_point_khr;
57 typedef cl_uint             cl_command_buffer_info_khr;
58 typedef cl_uint             cl_command_buffer_state_khr;
59 typedef cl_properties       cl_command_buffer_properties_khr;
60 typedef cl_bitfield         cl_command_buffer_flags_khr;
61 typedef cl_properties       cl_ndrange_kernel_command_properties_khr;
62 typedef struct _cl_mutable_command_khr* cl_mutable_command_khr;
63 
64 /* cl_device_info */
65 #define CL_DEVICE_COMMAND_BUFFER_CAPABILITIES_KHR           0x12A9
66 #define CL_DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES_KHR 0x12AA
67 
68 /* cl_device_command_buffer_capabilities_khr - bitfield */
69 #define CL_COMMAND_BUFFER_CAPABILITY_KERNEL_PRINTF_KHR      (1 << 0)
70 #define CL_COMMAND_BUFFER_CAPABILITY_DEVICE_SIDE_ENQUEUE_KHR (1 << 1)
71 #define CL_COMMAND_BUFFER_CAPABILITY_SIMULTANEOUS_USE_KHR   (1 << 2)
72 #define CL_COMMAND_BUFFER_CAPABILITY_OUT_OF_ORDER_KHR       (1 << 3)
73 
74 /* cl_command_buffer_properties_khr */
75 #define CL_COMMAND_BUFFER_FLAGS_KHR                         0x1293
76 
77 /* cl_command_buffer_flags_khr - bitfield */
78 #define CL_COMMAND_BUFFER_SIMULTANEOUS_USE_KHR              (1 << 0)
79 
80 /* Error codes */
81 #define CL_INVALID_COMMAND_BUFFER_KHR                       -1138
82 #define CL_INVALID_SYNC_POINT_WAIT_LIST_KHR                 -1139
83 #define CL_INCOMPATIBLE_COMMAND_QUEUE_KHR                   -1140
84 
85 /* cl_command_buffer_info_khr */
86 #define CL_COMMAND_BUFFER_QUEUES_KHR                        0x1294
87 #define CL_COMMAND_BUFFER_NUM_QUEUES_KHR                    0x1295
88 #define CL_COMMAND_BUFFER_REFERENCE_COUNT_KHR               0x1296
89 #define CL_COMMAND_BUFFER_STATE_KHR                         0x1297
90 #define CL_COMMAND_BUFFER_PROPERTIES_ARRAY_KHR              0x1298
91 #define CL_COMMAND_BUFFER_CONTEXT_KHR                       0x1299
92 
93 /* cl_command_buffer_state_khr */
94 #define CL_COMMAND_BUFFER_STATE_RECORDING_KHR               0
95 #define CL_COMMAND_BUFFER_STATE_EXECUTABLE_KHR              1
96 #define CL_COMMAND_BUFFER_STATE_PENDING_KHR                 2
97 
98 /* cl_command_type */
99 #define CL_COMMAND_COMMAND_BUFFER_KHR                       0x12A8
100 
101 
102 typedef cl_command_buffer_khr CL_API_CALL
103 clCreateCommandBufferKHR_t(
104     cl_uint num_queues,
105     const cl_command_queue* queues,
106     const cl_command_buffer_properties_khr* properties,
107     cl_int* errcode_ret);
108 
109 typedef clCreateCommandBufferKHR_t *
110 clCreateCommandBufferKHR_fn ;
111 
112 typedef cl_int CL_API_CALL
113 clFinalizeCommandBufferKHR_t(
114     cl_command_buffer_khr command_buffer);
115 
116 typedef clFinalizeCommandBufferKHR_t *
117 clFinalizeCommandBufferKHR_fn ;
118 
119 typedef cl_int CL_API_CALL
120 clRetainCommandBufferKHR_t(
121     cl_command_buffer_khr command_buffer);
122 
123 typedef clRetainCommandBufferKHR_t *
124 clRetainCommandBufferKHR_fn ;
125 
126 typedef cl_int CL_API_CALL
127 clReleaseCommandBufferKHR_t(
128     cl_command_buffer_khr command_buffer);
129 
130 typedef clReleaseCommandBufferKHR_t *
131 clReleaseCommandBufferKHR_fn ;
132 
133 typedef cl_int CL_API_CALL
134 clEnqueueCommandBufferKHR_t(
135     cl_uint num_queues,
136     cl_command_queue* queues,
137     cl_command_buffer_khr command_buffer,
138     cl_uint num_events_in_wait_list,
139     const cl_event* event_wait_list,
140     cl_event* event);
141 
142 typedef clEnqueueCommandBufferKHR_t *
143 clEnqueueCommandBufferKHR_fn ;
144 
145 typedef cl_int CL_API_CALL
146 clCommandBarrierWithWaitListKHR_t(
147     cl_command_buffer_khr command_buffer,
148     cl_command_queue command_queue,
149     cl_uint num_sync_points_in_wait_list,
150     const cl_sync_point_khr* sync_point_wait_list,
151     cl_sync_point_khr* sync_point,
152     cl_mutable_command_khr* mutable_handle);
153 
154 typedef clCommandBarrierWithWaitListKHR_t *
155 clCommandBarrierWithWaitListKHR_fn ;
156 
157 typedef cl_int CL_API_CALL
158 clCommandCopyBufferKHR_t(
159     cl_command_buffer_khr command_buffer,
160     cl_command_queue command_queue,
161     cl_mem src_buffer,
162     cl_mem dst_buffer,
163     size_t src_offset,
164     size_t dst_offset,
165     size_t size,
166     cl_uint num_sync_points_in_wait_list,
167     const cl_sync_point_khr* sync_point_wait_list,
168     cl_sync_point_khr* sync_point,
169     cl_mutable_command_khr* mutable_handle);
170 
171 typedef clCommandCopyBufferKHR_t *
172 clCommandCopyBufferKHR_fn ;
173 
174 typedef cl_int CL_API_CALL
175 clCommandCopyBufferRectKHR_t(
176     cl_command_buffer_khr command_buffer,
177     cl_command_queue command_queue,
178     cl_mem src_buffer,
179     cl_mem dst_buffer,
180     const size_t* src_origin,
181     const size_t* dst_origin,
182     const size_t* region,
183     size_t src_row_pitch,
184     size_t src_slice_pitch,
185     size_t dst_row_pitch,
186     size_t dst_slice_pitch,
187     cl_uint num_sync_points_in_wait_list,
188     const cl_sync_point_khr* sync_point_wait_list,
189     cl_sync_point_khr* sync_point,
190     cl_mutable_command_khr* mutable_handle);
191 
192 typedef clCommandCopyBufferRectKHR_t *
193 clCommandCopyBufferRectKHR_fn ;
194 
195 typedef cl_int CL_API_CALL
196 clCommandCopyBufferToImageKHR_t(
197     cl_command_buffer_khr command_buffer,
198     cl_command_queue command_queue,
199     cl_mem src_buffer,
200     cl_mem dst_image,
201     size_t src_offset,
202     const size_t* dst_origin,
203     const size_t* region,
204     cl_uint num_sync_points_in_wait_list,
205     const cl_sync_point_khr* sync_point_wait_list,
206     cl_sync_point_khr* sync_point,
207     cl_mutable_command_khr* mutable_handle);
208 
209 typedef clCommandCopyBufferToImageKHR_t *
210 clCommandCopyBufferToImageKHR_fn ;
211 
212 typedef cl_int CL_API_CALL
213 clCommandCopyImageKHR_t(
214     cl_command_buffer_khr command_buffer,
215     cl_command_queue command_queue,
216     cl_mem src_image,
217     cl_mem dst_image,
218     const size_t* src_origin,
219     const size_t* dst_origin,
220     const size_t* region,
221     cl_uint num_sync_points_in_wait_list,
222     const cl_sync_point_khr* sync_point_wait_list,
223     cl_sync_point_khr* sync_point,
224     cl_mutable_command_khr* mutable_handle);
225 
226 typedef clCommandCopyImageKHR_t *
227 clCommandCopyImageKHR_fn ;
228 
229 typedef cl_int CL_API_CALL
230 clCommandCopyImageToBufferKHR_t(
231     cl_command_buffer_khr command_buffer,
232     cl_command_queue command_queue,
233     cl_mem src_image,
234     cl_mem dst_buffer,
235     const size_t* src_origin,
236     const size_t* region,
237     size_t dst_offset,
238     cl_uint num_sync_points_in_wait_list,
239     const cl_sync_point_khr* sync_point_wait_list,
240     cl_sync_point_khr* sync_point,
241     cl_mutable_command_khr* mutable_handle);
242 
243 typedef clCommandCopyImageToBufferKHR_t *
244 clCommandCopyImageToBufferKHR_fn ;
245 
246 typedef cl_int CL_API_CALL
247 clCommandFillBufferKHR_t(
248     cl_command_buffer_khr command_buffer,
249     cl_command_queue command_queue,
250     cl_mem buffer,
251     const void* pattern,
252     size_t pattern_size,
253     size_t offset,
254     size_t size,
255     cl_uint num_sync_points_in_wait_list,
256     const cl_sync_point_khr* sync_point_wait_list,
257     cl_sync_point_khr* sync_point,
258     cl_mutable_command_khr* mutable_handle);
259 
260 typedef clCommandFillBufferKHR_t *
261 clCommandFillBufferKHR_fn ;
262 
263 typedef cl_int CL_API_CALL
264 clCommandFillImageKHR_t(
265     cl_command_buffer_khr command_buffer,
266     cl_command_queue command_queue,
267     cl_mem image,
268     const void* fill_color,
269     const size_t* origin,
270     const size_t* region,
271     cl_uint num_sync_points_in_wait_list,
272     const cl_sync_point_khr* sync_point_wait_list,
273     cl_sync_point_khr* sync_point,
274     cl_mutable_command_khr* mutable_handle);
275 
276 typedef clCommandFillImageKHR_t *
277 clCommandFillImageKHR_fn ;
278 
279 typedef cl_int CL_API_CALL
280 clCommandNDRangeKernelKHR_t(
281     cl_command_buffer_khr command_buffer,
282     cl_command_queue command_queue,
283     const cl_ndrange_kernel_command_properties_khr* properties,
284     cl_kernel kernel,
285     cl_uint work_dim,
286     const size_t* global_work_offset,
287     const size_t* global_work_size,
288     const size_t* local_work_size,
289     cl_uint num_sync_points_in_wait_list,
290     const cl_sync_point_khr* sync_point_wait_list,
291     cl_sync_point_khr* sync_point,
292     cl_mutable_command_khr* mutable_handle);
293 
294 typedef clCommandNDRangeKernelKHR_t *
295 clCommandNDRangeKernelKHR_fn ;
296 
297 typedef cl_int CL_API_CALL
298 clGetCommandBufferInfoKHR_t(
299     cl_command_buffer_khr command_buffer,
300     cl_command_buffer_info_khr param_name,
301     size_t param_value_size,
302     void* param_value,
303     size_t* param_value_size_ret);
304 
305 typedef clGetCommandBufferInfoKHR_t *
306 clGetCommandBufferInfoKHR_fn ;
307 
308 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
309 
310 extern CL_API_ENTRY cl_command_buffer_khr CL_API_CALL
311 clCreateCommandBufferKHR(
312     cl_uint num_queues,
313     const cl_command_queue* queues,
314     const cl_command_buffer_properties_khr* properties,
315     cl_int* errcode_ret) ;
316 
317 extern CL_API_ENTRY cl_int CL_API_CALL
318 clFinalizeCommandBufferKHR(
319     cl_command_buffer_khr command_buffer) ;
320 
321 extern CL_API_ENTRY cl_int CL_API_CALL
322 clRetainCommandBufferKHR(
323     cl_command_buffer_khr command_buffer) ;
324 
325 extern CL_API_ENTRY cl_int CL_API_CALL
326 clReleaseCommandBufferKHR(
327     cl_command_buffer_khr command_buffer) ;
328 
329 extern CL_API_ENTRY cl_int CL_API_CALL
330 clEnqueueCommandBufferKHR(
331     cl_uint num_queues,
332     cl_command_queue* queues,
333     cl_command_buffer_khr command_buffer,
334     cl_uint num_events_in_wait_list,
335     const cl_event* event_wait_list,
336     cl_event* event) ;
337 
338 extern CL_API_ENTRY cl_int CL_API_CALL
339 clCommandBarrierWithWaitListKHR(
340     cl_command_buffer_khr command_buffer,
341     cl_command_queue command_queue,
342     cl_uint num_sync_points_in_wait_list,
343     const cl_sync_point_khr* sync_point_wait_list,
344     cl_sync_point_khr* sync_point,
345     cl_mutable_command_khr* mutable_handle) ;
346 
347 extern CL_API_ENTRY cl_int CL_API_CALL
348 clCommandCopyBufferKHR(
349     cl_command_buffer_khr command_buffer,
350     cl_command_queue command_queue,
351     cl_mem src_buffer,
352     cl_mem dst_buffer,
353     size_t src_offset,
354     size_t dst_offset,
355     size_t size,
356     cl_uint num_sync_points_in_wait_list,
357     const cl_sync_point_khr* sync_point_wait_list,
358     cl_sync_point_khr* sync_point,
359     cl_mutable_command_khr* mutable_handle) ;
360 
361 extern CL_API_ENTRY cl_int CL_API_CALL
362 clCommandCopyBufferRectKHR(
363     cl_command_buffer_khr command_buffer,
364     cl_command_queue command_queue,
365     cl_mem src_buffer,
366     cl_mem dst_buffer,
367     const size_t* src_origin,
368     const size_t* dst_origin,
369     const size_t* region,
370     size_t src_row_pitch,
371     size_t src_slice_pitch,
372     size_t dst_row_pitch,
373     size_t dst_slice_pitch,
374     cl_uint num_sync_points_in_wait_list,
375     const cl_sync_point_khr* sync_point_wait_list,
376     cl_sync_point_khr* sync_point,
377     cl_mutable_command_khr* mutable_handle) ;
378 
379 extern CL_API_ENTRY cl_int CL_API_CALL
380 clCommandCopyBufferToImageKHR(
381     cl_command_buffer_khr command_buffer,
382     cl_command_queue command_queue,
383     cl_mem src_buffer,
384     cl_mem dst_image,
385     size_t src_offset,
386     const size_t* dst_origin,
387     const size_t* region,
388     cl_uint num_sync_points_in_wait_list,
389     const cl_sync_point_khr* sync_point_wait_list,
390     cl_sync_point_khr* sync_point,
391     cl_mutable_command_khr* mutable_handle) ;
392 
393 extern CL_API_ENTRY cl_int CL_API_CALL
394 clCommandCopyImageKHR(
395     cl_command_buffer_khr command_buffer,
396     cl_command_queue command_queue,
397     cl_mem src_image,
398     cl_mem dst_image,
399     const size_t* src_origin,
400     const size_t* dst_origin,
401     const size_t* region,
402     cl_uint num_sync_points_in_wait_list,
403     const cl_sync_point_khr* sync_point_wait_list,
404     cl_sync_point_khr* sync_point,
405     cl_mutable_command_khr* mutable_handle) ;
406 
407 extern CL_API_ENTRY cl_int CL_API_CALL
408 clCommandCopyImageToBufferKHR(
409     cl_command_buffer_khr command_buffer,
410     cl_command_queue command_queue,
411     cl_mem src_image,
412     cl_mem dst_buffer,
413     const size_t* src_origin,
414     const size_t* region,
415     size_t dst_offset,
416     cl_uint num_sync_points_in_wait_list,
417     const cl_sync_point_khr* sync_point_wait_list,
418     cl_sync_point_khr* sync_point,
419     cl_mutable_command_khr* mutable_handle) ;
420 
421 extern CL_API_ENTRY cl_int CL_API_CALL
422 clCommandFillBufferKHR(
423     cl_command_buffer_khr command_buffer,
424     cl_command_queue command_queue,
425     cl_mem buffer,
426     const void* pattern,
427     size_t pattern_size,
428     size_t offset,
429     size_t size,
430     cl_uint num_sync_points_in_wait_list,
431     const cl_sync_point_khr* sync_point_wait_list,
432     cl_sync_point_khr* sync_point,
433     cl_mutable_command_khr* mutable_handle) ;
434 
435 extern CL_API_ENTRY cl_int CL_API_CALL
436 clCommandFillImageKHR(
437     cl_command_buffer_khr command_buffer,
438     cl_command_queue command_queue,
439     cl_mem image,
440     const void* fill_color,
441     const size_t* origin,
442     const size_t* region,
443     cl_uint num_sync_points_in_wait_list,
444     const cl_sync_point_khr* sync_point_wait_list,
445     cl_sync_point_khr* sync_point,
446     cl_mutable_command_khr* mutable_handle) ;
447 
448 extern CL_API_ENTRY cl_int CL_API_CALL
449 clCommandNDRangeKernelKHR(
450     cl_command_buffer_khr command_buffer,
451     cl_command_queue command_queue,
452     const cl_ndrange_kernel_command_properties_khr* properties,
453     cl_kernel kernel,
454     cl_uint work_dim,
455     const size_t* global_work_offset,
456     const size_t* global_work_size,
457     const size_t* local_work_size,
458     cl_uint num_sync_points_in_wait_list,
459     const cl_sync_point_khr* sync_point_wait_list,
460     cl_sync_point_khr* sync_point,
461     cl_mutable_command_khr* mutable_handle) ;
462 
463 extern CL_API_ENTRY cl_int CL_API_CALL
464 clGetCommandBufferInfoKHR(
465     cl_command_buffer_khr command_buffer,
466     cl_command_buffer_info_khr param_name,
467     size_t param_value_size,
468     void* param_value,
469     size_t* param_value_size_ret) ;
470 
471 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
472 
473 /* From version 0.9.4 of the extension */
474 
475 typedef cl_int CL_API_CALL
476 clCommandSVMMemcpyKHR_t(
477     cl_command_buffer_khr command_buffer,
478     cl_command_queue command_queue,
479     void* dst_ptr,
480     const void* src_ptr,
481     size_t size,
482     cl_uint num_sync_points_in_wait_list,
483     const cl_sync_point_khr* sync_point_wait_list,
484     cl_sync_point_khr* sync_point,
485     cl_mutable_command_khr* mutable_handle);
486 
487 typedef clCommandSVMMemcpyKHR_t *
488 clCommandSVMMemcpyKHR_fn CL_API_SUFFIX__VERSION_2_0;
489 
490 typedef cl_int CL_API_CALL
491 clCommandSVMMemFillKHR_t(
492     cl_command_buffer_khr command_buffer,
493     cl_command_queue command_queue,
494     void* svm_ptr,
495     const void* pattern,
496     size_t pattern_size,
497     size_t size,
498     cl_uint num_sync_points_in_wait_list,
499     const cl_sync_point_khr* sync_point_wait_list,
500     cl_sync_point_khr* sync_point,
501     cl_mutable_command_khr* mutable_handle);
502 
503 typedef clCommandSVMMemFillKHR_t *
504 clCommandSVMMemFillKHR_fn CL_API_SUFFIX__VERSION_2_0;
505 
506 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
507 
508 extern CL_API_ENTRY cl_int CL_API_CALL
509 clCommandSVMMemcpyKHR(
510     cl_command_buffer_khr command_buffer,
511     cl_command_queue command_queue,
512     void* dst_ptr,
513     const void* src_ptr,
514     size_t size,
515     cl_uint num_sync_points_in_wait_list,
516     const cl_sync_point_khr* sync_point_wait_list,
517     cl_sync_point_khr* sync_point,
518     cl_mutable_command_khr* mutable_handle) CL_API_SUFFIX__VERSION_2_0;
519 
520 extern CL_API_ENTRY cl_int CL_API_CALL
521 clCommandSVMMemFillKHR(
522     cl_command_buffer_khr command_buffer,
523     cl_command_queue command_queue,
524     void* svm_ptr,
525     const void* pattern,
526     size_t pattern_size,
527     size_t size,
528     cl_uint num_sync_points_in_wait_list,
529     const cl_sync_point_khr* sync_point_wait_list,
530     cl_sync_point_khr* sync_point,
531     cl_mutable_command_khr* mutable_handle) CL_API_SUFFIX__VERSION_2_0;
532 
533 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
534 
535 /***************************************************************
536 * cl_khr_command_buffer_multi_device
537 ***************************************************************/
538 #define cl_khr_command_buffer_multi_device 1
539 #define CL_KHR_COMMAND_BUFFER_MULTI_DEVICE_EXTENSION_NAME \
540     "cl_khr_command_buffer_multi_device"
541 
542 typedef cl_bitfield         cl_platform_command_buffer_capabilities_khr;
543 
544 /* cl_platform_info */
545 #define CL_PLATFORM_COMMAND_BUFFER_CAPABILITIES_KHR         0x0908
546 
547 /* cl_platform_command_buffer_capabilities_khr - bitfield */
548 #define CL_COMMAND_BUFFER_PLATFORM_UNIVERSAL_SYNC_KHR       (1 << 0)
549 #define CL_COMMAND_BUFFER_PLATFORM_REMAP_QUEUES_KHR         (1 << 1)
550 #define CL_COMMAND_BUFFER_PLATFORM_AUTOMATIC_REMAP_KHR      (1 << 2)
551 
552 /* cl_device_info */
553 #define CL_DEVICE_COMMAND_BUFFER_NUM_SYNC_DEVICES_KHR       0x12AB
554 #define CL_DEVICE_COMMAND_BUFFER_SYNC_DEVICES_KHR           0x12AC
555 
556 /* cl_device_command_buffer_capabilities_khr - bitfield */
557 #define CL_COMMAND_BUFFER_CAPABILITY_MULTIPLE_QUEUE_KHR     (1 << 4)
558 
559 /* cl_command_buffer_flags_khr - bitfield */
560 #define CL_COMMAND_BUFFER_DEVICE_SIDE_SYNC_KHR              (1 << 2)
561 
562 
563 typedef cl_command_buffer_khr CL_API_CALL
564 clRemapCommandBufferKHR_t(
565     cl_command_buffer_khr command_buffer,
566     cl_bool automatic,
567     cl_uint num_queues,
568     const cl_command_queue* queues,
569     cl_uint num_handles,
570     const cl_mutable_command_khr* handles,
571     cl_mutable_command_khr* handles_ret,
572     cl_int* errcode_ret);
573 
574 typedef clRemapCommandBufferKHR_t *
575 clRemapCommandBufferKHR_fn ;
576 
577 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
578 
579 extern CL_API_ENTRY cl_command_buffer_khr CL_API_CALL
580 clRemapCommandBufferKHR(
581     cl_command_buffer_khr command_buffer,
582     cl_bool automatic,
583     cl_uint num_queues,
584     const cl_command_queue* queues,
585     cl_uint num_handles,
586     const cl_mutable_command_khr* handles,
587     cl_mutable_command_khr* handles_ret,
588     cl_int* errcode_ret) ;
589 
590 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
591 
592 /***************************************************************
593 * cl_khr_command_buffer_mutable_dispatch
594 ***************************************************************/
595 #define cl_khr_command_buffer_mutable_dispatch 1
596 #define CL_KHR_COMMAND_BUFFER_MUTABLE_DISPATCH_EXTENSION_NAME \
597     "cl_khr_command_buffer_mutable_dispatch"
598 
599 typedef cl_uint             cl_command_buffer_structure_type_khr;
600 typedef cl_bitfield         cl_mutable_dispatch_fields_khr;
601 typedef cl_uint             cl_mutable_command_info_khr;
602 typedef struct _cl_mutable_dispatch_arg_khr {
603     cl_uint arg_index;
604     size_t arg_size;
605     const void* arg_value;
606 } cl_mutable_dispatch_arg_khr;
607 typedef struct _cl_mutable_dispatch_exec_info_khr {
608     cl_uint param_name;
609     size_t param_value_size;
610     const void* param_value;
611 } cl_mutable_dispatch_exec_info_khr;
612 typedef struct _cl_mutable_dispatch_config_khr {
613     cl_command_buffer_structure_type_khr type;
614     const void* next;
615     cl_mutable_command_khr command;
616     cl_uint num_args;
617     cl_uint num_svm_args;
618     cl_uint num_exec_infos;
619     cl_uint work_dim;
620     const cl_mutable_dispatch_arg_khr* arg_list;
621     const cl_mutable_dispatch_arg_khr* arg_svm_list;
622     const cl_mutable_dispatch_exec_info_khr* exec_info_list;
623     const size_t* global_work_offset;
624     const size_t* global_work_size;
625     const size_t* local_work_size;
626 } cl_mutable_dispatch_config_khr;
627 typedef struct _cl_mutable_base_config_khr {
628     cl_command_buffer_structure_type_khr type;
629     const void* next;
630     cl_uint num_mutable_dispatch;
631     const cl_mutable_dispatch_config_khr* mutable_dispatch_list;
632 } cl_mutable_base_config_khr;
633 typedef cl_bitfield         cl_mutable_dispatch_asserts_khr;
634 
635 /* cl_command_buffer_flags_khr - bitfield */
636 #define CL_COMMAND_BUFFER_MUTABLE_KHR                       (1 << 1)
637 
638 /* Error codes */
639 #define CL_INVALID_MUTABLE_COMMAND_KHR                      -1141
640 
641 /* cl_device_info */
642 #define CL_DEVICE_MUTABLE_DISPATCH_CAPABILITIES_KHR         0x12B0
643 
644 /* cl_ndrange_kernel_command_properties_khr */
645 #define CL_MUTABLE_DISPATCH_UPDATABLE_FIELDS_KHR            0x12B1
646 
647 /* cl_mutable_dispatch_fields_khr - bitfield */
648 #define CL_MUTABLE_DISPATCH_GLOBAL_OFFSET_KHR               (1 << 0)
649 #define CL_MUTABLE_DISPATCH_GLOBAL_SIZE_KHR                 (1 << 1)
650 #define CL_MUTABLE_DISPATCH_LOCAL_SIZE_KHR                  (1 << 2)
651 #define CL_MUTABLE_DISPATCH_ARGUMENTS_KHR                   (1 << 3)
652 #define CL_MUTABLE_DISPATCH_EXEC_INFO_KHR                   (1 << 4)
653 
654 /* cl_mutable_command_info_khr */
655 #define CL_MUTABLE_COMMAND_COMMAND_QUEUE_KHR                0x12A0
656 #define CL_MUTABLE_COMMAND_COMMAND_BUFFER_KHR               0x12A1
657 #define CL_MUTABLE_COMMAND_COMMAND_TYPE_KHR                 0x12AD
658 #define CL_MUTABLE_DISPATCH_PROPERTIES_ARRAY_KHR            0x12A2
659 #define CL_MUTABLE_DISPATCH_KERNEL_KHR                      0x12A3
660 #define CL_MUTABLE_DISPATCH_DIMENSIONS_KHR                  0x12A4
661 #define CL_MUTABLE_DISPATCH_GLOBAL_WORK_OFFSET_KHR          0x12A5
662 #define CL_MUTABLE_DISPATCH_GLOBAL_WORK_SIZE_KHR            0x12A6
663 #define CL_MUTABLE_DISPATCH_LOCAL_WORK_SIZE_KHR             0x12A7
664 
665 /* cl_command_buffer_structure_type_khr */
666 #define CL_STRUCTURE_TYPE_MUTABLE_BASE_CONFIG_KHR           0
667 #define CL_STRUCTURE_TYPE_MUTABLE_DISPATCH_CONFIG_KHR       1
668 
669 /* cl_command_buffer_properties_khr */
670 #define CL_COMMAND_BUFFER_MUTABLE_DISPATCH_ASSERTS_KHR      0x12B7
671 
672 /* cl_ndrange_kernel_command_properties_khr */
673 #define CL_MUTABLE_DISPATCH_ASSERTS_KHR                     0x12B8
674 
675 /* cl_mutable_dispatch_asserts_khr - bitfield */
676 #define CL_MUTABLE_DISPATCH_ASSERT_NO_ADDITIONAL_WORK_GROUPS_KHR (1 << 0)
677 
678 
679 typedef cl_int CL_API_CALL
680 clUpdateMutableCommandsKHR_t(
681     cl_command_buffer_khr command_buffer,
682     const cl_mutable_base_config_khr* mutable_config);
683 
684 typedef clUpdateMutableCommandsKHR_t *
685 clUpdateMutableCommandsKHR_fn ;
686 
687 typedef cl_int CL_API_CALL
688 clGetMutableCommandInfoKHR_t(
689     cl_mutable_command_khr command,
690     cl_mutable_command_info_khr param_name,
691     size_t param_value_size,
692     void* param_value,
693     size_t* param_value_size_ret);
694 
695 typedef clGetMutableCommandInfoKHR_t *
696 clGetMutableCommandInfoKHR_fn ;
697 
698 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
699 
700 extern CL_API_ENTRY cl_int CL_API_CALL
701 clUpdateMutableCommandsKHR(
702     cl_command_buffer_khr command_buffer,
703     const cl_mutable_base_config_khr* mutable_config) ;
704 
705 extern CL_API_ENTRY cl_int CL_API_CALL
706 clGetMutableCommandInfoKHR(
707     cl_mutable_command_khr command,
708     cl_mutable_command_info_khr param_name,
709     size_t param_value_size,
710     void* param_value,
711     size_t* param_value_size_ret) ;
712 
713 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
714 
715 /***************************************************************
716 * cl_khr_fp64
717 ***************************************************************/
718 #define cl_khr_fp64 1
719 #define CL_KHR_FP64_EXTENSION_NAME \
720     "cl_khr_fp64"
721 
722 #if !defined(CL_VERSION_1_2)
723 /* cl_device_info - defined in CL.h for OpenCL 1.2 and newer */
724 #define CL_DEVICE_DOUBLE_FP_CONFIG                          0x1032
725 
726 #endif /* !defined(CL_VERSION_1_2) */
727 
728 /***************************************************************
729 * cl_khr_fp16
730 ***************************************************************/
731 #define cl_khr_fp16 1
732 #define CL_KHR_FP16_EXTENSION_NAME \
733     "cl_khr_fp16"
734 
735 /* cl_device_info */
736 #define CL_DEVICE_HALF_FP_CONFIG                            0x1033
737 
738 /***************************************************************
739 * cl_APPLE_SetMemObjectDestructor
740 ***************************************************************/
741 #define cl_APPLE_SetMemObjectDestructor 1
742 #define CL_APPLE_SETMEMOBJECTDESTRUCTOR_EXTENSION_NAME \
743     "cl_APPLE_SetMemObjectDestructor"
744 
745 
746 typedef cl_int CL_API_CALL
747 clSetMemObjectDestructorAPPLE_t(
748     cl_mem memobj,
749     void (CL_CALLBACK* pfn_notify)(cl_mem memobj, void* user_data),
750     void* user_data);
751 
752 typedef clSetMemObjectDestructorAPPLE_t *
753 clSetMemObjectDestructorAPPLE_fn CL_API_SUFFIX__VERSION_1_0;
754 
755 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
756 
757 extern CL_API_ENTRY cl_int CL_API_CALL
758 clSetMemObjectDestructorAPPLE(
759     cl_mem memobj,
760     void (CL_CALLBACK* pfn_notify)(cl_mem memobj, void* user_data),
761     void* user_data) CL_API_SUFFIX__VERSION_1_0;
762 
763 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
764 
765 /***************************************************************
766 * cl_APPLE_ContextLoggingFunctions
767 ***************************************************************/
768 #define cl_APPLE_ContextLoggingFunctions 1
769 #define CL_APPLE_CONTEXTLOGGINGFUNCTIONS_EXTENSION_NAME \
770     "cl_APPLE_ContextLoggingFunctions"
771 
772 
773 typedef void CL_API_CALL
774 clLogMessagesToSystemLogAPPLE_t(
775     const char* errstr,
776     const void* private_info,
777     size_t cb,
778     void* user_data);
779 
780 typedef clLogMessagesToSystemLogAPPLE_t *
781 clLogMessagesToSystemLogAPPLE_fn CL_API_SUFFIX__VERSION_1_0;
782 
783 typedef void CL_API_CALL
784 clLogMessagesToStdoutAPPLE_t(
785     const char* errstr,
786     const void* private_info,
787     size_t cb,
788     void* user_data);
789 
790 typedef clLogMessagesToStdoutAPPLE_t *
791 clLogMessagesToStdoutAPPLE_fn CL_API_SUFFIX__VERSION_1_0;
792 
793 typedef void CL_API_CALL
794 clLogMessagesToStderrAPPLE_t(
795     const char* errstr,
796     const void* private_info,
797     size_t cb,
798     void* user_data);
799 
800 typedef clLogMessagesToStderrAPPLE_t *
801 clLogMessagesToStderrAPPLE_fn CL_API_SUFFIX__VERSION_1_0;
802 
803 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
804 
805 extern CL_API_ENTRY void CL_API_CALL
806 clLogMessagesToSystemLogAPPLE(
807     const char* errstr,
808     const void* private_info,
809     size_t cb,
810     void* user_data) CL_API_SUFFIX__VERSION_1_0;
811 
812 extern CL_API_ENTRY void CL_API_CALL
813 clLogMessagesToStdoutAPPLE(
814     const char* errstr,
815     const void* private_info,
816     size_t cb,
817     void* user_data) CL_API_SUFFIX__VERSION_1_0;
818 
819 extern CL_API_ENTRY void CL_API_CALL
820 clLogMessagesToStderrAPPLE(
821     const char* errstr,
822     const void* private_info,
823     size_t cb,
824     void* user_data) CL_API_SUFFIX__VERSION_1_0;
825 
826 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
827 
828 /***************************************************************
829 * cl_khr_icd
830 ***************************************************************/
831 #define cl_khr_icd 1
832 #define CL_KHR_ICD_EXTENSION_NAME \
833     "cl_khr_icd"
834 
835 /* cl_platform_info */
836 #define CL_PLATFORM_ICD_SUFFIX_KHR                          0x0920
837 
838 /* Error codes */
839 #define CL_PLATFORM_NOT_FOUND_KHR                           -1001
840 
841 
842 typedef cl_int CL_API_CALL
843 clIcdGetPlatformIDsKHR_t(
844     cl_uint num_entries,
845     cl_platform_id* platforms,
846     cl_uint* num_platforms);
847 
848 typedef clIcdGetPlatformIDsKHR_t *
849 clIcdGetPlatformIDsKHR_fn ;
850 
851 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
852 
853 extern CL_API_ENTRY cl_int CL_API_CALL
854 clIcdGetPlatformIDsKHR(
855     cl_uint num_entries,
856     cl_platform_id* platforms,
857     cl_uint* num_platforms) ;
858 
859 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
860 
861 /***************************************************************
862 * cl_khr_il_program
863 ***************************************************************/
864 #define cl_khr_il_program 1
865 #define CL_KHR_IL_PROGRAM_EXTENSION_NAME \
866     "cl_khr_il_program"
867 
868 /* cl_device_info */
869 #define CL_DEVICE_IL_VERSION_KHR                            0x105B
870 
871 /* cl_program_info */
872 #define CL_PROGRAM_IL_KHR                                   0x1169
873 
874 
875 typedef cl_program CL_API_CALL
876 clCreateProgramWithILKHR_t(
877     cl_context context,
878     const void* il,
879     size_t length,
880     cl_int* errcode_ret);
881 
882 typedef clCreateProgramWithILKHR_t *
883 clCreateProgramWithILKHR_fn CL_API_SUFFIX__VERSION_1_2;
884 
885 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
886 
887 extern CL_API_ENTRY cl_program CL_API_CALL
888 clCreateProgramWithILKHR(
889     cl_context context,
890     const void* il,
891     size_t length,
892     cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2;
893 
894 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
895 
896 /***************************************************************
897 * cl_khr_image2d_from_buffer
898 ***************************************************************/
899 #define cl_khr_image2d_from_buffer 1
900 #define CL_KHR_IMAGE2D_FROM_BUFFER_EXTENSION_NAME \
901     "cl_khr_image2d_from_buffer"
902 
903 /* cl_device_info */
904 #define CL_DEVICE_IMAGE_PITCH_ALIGNMENT_KHR                 0x104A
905 #define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR          0x104B
906 
907 /***************************************************************
908 * cl_khr_initialize_memory
909 ***************************************************************/
910 #define cl_khr_initialize_memory 1
911 #define CL_KHR_INITIALIZE_MEMORY_EXTENSION_NAME \
912     "cl_khr_initialize_memory"
913 
914 typedef cl_bitfield         cl_context_memory_initialize_khr;
915 
916 /* cl_context_properties */
917 #define CL_CONTEXT_MEMORY_INITIALIZE_KHR                    0x2030
918 
919 /* cl_context_memory_initialize_khr */
920 #define CL_CONTEXT_MEMORY_INITIALIZE_LOCAL_KHR              (1 << 0)
921 #define CL_CONTEXT_MEMORY_INITIALIZE_PRIVATE_KHR            (1 << 1)
922 
923 /***************************************************************
924 * cl_khr_terminate_context
925 ***************************************************************/
926 #define cl_khr_terminate_context 1
927 #define CL_KHR_TERMINATE_CONTEXT_EXTENSION_NAME \
928     "cl_khr_terminate_context"
929 
930 typedef cl_bitfield         cl_device_terminate_capability_khr;
931 
932 /* cl_device_info */
933 #define CL_DEVICE_TERMINATE_CAPABILITY_KHR                  0x2031
934 
935 /* cl_context_properties */
936 #define CL_CONTEXT_TERMINATE_KHR                            0x2032
937 
938 /* cl_device_terminate_capability_khr */
939 #define CL_DEVICE_TERMINATE_CAPABILITY_CONTEXT_KHR          (1 << 0)
940 
941 /* Error codes */
942 #define CL_CONTEXT_TERMINATED_KHR                           -1121
943 
944 
945 typedef cl_int CL_API_CALL
946 clTerminateContextKHR_t(
947     cl_context context);
948 
949 typedef clTerminateContextKHR_t *
950 clTerminateContextKHR_fn CL_API_SUFFIX__VERSION_1_2;
951 
952 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
953 
954 extern CL_API_ENTRY cl_int CL_API_CALL
955 clTerminateContextKHR(
956     cl_context context) CL_API_SUFFIX__VERSION_1_2;
957 
958 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
959 
960 /***************************************************************
961 * cl_khr_spir
962 ***************************************************************/
963 #define cl_khr_spir 1
964 #define CL_KHR_SPIR_EXTENSION_NAME \
965     "cl_khr_spir"
966 
967 /* cl_device_info */
968 #define CL_DEVICE_SPIR_VERSIONS                             0x40E0
969 
970 /* cl_program_binary_type */
971 #define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE                 0x40E1
972 
973 /***************************************************************
974 * cl_khr_create_command_queue
975 ***************************************************************/
976 #define cl_khr_create_command_queue 1
977 #define CL_KHR_CREATE_COMMAND_QUEUE_EXTENSION_NAME \
978     "cl_khr_create_command_queue"
979 
980 typedef cl_properties       cl_queue_properties_khr;
981 
982 
983 typedef cl_command_queue CL_API_CALL
984 clCreateCommandQueueWithPropertiesKHR_t(
985     cl_context context,
986     cl_device_id device,
987     const cl_queue_properties_khr* properties,
988     cl_int* errcode_ret);
989 
990 typedef clCreateCommandQueueWithPropertiesKHR_t *
991 clCreateCommandQueueWithPropertiesKHR_fn CL_API_SUFFIX__VERSION_1_2;
992 
993 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
994 
995 extern CL_API_ENTRY cl_command_queue CL_API_CALL
996 clCreateCommandQueueWithPropertiesKHR(
997     cl_context context,
998     cl_device_id device,
999     const cl_queue_properties_khr* properties,
1000     cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2;
1001 
1002 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
1003 
1004 /***************************************************************
1005 * cl_nv_device_attribute_query
1006 ***************************************************************/
1007 #define cl_nv_device_attribute_query 1
1008 #define CL_NV_DEVICE_ATTRIBUTE_QUERY_EXTENSION_NAME \
1009     "cl_nv_device_attribute_query"
1010 
1011 /* cl_device_info */
1012 #define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV               0x4000
1013 #define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV               0x4001
1014 #define CL_DEVICE_REGISTERS_PER_BLOCK_NV                    0x4002
1015 #define CL_DEVICE_WARP_SIZE_NV                              0x4003
1016 #define CL_DEVICE_GPU_OVERLAP_NV                            0x4004
1017 #define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV                    0x4005
1018 #define CL_DEVICE_INTEGRATED_MEMORY_NV                      0x4006
1019 
1020 /***************************************************************
1021 * cl_amd_device_attribute_query
1022 ***************************************************************/
1023 #define cl_amd_device_attribute_query 1
1024 #define CL_AMD_DEVICE_ATTRIBUTE_QUERY_EXTENSION_NAME \
1025     "cl_amd_device_attribute_query"
1026 
1027 /* cl_device_info */
1028 #define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD                0x4036
1029 #define CL_DEVICE_TOPOLOGY_AMD                              0x4037
1030 #define CL_DEVICE_BOARD_NAME_AMD                            0x4038
1031 #define CL_DEVICE_GLOBAL_FREE_MEMORY_AMD                    0x4039
1032 #define CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD                 0x4040
1033 #define CL_DEVICE_SIMD_WIDTH_AMD                            0x4041
1034 #define CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD                0x4042
1035 #define CL_DEVICE_WAVEFRONT_WIDTH_AMD                       0x4043
1036 #define CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD                   0x4044
1037 #define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD              0x4045
1038 #define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD         0x4046
1039 #define CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD       0x4047
1040 #define CL_DEVICE_LOCAL_MEM_BANKS_AMD                       0x4048
1041 #define CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD                0x4049
1042 #define CL_DEVICE_GFXIP_MAJOR_AMD                           0x404A
1043 #define CL_DEVICE_GFXIP_MINOR_AMD                           0x404B
1044 #define CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD                0x404C
1045 #define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD             0x4030
1046 #define CL_DEVICE_MAX_WORK_GROUP_SIZE_AMD                   0x4031
1047 #define CL_DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD        0x4033
1048 #define CL_DEVICE_PCIE_ID_AMD                               0x4034
1049 
1050 /***************************************************************
1051 * cl_arm_printf
1052 ***************************************************************/
1053 #define cl_arm_printf 1
1054 #define CL_ARM_PRINTF_EXTENSION_NAME \
1055     "cl_arm_printf"
1056 
1057 /* cl_context_properties */
1058 #define CL_PRINTF_CALLBACK_ARM                              0x40B0
1059 #define CL_PRINTF_BUFFERSIZE_ARM                            0x40B1
1060 
1061 /***************************************************************
1062 * cl_ext_device_fission
1063 ***************************************************************/
1064 #define cl_ext_device_fission 1
1065 #define CL_EXT_DEVICE_FISSION_EXTENSION_NAME \
1066     "cl_ext_device_fission"
1067 
1068 typedef cl_ulong            cl_device_partition_property_ext;
1069 
1070 /* Error codes */
1071 #define CL_DEVICE_PARTITION_FAILED_EXT                      -1057
1072 #define CL_INVALID_PARTITION_COUNT_EXT                      -1058
1073 #define CL_INVALID_PARTITION_NAME_EXT                       -1059
1074 
1075 /* cl_device_info */
1076 #define CL_DEVICE_PARENT_DEVICE_EXT                         0x4054
1077 #define CL_DEVICE_PARTITION_TYPES_EXT                       0x4055
1078 #define CL_DEVICE_AFFINITY_DOMAINS_EXT                      0x4056
1079 #define CL_DEVICE_REFERENCE_COUNT_EXT                       0x4057
1080 #define CL_DEVICE_PARTITION_STYLE_EXT                       0x4058
1081 
1082 /* cl_device_partition_property_ext */
1083 #define CL_DEVICE_PARTITION_EQUALLY_EXT                     0x4050
1084 #define CL_DEVICE_PARTITION_BY_COUNTS_EXT                   0x4051
1085 #define CL_DEVICE_PARTITION_BY_NAMES_EXT                    0x4052
1086 #define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT          0x4053
1087 
1088 /* cl_device_partition_property_ext - affinity domains */
1089 #define CL_AFFINITY_DOMAIN_L1_CACHE_EXT                     0x1
1090 #define CL_AFFINITY_DOMAIN_L2_CACHE_EXT                     0x2
1091 #define CL_AFFINITY_DOMAIN_L3_CACHE_EXT                     0x3
1092 #define CL_AFFINITY_DOMAIN_L4_CACHE_EXT                     0x4
1093 #define CL_AFFINITY_DOMAIN_NUMA_EXT                         0x10
1094 #define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT             0x100
1095 
1096 /* cl_device_partition_property_ext - list terminators */
1097 #define CL_PROPERTIES_LIST_END_EXT                          ((cl_device_partition_property_ext)0)
1098 #define CL_PARTITION_BY_COUNTS_LIST_END_EXT                 ((cl_device_partition_property_ext)0)
1099 #define CL_PARTITION_BY_NAMES_LIST_END_EXT                  ((cl_device_partition_property_ext)0 - 1)
1100 
1101 
1102 typedef cl_int CL_API_CALL
1103 clReleaseDeviceEXT_t(
1104     cl_device_id device);
1105 
1106 typedef clReleaseDeviceEXT_t *
1107 clReleaseDeviceEXT_fn CL_API_SUFFIX__VERSION_1_1;
1108 
1109 typedef cl_int CL_API_CALL
1110 clRetainDeviceEXT_t(
1111     cl_device_id device);
1112 
1113 typedef clRetainDeviceEXT_t *
1114 clRetainDeviceEXT_fn CL_API_SUFFIX__VERSION_1_1;
1115 
1116 typedef cl_int CL_API_CALL
1117 clCreateSubDevicesEXT_t(
1118     cl_device_id in_device,
1119     const cl_device_partition_property_ext* properties,
1120     cl_uint num_entries,
1121     cl_device_id* out_devices,
1122     cl_uint* num_devices);
1123 
1124 typedef clCreateSubDevicesEXT_t *
1125 clCreateSubDevicesEXT_fn CL_API_SUFFIX__VERSION_1_1;
1126 
1127 #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES)
1128 
1129 extern CL_API_ENTRY cl_int CL_API_CALL
1130 clReleaseDeviceEXT(
1131     cl_device_id device) CL_API_SUFFIX__VERSION_1_1;
1132 
1133 extern CL_API_ENTRY cl_int CL_API_CALL
1134 clRetainDeviceEXT(
1135     cl_device_id device) CL_API_SUFFIX__VERSION_1_1;
1136 
1137 extern CL_API_ENTRY cl_int CL_API_CALL
1138 clCreateSubDevicesEXT(
1139     cl_device_id in_device,
1140     const cl_device_partition_property_ext* properties,
1141     cl_uint num_entries,
1142     cl_device_id* out_devices,
1143     cl_uint* num_devices) CL_API_SUFFIX__VERSION_1_1;
1144 
1145 #endif /* !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
1146 
1147 /***************************************************************
1148 * cl_ext_migrate_memobject
1149 ***************************************************************/
1150 #define cl_ext_migrate_memobject 1
1151 #define CL_EXT_MIGRATE_MEMOBJECT_EXTENSION_NAME \
1152     "cl_ext_migrate_memobject"
1153 
1154 typedef cl_bitfield         cl_mem_migration_flags_ext;
1155 
1156 /* cl_mem_migration_flags_ext */
1157 #define CL_MIGRATE_MEM_OBJECT_HOST_EXT                      (1 << 0)
1158 
1159 /* cl_command_type */
1160 #define CL_COMMAND_MIGRATE_MEM_OBJECT_EXT                   0x4040
1161 
1162 
1163 typedef cl_int CL_API_CALL
1164 clEnqueueMigrateMemObjectEXT_t(
1165     cl_command_queue command_queue,
1166     cl_uint num_mem_objects,
1167     const cl_mem* mem_objects,
1168     cl_mem_migration_flags_ext flags,
1169     cl_uint num_events_in_wait_list,
1170     const cl_event* event_wait_list,
1171     cl_event* event);
1172 
1173 typedef clEnqueueMigrateMemObjectEXT_t *
1174 clEnqueueMigrateMemObjectEXT_fn ;
1175 
1176 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
1177 
1178 extern CL_API_ENTRY cl_int CL_API_CALL
1179 clEnqueueMigrateMemObjectEXT(
1180     cl_command_queue command_queue,
1181     cl_uint num_mem_objects,
1182     const cl_mem* mem_objects,
1183     cl_mem_migration_flags_ext flags,
1184     cl_uint num_events_in_wait_list,
1185     const cl_event* event_wait_list,
1186     cl_event* event) ;
1187 
1188 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
1189 
1190 /***************************************************************
1191 * cl_ext_cxx_for_opencl
1192 ***************************************************************/
1193 #define cl_ext_cxx_for_opencl 1
1194 #define CL_EXT_CXX_FOR_OPENCL_EXTENSION_NAME \
1195     "cl_ext_cxx_for_opencl"
1196 
1197 /* cl_device_info */
1198 #define CL_DEVICE_CXX_FOR_OPENCL_NUMERIC_VERSION_EXT        0x4230
1199 
1200 /***************************************************************
1201 * cl_qcom_ext_host_ptr
1202 ***************************************************************/
1203 #define cl_qcom_ext_host_ptr 1
1204 #define CL_QCOM_EXT_HOST_PTR_EXTENSION_NAME \
1205     "cl_qcom_ext_host_ptr"
1206 
1207 typedef cl_uint             cl_image_pitch_info_qcom;
1208 typedef struct _cl_mem_ext_host_ptr {
1209     cl_uint allocation_type;
1210     cl_uint host_cache_policy;
1211 } cl_mem_ext_host_ptr;
1212 
1213 /* cl_mem_flags */
1214 #define CL_MEM_EXT_HOST_PTR_QCOM                            (1 << 29)
1215 
1216 /* cl_device_info */
1217 #define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM             0x40A0
1218 #define CL_DEVICE_PAGE_SIZE_QCOM                            0x40A1
1219 
1220 /* cl_image_pitch_info_qcom */
1221 #define CL_IMAGE_ROW_ALIGNMENT_QCOM                         0x40A2
1222 #define CL_IMAGE_SLICE_ALIGNMENT_QCOM                       0x40A3
1223 
1224 /* cl_uint host_cache_policy */
1225 #define CL_MEM_HOST_UNCACHED_QCOM                           0x40A4
1226 #define CL_MEM_HOST_WRITEBACK_QCOM                          0x40A5
1227 #define CL_MEM_HOST_WRITETHROUGH_QCOM                       0x40A6
1228 #define CL_MEM_HOST_WRITE_COMBINING_QCOM                    0x40A7
1229 
1230 
1231 typedef cl_int CL_API_CALL
1232 clGetDeviceImageInfoQCOM_t(
1233     cl_device_id device,
1234     size_t image_width,
1235     size_t image_height,
1236     const cl_image_format* image_format,
1237     cl_image_pitch_info_qcom param_name,
1238     size_t param_value_size,
1239     void* param_value,
1240     size_t* param_value_size_ret);
1241 
1242 typedef clGetDeviceImageInfoQCOM_t *
1243 clGetDeviceImageInfoQCOM_fn ;
1244 
1245 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
1246 
1247 extern CL_API_ENTRY cl_int CL_API_CALL
1248 clGetDeviceImageInfoQCOM(
1249     cl_device_id device,
1250     size_t image_width,
1251     size_t image_height,
1252     const cl_image_format* image_format,
1253     cl_image_pitch_info_qcom param_name,
1254     size_t param_value_size,
1255     void* param_value,
1256     size_t* param_value_size_ret) ;
1257 
1258 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
1259 
1260 /***************************************************************
1261 * cl_qcom_ext_host_ptr_iocoherent
1262 ***************************************************************/
1263 #define cl_qcom_ext_host_ptr_iocoherent 1
1264 #define CL_QCOM_EXT_HOST_PTR_IOCOHERENT_EXTENSION_NAME \
1265     "cl_qcom_ext_host_ptr_iocoherent"
1266 
1267 /* cl_uint host_cache_policy */
1268 #define CL_MEM_HOST_IOCOHERENT_QCOM                         0x40A9
1269 
1270 /***************************************************************
1271 * cl_qcom_ion_host_ptr
1272 ***************************************************************/
1273 #define cl_qcom_ion_host_ptr 1
1274 #define CL_QCOM_ION_HOST_PTR_EXTENSION_NAME \
1275     "cl_qcom_ion_host_ptr"
1276 
1277 /* type cl_mem_ext_host_ptr */
1278 typedef struct _cl_mem_ion_host_ptr {
1279     cl_mem_ext_host_ptr ext_host_ptr;
1280     int ion_filedesc;
1281     void* ion_hostptr;
1282 } cl_mem_ion_host_ptr;
1283 
1284 /* cl_uint allocation_type */
1285 #define CL_MEM_ION_HOST_PTR_QCOM                            0x40A8
1286 
1287 /***************************************************************
1288 * cl_qcom_android_native_buffer_host_ptr
1289 ***************************************************************/
1290 #define cl_qcom_android_native_buffer_host_ptr 1
1291 #define CL_QCOM_ANDROID_NATIVE_BUFFER_HOST_PTR_EXTENSION_NAME \
1292     "cl_qcom_android_native_buffer_host_ptr"
1293 
1294 /* type cl_mem_ext_host_ptr */
1295 typedef struct _cl_mem_android_native_buffer_host_ptr {
1296     cl_mem_ext_host_ptr ext_host_ptr;
1297     void* anb_ptr;
1298 } cl_mem_android_native_buffer_host_ptr;
1299 
1300 /* cl_uint allocation_type */
1301 #define CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM          0x40C6
1302 
1303 /***************************************************************
1304 * cl_img_yuv_image
1305 ***************************************************************/
1306 #define cl_img_yuv_image 1
1307 #define CL_IMG_YUV_IMAGE_EXTENSION_NAME \
1308     "cl_img_yuv_image"
1309 
1310 /* cl_channel_order */
1311 #define CL_NV21_IMG                                         0x40D0
1312 #define CL_YV12_IMG                                         0x40D1
1313 
1314 /***************************************************************
1315 * cl_img_cached_allocations
1316 ***************************************************************/
1317 #define cl_img_cached_allocations 1
1318 #define CL_IMG_CACHED_ALLOCATIONS_EXTENSION_NAME \
1319     "cl_img_cached_allocations"
1320 
1321 /* cl_mem_flags */
1322 #define CL_MEM_USE_UNCACHED_CPU_MEMORY_IMG                  (1 << 26)
1323 #define CL_MEM_USE_CACHED_CPU_MEMORY_IMG                    (1 << 27)
1324 
1325 /***************************************************************
1326 * cl_img_use_gralloc_ptr
1327 ***************************************************************/
1328 #define cl_img_use_gralloc_ptr 1
1329 #define CL_IMG_USE_GRALLOC_PTR_EXTENSION_NAME \
1330     "cl_img_use_gralloc_ptr"
1331 
1332 /* Error codes */
1333 #define CL_GRALLOC_RESOURCE_NOT_ACQUIRED_IMG                0x40D4
1334 #define CL_INVALID_GRALLOC_OBJECT_IMG                       0x40D5
1335 
1336 /* cl_mem_flags */
1337 #define CL_MEM_USE_GRALLOC_PTR_IMG                          (1 << 28)
1338 
1339 /* cl_command_type */
1340 #define CL_COMMAND_ACQUIRE_GRALLOC_OBJECTS_IMG              0x40D2
1341 #define CL_COMMAND_RELEASE_GRALLOC_OBJECTS_IMG              0x40D3
1342 
1343 
1344 typedef cl_int CL_API_CALL
1345 clEnqueueAcquireGrallocObjectsIMG_t(
1346     cl_command_queue command_queue,
1347     cl_uint num_objects,
1348     const cl_mem* mem_objects,
1349     cl_uint num_events_in_wait_list,
1350     const cl_event* event_wait_list,
1351     cl_event* event);
1352 
1353 typedef clEnqueueAcquireGrallocObjectsIMG_t *
1354 clEnqueueAcquireGrallocObjectsIMG_fn CL_API_SUFFIX__VERSION_1_2;
1355 
1356 typedef cl_int CL_API_CALL
1357 clEnqueueReleaseGrallocObjectsIMG_t(
1358     cl_command_queue command_queue,
1359     cl_uint num_objects,
1360     const cl_mem* mem_objects,
1361     cl_uint num_events_in_wait_list,
1362     const cl_event* event_wait_list,
1363     cl_event* event);
1364 
1365 typedef clEnqueueReleaseGrallocObjectsIMG_t *
1366 clEnqueueReleaseGrallocObjectsIMG_fn CL_API_SUFFIX__VERSION_1_2;
1367 
1368 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
1369 
1370 extern CL_API_ENTRY cl_int CL_API_CALL
1371 clEnqueueAcquireGrallocObjectsIMG(
1372     cl_command_queue command_queue,
1373     cl_uint num_objects,
1374     const cl_mem* mem_objects,
1375     cl_uint num_events_in_wait_list,
1376     const cl_event* event_wait_list,
1377     cl_event* event) CL_API_SUFFIX__VERSION_1_2;
1378 
1379 extern CL_API_ENTRY cl_int CL_API_CALL
1380 clEnqueueReleaseGrallocObjectsIMG(
1381     cl_command_queue command_queue,
1382     cl_uint num_objects,
1383     const cl_mem* mem_objects,
1384     cl_uint num_events_in_wait_list,
1385     const cl_event* event_wait_list,
1386     cl_event* event) CL_API_SUFFIX__VERSION_1_2;
1387 
1388 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
1389 
1390 /***************************************************************
1391 * cl_img_generate_mipmap
1392 ***************************************************************/
1393 #define cl_img_generate_mipmap 1
1394 #define CL_IMG_GENERATE_MIPMAP_EXTENSION_NAME \
1395     "cl_img_generate_mipmap"
1396 
1397 typedef cl_uint             cl_mipmap_filter_mode_img;
1398 
1399 /* cl_mipmap_filter_mode_img */
1400 #define CL_MIPMAP_FILTER_ANY_IMG                            0x0
1401 #define CL_MIPMAP_FILTER_BOX_IMG                            0x1
1402 
1403 /* cl_command_type */
1404 #define CL_COMMAND_GENERATE_MIPMAP_IMG                      0x40D6
1405 
1406 
1407 typedef cl_int CL_API_CALL
1408 clEnqueueGenerateMipmapIMG_t(
1409     cl_command_queue command_queue,
1410     cl_mem src_image,
1411     cl_mem dst_image,
1412     cl_mipmap_filter_mode_img mipmap_filter_mode,
1413     const size_t* array_region,
1414     const size_t* mip_region,
1415     cl_uint num_events_in_wait_list,
1416     const cl_event* event_wait_list,
1417     cl_event* event);
1418 
1419 typedef clEnqueueGenerateMipmapIMG_t *
1420 clEnqueueGenerateMipmapIMG_fn CL_API_SUFFIX__VERSION_1_2;
1421 
1422 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
1423 
1424 extern CL_API_ENTRY cl_int CL_API_CALL
1425 clEnqueueGenerateMipmapIMG(
1426     cl_command_queue command_queue,
1427     cl_mem src_image,
1428     cl_mem dst_image,
1429     cl_mipmap_filter_mode_img mipmap_filter_mode,
1430     const size_t* array_region,
1431     const size_t* mip_region,
1432     cl_uint num_events_in_wait_list,
1433     const cl_event* event_wait_list,
1434     cl_event* event) CL_API_SUFFIX__VERSION_1_2;
1435 
1436 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
1437 
1438 /***************************************************************
1439 * cl_img_mem_properties
1440 ***************************************************************/
1441 #define cl_img_mem_properties 1
1442 #define CL_IMG_MEM_PROPERTIES_EXTENSION_NAME \
1443     "cl_img_mem_properties"
1444 
1445 /* cl_mem_properties */
1446 #define CL_MEM_ALLOC_FLAGS_IMG                              0x40D7
1447 
1448 /* cl_mem_alloc_flags_img */
1449 #define CL_MEM_ALLOC_RELAX_REQUIREMENTS_IMG                 (1 << 0)
1450 #define CL_MEM_ALLOC_GPU_WRITE_COMBINE_IMG                  (1 << 1)
1451 #define CL_MEM_ALLOC_GPU_CACHED_IMG                         (1 << 2)
1452 #define CL_MEM_ALLOC_CPU_LOCAL_IMG                          (1 << 3)
1453 #define CL_MEM_ALLOC_GPU_LOCAL_IMG                          (1 << 4)
1454 #define CL_MEM_ALLOC_GPU_PRIVATE_IMG                        (1 << 5)
1455 
1456 /* cl_device_info */
1457 #define CL_DEVICE_MEMORY_CAPABILITIES_IMG                   0x40D8
1458 
1459 /***************************************************************
1460 * cl_khr_subgroups
1461 ***************************************************************/
1462 #define cl_khr_subgroups 1
1463 #define CL_KHR_SUBGROUPS_EXTENSION_NAME \
1464     "cl_khr_subgroups"
1465 
1466 #if !defined(CL_VERSION_2_1)
1467 /* defined in CL.h for OpenCL 2.1 and newer */
1468 typedef cl_uint             cl_kernel_sub_group_info;
1469 
1470 #endif /* !defined(CL_VERSION_2_1) */
1471 
1472 /* cl_kernel_sub_group_info */
1473 #define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR        0x2033
1474 #define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR           0x2034
1475 
1476 
1477 typedef cl_int CL_API_CALL
1478 clGetKernelSubGroupInfoKHR_t(
1479     cl_kernel in_kernel,
1480     cl_device_id in_device,
1481     cl_kernel_sub_group_info param_name,
1482     size_t input_value_size,
1483     const void* input_value,
1484     size_t param_value_size,
1485     void* param_value,
1486     size_t* param_value_size_ret);
1487 
1488 typedef clGetKernelSubGroupInfoKHR_t *
1489 clGetKernelSubGroupInfoKHR_fn CL_API_SUFFIX__VERSION_2_0_DEPRECATED;
1490 
1491 #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES)
1492 
1493 extern CL_API_ENTRY cl_int CL_API_CALL
1494 clGetKernelSubGroupInfoKHR(
1495     cl_kernel in_kernel,
1496     cl_device_id in_device,
1497     cl_kernel_sub_group_info param_name,
1498     size_t input_value_size,
1499     const void* input_value,
1500     size_t param_value_size,
1501     void* param_value,
1502     size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_2_0_DEPRECATED;
1503 
1504 #endif /* !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
1505 
1506 /***************************************************************
1507 * cl_khr_mipmap_image
1508 ***************************************************************/
1509 #define cl_khr_mipmap_image 1
1510 #define CL_KHR_MIPMAP_IMAGE_EXTENSION_NAME \
1511     "cl_khr_mipmap_image"
1512 
1513 /* cl_sampler_properties */
1514 #define CL_SAMPLER_MIP_FILTER_MODE_KHR                      0x1155
1515 #define CL_SAMPLER_LOD_MIN_KHR                              0x1156
1516 #define CL_SAMPLER_LOD_MAX_KHR                              0x1157
1517 
1518 /***************************************************************
1519 * cl_khr_priority_hints
1520 ***************************************************************/
1521 #define cl_khr_priority_hints 1
1522 #define CL_KHR_PRIORITY_HINTS_EXTENSION_NAME \
1523     "cl_khr_priority_hints"
1524 
1525 /* To be used by clGetEventInfo */
1526 typedef cl_uint             cl_queue_priority_khr;
1527 
1528 /* cl_queue_properties */
1529 #define CL_QUEUE_PRIORITY_KHR                               0x1096
1530 
1531 /* cl_queue_priority_khr */
1532 #define CL_QUEUE_PRIORITY_HIGH_KHR                          (1 << 0)
1533 #define CL_QUEUE_PRIORITY_MED_KHR                           (1 << 1)
1534 #define CL_QUEUE_PRIORITY_LOW_KHR                           (1 << 2)
1535 
1536 /***************************************************************
1537 * cl_khr_throttle_hints
1538 ***************************************************************/
1539 #define cl_khr_throttle_hints 1
1540 #define CL_KHR_THROTTLE_HINTS_EXTENSION_NAME \
1541     "cl_khr_throttle_hints"
1542 
1543 /* To be used by clGetEventInfo */
1544 typedef cl_uint             cl_queue_throttle_khr;
1545 
1546 /* cl_queue_properties */
1547 #define CL_QUEUE_THROTTLE_KHR                               0x1097
1548 
1549 /* cl_queue_throttle_khr */
1550 #define CL_QUEUE_THROTTLE_HIGH_KHR                          (1 << 0)
1551 #define CL_QUEUE_THROTTLE_MED_KHR                           (1 << 1)
1552 #define CL_QUEUE_THROTTLE_LOW_KHR                           (1 << 2)
1553 
1554 /***************************************************************
1555 * cl_khr_subgroup_named_barrier
1556 ***************************************************************/
1557 #define cl_khr_subgroup_named_barrier 1
1558 #define CL_KHR_SUBGROUP_NAMED_BARRIER_EXTENSION_NAME \
1559     "cl_khr_subgroup_named_barrier"
1560 
1561 /* cl_device_info */
1562 #define CL_DEVICE_MAX_NAMED_BARRIER_COUNT_KHR               0x2035
1563 
1564 /***************************************************************
1565 * cl_khr_extended_versioning
1566 ***************************************************************/
1567 #define cl_khr_extended_versioning 1
1568 #define CL_KHR_EXTENDED_VERSIONING_EXTENSION_NAME \
1569     "cl_khr_extended_versioning"
1570 
1571 #define CL_VERSION_MAJOR_BITS_KHR                           10
1572 #define CL_VERSION_MINOR_BITS_KHR                           10
1573 #define CL_VERSION_PATCH_BITS_KHR                           12
1574 
1575 #define CL_VERSION_MAJOR_MASK_KHR ((1 << CL_VERSION_MAJOR_BITS_KHR) - 1)
1576 #define CL_VERSION_MINOR_MASK_KHR ((1 << CL_VERSION_MINOR_BITS_KHR) - 1)
1577 #define CL_VERSION_PATCH_MASK_KHR ((1 << CL_VERSION_PATCH_BITS_KHR) - 1)
1578 
1579 #define CL_VERSION_MAJOR_KHR(version) ((version) >> (CL_VERSION_MINOR_BITS_KHR + CL_VERSION_PATCH_BITS_KHR))
1580 #define CL_VERSION_MINOR_KHR(version) (((version) >> CL_VERSION_PATCH_BITS_KHR) & CL_VERSION_MINOR_MASK_KHR)
1581 #define CL_VERSION_PATCH_KHR(version) ((version) & CL_VERSION_PATCH_MASK_KHR)
1582 
1583 #define CL_MAKE_VERSION_KHR(major, minor, patch) \
1584     ((((major) & CL_VERSION_MAJOR_MASK_KHR) << (CL_VERSION_MINOR_BITS_KHR + CL_VERSION_PATCH_BITS_KHR)) | \
1585     (((minor) &  CL_VERSION_MINOR_MASK_KHR) << CL_VERSION_PATCH_BITS_KHR) | \
1586     ((patch) & CL_VERSION_PATCH_MASK_KHR))
1587 
1588 #define CL_NAME_VERSION_MAX_NAME_SIZE_KHR                   64
1589 
1590 typedef cl_uint             cl_version_khr;
1591 typedef struct _cl_name_version_khr {
1592     cl_version_khr version;
1593     char name[CL_NAME_VERSION_MAX_NAME_SIZE_KHR];
1594 } cl_name_version_khr;
1595 
1596 /* cl_platform_info */
1597 #define CL_PLATFORM_NUMERIC_VERSION_KHR                     0x0906
1598 #define CL_PLATFORM_EXTENSIONS_WITH_VERSION_KHR             0x0907
1599 
1600 /* cl_device_info */
1601 #define CL_DEVICE_NUMERIC_VERSION_KHR                       0x105E
1602 #define CL_DEVICE_OPENCL_C_NUMERIC_VERSION_KHR              0x105F
1603 #define CL_DEVICE_EXTENSIONS_WITH_VERSION_KHR               0x1060
1604 #define CL_DEVICE_ILS_WITH_VERSION_KHR                      0x1061
1605 #define CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION_KHR         0x1062
1606 
1607 /***************************************************************
1608 * cl_khr_device_uuid
1609 ***************************************************************/
1610 #define cl_khr_device_uuid 1
1611 #define CL_KHR_DEVICE_UUID_EXTENSION_NAME \
1612     "cl_khr_device_uuid"
1613 
1614 /* Size Constants */
1615 #define CL_UUID_SIZE_KHR                                    16
1616 #define CL_LUID_SIZE_KHR                                    8
1617 
1618 /* cl_device_info */
1619 #define CL_DEVICE_UUID_KHR                                  0x106A
1620 #define CL_DRIVER_UUID_KHR                                  0x106B
1621 #define CL_DEVICE_LUID_VALID_KHR                            0x106C
1622 #define CL_DEVICE_LUID_KHR                                  0x106D
1623 #define CL_DEVICE_NODE_MASK_KHR                             0x106E
1624 
1625 /***************************************************************
1626 * cl_khr_pci_bus_info
1627 ***************************************************************/
1628 #define cl_khr_pci_bus_info 1
1629 #define CL_KHR_PCI_BUS_INFO_EXTENSION_NAME \
1630     "cl_khr_pci_bus_info"
1631 
1632 typedef struct _cl_device_pci_bus_info_khr {
1633     cl_uint pci_domain;
1634     cl_uint pci_bus;
1635     cl_uint pci_device;
1636     cl_uint pci_function;
1637 } cl_device_pci_bus_info_khr;
1638 
1639 /* cl_device_info */
1640 #define CL_DEVICE_PCI_BUS_INFO_KHR                          0x410F
1641 
1642 /***************************************************************
1643 * cl_khr_suggested_local_work_size
1644 ***************************************************************/
1645 #define cl_khr_suggested_local_work_size 1
1646 #define CL_KHR_SUGGESTED_LOCAL_WORK_SIZE_EXTENSION_NAME \
1647     "cl_khr_suggested_local_work_size"
1648 
1649 
1650 typedef cl_int CL_API_CALL
1651 clGetKernelSuggestedLocalWorkSizeKHR_t(
1652     cl_command_queue command_queue,
1653     cl_kernel kernel,
1654     cl_uint work_dim,
1655     const size_t* global_work_offset,
1656     const size_t* global_work_size,
1657     size_t* suggested_local_work_size);
1658 
1659 typedef clGetKernelSuggestedLocalWorkSizeKHR_t *
1660 clGetKernelSuggestedLocalWorkSizeKHR_fn CL_API_SUFFIX__VERSION_3_0;
1661 
1662 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
1663 
1664 extern CL_API_ENTRY cl_int CL_API_CALL
1665 clGetKernelSuggestedLocalWorkSizeKHR(
1666     cl_command_queue command_queue,
1667     cl_kernel kernel,
1668     cl_uint work_dim,
1669     const size_t* global_work_offset,
1670     const size_t* global_work_size,
1671     size_t* suggested_local_work_size) CL_API_SUFFIX__VERSION_3_0;
1672 
1673 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
1674 
1675 /***************************************************************
1676 * cl_khr_integer_dot_product
1677 ***************************************************************/
1678 #define cl_khr_integer_dot_product 1
1679 #define CL_KHR_INTEGER_DOT_PRODUCT_EXTENSION_NAME \
1680     "cl_khr_integer_dot_product"
1681 
1682 typedef cl_bitfield         cl_device_integer_dot_product_capabilities_khr;
1683 typedef struct _cl_device_integer_dot_product_acceleration_properties_khr {
1684     cl_bool signed_accelerated;
1685     cl_bool unsigned_accelerated;
1686     cl_bool mixed_signedness_accelerated;
1687     cl_bool accumulating_saturating_signed_accelerated;
1688     cl_bool accumulating_saturating_unsigned_accelerated;
1689     cl_bool accumulating_saturating_mixed_signedness_accelerated;
1690 } cl_device_integer_dot_product_acceleration_properties_khr;
1691 
1692 /* cl_device_integer_dot_product_capabilities_khr */
1693 #define CL_DEVICE_INTEGER_DOT_PRODUCT_INPUT_4x8BIT_PACKED_KHR (1 << 0)
1694 #define CL_DEVICE_INTEGER_DOT_PRODUCT_INPUT_4x8BIT_KHR      (1 << 1)
1695 
1696 /* cl_device_info */
1697 #define CL_DEVICE_INTEGER_DOT_PRODUCT_CAPABILITIES_KHR      0x1073
1698 #define CL_DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_8BIT_KHR 0x1074
1699 #define CL_DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED_KHR 0x1075
1700 
1701 /***************************************************************
1702 * cl_khr_external_memory
1703 ***************************************************************/
1704 #define cl_khr_external_memory 1
1705 #define CL_KHR_EXTERNAL_MEMORY_EXTENSION_NAME \
1706     "cl_khr_external_memory"
1707 
1708 typedef cl_uint             cl_external_memory_handle_type_khr;
1709 
1710 /* cl_platform_info */
1711 #define CL_PLATFORM_EXTERNAL_MEMORY_IMPORT_HANDLE_TYPES_KHR 0x2044
1712 
1713 /* cl_device_info */
1714 #define CL_DEVICE_EXTERNAL_MEMORY_IMPORT_HANDLE_TYPES_KHR   0x204F
1715 #define CL_DEVICE_EXTERNAL_MEMORY_IMPORT_ASSUME_LINEAR_IMAGES_HANDLE_TYPES_KHR 0x2052
1716 
1717 /* cl_mem_properties */
1718 #define CL_MEM_DEVICE_HANDLE_LIST_KHR                       0x2051
1719 #define CL_MEM_DEVICE_HANDLE_LIST_END_KHR                   0
1720 
1721 /* cl_command_type */
1722 #define CL_COMMAND_ACQUIRE_EXTERNAL_MEM_OBJECTS_KHR         0x2047
1723 #define CL_COMMAND_RELEASE_EXTERNAL_MEM_OBJECTS_KHR         0x2048
1724 
1725 
1726 typedef cl_int CL_API_CALL
1727 clEnqueueAcquireExternalMemObjectsKHR_t(
1728     cl_command_queue command_queue,
1729     cl_uint num_mem_objects,
1730     const cl_mem* mem_objects,
1731     cl_uint num_events_in_wait_list,
1732     const cl_event* event_wait_list,
1733     cl_event* event);
1734 
1735 typedef clEnqueueAcquireExternalMemObjectsKHR_t *
1736 clEnqueueAcquireExternalMemObjectsKHR_fn CL_API_SUFFIX__VERSION_3_0;
1737 
1738 typedef cl_int CL_API_CALL
1739 clEnqueueReleaseExternalMemObjectsKHR_t(
1740     cl_command_queue command_queue,
1741     cl_uint num_mem_objects,
1742     const cl_mem* mem_objects,
1743     cl_uint num_events_in_wait_list,
1744     const cl_event* event_wait_list,
1745     cl_event* event);
1746 
1747 typedef clEnqueueReleaseExternalMemObjectsKHR_t *
1748 clEnqueueReleaseExternalMemObjectsKHR_fn CL_API_SUFFIX__VERSION_3_0;
1749 
1750 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
1751 
1752 extern CL_API_ENTRY cl_int CL_API_CALL
1753 clEnqueueAcquireExternalMemObjectsKHR(
1754     cl_command_queue command_queue,
1755     cl_uint num_mem_objects,
1756     const cl_mem* mem_objects,
1757     cl_uint num_events_in_wait_list,
1758     const cl_event* event_wait_list,
1759     cl_event* event) CL_API_SUFFIX__VERSION_3_0;
1760 
1761 extern CL_API_ENTRY cl_int CL_API_CALL
1762 clEnqueueReleaseExternalMemObjectsKHR(
1763     cl_command_queue command_queue,
1764     cl_uint num_mem_objects,
1765     const cl_mem* mem_objects,
1766     cl_uint num_events_in_wait_list,
1767     const cl_event* event_wait_list,
1768     cl_event* event) CL_API_SUFFIX__VERSION_3_0;
1769 
1770 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
1771 
1772 /***************************************************************
1773 * cl_khr_external_memory_dma_buf
1774 ***************************************************************/
1775 #define cl_khr_external_memory_dma_buf 1
1776 #define CL_KHR_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME \
1777     "cl_khr_external_memory_dma_buf"
1778 
1779 /* cl_external_memory_handle_type_khr */
1780 #define CL_EXTERNAL_MEMORY_HANDLE_DMA_BUF_KHR               0x2067
1781 
1782 /***************************************************************
1783 * cl_khr_external_memory_dx
1784 ***************************************************************/
1785 #define cl_khr_external_memory_dx 1
1786 #define CL_KHR_EXTERNAL_MEMORY_DX_EXTENSION_NAME \
1787     "cl_khr_external_memory_dx"
1788 
1789 /* cl_external_memory_handle_type_khr */
1790 #define CL_EXTERNAL_MEMORY_HANDLE_D3D11_TEXTURE_KHR         0x2063
1791 #define CL_EXTERNAL_MEMORY_HANDLE_D3D11_TEXTURE_KMT_KHR     0x2064
1792 #define CL_EXTERNAL_MEMORY_HANDLE_D3D12_HEAP_KHR            0x2065
1793 #define CL_EXTERNAL_MEMORY_HANDLE_D3D12_RESOURCE_KHR        0x2066
1794 
1795 /***************************************************************
1796 * cl_khr_external_memory_opaque_fd
1797 ***************************************************************/
1798 #define cl_khr_external_memory_opaque_fd 1
1799 #define CL_KHR_EXTERNAL_MEMORY_OPAQUE_FD_EXTENSION_NAME \
1800     "cl_khr_external_memory_opaque_fd"
1801 
1802 /* cl_external_memory_handle_type_khr */
1803 #define CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_FD_KHR             0x2060
1804 
1805 /***************************************************************
1806 * cl_khr_external_memory_win32
1807 ***************************************************************/
1808 #define cl_khr_external_memory_win32 1
1809 #define CL_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME \
1810     "cl_khr_external_memory_win32"
1811 
1812 /* cl_external_memory_handle_type_khr */
1813 #define CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_WIN32_KHR          0x2061
1814 #define CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_WIN32_KMT_KHR      0x2062
1815 
1816 /***************************************************************
1817 * cl_khr_external_semaphore
1818 ***************************************************************/
1819 #define cl_khr_external_semaphore 1
1820 #define CL_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME \
1821     "cl_khr_external_semaphore"
1822 
1823 typedef struct _cl_semaphore_khr * cl_semaphore_khr;
1824 typedef cl_uint             cl_external_semaphore_handle_type_khr;
1825 
1826 /* cl_platform_info */
1827 #define CL_PLATFORM_SEMAPHORE_IMPORT_HANDLE_TYPES_KHR       0x2037
1828 #define CL_PLATFORM_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR       0x2038
1829 
1830 /* cl_device_info */
1831 #define CL_DEVICE_SEMAPHORE_IMPORT_HANDLE_TYPES_KHR         0x204D
1832 #define CL_DEVICE_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR         0x204E
1833 
1834 /* cl_semaphore_properties_khr */
1835 #define CL_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR                0x203F
1836 #define CL_SEMAPHORE_EXPORT_HANDLE_TYPES_LIST_END_KHR       0
1837 
1838 /* cl_semaphore_info_khr */
1839 #define CL_SEMAPHORE_EXPORTABLE_KHR                         0x2054
1840 
1841 
1842 typedef cl_int CL_API_CALL
1843 clGetSemaphoreHandleForTypeKHR_t(
1844     cl_semaphore_khr sema_object,
1845     cl_device_id device,
1846     cl_external_semaphore_handle_type_khr handle_type,
1847     size_t handle_size,
1848     void* handle_ptr,
1849     size_t* handle_size_ret);
1850 
1851 typedef clGetSemaphoreHandleForTypeKHR_t *
1852 clGetSemaphoreHandleForTypeKHR_fn CL_API_SUFFIX__VERSION_1_2;
1853 
1854 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
1855 
1856 extern CL_API_ENTRY cl_int CL_API_CALL
1857 clGetSemaphoreHandleForTypeKHR(
1858     cl_semaphore_khr sema_object,
1859     cl_device_id device,
1860     cl_external_semaphore_handle_type_khr handle_type,
1861     size_t handle_size,
1862     void* handle_ptr,
1863     size_t* handle_size_ret) CL_API_SUFFIX__VERSION_1_2;
1864 
1865 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
1866 
1867 /***************************************************************
1868 * cl_khr_external_semaphore_dx_fence
1869 ***************************************************************/
1870 #define cl_khr_external_semaphore_dx_fence 1
1871 #define CL_KHR_EXTERNAL_SEMAPHORE_DX_FENCE_EXTENSION_NAME \
1872     "cl_khr_external_semaphore_dx_fence"
1873 
1874 /* cl_external_semaphore_handle_type_khr */
1875 #define CL_SEMAPHORE_HANDLE_D3D12_FENCE_KHR                 0x2059
1876 
1877 /***************************************************************
1878 * cl_khr_external_semaphore_opaque_fd
1879 ***************************************************************/
1880 #define cl_khr_external_semaphore_opaque_fd 1
1881 #define CL_KHR_EXTERNAL_SEMAPHORE_OPAQUE_FD_EXTENSION_NAME \
1882     "cl_khr_external_semaphore_opaque_fd"
1883 
1884 /* cl_external_semaphore_handle_type_khr */
1885 #define CL_SEMAPHORE_HANDLE_OPAQUE_FD_KHR                   0x2055
1886 
1887 /***************************************************************
1888 * cl_khr_external_semaphore_sync_fd
1889 ***************************************************************/
1890 #define cl_khr_external_semaphore_sync_fd 1
1891 #define CL_KHR_EXTERNAL_SEMAPHORE_SYNC_FD_EXTENSION_NAME \
1892     "cl_khr_external_semaphore_sync_fd"
1893 
1894 typedef cl_properties       cl_semaphore_reimport_properties_khr;
1895 
1896 /* cl_external_semaphore_handle_type_khr */
1897 #define CL_SEMAPHORE_HANDLE_SYNC_FD_KHR                     0x2058
1898 
1899 
1900 typedef cl_int CL_API_CALL
1901 clReImportSemaphoreSyncFdKHR_t(
1902     cl_semaphore_khr sema_object,
1903     cl_semaphore_reimport_properties_khr* reimport_props,
1904     int fd);
1905 
1906 typedef clReImportSemaphoreSyncFdKHR_t *
1907 clReImportSemaphoreSyncFdKHR_fn CL_API_SUFFIX__VERSION_3_0;
1908 
1909 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
1910 
1911 extern CL_API_ENTRY cl_int CL_API_CALL
1912 clReImportSemaphoreSyncFdKHR(
1913     cl_semaphore_khr sema_object,
1914     cl_semaphore_reimport_properties_khr* reimport_props,
1915     int fd) CL_API_SUFFIX__VERSION_3_0;
1916 
1917 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
1918 
1919 /***************************************************************
1920 * cl_khr_external_semaphore_win32
1921 ***************************************************************/
1922 #define cl_khr_external_semaphore_win32 1
1923 #define CL_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME \
1924     "cl_khr_external_semaphore_win32"
1925 
1926 /* cl_external_semaphore_handle_type_khr */
1927 #define CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_KHR                0x2056
1928 #define CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_KMT_KHR            0x2057
1929 
1930 /***************************************************************
1931 * cl_khr_semaphore
1932 ***************************************************************/
1933 #define cl_khr_semaphore 1
1934 #define CL_KHR_SEMAPHORE_EXTENSION_NAME \
1935     "cl_khr_semaphore"
1936 
1937 /* type cl_semaphore_khr */
1938 typedef cl_properties       cl_semaphore_properties_khr;
1939 typedef cl_uint             cl_semaphore_info_khr;
1940 typedef cl_uint             cl_semaphore_type_khr;
1941 typedef cl_ulong            cl_semaphore_payload_khr;
1942 
1943 /* cl_semaphore_type */
1944 #define CL_SEMAPHORE_TYPE_BINARY_KHR                        1
1945 
1946 /* cl_platform_info */
1947 #define CL_PLATFORM_SEMAPHORE_TYPES_KHR                     0x2036
1948 
1949 /* cl_device_info */
1950 #define CL_DEVICE_SEMAPHORE_TYPES_KHR                       0x204C
1951 
1952 /* cl_semaphore_info_khr */
1953 #define CL_SEMAPHORE_CONTEXT_KHR                            0x2039
1954 #define CL_SEMAPHORE_REFERENCE_COUNT_KHR                    0x203A
1955 #define CL_SEMAPHORE_PROPERTIES_KHR                         0x203B
1956 #define CL_SEMAPHORE_PAYLOAD_KHR                            0x203C
1957 
1958 /* cl_semaphore_info_khr or cl_semaphore_properties_khr */
1959 #define CL_SEMAPHORE_TYPE_KHR                               0x203D
1960 #define CL_SEMAPHORE_DEVICE_HANDLE_LIST_KHR                 0x2053
1961 #define CL_SEMAPHORE_DEVICE_HANDLE_LIST_END_KHR             0
1962 
1963 /* cl_command_type */
1964 #define CL_COMMAND_SEMAPHORE_WAIT_KHR                       0x2042
1965 #define CL_COMMAND_SEMAPHORE_SIGNAL_KHR                     0x2043
1966 
1967 /* Error codes */
1968 #define CL_INVALID_SEMAPHORE_KHR                            -1142
1969 
1970 
1971 typedef cl_semaphore_khr CL_API_CALL
1972 clCreateSemaphoreWithPropertiesKHR_t(
1973     cl_context context,
1974     const cl_semaphore_properties_khr* sema_props,
1975     cl_int* errcode_ret);
1976 
1977 typedef clCreateSemaphoreWithPropertiesKHR_t *
1978 clCreateSemaphoreWithPropertiesKHR_fn CL_API_SUFFIX__VERSION_1_2;
1979 
1980 typedef cl_int CL_API_CALL
1981 clEnqueueWaitSemaphoresKHR_t(
1982     cl_command_queue command_queue,
1983     cl_uint num_sema_objects,
1984     const cl_semaphore_khr* sema_objects,
1985     const cl_semaphore_payload_khr* sema_payload_list,
1986     cl_uint num_events_in_wait_list,
1987     const cl_event* event_wait_list,
1988     cl_event* event);
1989 
1990 typedef clEnqueueWaitSemaphoresKHR_t *
1991 clEnqueueWaitSemaphoresKHR_fn CL_API_SUFFIX__VERSION_1_2;
1992 
1993 typedef cl_int CL_API_CALL
1994 clEnqueueSignalSemaphoresKHR_t(
1995     cl_command_queue command_queue,
1996     cl_uint num_sema_objects,
1997     const cl_semaphore_khr* sema_objects,
1998     const cl_semaphore_payload_khr* sema_payload_list,
1999     cl_uint num_events_in_wait_list,
2000     const cl_event* event_wait_list,
2001     cl_event* event);
2002 
2003 typedef clEnqueueSignalSemaphoresKHR_t *
2004 clEnqueueSignalSemaphoresKHR_fn CL_API_SUFFIX__VERSION_1_2;
2005 
2006 typedef cl_int CL_API_CALL
2007 clGetSemaphoreInfoKHR_t(
2008     cl_semaphore_khr sema_object,
2009     cl_semaphore_info_khr param_name,
2010     size_t param_value_size,
2011     void* param_value,
2012     size_t* param_value_size_ret);
2013 
2014 typedef clGetSemaphoreInfoKHR_t *
2015 clGetSemaphoreInfoKHR_fn CL_API_SUFFIX__VERSION_1_2;
2016 
2017 typedef cl_int CL_API_CALL
2018 clReleaseSemaphoreKHR_t(
2019     cl_semaphore_khr sema_object);
2020 
2021 typedef clReleaseSemaphoreKHR_t *
2022 clReleaseSemaphoreKHR_fn CL_API_SUFFIX__VERSION_1_2;
2023 
2024 typedef cl_int CL_API_CALL
2025 clRetainSemaphoreKHR_t(
2026     cl_semaphore_khr sema_object);
2027 
2028 typedef clRetainSemaphoreKHR_t *
2029 clRetainSemaphoreKHR_fn CL_API_SUFFIX__VERSION_1_2;
2030 
2031 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
2032 
2033 extern CL_API_ENTRY cl_semaphore_khr CL_API_CALL
2034 clCreateSemaphoreWithPropertiesKHR(
2035     cl_context context,
2036     const cl_semaphore_properties_khr* sema_props,
2037     cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2;
2038 
2039 extern CL_API_ENTRY cl_int CL_API_CALL
2040 clEnqueueWaitSemaphoresKHR(
2041     cl_command_queue command_queue,
2042     cl_uint num_sema_objects,
2043     const cl_semaphore_khr* sema_objects,
2044     const cl_semaphore_payload_khr* sema_payload_list,
2045     cl_uint num_events_in_wait_list,
2046     const cl_event* event_wait_list,
2047     cl_event* event) CL_API_SUFFIX__VERSION_1_2;
2048 
2049 extern CL_API_ENTRY cl_int CL_API_CALL
2050 clEnqueueSignalSemaphoresKHR(
2051     cl_command_queue command_queue,
2052     cl_uint num_sema_objects,
2053     const cl_semaphore_khr* sema_objects,
2054     const cl_semaphore_payload_khr* sema_payload_list,
2055     cl_uint num_events_in_wait_list,
2056     const cl_event* event_wait_list,
2057     cl_event* event) CL_API_SUFFIX__VERSION_1_2;
2058 
2059 extern CL_API_ENTRY cl_int CL_API_CALL
2060 clGetSemaphoreInfoKHR(
2061     cl_semaphore_khr sema_object,
2062     cl_semaphore_info_khr param_name,
2063     size_t param_value_size,
2064     void* param_value,
2065     size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2;
2066 
2067 extern CL_API_ENTRY cl_int CL_API_CALL
2068 clReleaseSemaphoreKHR(
2069     cl_semaphore_khr sema_object) CL_API_SUFFIX__VERSION_1_2;
2070 
2071 extern CL_API_ENTRY cl_int CL_API_CALL
2072 clRetainSemaphoreKHR(
2073     cl_semaphore_khr sema_object) CL_API_SUFFIX__VERSION_1_2;
2074 
2075 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
2076 
2077 /***************************************************************
2078 * cl_arm_import_memory
2079 ***************************************************************/
2080 #define cl_arm_import_memory 1
2081 #define CL_ARM_IMPORT_MEMORY_EXTENSION_NAME \
2082     "cl_arm_import_memory"
2083 
2084 typedef intptr_t            cl_import_properties_arm;
2085 
2086 /* cl_import_properties_arm */
2087 #define CL_IMPORT_TYPE_ARM                                  0x40B2
2088 #define CL_IMPORT_TYPE_HOST_ARM                             0x40B3
2089 #define CL_IMPORT_TYPE_DMA_BUF_ARM                          0x40B4
2090 #define CL_IMPORT_TYPE_PROTECTED_ARM                        0x40B5
2091 #define CL_IMPORT_TYPE_ANDROID_HARDWARE_BUFFER_ARM          0x41E2
2092 #define CL_IMPORT_DMA_BUF_DATA_CONSISTENCY_WITH_HOST_ARM    0x41E3
2093 #define CL_IMPORT_MEMORY_WHOLE_ALLOCATION_ARM               SIZE_MAX
2094 #define CL_IMPORT_ANDROID_HARDWARE_BUFFER_PLANE_INDEX_ARM   0x41EF
2095 #define CL_IMPORT_ANDROID_HARDWARE_BUFFER_LAYER_INDEX_ARM   0x41F0
2096 
2097 
2098 typedef cl_mem CL_API_CALL
2099 clImportMemoryARM_t(
2100     cl_context context,
2101     cl_mem_flags flags,
2102     const cl_import_properties_arm* properties,
2103     void* memory,
2104     size_t size,
2105     cl_int* errcode_ret);
2106 
2107 typedef clImportMemoryARM_t *
2108 clImportMemoryARM_fn CL_API_SUFFIX__VERSION_1_0;
2109 
2110 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
2111 
2112 extern CL_API_ENTRY cl_mem CL_API_CALL
2113 clImportMemoryARM(
2114     cl_context context,
2115     cl_mem_flags flags,
2116     const cl_import_properties_arm* properties,
2117     void* memory,
2118     size_t size,
2119     cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0;
2120 
2121 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
2122 
2123 /***************************************************************
2124 * cl_arm_shared_virtual_memory
2125 ***************************************************************/
2126 #define cl_arm_shared_virtual_memory 1
2127 #define CL_ARM_SHARED_VIRTUAL_MEMORY_EXTENSION_NAME \
2128     "cl_arm_shared_virtual_memory"
2129 
2130 typedef cl_bitfield         cl_svm_mem_flags_arm;
2131 typedef cl_uint             cl_kernel_exec_info_arm;
2132 typedef cl_bitfield         cl_device_svm_capabilities_arm;
2133 
2134 /* cl_device_info */
2135 #define CL_DEVICE_SVM_CAPABILITIES_ARM                      0x40B6
2136 
2137 /* cl_mem_info */
2138 #define CL_MEM_USES_SVM_POINTER_ARM                         0x40B7
2139 
2140 /* cl_kernel_exec_info_arm */
2141 #define CL_KERNEL_EXEC_INFO_SVM_PTRS_ARM                    0x40B8
2142 #define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_ARM       0x40B9
2143 
2144 /* cl_command_type */
2145 #define CL_COMMAND_SVM_FREE_ARM                             0x40BA
2146 #define CL_COMMAND_SVM_MEMCPY_ARM                           0x40BB
2147 #define CL_COMMAND_SVM_MEMFILL_ARM                          0x40BC
2148 #define CL_COMMAND_SVM_MAP_ARM                              0x40BD
2149 #define CL_COMMAND_SVM_UNMAP_ARM                            0x40BE
2150 
2151 /* cl_device_svm_capabilities_arm */
2152 #define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_ARM               (1 << 0)
2153 #define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_ARM                 (1 << 1)
2154 #define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_ARM                 (1 << 2)
2155 #define CL_DEVICE_SVM_ATOMICS_ARM                           (1 << 3)
2156 
2157 /* cl_svm_mem_flags_arm */
2158 #define CL_MEM_SVM_FINE_GRAIN_BUFFER_ARM                    (1 << 10)
2159 #define CL_MEM_SVM_ATOMICS_ARM                              (1 << 11)
2160 
2161 
2162 typedef void* CL_API_CALL
2163 clSVMAllocARM_t(
2164     cl_context context,
2165     cl_svm_mem_flags_arm flags,
2166     size_t size,
2167     cl_uint alignment);
2168 
2169 typedef clSVMAllocARM_t *
2170 clSVMAllocARM_fn CL_API_SUFFIX__VERSION_1_2;
2171 
2172 typedef void CL_API_CALL
2173 clSVMFreeARM_t(
2174     cl_context context,
2175     void* svm_pointer);
2176 
2177 typedef clSVMFreeARM_t *
2178 clSVMFreeARM_fn CL_API_SUFFIX__VERSION_1_2;
2179 
2180 typedef cl_int CL_API_CALL
2181 clEnqueueSVMFreeARM_t(
2182     cl_command_queue command_queue,
2183     cl_uint num_svm_pointers,
2184     void* svm_pointers[],
2185     void (CL_CALLBACK* pfn_free_func)(cl_command_queue queue, cl_uint num_svm_pointers, void * svm_pointers[], void *user_data),
2186     void* user_data,
2187     cl_uint num_events_in_wait_list,
2188     const cl_event* event_wait_list,
2189     cl_event* event);
2190 
2191 typedef clEnqueueSVMFreeARM_t *
2192 clEnqueueSVMFreeARM_fn CL_API_SUFFIX__VERSION_1_2;
2193 
2194 typedef cl_int CL_API_CALL
2195 clEnqueueSVMMemcpyARM_t(
2196     cl_command_queue command_queue,
2197     cl_bool blocking_copy,
2198     void* dst_ptr,
2199     const void* src_ptr,
2200     size_t size,
2201     cl_uint num_events_in_wait_list,
2202     const cl_event* event_wait_list,
2203     cl_event* event);
2204 
2205 typedef clEnqueueSVMMemcpyARM_t *
2206 clEnqueueSVMMemcpyARM_fn CL_API_SUFFIX__VERSION_1_2;
2207 
2208 typedef cl_int CL_API_CALL
2209 clEnqueueSVMMemFillARM_t(
2210     cl_command_queue command_queue,
2211     void* svm_ptr,
2212     const void* pattern,
2213     size_t pattern_size,
2214     size_t size,
2215     cl_uint num_events_in_wait_list,
2216     const cl_event* event_wait_list,
2217     cl_event* event);
2218 
2219 typedef clEnqueueSVMMemFillARM_t *
2220 clEnqueueSVMMemFillARM_fn CL_API_SUFFIX__VERSION_1_2;
2221 
2222 typedef cl_int CL_API_CALL
2223 clEnqueueSVMMapARM_t(
2224     cl_command_queue command_queue,
2225     cl_bool blocking_map,
2226     cl_map_flags flags,
2227     void* svm_ptr,
2228     size_t size,
2229     cl_uint num_events_in_wait_list,
2230     const cl_event* event_wait_list,
2231     cl_event* event);
2232 
2233 typedef clEnqueueSVMMapARM_t *
2234 clEnqueueSVMMapARM_fn CL_API_SUFFIX__VERSION_1_2;
2235 
2236 typedef cl_int CL_API_CALL
2237 clEnqueueSVMUnmapARM_t(
2238     cl_command_queue command_queue,
2239     void* svm_ptr,
2240     cl_uint num_events_in_wait_list,
2241     const cl_event* event_wait_list,
2242     cl_event* event);
2243 
2244 typedef clEnqueueSVMUnmapARM_t *
2245 clEnqueueSVMUnmapARM_fn CL_API_SUFFIX__VERSION_1_2;
2246 
2247 typedef cl_int CL_API_CALL
2248 clSetKernelArgSVMPointerARM_t(
2249     cl_kernel kernel,
2250     cl_uint arg_index,
2251     const void* arg_value);
2252 
2253 typedef clSetKernelArgSVMPointerARM_t *
2254 clSetKernelArgSVMPointerARM_fn CL_API_SUFFIX__VERSION_1_2;
2255 
2256 typedef cl_int CL_API_CALL
2257 clSetKernelExecInfoARM_t(
2258     cl_kernel kernel,
2259     cl_kernel_exec_info_arm param_name,
2260     size_t param_value_size,
2261     const void* param_value);
2262 
2263 typedef clSetKernelExecInfoARM_t *
2264 clSetKernelExecInfoARM_fn CL_API_SUFFIX__VERSION_1_2;
2265 
2266 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
2267 
2268 extern CL_API_ENTRY void* CL_API_CALL
2269 clSVMAllocARM(
2270     cl_context context,
2271     cl_svm_mem_flags_arm flags,
2272     size_t size,
2273     cl_uint alignment) CL_API_SUFFIX__VERSION_1_2;
2274 
2275 extern CL_API_ENTRY void CL_API_CALL
2276 clSVMFreeARM(
2277     cl_context context,
2278     void* svm_pointer) CL_API_SUFFIX__VERSION_1_2;
2279 
2280 extern CL_API_ENTRY cl_int CL_API_CALL
2281 clEnqueueSVMFreeARM(
2282     cl_command_queue command_queue,
2283     cl_uint num_svm_pointers,
2284     void* svm_pointers[],
2285     void (CL_CALLBACK* pfn_free_func)(cl_command_queue queue, cl_uint num_svm_pointers, void * svm_pointers[], void *user_data),
2286     void* user_data,
2287     cl_uint num_events_in_wait_list,
2288     const cl_event* event_wait_list,
2289     cl_event* event) CL_API_SUFFIX__VERSION_1_2;
2290 
2291 extern CL_API_ENTRY cl_int CL_API_CALL
2292 clEnqueueSVMMemcpyARM(
2293     cl_command_queue command_queue,
2294     cl_bool blocking_copy,
2295     void* dst_ptr,
2296     const void* src_ptr,
2297     size_t size,
2298     cl_uint num_events_in_wait_list,
2299     const cl_event* event_wait_list,
2300     cl_event* event) CL_API_SUFFIX__VERSION_1_2;
2301 
2302 extern CL_API_ENTRY cl_int CL_API_CALL
2303 clEnqueueSVMMemFillARM(
2304     cl_command_queue command_queue,
2305     void* svm_ptr,
2306     const void* pattern,
2307     size_t pattern_size,
2308     size_t size,
2309     cl_uint num_events_in_wait_list,
2310     const cl_event* event_wait_list,
2311     cl_event* event) CL_API_SUFFIX__VERSION_1_2;
2312 
2313 extern CL_API_ENTRY cl_int CL_API_CALL
2314 clEnqueueSVMMapARM(
2315     cl_command_queue command_queue,
2316     cl_bool blocking_map,
2317     cl_map_flags flags,
2318     void* svm_ptr,
2319     size_t size,
2320     cl_uint num_events_in_wait_list,
2321     const cl_event* event_wait_list,
2322     cl_event* event) CL_API_SUFFIX__VERSION_1_2;
2323 
2324 extern CL_API_ENTRY cl_int CL_API_CALL
2325 clEnqueueSVMUnmapARM(
2326     cl_command_queue command_queue,
2327     void* svm_ptr,
2328     cl_uint num_events_in_wait_list,
2329     const cl_event* event_wait_list,
2330     cl_event* event) CL_API_SUFFIX__VERSION_1_2;
2331 
2332 extern CL_API_ENTRY cl_int CL_API_CALL
2333 clSetKernelArgSVMPointerARM(
2334     cl_kernel kernel,
2335     cl_uint arg_index,
2336     const void* arg_value) CL_API_SUFFIX__VERSION_1_2;
2337 
2338 extern CL_API_ENTRY cl_int CL_API_CALL
2339 clSetKernelExecInfoARM(
2340     cl_kernel kernel,
2341     cl_kernel_exec_info_arm param_name,
2342     size_t param_value_size,
2343     const void* param_value) CL_API_SUFFIX__VERSION_1_2;
2344 
2345 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
2346 
2347 /***************************************************************
2348 * cl_arm_get_core_id
2349 ***************************************************************/
2350 #if defined(CL_VERSION_1_2)
2351 
2352 #define cl_arm_get_core_id 1
2353 #define CL_ARM_GET_CORE_ID_EXTENSION_NAME \
2354     "cl_arm_get_core_id"
2355 
2356 /* cl_device_info */
2357 #define CL_DEVICE_COMPUTE_UNITS_BITFIELD_ARM                0x40BF
2358 
2359 #endif /* defined(CL_VERSION_1_2) */
2360 
2361 /***************************************************************
2362 * cl_arm_job_slot_selection
2363 ***************************************************************/
2364 #define cl_arm_job_slot_selection 1
2365 #define CL_ARM_JOB_SLOT_SELECTION_EXTENSION_NAME \
2366     "cl_arm_job_slot_selection"
2367 
2368 /* cl_device_info */
2369 #define CL_DEVICE_JOB_SLOTS_ARM                             0x41E0
2370 
2371 /* cl_queue_properties */
2372 #define CL_QUEUE_JOB_SLOT_ARM                               0x41E1
2373 
2374 /***************************************************************
2375 * cl_arm_scheduling_controls
2376 ***************************************************************/
2377 #define cl_arm_scheduling_controls 1
2378 #define CL_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME \
2379     "cl_arm_scheduling_controls"
2380 
2381 /* Types */
2382 typedef cl_bitfield         cl_device_scheduling_controls_capabilities_arm;
2383 
2384 /* cl_device_scheduling_controls_capabilities_arm */
2385 #define CL_DEVICE_SCHEDULING_KERNEL_BATCHING_ARM            (1 << 0)
2386 #define CL_DEVICE_SCHEDULING_WORKGROUP_BATCH_SIZE_ARM       (1 << 1)
2387 #define CL_DEVICE_SCHEDULING_WORKGROUP_BATCH_SIZE_MODIFIER_ARM (1 << 2)
2388 #define CL_DEVICE_SCHEDULING_DEFERRED_FLUSH_ARM             (1 << 3)
2389 #define CL_DEVICE_SCHEDULING_REGISTER_ALLOCATION_ARM        (1 << 4)
2390 #define CL_DEVICE_SCHEDULING_WARP_THROTTLING_ARM            (1 << 5)
2391 #define CL_DEVICE_SCHEDULING_COMPUTE_UNIT_BATCH_QUEUE_SIZE_ARM (1 << 6)
2392 #define CL_DEVICE_SCHEDULING_COMPUTE_UNIT_LIMIT_ARM         (1 << 7)
2393 
2394 /* cl_device_info */
2395 #define CL_DEVICE_SCHEDULING_CONTROLS_CAPABILITIES_ARM      0x41E4
2396 #define CL_DEVICE_SUPPORTED_REGISTER_ALLOCATIONS_ARM        0x41EB
2397 #define CL_DEVICE_MAX_WARP_COUNT_ARM                        0x41EA
2398 
2399 /* cl_kernel_exec_info */
2400 #define CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_ARM        0x41E5
2401 #define CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_MODIFIER_ARM 0x41E6
2402 #define CL_KERNEL_EXEC_INFO_WARP_COUNT_LIMIT_ARM            0x41E8
2403 #define CL_KERNEL_EXEC_INFO_COMPUTE_UNIT_MAX_QUEUED_BATCHES_ARM 0x41F1
2404 
2405 /* cl_kernel_info */
2406 #define CL_KERNEL_MAX_WARP_COUNT_ARM                        0x41E9
2407 
2408 /* cl_queue_properties */
2409 #define CL_QUEUE_KERNEL_BATCHING_ARM                        0x41E7
2410 #define CL_QUEUE_DEFERRED_FLUSH_ARM                         0x41EC
2411 #define CL_QUEUE_COMPUTE_UNIT_LIMIT_ARM                     0x41F3
2412 
2413 /***************************************************************
2414 * cl_arm_controlled_kernel_termination
2415 ***************************************************************/
2416 #define cl_arm_controlled_kernel_termination 1
2417 #define CL_ARM_CONTROLLED_KERNEL_TERMINATION_EXTENSION_NAME \
2418     "cl_arm_controlled_kernel_termination"
2419 
2420 /* Types */
2421 typedef cl_bitfield         cl_device_controlled_termination_capabilities_arm;
2422 
2423 /* Error codes */
2424 #define CL_COMMAND_TERMINATED_ITSELF_WITH_FAILURE_ARM       -1108
2425 
2426 /* cl_device_controlled_termination_capabilities_arm */
2427 #define CL_DEVICE_CONTROLLED_TERMINATION_SUCCESS_ARM        (1 << 0)
2428 #define CL_DEVICE_CONTROLLED_TERMINATION_FAILURE_ARM        (1 << 1)
2429 #define CL_DEVICE_CONTROLLED_TERMINATION_QUERY_ARM          (1 << 2)
2430 
2431 /* cl_device_info */
2432 #define CL_DEVICE_CONTROLLED_TERMINATION_CAPABILITIES_ARM   0x41EE
2433 
2434 /* cl_event_info */
2435 #define CL_EVENT_COMMAND_TERMINATION_REASON_ARM             0x41ED
2436 
2437 /* cl_command_termination_reason_arm */
2438 #define CL_COMMAND_TERMINATION_COMPLETION_ARM               0
2439 #define CL_COMMAND_TERMINATION_CONTROLLED_SUCCESS_ARM       1
2440 #define CL_COMMAND_TERMINATION_CONTROLLED_FAILURE_ARM       2
2441 #define CL_COMMAND_TERMINATION_ERROR_ARM                    3
2442 
2443 /***************************************************************
2444 * cl_arm_protected_memory_allocation
2445 ***************************************************************/
2446 #define cl_arm_protected_memory_allocation 1
2447 #define CL_ARM_PROTECTED_MEMORY_ALLOCATION_EXTENSION_NAME \
2448     "cl_arm_protected_memory_allocation"
2449 
2450 #define CL_MEM_PROTECTED_ALLOC_ARM                          ((cl_bitfield)1 << 36)
2451 
2452 /***************************************************************
2453 * cl_intel_exec_by_local_thread
2454 ***************************************************************/
2455 #define cl_intel_exec_by_local_thread 1
2456 #define CL_INTEL_EXEC_BY_LOCAL_THREAD_EXTENSION_NAME \
2457     "cl_intel_exec_by_local_thread"
2458 
2459 /* cl_command_queue_properties - bitfield */
2460 #define CL_QUEUE_THREAD_LOCAL_EXEC_ENABLE_INTEL             ((cl_bitfield)1 << 31)
2461 
2462 /***************************************************************
2463 * cl_intel_device_attribute_query
2464 ***************************************************************/
2465 #define cl_intel_device_attribute_query 1
2466 #define CL_INTEL_DEVICE_ATTRIBUTE_QUERY_EXTENSION_NAME \
2467     "cl_intel_device_attribute_query"
2468 
2469 typedef cl_bitfield         cl_device_feature_capabilities_intel;
2470 
2471 /* cl_device_feature_capabilities_intel */
2472 #define CL_DEVICE_FEATURE_FLAG_DP4A_INTEL                   (1 << 0)
2473 #define CL_DEVICE_FEATURE_FLAG_DPAS_INTEL                   (1 << 1)
2474 
2475 /* cl_device_info */
2476 #define CL_DEVICE_IP_VERSION_INTEL                          0x4250
2477 #define CL_DEVICE_ID_INTEL                                  0x4251
2478 #define CL_DEVICE_NUM_SLICES_INTEL                          0x4252
2479 #define CL_DEVICE_NUM_SUB_SLICES_PER_SLICE_INTEL            0x4253
2480 #define CL_DEVICE_NUM_EUS_PER_SUB_SLICE_INTEL               0x4254
2481 #define CL_DEVICE_NUM_THREADS_PER_EU_INTEL                  0x4255
2482 #define CL_DEVICE_FEATURE_CAPABILITIES_INTEL                0x4256
2483 
2484 /***************************************************************
2485 * cl_intel_device_partition_by_names
2486 ***************************************************************/
2487 #define cl_intel_device_partition_by_names 1
2488 #define CL_INTEL_DEVICE_PARTITION_BY_NAMES_EXTENSION_NAME \
2489     "cl_intel_device_partition_by_names"
2490 
2491 #define CL_DEVICE_PARTITION_BY_NAMES_INTEL                  0x4052
2492 #define CL_PARTITION_BY_NAMES_LIST_END_INTEL                -1
2493 
2494 /***************************************************************
2495 * cl_intel_accelerator
2496 ***************************************************************/
2497 #define cl_intel_accelerator 1
2498 #define CL_INTEL_ACCELERATOR_EXTENSION_NAME \
2499     "cl_intel_accelerator"
2500 
2501 typedef struct _cl_accelerator_intel* cl_accelerator_intel;
2502 typedef cl_uint             cl_accelerator_type_intel;
2503 typedef cl_uint             cl_accelerator_info_intel;
2504 
2505 /* cl_accelerator_info_intel */
2506 #define CL_ACCELERATOR_DESCRIPTOR_INTEL                     0x4090
2507 #define CL_ACCELERATOR_REFERENCE_COUNT_INTEL                0x4091
2508 #define CL_ACCELERATOR_CONTEXT_INTEL                        0x4092
2509 #define CL_ACCELERATOR_TYPE_INTEL                           0x4093
2510 
2511 /* Error codes */
2512 #define CL_INVALID_ACCELERATOR_INTEL                        -1094
2513 #define CL_INVALID_ACCELERATOR_TYPE_INTEL                   -1095
2514 #define CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL             -1096
2515 #define CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL             -1097
2516 
2517 
2518 typedef cl_accelerator_intel CL_API_CALL
2519 clCreateAcceleratorINTEL_t(
2520     cl_context context,
2521     cl_accelerator_type_intel accelerator_type,
2522     size_t descriptor_size,
2523     const void* descriptor,
2524     cl_int* errcode_ret);
2525 
2526 typedef clCreateAcceleratorINTEL_t *
2527 clCreateAcceleratorINTEL_fn CL_API_SUFFIX__VERSION_1_2;
2528 
2529 typedef cl_int CL_API_CALL
2530 clGetAcceleratorInfoINTEL_t(
2531     cl_accelerator_intel accelerator,
2532     cl_accelerator_info_intel param_name,
2533     size_t param_value_size,
2534     void* param_value,
2535     size_t* param_value_size_ret);
2536 
2537 typedef clGetAcceleratorInfoINTEL_t *
2538 clGetAcceleratorInfoINTEL_fn CL_API_SUFFIX__VERSION_1_2;
2539 
2540 typedef cl_int CL_API_CALL
2541 clRetainAcceleratorINTEL_t(
2542     cl_accelerator_intel accelerator);
2543 
2544 typedef clRetainAcceleratorINTEL_t *
2545 clRetainAcceleratorINTEL_fn CL_API_SUFFIX__VERSION_1_2;
2546 
2547 typedef cl_int CL_API_CALL
2548 clReleaseAcceleratorINTEL_t(
2549     cl_accelerator_intel accelerator);
2550 
2551 typedef clReleaseAcceleratorINTEL_t *
2552 clReleaseAcceleratorINTEL_fn CL_API_SUFFIX__VERSION_1_2;
2553 
2554 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
2555 
2556 extern CL_API_ENTRY cl_accelerator_intel CL_API_CALL
2557 clCreateAcceleratorINTEL(
2558     cl_context context,
2559     cl_accelerator_type_intel accelerator_type,
2560     size_t descriptor_size,
2561     const void* descriptor,
2562     cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2;
2563 
2564 extern CL_API_ENTRY cl_int CL_API_CALL
2565 clGetAcceleratorInfoINTEL(
2566     cl_accelerator_intel accelerator,
2567     cl_accelerator_info_intel param_name,
2568     size_t param_value_size,
2569     void* param_value,
2570     size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2;
2571 
2572 extern CL_API_ENTRY cl_int CL_API_CALL
2573 clRetainAcceleratorINTEL(
2574     cl_accelerator_intel accelerator) CL_API_SUFFIX__VERSION_1_2;
2575 
2576 extern CL_API_ENTRY cl_int CL_API_CALL
2577 clReleaseAcceleratorINTEL(
2578     cl_accelerator_intel accelerator) CL_API_SUFFIX__VERSION_1_2;
2579 
2580 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
2581 
2582 /***************************************************************
2583 * cl_intel_motion_estimation
2584 ***************************************************************/
2585 #define cl_intel_motion_estimation 1
2586 #define CL_INTEL_MOTION_ESTIMATION_EXTENSION_NAME \
2587     "cl_intel_motion_estimation"
2588 
2589 typedef struct _cl_motion_estimation_desc_intel {
2590     cl_uint mb_block_type;
2591     cl_uint subpixel_mode;
2592     cl_uint sad_adjust_mode;
2593     cl_uint search_path_type;
2594 } cl_motion_estimation_desc_intel;
2595 
2596 /* cl_accelerator_type_intel */
2597 #define CL_ACCELERATOR_TYPE_MOTION_ESTIMATION_INTEL         0x0
2598 
2599 /* cl_uint mb_block_type */
2600 #define CL_ME_MB_TYPE_16x16_INTEL                           0x0
2601 #define CL_ME_MB_TYPE_8x8_INTEL                             0x1
2602 #define CL_ME_MB_TYPE_4x4_INTEL                             0x2
2603 
2604 /* cl_uint subpixel_mode */
2605 #define CL_ME_SUBPIXEL_MODE_INTEGER_INTEL                   0x0
2606 #define CL_ME_SUBPIXEL_MODE_HPEL_INTEL                      0x1
2607 #define CL_ME_SUBPIXEL_MODE_QPEL_INTEL                      0x2
2608 
2609 /* cl_uint sad_adjust_mode */
2610 #define CL_ME_SAD_ADJUST_MODE_NONE_INTEL                    0x0
2611 #define CL_ME_SAD_ADJUST_MODE_HAAR_INTEL                    0x1
2612 
2613 /* cl_uint search_path_type */
2614 #define CL_ME_SEARCH_PATH_RADIUS_2_2_INTEL                  0x0
2615 #define CL_ME_SEARCH_PATH_RADIUS_4_4_INTEL                  0x1
2616 #define CL_ME_SEARCH_PATH_RADIUS_16_12_INTEL                0x5
2617 
2618 /***************************************************************
2619 * cl_intel_advanced_motion_estimation
2620 ***************************************************************/
2621 #define cl_intel_advanced_motion_estimation 1
2622 #define CL_INTEL_ADVANCED_MOTION_ESTIMATION_EXTENSION_NAME \
2623     "cl_intel_advanced_motion_estimation"
2624 
2625 /* cl_device_info */
2626 #define CL_DEVICE_ME_VERSION_INTEL                          0x407E
2627 
2628 #define CL_ME_VERSION_LEGACY_INTEL                          0x0
2629 #define CL_ME_VERSION_ADVANCED_VER_1_INTEL                  0x1
2630 #define CL_ME_VERSION_ADVANCED_VER_2_INTEL                  0x2
2631 
2632 #define CL_ME_CHROMA_INTRA_PREDICT_ENABLED_INTEL            0x1
2633 #define CL_ME_LUMA_INTRA_PREDICT_ENABLED_INTEL              0x2
2634 
2635 #define CL_ME_SKIP_BLOCK_TYPE_16x16_INTEL                   0x0
2636 #define CL_ME_SKIP_BLOCK_TYPE_8x8_INTEL                     0x4
2637 
2638 #define CL_ME_COST_PENALTY_NONE_INTEL                       0x0
2639 #define CL_ME_COST_PENALTY_LOW_INTEL                        0x1
2640 #define CL_ME_COST_PENALTY_NORMAL_INTEL                     0x2
2641 #define CL_ME_COST_PENALTY_HIGH_INTEL                       0x3
2642 
2643 #define CL_ME_COST_PRECISION_QPEL_INTEL                     0x0
2644 #define CL_ME_COST_PRECISION_HPEL_INTEL                     0x1
2645 #define CL_ME_COST_PRECISION_PEL_INTEL                      0x2
2646 #define CL_ME_COST_PRECISION_DPEL_INTEL                     0x3
2647 
2648 #define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL            0x0
2649 #define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL          0x1
2650 #define CL_ME_LUMA_PREDICTOR_MODE_DC_INTEL                  0x2
2651 #define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL  0x3
2652 #define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL 0x4
2653 #define CL_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL               0x4
2654 #define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL      0x5
2655 #define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL     0x6
2656 #define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL       0x7
2657 #define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL       0x8
2658 
2659 #define CL_ME_CHROMA_PREDICTOR_MODE_DC_INTEL                0x0
2660 #define CL_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL        0x1
2661 #define CL_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL          0x2
2662 #define CL_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL             0x3
2663 
2664 #define CL_ME_FORWARD_INPUT_MODE_INTEL                      0x1
2665 #define CL_ME_BACKWARD_INPUT_MODE_INTEL                     0x2
2666 #define CL_ME_BIDIRECTION_INPUT_MODE_INTEL                  0x3
2667 
2668 #define CL_ME_BIDIR_WEIGHT_QUARTER_INTEL                    16
2669 #define CL_ME_BIDIR_WEIGHT_THIRD_INTEL                      21
2670 #define CL_ME_BIDIR_WEIGHT_HALF_INTEL                       32
2671 #define CL_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL                  43
2672 #define CL_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL              48
2673 
2674 /***************************************************************
2675 * cl_intel_simultaneous_sharing
2676 ***************************************************************/
2677 #define cl_intel_simultaneous_sharing 1
2678 #define CL_INTEL_SIMULTANEOUS_SHARING_EXTENSION_NAME \
2679     "cl_intel_simultaneous_sharing"
2680 
2681 /* cl_device_info */
2682 #define CL_DEVICE_SIMULTANEOUS_INTEROPS_INTEL               0x4104
2683 #define CL_DEVICE_NUM_SIMULTANEOUS_INTEROPS_INTEL           0x4105
2684 
2685 /***************************************************************
2686 * cl_intel_egl_image_yuv
2687 ***************************************************************/
2688 #define cl_intel_egl_image_yuv 1
2689 #define CL_INTEL_EGL_IMAGE_YUV_EXTENSION_NAME \
2690     "cl_intel_egl_image_yuv"
2691 
2692 /* cl_egl_image_properties_khr */
2693 #define CL_EGL_YUV_PLANE_INTEL                              0x4107
2694 
2695 /***************************************************************
2696 * cl_intel_packed_yuv
2697 ***************************************************************/
2698 #define cl_intel_packed_yuv 1
2699 #define CL_INTEL_PACKED_YUV_EXTENSION_NAME \
2700     "cl_intel_packed_yuv"
2701 
2702 /* cl_channel_order */
2703 #define CL_YUYV_INTEL                                       0x4076
2704 #define CL_UYVY_INTEL                                       0x4077
2705 #define CL_YVYU_INTEL                                       0x4078
2706 #define CL_VYUY_INTEL                                       0x4079
2707 
2708 /***************************************************************
2709 * cl_intel_required_subgroup_size
2710 ***************************************************************/
2711 #define cl_intel_required_subgroup_size 1
2712 #define CL_INTEL_REQUIRED_SUBGROUP_SIZE_EXTENSION_NAME \
2713     "cl_intel_required_subgroup_size"
2714 
2715 /* cl_device_info */
2716 #define CL_DEVICE_SUB_GROUP_SIZES_INTEL                     0x4108
2717 
2718 /* cl_kernel_work_group_info */
2719 #define CL_KERNEL_SPILL_MEM_SIZE_INTEL                      0x4109
2720 
2721 /* cl_kernel_sub_group_info */
2722 #define CL_KERNEL_COMPILE_SUB_GROUP_SIZE_INTEL              0x410A
2723 
2724 /***************************************************************
2725 * cl_intel_driver_diagnostics
2726 ***************************************************************/
2727 #define cl_intel_driver_diagnostics 1
2728 #define CL_INTEL_DRIVER_DIAGNOSTICS_EXTENSION_NAME \
2729     "cl_intel_driver_diagnostics"
2730 
2731 typedef cl_uint             cl_diagnostics_verbose_level;
2732 
2733 /* cl_context_properties */
2734 #define CL_CONTEXT_SHOW_DIAGNOSTICS_INTEL                   0x4106
2735 #define CL_CONTEXT_DIAGNOSTICS_LEVEL_ALL_INTEL              0xff
2736 #define CL_CONTEXT_DIAGNOSTICS_LEVEL_GOOD_INTEL             (1 << 0)
2737 #define CL_CONTEXT_DIAGNOSTICS_LEVEL_BAD_INTEL              (1 << 1)
2738 #define CL_CONTEXT_DIAGNOSTICS_LEVEL_NEUTRAL_INTEL          (1 << 2)
2739 
2740 /***************************************************************
2741 * cl_intel_planar_yuv
2742 ***************************************************************/
2743 #define cl_intel_planar_yuv 1
2744 #define CL_INTEL_PLANAR_YUV_EXTENSION_NAME \
2745     "cl_intel_planar_yuv"
2746 
2747 /* cl_channel_order */
2748 #define CL_NV12_INTEL                                       0x410E
2749 
2750 /* cl_mem_flags */
2751 #define CL_MEM_NO_ACCESS_INTEL                              (1 << 24)
2752 #define CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL              (1 << 25)
2753 
2754 /* cl_device_info */
2755 #define CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL                0x417E
2756 #define CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL               0x417F
2757 
2758 /***************************************************************
2759 * cl_intel_device_side_avc_motion_estimation
2760 ***************************************************************/
2761 #define cl_intel_device_side_avc_motion_estimation 1
2762 #define CL_INTEL_DEVICE_SIDE_AVC_MOTION_ESTIMATION_EXTENSION_NAME \
2763     "cl_intel_device_side_avc_motion_estimation"
2764 
2765 /* cl_device_info */
2766 #define CL_DEVICE_AVC_ME_VERSION_INTEL                      0x410B
2767 #define CL_DEVICE_AVC_ME_SUPPORTS_TEXTURE_SAMPLER_USE_INTEL 0x410C
2768 #define CL_DEVICE_AVC_ME_SUPPORTS_PREEMPTION_INTEL          0x410D
2769 
2770 /* returned by CL_DEVICE_AVC_ME_VERSION_INTEL */
2771 #define CL_AVC_ME_VERSION_0_INTEL                           0x0
2772 #define CL_AVC_ME_VERSION_1_INTEL                           0x1
2773 
2774 /* Inter macro-block major shape values */
2775 #define CL_AVC_ME_MAJOR_16x16_INTEL                         0x0
2776 #define CL_AVC_ME_MAJOR_16x8_INTEL                          0x1
2777 #define CL_AVC_ME_MAJOR_8x16_INTEL                          0x2
2778 #define CL_AVC_ME_MAJOR_8x8_INTEL                           0x3
2779 
2780 /* Inter macro-block minor shape values */
2781 #define CL_AVC_ME_MINOR_8x8_INTEL                           0x0
2782 #define CL_AVC_ME_MINOR_8x4_INTEL                           0x1
2783 #define CL_AVC_ME_MINOR_4x8_INTEL                           0x2
2784 #define CL_AVC_ME_MINOR_4x4_INTEL                           0x3
2785 
2786 /* Inter macro-block major direction values */
2787 #define CL_AVC_ME_MAJOR_FORWARD_INTEL                       0x0
2788 #define CL_AVC_ME_MAJOR_BACKWARD_INTEL                      0x1
2789 #define CL_AVC_ME_MAJOR_BIDIRECTIONAL_INTEL                 0x2
2790 
2791 /* Inter (IME) partition mask values */
2792 #define CL_AVC_ME_PARTITION_MASK_ALL_INTEL                  0x0
2793 #define CL_AVC_ME_PARTITION_MASK_16x16_INTEL                0x7E
2794 #define CL_AVC_ME_PARTITION_MASK_16x8_INTEL                 0x7D
2795 #define CL_AVC_ME_PARTITION_MASK_8x16_INTEL                 0x7B
2796 #define CL_AVC_ME_PARTITION_MASK_8x8_INTEL                  0x77
2797 #define CL_AVC_ME_PARTITION_MASK_8x4_INTEL                  0x6F
2798 #define CL_AVC_ME_PARTITION_MASK_4x8_INTEL                  0x5F
2799 #define CL_AVC_ME_PARTITION_MASK_4x4_INTEL                  0x3F
2800 
2801 /* Search window configuration */
2802 #define CL_AVC_ME_SEARCH_WINDOW_EXHAUSTIVE_INTEL            0x0
2803 #define CL_AVC_ME_SEARCH_WINDOW_SMALL_INTEL                 0x1
2804 #define CL_AVC_ME_SEARCH_WINDOW_TINY_INTEL                  0x2
2805 #define CL_AVC_ME_SEARCH_WINDOW_EXTRA_TINY_INTEL            0x3
2806 #define CL_AVC_ME_SEARCH_WINDOW_DIAMOND_INTEL               0x4
2807 #define CL_AVC_ME_SEARCH_WINDOW_LARGE_DIAMOND_INTEL         0x5
2808 #define CL_AVC_ME_SEARCH_WINDOW_RESERVED0_INTEL             0x6
2809 #define CL_AVC_ME_SEARCH_WINDOW_RESERVED1_INTEL             0x7
2810 #define CL_AVC_ME_SEARCH_WINDOW_CUSTOM_INTEL                0x8
2811 #define CL_AVC_ME_SEARCH_WINDOW_16x12_RADIUS_INTEL          0x9
2812 #define CL_AVC_ME_SEARCH_WINDOW_4x4_RADIUS_INTEL            0x2
2813 #define CL_AVC_ME_SEARCH_WINDOW_2x2_RADIUS_INTEL            0xa
2814 
2815 /* SAD adjustment mode */
2816 #define CL_AVC_ME_SAD_ADJUST_MODE_NONE_INTEL                0x0
2817 #define CL_AVC_ME_SAD_ADJUST_MODE_HAAR_INTEL                0x2
2818 
2819 /* Pixel resolution */
2820 #define CL_AVC_ME_SUBPIXEL_MODE_INTEGER_INTEL               0x0
2821 #define CL_AVC_ME_SUBPIXEL_MODE_HPEL_INTEL                  0x1
2822 #define CL_AVC_ME_SUBPIXEL_MODE_QPEL_INTEL                  0x3
2823 
2824 /* Cost precision values */
2825 #define CL_AVC_ME_COST_PRECISION_QPEL_INTEL                 0x0
2826 #define CL_AVC_ME_COST_PRECISION_HPEL_INTEL                 0x1
2827 #define CL_AVC_ME_COST_PRECISION_PEL_INTEL                  0x2
2828 #define CL_AVC_ME_COST_PRECISION_DPEL_INTEL                 0x3
2829 
2830 /* Inter bidirectional weights */
2831 #define CL_AVC_ME_BIDIR_WEIGHT_QUARTER_INTEL                0x10
2832 #define CL_AVC_ME_BIDIR_WEIGHT_THIRD_INTEL                  0x15
2833 #define CL_AVC_ME_BIDIR_WEIGHT_HALF_INTEL                   0x20
2834 #define CL_AVC_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL              0x2B
2835 #define CL_AVC_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL          0x30
2836 
2837 /* Inter border reached values */
2838 #define CL_AVC_ME_BORDER_REACHED_LEFT_INTEL                 0x0
2839 #define CL_AVC_ME_BORDER_REACHED_RIGHT_INTEL                0x2
2840 #define CL_AVC_ME_BORDER_REACHED_TOP_INTEL                  0x4
2841 #define CL_AVC_ME_BORDER_REACHED_BOTTOM_INTEL               0x8
2842 
2843 /* Inter skip block partition type */
2844 #define CL_AVC_ME_SKIP_BLOCK_PARTITION_16x16_INTEL          0x0
2845 #define CL_AVC_ME_SKIP_BLOCK_PARTITION_8x8_INTEL            0x4000
2846 
2847 /* Inter skip motion vector mask */
2848 #define CL_AVC_ME_SKIP_BLOCK_16x16_FORWARD_ENABLE_INTEL     (0x1 << 24)
2849 #define CL_AVC_ME_SKIP_BLOCK_16x16_BACKWARD_ENABLE_INTEL    (0x2 << 24)
2850 #define CL_AVC_ME_SKIP_BLOCK_16x16_DUAL_ENABLE_INTEL        (0x3 << 24)
2851 #define CL_AVC_ME_SKIP_BLOCK_8x8_FORWARD_ENABLE_INTEL       (0x55 << 24)
2852 #define CL_AVC_ME_SKIP_BLOCK_8x8_BACKWARD_ENABLE_INTEL      (0xAA << 24)
2853 #define CL_AVC_ME_SKIP_BLOCK_8x8_DUAL_ENABLE_INTEL          (0xFF << 24)
2854 #define CL_AVC_ME_SKIP_BLOCK_8x8_0_FORWARD_ENABLE_INTEL     (0x1 << 24)
2855 #define CL_AVC_ME_SKIP_BLOCK_8x8_0_BACKWARD_ENABLE_INTEL    (0x2 << 24)
2856 #define CL_AVC_ME_SKIP_BLOCK_8x8_1_FORWARD_ENABLE_INTEL     (0x1 << 26)
2857 #define CL_AVC_ME_SKIP_BLOCK_8x8_1_BACKWARD_ENABLE_INTEL    (0x2 << 26)
2858 #define CL_AVC_ME_SKIP_BLOCK_8x8_2_FORWARD_ENABLE_INTEL     (0x1 << 28)
2859 #define CL_AVC_ME_SKIP_BLOCK_8x8_2_BACKWARD_ENABLE_INTEL    (0x2 << 28)
2860 #define CL_AVC_ME_SKIP_BLOCK_8x8_3_FORWARD_ENABLE_INTEL     (0x1 << 30)
2861 #define CL_AVC_ME_SKIP_BLOCK_8x8_3_BACKWARD_ENABLE_INTEL    (0x2 << 30)
2862 
2863 /* Block based skip type values */
2864 #define CL_AVC_ME_BLOCK_BASED_SKIP_4x4_INTEL                0x00
2865 #define CL_AVC_ME_BLOCK_BASED_SKIP_8x8_INTEL                0x80
2866 
2867 /* cl_intel_device_side_avc_motion_estimation.?? */
2868 #define CL_AVC_ME_INTRA_16x16_INTEL                         0x0
2869 #define CL_AVC_ME_INTRA_8x8_INTEL                           0x1
2870 #define CL_AVC_ME_INTRA_4x4_INTEL                           0x2
2871 
2872 /* Luma intra partition mask values */
2873 #define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_16x16_INTEL     0x6
2874 #define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_8x8_INTEL       0x5
2875 #define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_4x4_INTEL       0x3
2876 
2877 /* Intra neighbor availability mask values */
2878 #define CL_AVC_ME_INTRA_NEIGHBOR_LEFT_MASK_ENABLE_INTEL     0x60
2879 #define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_MASK_ENABLE_INTEL    0x10
2880 #define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_RIGHT_MASK_ENABLE_INTEL 0x8
2881 #define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_LEFT_MASK_ENABLE_INTEL 0x4
2882 
2883 /* Luma intra modes */
2884 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL        0x0
2885 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL      0x1
2886 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_DC_INTEL              0x2
2887 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL 0x3
2888 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL 0x4
2889 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL           0x4
2890 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL  0x5
2891 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL 0x6
2892 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL   0x7
2893 #define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL   0x8
2894 
2895 /* Chroma intra modes */
2896 #define CL_AVC_ME_CHROMA_PREDICTOR_MODE_DC_INTEL            0x0
2897 #define CL_AVC_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL    0x1
2898 #define CL_AVC_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL      0x2
2899 #define CL_AVC_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL         0x3
2900 
2901 /* Reference image select values */
2902 #define CL_AVC_ME_FRAME_FORWARD_INTEL                       0x1
2903 #define CL_AVC_ME_FRAME_BACKWARD_INTEL                      0x2
2904 #define CL_AVC_ME_FRAME_DUAL_INTEL                          0x3
2905 
2906 /* Slice type values */
2907 #define CL_AVC_ME_SLICE_TYPE_PRED_INTEL                     0x0
2908 #define CL_AVC_ME_SLICE_TYPE_BPRED_INTEL                    0x1
2909 #define CL_AVC_ME_SLICE_TYPE_INTRA_INTEL                    0x2
2910 
2911 /* Interlaced image field polarity values */
2912 #define CL_AVC_ME_INTERLACED_SCAN_TOP_FIELD_INTEL           0x0
2913 #define CL_AVC_ME_INTERLACED_SCAN_BOTTOM_FIELD_INTEL        0x1
2914 
2915 /***************************************************************
2916 * cl_intel_unified_shared_memory
2917 ***************************************************************/
2918 #define cl_intel_unified_shared_memory 1
2919 #define CL_INTEL_UNIFIED_SHARED_MEMORY_EXTENSION_NAME \
2920     "cl_intel_unified_shared_memory"
2921 
2922 typedef cl_bitfield         cl_device_unified_shared_memory_capabilities_intel;
2923 typedef cl_properties       cl_mem_properties_intel;
2924 typedef cl_bitfield         cl_mem_alloc_flags_intel;
2925 typedef cl_uint             cl_mem_info_intel;
2926 typedef cl_uint             cl_unified_shared_memory_type_intel;
2927 typedef cl_uint             cl_mem_advice_intel;
2928 
2929 /* cl_device_info */
2930 #define CL_DEVICE_HOST_MEM_CAPABILITIES_INTEL               0x4190
2931 #define CL_DEVICE_DEVICE_MEM_CAPABILITIES_INTEL             0x4191
2932 #define CL_DEVICE_SINGLE_DEVICE_SHARED_MEM_CAPABILITIES_INTEL 0x4192
2933 #define CL_DEVICE_CROSS_DEVICE_SHARED_MEM_CAPABILITIES_INTEL 0x4193
2934 #define CL_DEVICE_SHARED_SYSTEM_MEM_CAPABILITIES_INTEL      0x4194
2935 
2936 /* cl_unified_shared_memory_capabilities_intel - bitfield */
2937 #define CL_UNIFIED_SHARED_MEMORY_ACCESS_INTEL               (1 << 0)
2938 #define CL_UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS_INTEL        (1 << 1)
2939 #define CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS_INTEL    (1 << 2)
2940 #define CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS_INTEL (1 << 3)
2941 
2942 /* cl_mem_properties_intel */
2943 #define CL_MEM_ALLOC_FLAGS_INTEL                            0x4195
2944 
2945 /* cl_mem_alloc_flags_intel - bitfield */
2946 #define CL_MEM_ALLOC_WRITE_COMBINED_INTEL                   (1 << 0)
2947 #define CL_MEM_ALLOC_INITIAL_PLACEMENT_DEVICE_INTEL         (1 << 1)
2948 #define CL_MEM_ALLOC_INITIAL_PLACEMENT_HOST_INTEL           (1 << 2)
2949 
2950 /* cl_mem_alloc_info_intel */
2951 #define CL_MEM_ALLOC_TYPE_INTEL                             0x419A
2952 #define CL_MEM_ALLOC_BASE_PTR_INTEL                         0x419B
2953 #define CL_MEM_ALLOC_SIZE_INTEL                             0x419C
2954 #define CL_MEM_ALLOC_DEVICE_INTEL                           0x419D
2955 
2956 /* cl_unified_shared_memory_type_intel */
2957 #define CL_MEM_TYPE_UNKNOWN_INTEL                           0x4196
2958 #define CL_MEM_TYPE_HOST_INTEL                              0x4197
2959 #define CL_MEM_TYPE_DEVICE_INTEL                            0x4198
2960 #define CL_MEM_TYPE_SHARED_INTEL                            0x4199
2961 
2962 /* cl_kernel_exec_info */
2963 #define CL_KERNEL_EXEC_INFO_INDIRECT_HOST_ACCESS_INTEL      0x4200
2964 #define CL_KERNEL_EXEC_INFO_INDIRECT_DEVICE_ACCESS_INTEL    0x4201
2965 #define CL_KERNEL_EXEC_INFO_INDIRECT_SHARED_ACCESS_INTEL    0x4202
2966 #define CL_KERNEL_EXEC_INFO_USM_PTRS_INTEL                  0x4203
2967 
2968 /* cl_command_type */
2969 #define CL_COMMAND_MEMFILL_INTEL                            0x4204
2970 #define CL_COMMAND_MEMCPY_INTEL                             0x4205
2971 #define CL_COMMAND_MIGRATEMEM_INTEL                         0x4206
2972 #define CL_COMMAND_MEMADVISE_INTEL                          0x4207
2973 
2974 
2975 typedef void* CL_API_CALL
2976 clHostMemAllocINTEL_t(
2977     cl_context context,
2978     const cl_mem_properties_intel* properties,
2979     size_t size,
2980     cl_uint alignment,
2981     cl_int* errcode_ret);
2982 
2983 typedef clHostMemAllocINTEL_t *
2984 clHostMemAllocINTEL_fn ;
2985 
2986 typedef void* CL_API_CALL
2987 clDeviceMemAllocINTEL_t(
2988     cl_context context,
2989     cl_device_id device,
2990     const cl_mem_properties_intel* properties,
2991     size_t size,
2992     cl_uint alignment,
2993     cl_int* errcode_ret);
2994 
2995 typedef clDeviceMemAllocINTEL_t *
2996 clDeviceMemAllocINTEL_fn ;
2997 
2998 typedef void* CL_API_CALL
2999 clSharedMemAllocINTEL_t(
3000     cl_context context,
3001     cl_device_id device,
3002     const cl_mem_properties_intel* properties,
3003     size_t size,
3004     cl_uint alignment,
3005     cl_int* errcode_ret);
3006 
3007 typedef clSharedMemAllocINTEL_t *
3008 clSharedMemAllocINTEL_fn ;
3009 
3010 typedef cl_int CL_API_CALL
3011 clMemFreeINTEL_t(
3012     cl_context context,
3013     void* ptr);
3014 
3015 typedef clMemFreeINTEL_t *
3016 clMemFreeINTEL_fn ;
3017 
3018 typedef cl_int CL_API_CALL
3019 clMemBlockingFreeINTEL_t(
3020     cl_context context,
3021     void* ptr);
3022 
3023 typedef clMemBlockingFreeINTEL_t *
3024 clMemBlockingFreeINTEL_fn ;
3025 
3026 typedef cl_int CL_API_CALL
3027 clGetMemAllocInfoINTEL_t(
3028     cl_context context,
3029     const void* ptr,
3030     cl_mem_info_intel param_name,
3031     size_t param_value_size,
3032     void* param_value,
3033     size_t* param_value_size_ret);
3034 
3035 typedef clGetMemAllocInfoINTEL_t *
3036 clGetMemAllocInfoINTEL_fn ;
3037 
3038 typedef cl_int CL_API_CALL
3039 clSetKernelArgMemPointerINTEL_t(
3040     cl_kernel kernel,
3041     cl_uint arg_index,
3042     const void* arg_value);
3043 
3044 typedef clSetKernelArgMemPointerINTEL_t *
3045 clSetKernelArgMemPointerINTEL_fn ;
3046 
3047 typedef cl_int CL_API_CALL
3048 clEnqueueMemFillINTEL_t(
3049     cl_command_queue command_queue,
3050     void* dst_ptr,
3051     const void* pattern,
3052     size_t pattern_size,
3053     size_t size,
3054     cl_uint num_events_in_wait_list,
3055     const cl_event* event_wait_list,
3056     cl_event* event);
3057 
3058 typedef clEnqueueMemFillINTEL_t *
3059 clEnqueueMemFillINTEL_fn ;
3060 
3061 typedef cl_int CL_API_CALL
3062 clEnqueueMemcpyINTEL_t(
3063     cl_command_queue command_queue,
3064     cl_bool blocking,
3065     void* dst_ptr,
3066     const void* src_ptr,
3067     size_t size,
3068     cl_uint num_events_in_wait_list,
3069     const cl_event* event_wait_list,
3070     cl_event* event);
3071 
3072 typedef clEnqueueMemcpyINTEL_t *
3073 clEnqueueMemcpyINTEL_fn ;
3074 
3075 typedef cl_int CL_API_CALL
3076 clEnqueueMemAdviseINTEL_t(
3077     cl_command_queue command_queue,
3078     const void* ptr,
3079     size_t size,
3080     cl_mem_advice_intel advice,
3081     cl_uint num_events_in_wait_list,
3082     const cl_event* event_wait_list,
3083     cl_event* event);
3084 
3085 typedef clEnqueueMemAdviseINTEL_t *
3086 clEnqueueMemAdviseINTEL_fn ;
3087 
3088 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
3089 
3090 extern CL_API_ENTRY void* CL_API_CALL
3091 clHostMemAllocINTEL(
3092     cl_context context,
3093     const cl_mem_properties_intel* properties,
3094     size_t size,
3095     cl_uint alignment,
3096     cl_int* errcode_ret) ;
3097 
3098 extern CL_API_ENTRY void* CL_API_CALL
3099 clDeviceMemAllocINTEL(
3100     cl_context context,
3101     cl_device_id device,
3102     const cl_mem_properties_intel* properties,
3103     size_t size,
3104     cl_uint alignment,
3105     cl_int* errcode_ret) ;
3106 
3107 extern CL_API_ENTRY void* CL_API_CALL
3108 clSharedMemAllocINTEL(
3109     cl_context context,
3110     cl_device_id device,
3111     const cl_mem_properties_intel* properties,
3112     size_t size,
3113     cl_uint alignment,
3114     cl_int* errcode_ret) ;
3115 
3116 extern CL_API_ENTRY cl_int CL_API_CALL
3117 clMemFreeINTEL(
3118     cl_context context,
3119     void* ptr) ;
3120 
3121 extern CL_API_ENTRY cl_int CL_API_CALL
3122 clMemBlockingFreeINTEL(
3123     cl_context context,
3124     void* ptr) ;
3125 
3126 extern CL_API_ENTRY cl_int CL_API_CALL
3127 clGetMemAllocInfoINTEL(
3128     cl_context context,
3129     const void* ptr,
3130     cl_mem_info_intel param_name,
3131     size_t param_value_size,
3132     void* param_value,
3133     size_t* param_value_size_ret) ;
3134 
3135 extern CL_API_ENTRY cl_int CL_API_CALL
3136 clSetKernelArgMemPointerINTEL(
3137     cl_kernel kernel,
3138     cl_uint arg_index,
3139     const void* arg_value) ;
3140 
3141 extern CL_API_ENTRY cl_int CL_API_CALL
3142 clEnqueueMemFillINTEL(
3143     cl_command_queue command_queue,
3144     void* dst_ptr,
3145     const void* pattern,
3146     size_t pattern_size,
3147     size_t size,
3148     cl_uint num_events_in_wait_list,
3149     const cl_event* event_wait_list,
3150     cl_event* event) ;
3151 
3152 extern CL_API_ENTRY cl_int CL_API_CALL
3153 clEnqueueMemcpyINTEL(
3154     cl_command_queue command_queue,
3155     cl_bool blocking,
3156     void* dst_ptr,
3157     const void* src_ptr,
3158     size_t size,
3159     cl_uint num_events_in_wait_list,
3160     const cl_event* event_wait_list,
3161     cl_event* event) ;
3162 
3163 extern CL_API_ENTRY cl_int CL_API_CALL
3164 clEnqueueMemAdviseINTEL(
3165     cl_command_queue command_queue,
3166     const void* ptr,
3167     size_t size,
3168     cl_mem_advice_intel advice,
3169     cl_uint num_events_in_wait_list,
3170     const cl_event* event_wait_list,
3171     cl_event* event) ;
3172 
3173 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
3174 
3175 #if defined(CL_VERSION_1_2)
3176 /* Requires OpenCL 1.2 for cl_mem_migration_flags: */
3177 
3178 typedef cl_int CL_API_CALL
3179 clEnqueueMigrateMemINTEL_t(
3180     cl_command_queue command_queue,
3181     const void* ptr,
3182     size_t size,
3183     cl_mem_migration_flags flags,
3184     cl_uint num_events_in_wait_list,
3185     const cl_event* event_wait_list,
3186     cl_event* event);
3187 
3188 typedef clEnqueueMigrateMemINTEL_t *
3189 clEnqueueMigrateMemINTEL_fn ;
3190 
3191 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
3192 
3193 extern CL_API_ENTRY cl_int CL_API_CALL
3194 clEnqueueMigrateMemINTEL(
3195     cl_command_queue command_queue,
3196     const void* ptr,
3197     size_t size,
3198     cl_mem_migration_flags flags,
3199     cl_uint num_events_in_wait_list,
3200     const cl_event* event_wait_list,
3201     cl_event* event) ;
3202 
3203 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
3204 
3205 #endif /* defined(CL_VERSION_1_2) */
3206 
3207 /* deprecated, use clEnqueueMemFillINTEL instead */
3208 
3209 typedef cl_int CL_API_CALL
3210 clEnqueueMemsetINTEL_t(
3211     cl_command_queue command_queue,
3212     void* dst_ptr,
3213     cl_int value,
3214     size_t size,
3215     cl_uint num_events_in_wait_list,
3216     const cl_event* event_wait_list,
3217     cl_event* event);
3218 
3219 typedef clEnqueueMemsetINTEL_t *
3220 clEnqueueMemsetINTEL_fn ;
3221 
3222 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
3223 
3224 extern CL_API_ENTRY cl_int CL_API_CALL
3225 clEnqueueMemsetINTEL(
3226     cl_command_queue command_queue,
3227     void* dst_ptr,
3228     cl_int value,
3229     size_t size,
3230     cl_uint num_events_in_wait_list,
3231     const cl_event* event_wait_list,
3232     cl_event* event) ;
3233 
3234 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
3235 
3236 /***************************************************************
3237 * cl_intel_mem_alloc_buffer_location
3238 ***************************************************************/
3239 #define cl_intel_mem_alloc_buffer_location 1
3240 #define CL_INTEL_MEM_ALLOC_BUFFER_LOCATION_EXTENSION_NAME \
3241     "cl_intel_mem_alloc_buffer_location"
3242 
3243 /* cl_mem_properties_intel */
3244 #define CL_MEM_ALLOC_BUFFER_LOCATION_INTEL                  0x419E
3245 
3246 /* cl_mem_alloc_info_intel */
3247 /* enum CL_MEM_ALLOC_BUFFER_LOCATION_INTEL */
3248 
3249 /***************************************************************
3250 * cl_intel_create_buffer_with_properties
3251 ***************************************************************/
3252 #define cl_intel_create_buffer_with_properties 1
3253 #define CL_INTEL_CREATE_BUFFER_WITH_PROPERTIES_EXTENSION_NAME \
3254     "cl_intel_create_buffer_with_properties"
3255 
3256 /* type cl_mem_properties_intel */
3257 
3258 
3259 typedef cl_mem CL_API_CALL
3260 clCreateBufferWithPropertiesINTEL_t(
3261     cl_context context,
3262     const cl_mem_properties_intel* properties,
3263     cl_mem_flags flags,
3264     size_t size,
3265     void* host_ptr,
3266     cl_int* errcode_ret);
3267 
3268 typedef clCreateBufferWithPropertiesINTEL_t *
3269 clCreateBufferWithPropertiesINTEL_fn CL_API_SUFFIX__VERSION_1_0;
3270 
3271 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
3272 
3273 extern CL_API_ENTRY cl_mem CL_API_CALL
3274 clCreateBufferWithPropertiesINTEL(
3275     cl_context context,
3276     const cl_mem_properties_intel* properties,
3277     cl_mem_flags flags,
3278     size_t size,
3279     void* host_ptr,
3280     cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0;
3281 
3282 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
3283 
3284 /***************************************************************
3285 * cl_intel_program_scope_host_pipe
3286 ***************************************************************/
3287 #define cl_intel_program_scope_host_pipe 1
3288 #define CL_INTEL_PROGRAM_SCOPE_HOST_PIPE_EXTENSION_NAME \
3289     "cl_intel_program_scope_host_pipe"
3290 
3291 /* clGetEventInfo response when param_name is CL_EVENT_COMMAND_TYPE */
3292 #define CL_COMMAND_READ_HOST_PIPE_INTEL                     0x4214
3293 #define CL_COMMAND_WRITE_HOST_PIPE_INTEL                    0x4215
3294 
3295 /* clGetProgramInfo param_name */
3296 #define CL_PROGRAM_NUM_HOST_PIPES_INTEL                     0x4216
3297 #define CL_PROGRAM_HOST_PIPE_NAMES_INTEL                    0x4217
3298 
3299 
3300 typedef cl_int CL_API_CALL
3301 clEnqueueReadHostPipeINTEL_t(
3302     cl_command_queue command_queue,
3303     cl_program program,
3304     const char* pipe_symbol,
3305     cl_bool blocking_read,
3306     void* ptr,
3307     size_t size,
3308     cl_uint num_events_in_wait_list,
3309     const cl_event* event_wait_list,
3310     cl_event* event);
3311 
3312 typedef clEnqueueReadHostPipeINTEL_t *
3313 clEnqueueReadHostPipeINTEL_fn CL_API_SUFFIX__VERSION_1_0;
3314 
3315 typedef cl_int CL_API_CALL
3316 clEnqueueWriteHostPipeINTEL_t(
3317     cl_command_queue command_queue,
3318     cl_program program,
3319     const char* pipe_symbol,
3320     cl_bool blocking_write,
3321     const void* ptr,
3322     size_t size,
3323     cl_uint num_events_in_wait_list,
3324     const cl_event* event_wait_list,
3325     cl_event* event);
3326 
3327 typedef clEnqueueWriteHostPipeINTEL_t *
3328 clEnqueueWriteHostPipeINTEL_fn CL_API_SUFFIX__VERSION_1_0;
3329 
3330 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
3331 
3332 extern CL_API_ENTRY cl_int CL_API_CALL
3333 clEnqueueReadHostPipeINTEL(
3334     cl_command_queue command_queue,
3335     cl_program program,
3336     const char* pipe_symbol,
3337     cl_bool blocking_read,
3338     void* ptr,
3339     size_t size,
3340     cl_uint num_events_in_wait_list,
3341     const cl_event* event_wait_list,
3342     cl_event* event) CL_API_SUFFIX__VERSION_1_0;
3343 
3344 extern CL_API_ENTRY cl_int CL_API_CALL
3345 clEnqueueWriteHostPipeINTEL(
3346     cl_command_queue command_queue,
3347     cl_program program,
3348     const char* pipe_symbol,
3349     cl_bool blocking_write,
3350     const void* ptr,
3351     size_t size,
3352     cl_uint num_events_in_wait_list,
3353     const cl_event* event_wait_list,
3354     cl_event* event) CL_API_SUFFIX__VERSION_1_0;
3355 
3356 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
3357 
3358 /***************************************************************
3359 * cl_intel_mem_channel_property
3360 ***************************************************************/
3361 #define cl_intel_mem_channel_property 1
3362 #define CL_INTEL_MEM_CHANNEL_PROPERTY_EXTENSION_NAME \
3363     "cl_intel_mem_channel_property"
3364 
3365 /* cl_mem_properties_intel */
3366 #define CL_MEM_CHANNEL_INTEL                                0x4213
3367 
3368 /***************************************************************
3369 * cl_intel_mem_force_host_memory
3370 ***************************************************************/
3371 #define cl_intel_mem_force_host_memory 1
3372 #define CL_INTEL_MEM_FORCE_HOST_MEMORY_EXTENSION_NAME \
3373     "cl_intel_mem_force_host_memory"
3374 
3375 /* cl_mem_flags */
3376 #define CL_MEM_FORCE_HOST_MEMORY_INTEL                      (1 << 20)
3377 
3378 /***************************************************************
3379 * cl_intel_command_queue_families
3380 ***************************************************************/
3381 #define cl_intel_command_queue_families 1
3382 #define CL_INTEL_COMMAND_QUEUE_FAMILIES_EXTENSION_NAME \
3383     "cl_intel_command_queue_families"
3384 
3385 typedef cl_bitfield         cl_command_queue_capabilities_intel;
3386 
3387 #define CL_QUEUE_FAMILY_MAX_NAME_SIZE_INTEL                 64
3388 
3389 typedef struct _cl_queue_family_properties_intel {
3390     cl_command_queue_properties properties;
3391     cl_command_queue_capabilities_intel capabilities;
3392     cl_uint count;
3393     char name[CL_QUEUE_FAMILY_MAX_NAME_SIZE_INTEL];
3394 } cl_queue_family_properties_intel;
3395 
3396 /* cl_device_info */
3397 #define CL_DEVICE_QUEUE_FAMILY_PROPERTIES_INTEL             0x418B
3398 
3399 /* cl_queue_properties */
3400 #define CL_QUEUE_FAMILY_INTEL                               0x418C
3401 #define CL_QUEUE_INDEX_INTEL                                0x418D
3402 
3403 /* cl_command_queue_capabilities_intel */
3404 #define CL_QUEUE_DEFAULT_CAPABILITIES_INTEL                 0
3405 #define CL_QUEUE_CAPABILITY_CREATE_SINGLE_QUEUE_EVENTS_INTEL (1 << 0)
3406 #define CL_QUEUE_CAPABILITY_CREATE_CROSS_QUEUE_EVENTS_INTEL (1 << 1)
3407 #define CL_QUEUE_CAPABILITY_SINGLE_QUEUE_EVENT_WAIT_LIST_INTEL (1 << 2)
3408 #define CL_QUEUE_CAPABILITY_CROSS_QUEUE_EVENT_WAIT_LIST_INTEL (1 << 3)
3409 #define CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_INTEL           (1 << 8)
3410 #define CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_RECT_INTEL      (1 << 9)
3411 #define CL_QUEUE_CAPABILITY_MAP_BUFFER_INTEL                (1 << 10)
3412 #define CL_QUEUE_CAPABILITY_FILL_BUFFER_INTEL               (1 << 11)
3413 #define CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_INTEL            (1 << 12)
3414 #define CL_QUEUE_CAPABILITY_MAP_IMAGE_INTEL                 (1 << 13)
3415 #define CL_QUEUE_CAPABILITY_FILL_IMAGE_INTEL                (1 << 14)
3416 #define CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_IMAGE_INTEL     (1 << 15)
3417 #define CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_BUFFER_INTEL     (1 << 16)
3418 #define CL_QUEUE_CAPABILITY_MARKER_INTEL                    (1 << 24)
3419 #define CL_QUEUE_CAPABILITY_BARRIER_INTEL                   (1 << 25)
3420 #define CL_QUEUE_CAPABILITY_KERNEL_INTEL                    (1 << 26)
3421 
3422 /***************************************************************
3423 * cl_intel_queue_no_sync_operations
3424 ***************************************************************/
3425 #define cl_intel_queue_no_sync_operations 1
3426 #define CL_INTEL_QUEUE_NO_SYNC_OPERATIONS_EXTENSION_NAME \
3427     "cl_intel_queue_no_sync_operations"
3428 
3429 /* cl_command_queue_properties */
3430 #define CL_QUEUE_NO_SYNC_OPERATIONS_INTEL                   (1 << 29)
3431 
3432 /***************************************************************
3433 * cl_intel_sharing_format_query
3434 ***************************************************************/
3435 #define cl_intel_sharing_format_query 1
3436 #define CL_INTEL_SHARING_FORMAT_QUERY_EXTENSION_NAME \
3437     "cl_intel_sharing_format_query"
3438 
3439 /***************************************************************
3440 * cl_ext_image_requirements_info
3441 ***************************************************************/
3442 #if defined(CL_VERSION_3_0)
3443 
3444 #define cl_ext_image_requirements_info 1
3445 #define CL_EXT_IMAGE_REQUIREMENTS_INFO_EXTENSION_NAME \
3446     "cl_ext_image_requirements_info"
3447 
3448 /* Types */
3449 typedef cl_uint             cl_image_requirements_info_ext;
3450 
3451 /* cl_image_requirements_info_ext */
3452 #define CL_IMAGE_REQUIREMENTS_BASE_ADDRESS_ALIGNMENT_EXT    0x1292
3453 #define CL_IMAGE_REQUIREMENTS_ROW_PITCH_ALIGNMENT_EXT       0x1290
3454 #define CL_IMAGE_REQUIREMENTS_SIZE_EXT                      0x12B2
3455 #define CL_IMAGE_REQUIREMENTS_MAX_WIDTH_EXT                 0x12B3
3456 #define CL_IMAGE_REQUIREMENTS_MAX_HEIGHT_EXT                0x12B4
3457 #define CL_IMAGE_REQUIREMENTS_MAX_DEPTH_EXT                 0x12B5
3458 #define CL_IMAGE_REQUIREMENTS_MAX_ARRAY_SIZE_EXT            0x12B6
3459 
3460 /* Enqueued Commands APIs */
3461 
3462 typedef cl_int CL_API_CALL
3463 clGetImageRequirementsInfoEXT_t(
3464     cl_context context,
3465     const cl_mem_properties* properties,
3466     cl_mem_flags flags,
3467     const cl_image_format* image_format,
3468     const cl_image_desc* image_desc,
3469     cl_image_requirements_info_ext param_name,
3470     size_t param_value_size,
3471     void* param_value,
3472     size_t* param_value_size_ret);
3473 
3474 typedef clGetImageRequirementsInfoEXT_t *
3475 clGetImageRequirementsInfoEXT_fn CL_API_SUFFIX__VERSION_3_0;
3476 
3477 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
3478 
3479 extern CL_API_ENTRY cl_int CL_API_CALL
3480 clGetImageRequirementsInfoEXT(
3481     cl_context context,
3482     const cl_mem_properties* properties,
3483     cl_mem_flags flags,
3484     const cl_image_format* image_format,
3485     const cl_image_desc* image_desc,
3486     cl_image_requirements_info_ext param_name,
3487     size_t param_value_size,
3488     void* param_value,
3489     size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_3_0;
3490 
3491 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
3492 
3493 #endif /* defined(CL_VERSION_3_0) */
3494 
3495 /***************************************************************
3496 * cl_ext_image_from_buffer
3497 ***************************************************************/
3498 #if defined(CL_VERSION_3_0)
3499 
3500 #define cl_ext_image_from_buffer 1
3501 #define CL_EXT_IMAGE_FROM_BUFFER_EXTENSION_NAME \
3502     "cl_ext_image_from_buffer"
3503 
3504 /* cl_image_requirements_info_ext */
3505 #define CL_IMAGE_REQUIREMENTS_SLICE_PITCH_ALIGNMENT_EXT     0x1291
3506 
3507 #endif /* defined(CL_VERSION_3_0) */
3508 
3509 /***************************************************************
3510 * cl_loader_info
3511 ***************************************************************/
3512 #define cl_loader_info 1
3513 #define CL_LOADER_INFO_EXTENSION_NAME \
3514     "cl_loader_info"
3515 
3516 typedef cl_uint             cl_icdl_info;
3517 
3518 /* cl_icdl_info */
3519 #define CL_ICDL_OCL_VERSION                                 1
3520 #define CL_ICDL_VERSION                                     2
3521 #define CL_ICDL_NAME                                        3
3522 #define CL_ICDL_VENDOR                                      4
3523 
3524 
3525 typedef cl_int CL_API_CALL
3526 clGetICDLoaderInfoOCLICD_t(
3527     cl_icdl_info param_name,
3528     size_t param_value_size,
3529     void* param_value,
3530     size_t* param_value_size_ret);
3531 
3532 typedef clGetICDLoaderInfoOCLICD_t *
3533 clGetICDLoaderInfoOCLICD_fn ;
3534 
3535 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
3536 
3537 extern CL_API_ENTRY cl_int CL_API_CALL
3538 clGetICDLoaderInfoOCLICD(
3539     cl_icdl_info param_name,
3540     size_t param_value_size,
3541     void* param_value,
3542     size_t* param_value_size_ret) ;
3543 
3544 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
3545 
3546 /***************************************************************
3547 * cl_khr_depth_images
3548 ***************************************************************/
3549 #define cl_khr_depth_images 1
3550 #define CL_KHR_DEPTH_IMAGES_EXTENSION_NAME \
3551     "cl_khr_depth_images"
3552 
3553 #if !defined(CL_VERSION_2_0)
3554 /* cl_channel_order - defined in CL.h for OpenCL 2.0 and newer */
3555 #define CL_DEPTH                                            0x10BD
3556 
3557 #endif /* !defined(CL_VERSION_2_0) */
3558 
3559 /***************************************************************
3560 * cl_ext_float_atomics
3561 ***************************************************************/
3562 #define cl_ext_float_atomics 1
3563 #define CL_EXT_FLOAT_ATOMICS_EXTENSION_NAME \
3564     "cl_ext_float_atomics"
3565 
3566 typedef cl_bitfield         cl_device_fp_atomic_capabilities_ext;
3567 
3568 /* cl_device_fp_atomic_capabilities_ext */
3569 #define CL_DEVICE_GLOBAL_FP_ATOMIC_LOAD_STORE_EXT           (1 << 0)
3570 #define CL_DEVICE_GLOBAL_FP_ATOMIC_ADD_EXT                  (1 << 1)
3571 #define CL_DEVICE_GLOBAL_FP_ATOMIC_MIN_MAX_EXT              (1 << 2)
3572 #define CL_DEVICE_LOCAL_FP_ATOMIC_LOAD_STORE_EXT            (1 << 16)
3573 #define CL_DEVICE_LOCAL_FP_ATOMIC_ADD_EXT                   (1 << 17)
3574 #define CL_DEVICE_LOCAL_FP_ATOMIC_MIN_MAX_EXT               (1 << 18)
3575 
3576 /* cl_device_info */
3577 #define CL_DEVICE_SINGLE_FP_ATOMIC_CAPABILITIES_EXT         0x4231
3578 #define CL_DEVICE_DOUBLE_FP_ATOMIC_CAPABILITIES_EXT         0x4232
3579 #define CL_DEVICE_HALF_FP_ATOMIC_CAPABILITIES_EXT           0x4233
3580 
3581 /***************************************************************
3582 * cl_intel_create_mem_object_properties
3583 ***************************************************************/
3584 #define cl_intel_create_mem_object_properties 1
3585 #define CL_INTEL_CREATE_MEM_OBJECT_PROPERTIES_EXTENSION_NAME \
3586     "cl_intel_create_mem_object_properties"
3587 
3588 /* cl_mem_properties */
3589 #define CL_MEM_LOCALLY_UNCACHED_RESOURCE_INTEL              0x4218
3590 #define CL_MEM_DEVICE_ID_INTEL                              0x4219
3591 
3592 /***************************************************************
3593 * cl_pocl_content_size
3594 ***************************************************************/
3595 #define cl_pocl_content_size 1
3596 #define CL_POCL_CONTENT_SIZE_EXTENSION_NAME \
3597     "cl_pocl_content_size"
3598 
3599 
3600 typedef cl_int CL_API_CALL
3601 clSetContentSizeBufferPoCL_t(
3602     cl_mem buffer,
3603     cl_mem content_size_buffer);
3604 
3605 typedef clSetContentSizeBufferPoCL_t *
3606 clSetContentSizeBufferPoCL_fn CL_API_SUFFIX__VERSION_1_0;
3607 
3608 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
3609 
3610 extern CL_API_ENTRY cl_int CL_API_CALL
3611 clSetContentSizeBufferPoCL(
3612     cl_mem buffer,
3613     cl_mem content_size_buffer) CL_API_SUFFIX__VERSION_1_0;
3614 
3615 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
3616 
3617 /***************************************************************
3618 * cl_ext_image_raw10_raw12
3619 ***************************************************************/
3620 #define cl_ext_image_raw10_raw12 1
3621 #define CL_EXT_IMAGE_RAW10_RAW12_EXTENSION_NAME \
3622     "cl_ext_image_raw10_raw12"
3623 
3624 /* cl_channel_type */
3625 #define CL_UNSIGNED_INT_RAW10_EXT                           0x10E3
3626 #define CL_UNSIGNED_INT_RAW12_EXT                           0x10E4
3627 
3628 /***************************************************************
3629 * cl_khr_3d_image_writes
3630 ***************************************************************/
3631 #define cl_khr_3d_image_writes 1
3632 #define CL_KHR_3D_IMAGE_WRITES_EXTENSION_NAME \
3633     "cl_khr_3d_image_writes"
3634 
3635 /***************************************************************
3636 * cl_khr_async_work_group_copy_fence
3637 ***************************************************************/
3638 #define cl_khr_async_work_group_copy_fence 1
3639 #define CL_KHR_ASYNC_WORK_GROUP_COPY_FENCE_EXTENSION_NAME \
3640     "cl_khr_async_work_group_copy_fence"
3641 
3642 /***************************************************************
3643 * cl_khr_byte_addressable_store
3644 ***************************************************************/
3645 #define cl_khr_byte_addressable_store 1
3646 #define CL_KHR_BYTE_ADDRESSABLE_STORE_EXTENSION_NAME \
3647     "cl_khr_byte_addressable_store"
3648 
3649 /***************************************************************
3650 * cl_khr_device_enqueue_local_arg_types
3651 ***************************************************************/
3652 #define cl_khr_device_enqueue_local_arg_types 1
3653 #define CL_KHR_DEVICE_ENQUEUE_LOCAL_ARG_TYPES_EXTENSION_NAME \
3654     "cl_khr_device_enqueue_local_arg_types"
3655 
3656 /***************************************************************
3657 * cl_khr_expect_assume
3658 ***************************************************************/
3659 #define cl_khr_expect_assume 1
3660 #define CL_KHR_EXPECT_ASSUME_EXTENSION_NAME \
3661     "cl_khr_expect_assume"
3662 
3663 /***************************************************************
3664 * cl_khr_extended_async_copies
3665 ***************************************************************/
3666 #define cl_khr_extended_async_copies 1
3667 #define CL_KHR_EXTENDED_ASYNC_COPIES_EXTENSION_NAME \
3668     "cl_khr_extended_async_copies"
3669 
3670 /***************************************************************
3671 * cl_khr_extended_bit_ops
3672 ***************************************************************/
3673 #define cl_khr_extended_bit_ops 1
3674 #define CL_KHR_EXTENDED_BIT_OPS_EXTENSION_NAME \
3675     "cl_khr_extended_bit_ops"
3676 
3677 /***************************************************************
3678 * cl_khr_global_int32_base_atomics
3679 ***************************************************************/
3680 #define cl_khr_global_int32_base_atomics 1
3681 #define CL_KHR_GLOBAL_INT32_BASE_ATOMICS_EXTENSION_NAME \
3682     "cl_khr_global_int32_base_atomics"
3683 
3684 /***************************************************************
3685 * cl_khr_global_int32_extended_atomics
3686 ***************************************************************/
3687 #define cl_khr_global_int32_extended_atomics 1
3688 #define CL_KHR_GLOBAL_INT32_EXTENDED_ATOMICS_EXTENSION_NAME \
3689     "cl_khr_global_int32_extended_atomics"
3690 
3691 /***************************************************************
3692 * cl_khr_int64_base_atomics
3693 ***************************************************************/
3694 #define cl_khr_int64_base_atomics 1
3695 #define CL_KHR_INT64_BASE_ATOMICS_EXTENSION_NAME \
3696     "cl_khr_int64_base_atomics"
3697 
3698 /***************************************************************
3699 * cl_khr_int64_extended_atomics
3700 ***************************************************************/
3701 #define cl_khr_int64_extended_atomics 1
3702 #define CL_KHR_INT64_EXTENDED_ATOMICS_EXTENSION_NAME \
3703     "cl_khr_int64_extended_atomics"
3704 
3705 /***************************************************************
3706 * cl_khr_kernel_clock
3707 ***************************************************************/
3708 #define cl_khr_kernel_clock 1
3709 #define CL_KHR_KERNEL_CLOCK_EXTENSION_NAME \
3710     "cl_khr_kernel_clock"
3711 
3712 /* cl_device_info */
3713 #define CL_DEVICE_KERNEL_CLOCK_CAPABILITIES_KHR             0x1076
3714 
3715 typedef cl_bitfield         cl_device_kernel_clock_capabilities_khr;
3716 
3717 /* cl_device_kernel_clock_capabilities_khr */
3718 #define CL_DEVICE_KERNEL_CLOCK_SCOPE_DEVICE_KHR             (1 << 0)
3719 #define CL_DEVICE_KERNEL_CLOCK_SCOPE_WORK_GROUP_KHR         (1 << 1)
3720 #define CL_DEVICE_KERNEL_CLOCK_SCOPE_SUB_GROUP_KHR          (1 << 2)
3721 
3722 /***************************************************************
3723 * cl_khr_local_int32_base_atomics
3724 ***************************************************************/
3725 #define cl_khr_local_int32_base_atomics 1
3726 #define CL_KHR_LOCAL_INT32_BASE_ATOMICS_EXTENSION_NAME \
3727     "cl_khr_local_int32_base_atomics"
3728 
3729 /***************************************************************
3730 * cl_khr_local_int32_extended_atomics
3731 ***************************************************************/
3732 #define cl_khr_local_int32_extended_atomics 1
3733 #define CL_KHR_LOCAL_INT32_EXTENDED_ATOMICS_EXTENSION_NAME \
3734     "cl_khr_local_int32_extended_atomics"
3735 
3736 /***************************************************************
3737 * cl_khr_mipmap_image_writes
3738 ***************************************************************/
3739 #define cl_khr_mipmap_image_writes 1
3740 #define CL_KHR_MIPMAP_IMAGE_WRITES_EXTENSION_NAME \
3741     "cl_khr_mipmap_image_writes"
3742 
3743 /***************************************************************
3744 * cl_khr_select_fprounding_mode
3745 ***************************************************************/
3746 #define cl_khr_select_fprounding_mode 1
3747 #define CL_KHR_SELECT_FPROUNDING_MODE_EXTENSION_NAME \
3748     "cl_khr_select_fprounding_mode"
3749 
3750 /***************************************************************
3751 * cl_khr_spirv_extended_debug_info
3752 ***************************************************************/
3753 #define cl_khr_spirv_extended_debug_info 1
3754 #define CL_KHR_SPIRV_EXTENDED_DEBUG_INFO_EXTENSION_NAME \
3755     "cl_khr_spirv_extended_debug_info"
3756 
3757 /***************************************************************
3758 * cl_khr_spirv_linkonce_odr
3759 ***************************************************************/
3760 #define cl_khr_spirv_linkonce_odr 1
3761 #define CL_KHR_SPIRV_LINKONCE_ODR_EXTENSION_NAME \
3762     "cl_khr_spirv_linkonce_odr"
3763 
3764 /***************************************************************
3765 * cl_khr_spirv_no_integer_wrap_decoration
3766 ***************************************************************/
3767 #define cl_khr_spirv_no_integer_wrap_decoration 1
3768 #define CL_KHR_SPIRV_NO_INTEGER_WRAP_DECORATION_EXTENSION_NAME \
3769     "cl_khr_spirv_no_integer_wrap_decoration"
3770 
3771 /***************************************************************
3772 * cl_khr_srgb_image_writes
3773 ***************************************************************/
3774 #define cl_khr_srgb_image_writes 1
3775 #define CL_KHR_SRGB_IMAGE_WRITES_EXTENSION_NAME \
3776     "cl_khr_srgb_image_writes"
3777 
3778 /***************************************************************
3779 * cl_khr_subgroup_ballot
3780 ***************************************************************/
3781 #define cl_khr_subgroup_ballot 1
3782 #define CL_KHR_SUBGROUP_BALLOT_EXTENSION_NAME \
3783     "cl_khr_subgroup_ballot"
3784 
3785 /***************************************************************
3786 * cl_khr_subgroup_clustered_reduce
3787 ***************************************************************/
3788 #define cl_khr_subgroup_clustered_reduce 1
3789 #define CL_KHR_SUBGROUP_CLUSTERED_REDUCE_EXTENSION_NAME \
3790     "cl_khr_subgroup_clustered_reduce"
3791 
3792 /***************************************************************
3793 * cl_khr_subgroup_extended_types
3794 ***************************************************************/
3795 #define cl_khr_subgroup_extended_types 1
3796 #define CL_KHR_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME \
3797     "cl_khr_subgroup_extended_types"
3798 
3799 /***************************************************************
3800 * cl_khr_subgroup_non_uniform_arithmetic
3801 ***************************************************************/
3802 #define cl_khr_subgroup_non_uniform_arithmetic 1
3803 #define CL_KHR_SUBGROUP_NON_UNIFORM_ARITHMETIC_EXTENSION_NAME \
3804     "cl_khr_subgroup_non_uniform_arithmetic"
3805 
3806 /***************************************************************
3807 * cl_khr_subgroup_non_uniform_vote
3808 ***************************************************************/
3809 #define cl_khr_subgroup_non_uniform_vote 1
3810 #define CL_KHR_SUBGROUP_NON_UNIFORM_VOTE_EXTENSION_NAME \
3811     "cl_khr_subgroup_non_uniform_vote"
3812 
3813 /***************************************************************
3814 * cl_khr_subgroup_rotate
3815 ***************************************************************/
3816 #define cl_khr_subgroup_rotate 1
3817 #define CL_KHR_SUBGROUP_ROTATE_EXTENSION_NAME \
3818     "cl_khr_subgroup_rotate"
3819 
3820 /***************************************************************
3821 * cl_khr_subgroup_shuffle
3822 ***************************************************************/
3823 #define cl_khr_subgroup_shuffle 1
3824 #define CL_KHR_SUBGROUP_SHUFFLE_EXTENSION_NAME \
3825     "cl_khr_subgroup_shuffle"
3826 
3827 /***************************************************************
3828 * cl_khr_subgroup_shuffle_relative
3829 ***************************************************************/
3830 #define cl_khr_subgroup_shuffle_relative 1
3831 #define CL_KHR_SUBGROUP_SHUFFLE_RELATIVE_EXTENSION_NAME \
3832     "cl_khr_subgroup_shuffle_relative"
3833 
3834 /***************************************************************
3835 * cl_khr_work_group_uniform_arithmetic
3836 ***************************************************************/
3837 #define cl_khr_work_group_uniform_arithmetic 1
3838 #define CL_KHR_WORK_GROUP_UNIFORM_ARITHMETIC_EXTENSION_NAME \
3839     "cl_khr_work_group_uniform_arithmetic"
3840 
3841 /***************************************************************
3842 * cl_img_cancel_command
3843 ***************************************************************/
3844 #define cl_img_cancel_command 1
3845 #define CL_IMG_CANCEL_COMMAND_EXTENSION_NAME \
3846     "cl_img_cancel_command"
3847 
3848 /* Error codes */
3849 #define CL_CANCELLED_IMG                                    -1126
3850 
3851 
3852 typedef cl_int CL_API_CALL
3853 clCancelCommandsIMG_t(
3854     const cl_event* event_list,
3855     size_t num_events_in_list);
3856 
3857 typedef clCancelCommandsIMG_t *
3858 clCancelCommandsIMG_fn ;
3859 
3860 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
3861 
3862 extern CL_API_ENTRY cl_int CL_API_CALL
3863 clCancelCommandsIMG(
3864     const cl_event* event_list,
3865     size_t num_events_in_list) ;
3866 
3867 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */
3868 
3869 #ifdef __cplusplus
3870 }
3871 #endif
3872 
3873 #endif /* OPENCL_CL_EXT_H_ */
3874