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