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