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