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