xref: /aosp_15_r20/external/OpenCL-CTS/dependencies/ocl-headers/CL/cl_ext.h (revision 6467f958c7de8070b317fc65bcb0f6472e388d82)
1*6467f958SSadaf Ebrahimi /*******************************************************************************
2*6467f958SSadaf Ebrahimi  * Copyright (c) 2008-2020 The Khronos Group Inc.
3*6467f958SSadaf Ebrahimi  *
4*6467f958SSadaf Ebrahimi  * Licensed under the Apache License, Version 2.0 (the "License");
5*6467f958SSadaf Ebrahimi  * you may not use this file except in compliance with the License.
6*6467f958SSadaf Ebrahimi  * You may obtain a copy of the License at
7*6467f958SSadaf Ebrahimi  *
8*6467f958SSadaf Ebrahimi  *    http://www.apache.org/licenses/LICENSE-2.0
9*6467f958SSadaf Ebrahimi  *
10*6467f958SSadaf Ebrahimi  * Unless required by applicable law or agreed to in writing, software
11*6467f958SSadaf Ebrahimi  * distributed under the License is distributed on an "AS IS" BASIS,
12*6467f958SSadaf Ebrahimi  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*6467f958SSadaf Ebrahimi  * See the License for the specific language governing permissions and
14*6467f958SSadaf Ebrahimi  * limitations under the License.
15*6467f958SSadaf Ebrahimi  ******************************************************************************/
16*6467f958SSadaf Ebrahimi 
17*6467f958SSadaf Ebrahimi /* cl_ext.h contains OpenCL extensions which don't have external */
18*6467f958SSadaf Ebrahimi /* (OpenGL, D3D) dependencies.                                   */
19*6467f958SSadaf Ebrahimi 
20*6467f958SSadaf Ebrahimi #ifndef __CL_EXT_H
21*6467f958SSadaf Ebrahimi #define __CL_EXT_H
22*6467f958SSadaf Ebrahimi 
23*6467f958SSadaf Ebrahimi #ifdef __cplusplus
24*6467f958SSadaf Ebrahimi extern "C" {
25*6467f958SSadaf Ebrahimi #endif
26*6467f958SSadaf Ebrahimi 
27*6467f958SSadaf Ebrahimi #include <CL/cl.h>
28*6467f958SSadaf Ebrahimi 
29*6467f958SSadaf Ebrahimi /***************************************************************
30*6467f958SSadaf Ebrahimi * cl_khr_command_buffer
31*6467f958SSadaf Ebrahimi ***************************************************************/
32*6467f958SSadaf Ebrahimi #define cl_khr_command_buffer 1
33*6467f958SSadaf Ebrahimi #define CL_KHR_COMMAND_BUFFER_EXTENSION_NAME \
34*6467f958SSadaf Ebrahimi     "cl_khr_command_buffer"
35*6467f958SSadaf Ebrahimi 
36*6467f958SSadaf Ebrahimi typedef cl_bitfield         cl_device_command_buffer_capabilities_khr;
37*6467f958SSadaf Ebrahimi typedef struct _cl_command_buffer_khr* cl_command_buffer_khr;
38*6467f958SSadaf Ebrahimi typedef cl_uint             cl_sync_point_khr;
39*6467f958SSadaf Ebrahimi typedef cl_uint             cl_command_buffer_info_khr;
40*6467f958SSadaf Ebrahimi typedef cl_uint             cl_command_buffer_state_khr;
41*6467f958SSadaf Ebrahimi typedef cl_properties       cl_command_buffer_properties_khr;
42*6467f958SSadaf Ebrahimi typedef cl_bitfield         cl_command_buffer_flags_khr;
43*6467f958SSadaf Ebrahimi typedef cl_properties       cl_ndrange_kernel_command_properties_khr;
44*6467f958SSadaf Ebrahimi typedef struct _cl_mutable_command_khr* cl_mutable_command_khr;
45*6467f958SSadaf Ebrahimi 
46*6467f958SSadaf Ebrahimi /* cl_device_info */
47*6467f958SSadaf Ebrahimi #define CL_DEVICE_COMMAND_BUFFER_CAPABILITIES_KHR           0x12A9
48*6467f958SSadaf Ebrahimi #define CL_DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES_KHR 0x12AA
49*6467f958SSadaf Ebrahimi 
50*6467f958SSadaf Ebrahimi /* cl_device_command_buffer_capabilities_khr - bitfield */
51*6467f958SSadaf Ebrahimi #define CL_COMMAND_BUFFER_CAPABILITY_KERNEL_PRINTF_KHR      (1 << 0)
52*6467f958SSadaf Ebrahimi #define CL_COMMAND_BUFFER_CAPABILITY_DEVICE_SIDE_ENQUEUE_KHR (1 << 1)
53*6467f958SSadaf Ebrahimi #define CL_COMMAND_BUFFER_CAPABILITY_SIMULTANEOUS_USE_KHR   (1 << 2)
54*6467f958SSadaf Ebrahimi #define CL_COMMAND_BUFFER_CAPABILITY_OUT_OF_ORDER_KHR       (1 << 3)
55*6467f958SSadaf Ebrahimi 
56*6467f958SSadaf Ebrahimi /* cl_command_buffer_properties_khr */
57*6467f958SSadaf Ebrahimi #define CL_COMMAND_BUFFER_FLAGS_KHR                         0x1293
58*6467f958SSadaf Ebrahimi 
59*6467f958SSadaf Ebrahimi /* cl_command_buffer_flags_khr */
60*6467f958SSadaf Ebrahimi #define CL_COMMAND_BUFFER_SIMULTANEOUS_USE_KHR              (1 << 0)
61*6467f958SSadaf Ebrahimi 
62*6467f958SSadaf Ebrahimi /* Error codes */
63*6467f958SSadaf Ebrahimi #define CL_INVALID_COMMAND_BUFFER_KHR                       -1138
64*6467f958SSadaf Ebrahimi #define CL_INVALID_SYNC_POINT_WAIT_LIST_KHR                 -1139
65*6467f958SSadaf Ebrahimi #define CL_INCOMPATIBLE_COMMAND_QUEUE_KHR                   -1140
66*6467f958SSadaf Ebrahimi 
67*6467f958SSadaf Ebrahimi /* cl_command_buffer_info_khr */
68*6467f958SSadaf Ebrahimi #define CL_COMMAND_BUFFER_QUEUES_KHR                        0x1294
69*6467f958SSadaf Ebrahimi #define CL_COMMAND_BUFFER_NUM_QUEUES_KHR                    0x1295
70*6467f958SSadaf Ebrahimi #define CL_COMMAND_BUFFER_REFERENCE_COUNT_KHR               0x1296
71*6467f958SSadaf Ebrahimi #define CL_COMMAND_BUFFER_STATE_KHR                         0x1297
72*6467f958SSadaf Ebrahimi #define CL_COMMAND_BUFFER_PROPERTIES_ARRAY_KHR              0x1298
73*6467f958SSadaf Ebrahimi 
74*6467f958SSadaf Ebrahimi /* cl_command_buffer_state_khr */
75*6467f958SSadaf Ebrahimi #define CL_COMMAND_BUFFER_STATE_RECORDING_KHR               0
76*6467f958SSadaf Ebrahimi #define CL_COMMAND_BUFFER_STATE_EXECUTABLE_KHR              1
77*6467f958SSadaf Ebrahimi #define CL_COMMAND_BUFFER_STATE_PENDING_KHR                 2
78*6467f958SSadaf Ebrahimi #define CL_COMMAND_BUFFER_STATE_INVALID_KHR                 3
79*6467f958SSadaf Ebrahimi 
80*6467f958SSadaf Ebrahimi /* cl_command_type */
81*6467f958SSadaf Ebrahimi #define CL_COMMAND_COMMAND_BUFFER_KHR                       0x12A8
82*6467f958SSadaf Ebrahimi 
83*6467f958SSadaf Ebrahimi 
84*6467f958SSadaf Ebrahimi typedef cl_command_buffer_khr (CL_API_CALL *
85*6467f958SSadaf Ebrahimi clCreateCommandBufferKHR_fn)(
86*6467f958SSadaf Ebrahimi     cl_uint num_queues,
87*6467f958SSadaf Ebrahimi     const cl_command_queue* queues,
88*6467f958SSadaf Ebrahimi     const cl_command_buffer_properties_khr* properties,
89*6467f958SSadaf Ebrahimi     cl_int* errcode_ret) ;
90*6467f958SSadaf Ebrahimi 
91*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
92*6467f958SSadaf Ebrahimi clFinalizeCommandBufferKHR_fn)(
93*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer) ;
94*6467f958SSadaf Ebrahimi 
95*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
96*6467f958SSadaf Ebrahimi clRetainCommandBufferKHR_fn)(
97*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer) ;
98*6467f958SSadaf Ebrahimi 
99*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
100*6467f958SSadaf Ebrahimi clReleaseCommandBufferKHR_fn)(
101*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer) ;
102*6467f958SSadaf Ebrahimi 
103*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
104*6467f958SSadaf Ebrahimi clEnqueueCommandBufferKHR_fn)(
105*6467f958SSadaf Ebrahimi     cl_uint num_queues,
106*6467f958SSadaf Ebrahimi     cl_command_queue* queues,
107*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
108*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
109*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
110*6467f958SSadaf Ebrahimi     cl_event* event) ;
111*6467f958SSadaf Ebrahimi 
112*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
113*6467f958SSadaf Ebrahimi clCommandBarrierWithWaitListKHR_fn)(
114*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
115*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
116*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
117*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
118*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
119*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
120*6467f958SSadaf Ebrahimi 
121*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
122*6467f958SSadaf Ebrahimi clCommandCopyBufferKHR_fn)(
123*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
124*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
125*6467f958SSadaf Ebrahimi     cl_mem src_buffer,
126*6467f958SSadaf Ebrahimi     cl_mem dst_buffer,
127*6467f958SSadaf Ebrahimi     size_t src_offset,
128*6467f958SSadaf Ebrahimi     size_t dst_offset,
129*6467f958SSadaf Ebrahimi     size_t size,
130*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
131*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
132*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
133*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
134*6467f958SSadaf Ebrahimi 
135*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
136*6467f958SSadaf Ebrahimi clCommandCopyBufferRectKHR_fn)(
137*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
138*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
139*6467f958SSadaf Ebrahimi     cl_mem src_buffer,
140*6467f958SSadaf Ebrahimi     cl_mem dst_buffer,
141*6467f958SSadaf Ebrahimi     const size_t* src_origin,
142*6467f958SSadaf Ebrahimi     const size_t* dst_origin,
143*6467f958SSadaf Ebrahimi     const size_t* region,
144*6467f958SSadaf Ebrahimi     size_t src_row_pitch,
145*6467f958SSadaf Ebrahimi     size_t src_slice_pitch,
146*6467f958SSadaf Ebrahimi     size_t dst_row_pitch,
147*6467f958SSadaf Ebrahimi     size_t dst_slice_pitch,
148*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
149*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
150*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
151*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
152*6467f958SSadaf Ebrahimi 
153*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
154*6467f958SSadaf Ebrahimi clCommandCopyBufferToImageKHR_fn)(
155*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
156*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
157*6467f958SSadaf Ebrahimi     cl_mem src_buffer,
158*6467f958SSadaf Ebrahimi     cl_mem dst_image,
159*6467f958SSadaf Ebrahimi     size_t src_offset,
160*6467f958SSadaf Ebrahimi     const size_t* dst_origin,
161*6467f958SSadaf Ebrahimi     const size_t* region,
162*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
163*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
164*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
165*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
166*6467f958SSadaf Ebrahimi 
167*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
168*6467f958SSadaf Ebrahimi clCommandCopyImageKHR_fn)(
169*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
170*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
171*6467f958SSadaf Ebrahimi     cl_mem src_image,
172*6467f958SSadaf Ebrahimi     cl_mem dst_image,
173*6467f958SSadaf Ebrahimi     const size_t* src_origin,
174*6467f958SSadaf Ebrahimi     const size_t* dst_origin,
175*6467f958SSadaf Ebrahimi     const size_t* region,
176*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
177*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
178*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
179*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
180*6467f958SSadaf Ebrahimi 
181*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
182*6467f958SSadaf Ebrahimi clCommandCopyImageToBufferKHR_fn)(
183*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
184*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
185*6467f958SSadaf Ebrahimi     cl_mem src_image,
186*6467f958SSadaf Ebrahimi     cl_mem dst_buffer,
187*6467f958SSadaf Ebrahimi     const size_t* src_origin,
188*6467f958SSadaf Ebrahimi     const size_t* region,
189*6467f958SSadaf Ebrahimi     size_t dst_offset,
190*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
191*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
192*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
193*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
194*6467f958SSadaf Ebrahimi 
195*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
196*6467f958SSadaf Ebrahimi clCommandFillBufferKHR_fn)(
197*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
198*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
199*6467f958SSadaf Ebrahimi     cl_mem buffer,
200*6467f958SSadaf Ebrahimi     const void* pattern,
201*6467f958SSadaf Ebrahimi     size_t pattern_size,
202*6467f958SSadaf Ebrahimi     size_t offset,
203*6467f958SSadaf Ebrahimi     size_t size,
204*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
205*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
206*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
207*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
208*6467f958SSadaf Ebrahimi 
209*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
210*6467f958SSadaf Ebrahimi clCommandFillImageKHR_fn)(
211*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
212*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
213*6467f958SSadaf Ebrahimi     cl_mem image,
214*6467f958SSadaf Ebrahimi     const void* fill_color,
215*6467f958SSadaf Ebrahimi     const size_t* origin,
216*6467f958SSadaf Ebrahimi     const size_t* region,
217*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
218*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
219*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
220*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
221*6467f958SSadaf Ebrahimi 
222*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
223*6467f958SSadaf Ebrahimi clCommandNDRangeKernelKHR_fn)(
224*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
225*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
226*6467f958SSadaf Ebrahimi     const cl_ndrange_kernel_command_properties_khr* properties,
227*6467f958SSadaf Ebrahimi     cl_kernel kernel,
228*6467f958SSadaf Ebrahimi     cl_uint work_dim,
229*6467f958SSadaf Ebrahimi     const size_t* global_work_offset,
230*6467f958SSadaf Ebrahimi     const size_t* global_work_size,
231*6467f958SSadaf Ebrahimi     const size_t* local_work_size,
232*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
233*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
234*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
235*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
236*6467f958SSadaf Ebrahimi 
237*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
238*6467f958SSadaf Ebrahimi clGetCommandBufferInfoKHR_fn)(
239*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
240*6467f958SSadaf Ebrahimi     cl_command_buffer_info_khr param_name,
241*6467f958SSadaf Ebrahimi     size_t param_value_size,
242*6467f958SSadaf Ebrahimi     void* param_value,
243*6467f958SSadaf Ebrahimi     size_t* param_value_size_ret) ;
244*6467f958SSadaf Ebrahimi 
245*6467f958SSadaf Ebrahimi #ifndef CL_NO_PROTOTYPES
246*6467f958SSadaf Ebrahimi 
247*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_command_buffer_khr CL_API_CALL
248*6467f958SSadaf Ebrahimi clCreateCommandBufferKHR(
249*6467f958SSadaf Ebrahimi     cl_uint num_queues,
250*6467f958SSadaf Ebrahimi     const cl_command_queue* queues,
251*6467f958SSadaf Ebrahimi     const cl_command_buffer_properties_khr* properties,
252*6467f958SSadaf Ebrahimi     cl_int* errcode_ret) ;
253*6467f958SSadaf Ebrahimi 
254*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
255*6467f958SSadaf Ebrahimi clFinalizeCommandBufferKHR(
256*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer) ;
257*6467f958SSadaf Ebrahimi 
258*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
259*6467f958SSadaf Ebrahimi clRetainCommandBufferKHR(
260*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer) ;
261*6467f958SSadaf Ebrahimi 
262*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
263*6467f958SSadaf Ebrahimi clReleaseCommandBufferKHR(
264*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer) ;
265*6467f958SSadaf Ebrahimi 
266*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
267*6467f958SSadaf Ebrahimi clEnqueueCommandBufferKHR(
268*6467f958SSadaf Ebrahimi     cl_uint num_queues,
269*6467f958SSadaf Ebrahimi     cl_command_queue* queues,
270*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
271*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
272*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
273*6467f958SSadaf Ebrahimi     cl_event* event) ;
274*6467f958SSadaf Ebrahimi 
275*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
276*6467f958SSadaf Ebrahimi clCommandBarrierWithWaitListKHR(
277*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
278*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
279*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
280*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
281*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
282*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
283*6467f958SSadaf Ebrahimi 
284*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
285*6467f958SSadaf Ebrahimi clCommandCopyBufferKHR(
286*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
287*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
288*6467f958SSadaf Ebrahimi     cl_mem src_buffer,
289*6467f958SSadaf Ebrahimi     cl_mem dst_buffer,
290*6467f958SSadaf Ebrahimi     size_t src_offset,
291*6467f958SSadaf Ebrahimi     size_t dst_offset,
292*6467f958SSadaf Ebrahimi     size_t size,
293*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
294*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
295*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
296*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
297*6467f958SSadaf Ebrahimi 
298*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
299*6467f958SSadaf Ebrahimi clCommandCopyBufferRectKHR(
300*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
301*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
302*6467f958SSadaf Ebrahimi     cl_mem src_buffer,
303*6467f958SSadaf Ebrahimi     cl_mem dst_buffer,
304*6467f958SSadaf Ebrahimi     const size_t* src_origin,
305*6467f958SSadaf Ebrahimi     const size_t* dst_origin,
306*6467f958SSadaf Ebrahimi     const size_t* region,
307*6467f958SSadaf Ebrahimi     size_t src_row_pitch,
308*6467f958SSadaf Ebrahimi     size_t src_slice_pitch,
309*6467f958SSadaf Ebrahimi     size_t dst_row_pitch,
310*6467f958SSadaf Ebrahimi     size_t dst_slice_pitch,
311*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
312*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
313*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
314*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
315*6467f958SSadaf Ebrahimi 
316*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
317*6467f958SSadaf Ebrahimi clCommandCopyBufferToImageKHR(
318*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
319*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
320*6467f958SSadaf Ebrahimi     cl_mem src_buffer,
321*6467f958SSadaf Ebrahimi     cl_mem dst_image,
322*6467f958SSadaf Ebrahimi     size_t src_offset,
323*6467f958SSadaf Ebrahimi     const size_t* dst_origin,
324*6467f958SSadaf Ebrahimi     const size_t* region,
325*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
326*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
327*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
328*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
329*6467f958SSadaf Ebrahimi 
330*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
331*6467f958SSadaf Ebrahimi clCommandCopyImageKHR(
332*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
333*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
334*6467f958SSadaf Ebrahimi     cl_mem src_image,
335*6467f958SSadaf Ebrahimi     cl_mem dst_image,
336*6467f958SSadaf Ebrahimi     const size_t* src_origin,
337*6467f958SSadaf Ebrahimi     const size_t* dst_origin,
338*6467f958SSadaf Ebrahimi     const size_t* region,
339*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
340*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
341*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
342*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
343*6467f958SSadaf Ebrahimi 
344*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
345*6467f958SSadaf Ebrahimi clCommandCopyImageToBufferKHR(
346*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
347*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
348*6467f958SSadaf Ebrahimi     cl_mem src_image,
349*6467f958SSadaf Ebrahimi     cl_mem dst_buffer,
350*6467f958SSadaf Ebrahimi     const size_t* src_origin,
351*6467f958SSadaf Ebrahimi     const size_t* region,
352*6467f958SSadaf Ebrahimi     size_t dst_offset,
353*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
354*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
355*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
356*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
357*6467f958SSadaf Ebrahimi 
358*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
359*6467f958SSadaf Ebrahimi clCommandFillBufferKHR(
360*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
361*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
362*6467f958SSadaf Ebrahimi     cl_mem buffer,
363*6467f958SSadaf Ebrahimi     const void* pattern,
364*6467f958SSadaf Ebrahimi     size_t pattern_size,
365*6467f958SSadaf Ebrahimi     size_t offset,
366*6467f958SSadaf Ebrahimi     size_t size,
367*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
368*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
369*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
370*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
371*6467f958SSadaf Ebrahimi 
372*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
373*6467f958SSadaf Ebrahimi clCommandFillImageKHR(
374*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
375*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
376*6467f958SSadaf Ebrahimi     cl_mem image,
377*6467f958SSadaf Ebrahimi     const void* fill_color,
378*6467f958SSadaf Ebrahimi     const size_t* origin,
379*6467f958SSadaf Ebrahimi     const size_t* region,
380*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
381*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
382*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
383*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
384*6467f958SSadaf Ebrahimi 
385*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
386*6467f958SSadaf Ebrahimi clCommandNDRangeKernelKHR(
387*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
388*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
389*6467f958SSadaf Ebrahimi     const cl_ndrange_kernel_command_properties_khr* properties,
390*6467f958SSadaf Ebrahimi     cl_kernel kernel,
391*6467f958SSadaf Ebrahimi     cl_uint work_dim,
392*6467f958SSadaf Ebrahimi     const size_t* global_work_offset,
393*6467f958SSadaf Ebrahimi     const size_t* global_work_size,
394*6467f958SSadaf Ebrahimi     const size_t* local_work_size,
395*6467f958SSadaf Ebrahimi     cl_uint num_sync_points_in_wait_list,
396*6467f958SSadaf Ebrahimi     const cl_sync_point_khr* sync_point_wait_list,
397*6467f958SSadaf Ebrahimi     cl_sync_point_khr* sync_point,
398*6467f958SSadaf Ebrahimi     cl_mutable_command_khr* mutable_handle) ;
399*6467f958SSadaf Ebrahimi 
400*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
401*6467f958SSadaf Ebrahimi clGetCommandBufferInfoKHR(
402*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
403*6467f958SSadaf Ebrahimi     cl_command_buffer_info_khr param_name,
404*6467f958SSadaf Ebrahimi     size_t param_value_size,
405*6467f958SSadaf Ebrahimi     void* param_value,
406*6467f958SSadaf Ebrahimi     size_t* param_value_size_ret) ;
407*6467f958SSadaf Ebrahimi 
408*6467f958SSadaf Ebrahimi #endif /* CL_NO_PROTOTYPES */
409*6467f958SSadaf Ebrahimi 
410*6467f958SSadaf Ebrahimi /***************************************************************
411*6467f958SSadaf Ebrahimi * cl_khr_command_buffer_mutable_dispatch
412*6467f958SSadaf Ebrahimi ***************************************************************/
413*6467f958SSadaf Ebrahimi #define cl_khr_command_buffer_mutable_dispatch 1
414*6467f958SSadaf Ebrahimi #define CL_KHR_COMMAND_BUFFER_MUTABLE_DISPATCH_EXTENSION_NAME \
415*6467f958SSadaf Ebrahimi     "cl_khr_command_buffer_mutable_dispatch"
416*6467f958SSadaf Ebrahimi 
417*6467f958SSadaf Ebrahimi typedef cl_uint             cl_command_buffer_structure_type_khr;
418*6467f958SSadaf Ebrahimi typedef cl_bitfield         cl_mutable_dispatch_fields_khr;
419*6467f958SSadaf Ebrahimi typedef cl_uint             cl_mutable_command_info_khr;
420*6467f958SSadaf Ebrahimi typedef struct _cl_mutable_dispatch_arg_khr {
421*6467f958SSadaf Ebrahimi     cl_uint arg_index;
422*6467f958SSadaf Ebrahimi     size_t arg_size;
423*6467f958SSadaf Ebrahimi     const void* arg_value;
424*6467f958SSadaf Ebrahimi } cl_mutable_dispatch_arg_khr;
425*6467f958SSadaf Ebrahimi typedef struct _cl_mutable_dispatch_exec_info_khr {
426*6467f958SSadaf Ebrahimi     cl_uint param_name;
427*6467f958SSadaf Ebrahimi     size_t param_value_size;
428*6467f958SSadaf Ebrahimi     const void* param_value;
429*6467f958SSadaf Ebrahimi } cl_mutable_dispatch_exec_info_khr;
430*6467f958SSadaf Ebrahimi typedef struct _cl_mutable_dispatch_config_khr {
431*6467f958SSadaf Ebrahimi     cl_command_buffer_structure_type_khr type;
432*6467f958SSadaf Ebrahimi     const void* next;
433*6467f958SSadaf Ebrahimi     cl_mutable_command_khr command;
434*6467f958SSadaf Ebrahimi     cl_uint num_args;
435*6467f958SSadaf Ebrahimi     cl_uint num_svm_args;
436*6467f958SSadaf Ebrahimi     cl_uint num_exec_infos;
437*6467f958SSadaf Ebrahimi     cl_uint work_dim;
438*6467f958SSadaf Ebrahimi     const cl_mutable_dispatch_arg_khr* arg_list;
439*6467f958SSadaf Ebrahimi     const cl_mutable_dispatch_arg_khr* arg_svm_list;
440*6467f958SSadaf Ebrahimi     const cl_mutable_dispatch_exec_info_khr* exec_info_list;
441*6467f958SSadaf Ebrahimi     const size_t* global_work_offset;
442*6467f958SSadaf Ebrahimi     const size_t* global_work_size;
443*6467f958SSadaf Ebrahimi     const size_t* local_work_size;
444*6467f958SSadaf Ebrahimi } cl_mutable_dispatch_config_khr;
445*6467f958SSadaf Ebrahimi typedef struct _cl_mutable_base_config_khr {
446*6467f958SSadaf Ebrahimi     cl_command_buffer_structure_type_khr type;
447*6467f958SSadaf Ebrahimi     const void* next;
448*6467f958SSadaf Ebrahimi     cl_uint num_mutable_dispatch;
449*6467f958SSadaf Ebrahimi     const cl_mutable_dispatch_config_khr* mutable_dispatch_list;
450*6467f958SSadaf Ebrahimi } cl_mutable_base_config_khr;
451*6467f958SSadaf Ebrahimi 
452*6467f958SSadaf Ebrahimi /* cl_command_buffer_flags_khr - bitfield */
453*6467f958SSadaf Ebrahimi #define CL_COMMAND_BUFFER_MUTABLE_KHR                       (1 << 1)
454*6467f958SSadaf Ebrahimi 
455*6467f958SSadaf Ebrahimi /* Error codes */
456*6467f958SSadaf Ebrahimi #define CL_INVALID_MUTABLE_COMMAND_KHR                      -1141
457*6467f958SSadaf Ebrahimi 
458*6467f958SSadaf Ebrahimi /* cl_device_info */
459*6467f958SSadaf Ebrahimi #define CL_DEVICE_MUTABLE_DISPATCH_CAPABILITIES_KHR         0x12B0
460*6467f958SSadaf Ebrahimi 
461*6467f958SSadaf Ebrahimi /* cl_ndrange_kernel_command_properties_khr */
462*6467f958SSadaf Ebrahimi #define CL_MUTABLE_DISPATCH_UPDATABLE_FIELDS_KHR            0x12B1
463*6467f958SSadaf Ebrahimi 
464*6467f958SSadaf Ebrahimi /* cl_mutable_dispatch_fields_khr - bitfield */
465*6467f958SSadaf Ebrahimi #define CL_MUTABLE_DISPATCH_GLOBAL_OFFSET_KHR               (1 << 0)
466*6467f958SSadaf Ebrahimi #define CL_MUTABLE_DISPATCH_GLOBAL_SIZE_KHR                 (1 << 1)
467*6467f958SSadaf Ebrahimi #define CL_MUTABLE_DISPATCH_LOCAL_SIZE_KHR                  (1 << 2)
468*6467f958SSadaf Ebrahimi #define CL_MUTABLE_DISPATCH_ARGUMENTS_KHR                   (1 << 3)
469*6467f958SSadaf Ebrahimi #define CL_MUTABLE_DISPATCH_EXEC_INFO_KHR                   (1 << 4)
470*6467f958SSadaf Ebrahimi 
471*6467f958SSadaf Ebrahimi /* cl_mutable_command_info_khr */
472*6467f958SSadaf Ebrahimi #define CL_MUTABLE_COMMAND_COMMAND_QUEUE_KHR                0x12A0
473*6467f958SSadaf Ebrahimi #define CL_MUTABLE_COMMAND_COMMAND_BUFFER_KHR               0x12A1
474*6467f958SSadaf Ebrahimi #define CL_MUTABLE_COMMAND_COMMAND_TYPE_KHR                 0x12AD
475*6467f958SSadaf Ebrahimi #define CL_MUTABLE_DISPATCH_PROPERTIES_ARRAY_KHR            0x12A2
476*6467f958SSadaf Ebrahimi #define CL_MUTABLE_DISPATCH_KERNEL_KHR                      0x12A3
477*6467f958SSadaf Ebrahimi #define CL_MUTABLE_DISPATCH_DIMENSIONS_KHR                  0x12A4
478*6467f958SSadaf Ebrahimi #define CL_MUTABLE_DISPATCH_GLOBAL_WORK_OFFSET_KHR          0x12A5
479*6467f958SSadaf Ebrahimi #define CL_MUTABLE_DISPATCH_GLOBAL_WORK_SIZE_KHR            0x12A6
480*6467f958SSadaf Ebrahimi #define CL_MUTABLE_DISPATCH_LOCAL_WORK_SIZE_KHR             0x12A7
481*6467f958SSadaf Ebrahimi 
482*6467f958SSadaf Ebrahimi /* cl_command_buffer_structure_type_khr */
483*6467f958SSadaf Ebrahimi #define CL_STRUCTURE_TYPE_MUTABLE_BASE_CONFIG_KHR           0
484*6467f958SSadaf Ebrahimi #define CL_STRUCTURE_TYPE_MUTABLE_DISPATCH_CONFIG_KHR       1
485*6467f958SSadaf Ebrahimi 
486*6467f958SSadaf Ebrahimi 
487*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
488*6467f958SSadaf Ebrahimi clUpdateMutableCommandsKHR_fn)(
489*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
490*6467f958SSadaf Ebrahimi     const cl_mutable_base_config_khr* mutable_config) ;
491*6467f958SSadaf Ebrahimi 
492*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
493*6467f958SSadaf Ebrahimi clGetMutableCommandInfoKHR_fn)(
494*6467f958SSadaf Ebrahimi     cl_mutable_command_khr command,
495*6467f958SSadaf Ebrahimi     cl_mutable_command_info_khr param_name,
496*6467f958SSadaf Ebrahimi     size_t param_value_size,
497*6467f958SSadaf Ebrahimi     void* param_value,
498*6467f958SSadaf Ebrahimi     size_t* param_value_size_ret) ;
499*6467f958SSadaf Ebrahimi 
500*6467f958SSadaf Ebrahimi #ifndef CL_NO_PROTOTYPES
501*6467f958SSadaf Ebrahimi 
502*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
503*6467f958SSadaf Ebrahimi clUpdateMutableCommandsKHR(
504*6467f958SSadaf Ebrahimi     cl_command_buffer_khr command_buffer,
505*6467f958SSadaf Ebrahimi     const cl_mutable_base_config_khr* mutable_config) ;
506*6467f958SSadaf Ebrahimi 
507*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
508*6467f958SSadaf Ebrahimi clGetMutableCommandInfoKHR(
509*6467f958SSadaf Ebrahimi     cl_mutable_command_khr command,
510*6467f958SSadaf Ebrahimi     cl_mutable_command_info_khr param_name,
511*6467f958SSadaf Ebrahimi     size_t param_value_size,
512*6467f958SSadaf Ebrahimi     void* param_value,
513*6467f958SSadaf Ebrahimi     size_t* param_value_size_ret) ;
514*6467f958SSadaf Ebrahimi 
515*6467f958SSadaf Ebrahimi #endif /* CL_NO_PROTOTYPES */
516*6467f958SSadaf Ebrahimi 
517*6467f958SSadaf Ebrahimi /* cl_khr_fp64 extension - no extension #define since it has no functions  */
518*6467f958SSadaf Ebrahimi /* CL_DEVICE_DOUBLE_FP_CONFIG is defined in CL.h for OpenCL >= 120 */
519*6467f958SSadaf Ebrahimi 
520*6467f958SSadaf Ebrahimi #if CL_TARGET_OPENCL_VERSION <= 110
521*6467f958SSadaf Ebrahimi #define CL_DEVICE_DOUBLE_FP_CONFIG                       0x1032
522*6467f958SSadaf Ebrahimi #endif
523*6467f958SSadaf Ebrahimi 
524*6467f958SSadaf Ebrahimi /* cl_khr_fp16 extension - no extension #define since it has no functions  */
525*6467f958SSadaf Ebrahimi #define CL_DEVICE_HALF_FP_CONFIG                    0x1033
526*6467f958SSadaf Ebrahimi 
527*6467f958SSadaf Ebrahimi /* Memory object destruction
528*6467f958SSadaf Ebrahimi  *
529*6467f958SSadaf Ebrahimi  * Apple extension for use to manage externally allocated buffers used with cl_mem objects with CL_MEM_USE_HOST_PTR
530*6467f958SSadaf Ebrahimi  *
531*6467f958SSadaf Ebrahimi  * Registers a user callback function that will be called when the memory object is deleted and its resources
532*6467f958SSadaf Ebrahimi  * freed. Each call to clSetMemObjectCallbackFn registers the specified user callback function on a callback
533*6467f958SSadaf Ebrahimi  * stack associated with memobj. The registered user callback functions are called in the reverse order in
534*6467f958SSadaf Ebrahimi  * which they were registered. The user callback functions are called and then the memory object is deleted
535*6467f958SSadaf Ebrahimi  * and its resources freed. This provides a mechanism for the application (and libraries) using memobj to be
536*6467f958SSadaf Ebrahimi  * notified when the memory referenced by host_ptr, specified when the memory object is created and used as
537*6467f958SSadaf Ebrahimi  * the storage bits for the memory object, can be reused or freed.
538*6467f958SSadaf Ebrahimi  *
539*6467f958SSadaf Ebrahimi  * The application may not call CL api's with the cl_mem object passed to the pfn_notify.
540*6467f958SSadaf Ebrahimi  *
541*6467f958SSadaf Ebrahimi  * Please check for the "cl_APPLE_SetMemObjectDestructor" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS)
542*6467f958SSadaf Ebrahimi  * before using.
543*6467f958SSadaf Ebrahimi  */
544*6467f958SSadaf Ebrahimi #define cl_APPLE_SetMemObjectDestructor 1
545*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL clSetMemObjectDestructorAPPLE(  cl_mem memobj,
546*6467f958SSadaf Ebrahimi                                         void (* pfn_notify)(cl_mem memobj, void * user_data),
547*6467f958SSadaf Ebrahimi                                         void * user_data)             CL_API_SUFFIX__VERSION_1_0;
548*6467f958SSadaf Ebrahimi 
549*6467f958SSadaf Ebrahimi 
550*6467f958SSadaf Ebrahimi /* Context Logging Functions
551*6467f958SSadaf Ebrahimi  *
552*6467f958SSadaf Ebrahimi  * The next three convenience functions are intended to be used as the pfn_notify parameter to clCreateContext().
553*6467f958SSadaf Ebrahimi  * Please check for the "cl_APPLE_ContextLoggingFunctions" extension using clGetDeviceInfo(CL_DEVICE_EXTENSIONS)
554*6467f958SSadaf Ebrahimi  * before using.
555*6467f958SSadaf Ebrahimi  *
556*6467f958SSadaf Ebrahimi  * clLogMessagesToSystemLog forwards on all log messages to the Apple System Logger
557*6467f958SSadaf Ebrahimi  */
558*6467f958SSadaf Ebrahimi #define cl_APPLE_ContextLoggingFunctions 1
559*6467f958SSadaf Ebrahimi extern CL_API_ENTRY void CL_API_CALL clLogMessagesToSystemLogAPPLE(  const char * errstr,
560*6467f958SSadaf Ebrahimi                                             const void * private_info,
561*6467f958SSadaf Ebrahimi                                             size_t       cb,
562*6467f958SSadaf Ebrahimi                                             void *       user_data)  CL_API_SUFFIX__VERSION_1_0;
563*6467f958SSadaf Ebrahimi 
564*6467f958SSadaf Ebrahimi /* clLogMessagesToStdout sends all log messages to the file descriptor stdout */
565*6467f958SSadaf Ebrahimi extern CL_API_ENTRY void CL_API_CALL clLogMessagesToStdoutAPPLE(   const char * errstr,
566*6467f958SSadaf Ebrahimi                                           const void * private_info,
567*6467f958SSadaf Ebrahimi                                           size_t       cb,
568*6467f958SSadaf Ebrahimi                                           void *       user_data)    CL_API_SUFFIX__VERSION_1_0;
569*6467f958SSadaf Ebrahimi 
570*6467f958SSadaf Ebrahimi /* clLogMessagesToStderr sends all log messages to the file descriptor stderr */
571*6467f958SSadaf Ebrahimi extern CL_API_ENTRY void CL_API_CALL clLogMessagesToStderrAPPLE(   const char * errstr,
572*6467f958SSadaf Ebrahimi                                           const void * private_info,
573*6467f958SSadaf Ebrahimi                                           size_t       cb,
574*6467f958SSadaf Ebrahimi                                           void *       user_data)    CL_API_SUFFIX__VERSION_1_0;
575*6467f958SSadaf Ebrahimi 
576*6467f958SSadaf Ebrahimi 
577*6467f958SSadaf Ebrahimi /************************
578*6467f958SSadaf Ebrahimi * cl_khr_icd extension *
579*6467f958SSadaf Ebrahimi ************************/
580*6467f958SSadaf Ebrahimi #define cl_khr_icd 1
581*6467f958SSadaf Ebrahimi 
582*6467f958SSadaf Ebrahimi /* cl_platform_info                                                        */
583*6467f958SSadaf Ebrahimi #define CL_PLATFORM_ICD_SUFFIX_KHR                  0x0920
584*6467f958SSadaf Ebrahimi 
585*6467f958SSadaf Ebrahimi /* Additional Error Codes                                                  */
586*6467f958SSadaf Ebrahimi #define CL_PLATFORM_NOT_FOUND_KHR                   -1001
587*6467f958SSadaf Ebrahimi 
588*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
589*6467f958SSadaf Ebrahimi clIcdGetPlatformIDsKHR(cl_uint          num_entries,
590*6467f958SSadaf Ebrahimi                        cl_platform_id * platforms,
591*6467f958SSadaf Ebrahimi                        cl_uint *        num_platforms);
592*6467f958SSadaf Ebrahimi 
593*6467f958SSadaf Ebrahimi typedef cl_int
594*6467f958SSadaf Ebrahimi (CL_API_CALL *clIcdGetPlatformIDsKHR_fn)(cl_uint          num_entries,
595*6467f958SSadaf Ebrahimi                                          cl_platform_id * platforms,
596*6467f958SSadaf Ebrahimi                                          cl_uint *        num_platforms);
597*6467f958SSadaf Ebrahimi 
598*6467f958SSadaf Ebrahimi 
599*6467f958SSadaf Ebrahimi /*******************************
600*6467f958SSadaf Ebrahimi  * cl_khr_il_program extension *
601*6467f958SSadaf Ebrahimi  *******************************/
602*6467f958SSadaf Ebrahimi #define cl_khr_il_program 1
603*6467f958SSadaf Ebrahimi 
604*6467f958SSadaf Ebrahimi /* New property to clGetDeviceInfo for retrieving supported intermediate
605*6467f958SSadaf Ebrahimi  * languages
606*6467f958SSadaf Ebrahimi  */
607*6467f958SSadaf Ebrahimi #define CL_DEVICE_IL_VERSION_KHR                    0x105B
608*6467f958SSadaf Ebrahimi 
609*6467f958SSadaf Ebrahimi /* New property to clGetProgramInfo for retrieving for retrieving the IL of a
610*6467f958SSadaf Ebrahimi  * program
611*6467f958SSadaf Ebrahimi  */
612*6467f958SSadaf Ebrahimi #define CL_PROGRAM_IL_KHR                           0x1169
613*6467f958SSadaf Ebrahimi 
614*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_program CL_API_CALL
615*6467f958SSadaf Ebrahimi clCreateProgramWithILKHR(cl_context   context,
616*6467f958SSadaf Ebrahimi                          const void * il,
617*6467f958SSadaf Ebrahimi                          size_t       length,
618*6467f958SSadaf Ebrahimi                          cl_int *     errcode_ret);
619*6467f958SSadaf Ebrahimi 
620*6467f958SSadaf Ebrahimi typedef cl_program
621*6467f958SSadaf Ebrahimi (CL_API_CALL *clCreateProgramWithILKHR_fn)(cl_context   context,
622*6467f958SSadaf Ebrahimi                                            const void * il,
623*6467f958SSadaf Ebrahimi                                            size_t       length,
624*6467f958SSadaf Ebrahimi                                            cl_int *     errcode_ret) CL_API_SUFFIX__VERSION_1_2;
625*6467f958SSadaf Ebrahimi 
626*6467f958SSadaf Ebrahimi /* Extension: cl_khr_image2d_from_buffer
627*6467f958SSadaf Ebrahimi  *
628*6467f958SSadaf Ebrahimi  * This extension allows a 2D image to be created from a cl_mem buffer without
629*6467f958SSadaf Ebrahimi  * a copy. The type associated with a 2D image created from a buffer in an
630*6467f958SSadaf Ebrahimi  * OpenCL program is image2d_t. Both the sampler and sampler-less read_image
631*6467f958SSadaf Ebrahimi  * built-in functions are supported for 2D images and 2D images created from
632*6467f958SSadaf Ebrahimi  * a buffer.  Similarly, the write_image built-ins are also supported for 2D
633*6467f958SSadaf Ebrahimi  * images created from a buffer.
634*6467f958SSadaf Ebrahimi  *
635*6467f958SSadaf Ebrahimi  * When the 2D image from buffer is created, the client must specify the
636*6467f958SSadaf Ebrahimi  * width, height, image format (i.e. channel order and channel data type)
637*6467f958SSadaf Ebrahimi  * and optionally the row pitch.
638*6467f958SSadaf Ebrahimi  *
639*6467f958SSadaf Ebrahimi  * The pitch specified must be a multiple of
640*6467f958SSadaf Ebrahimi  * CL_DEVICE_IMAGE_PITCH_ALIGNMENT_KHR pixels.
641*6467f958SSadaf Ebrahimi  * The base address of the buffer must be aligned to
642*6467f958SSadaf Ebrahimi  * CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR pixels.
643*6467f958SSadaf Ebrahimi  */
644*6467f958SSadaf Ebrahimi 
645*6467f958SSadaf Ebrahimi #define CL_DEVICE_IMAGE_PITCH_ALIGNMENT_KHR              0x104A
646*6467f958SSadaf Ebrahimi #define CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR       0x104B
647*6467f958SSadaf Ebrahimi 
648*6467f958SSadaf Ebrahimi 
649*6467f958SSadaf Ebrahimi /**************************************
650*6467f958SSadaf Ebrahimi  * cl_khr_initialize_memory extension *
651*6467f958SSadaf Ebrahimi  **************************************/
652*6467f958SSadaf Ebrahimi 
653*6467f958SSadaf Ebrahimi #define CL_CONTEXT_MEMORY_INITIALIZE_KHR            0x2030
654*6467f958SSadaf Ebrahimi 
655*6467f958SSadaf Ebrahimi 
656*6467f958SSadaf Ebrahimi /**************************************
657*6467f958SSadaf Ebrahimi  * cl_khr_terminate_context extension *
658*6467f958SSadaf Ebrahimi  **************************************/
659*6467f958SSadaf Ebrahimi 
660*6467f958SSadaf Ebrahimi #define CL_CONTEXT_TERMINATED_KHR                   -1121
661*6467f958SSadaf Ebrahimi 
662*6467f958SSadaf Ebrahimi #define CL_DEVICE_TERMINATE_CAPABILITY_KHR          0x2031
663*6467f958SSadaf Ebrahimi #define CL_CONTEXT_TERMINATE_KHR                    0x2032
664*6467f958SSadaf Ebrahimi 
665*6467f958SSadaf Ebrahimi #define cl_khr_terminate_context 1
666*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
667*6467f958SSadaf Ebrahimi clTerminateContextKHR(cl_context context) CL_API_SUFFIX__VERSION_1_2;
668*6467f958SSadaf Ebrahimi 
669*6467f958SSadaf Ebrahimi typedef cl_int
670*6467f958SSadaf Ebrahimi (CL_API_CALL *clTerminateContextKHR_fn)(cl_context context) CL_API_SUFFIX__VERSION_1_2;
671*6467f958SSadaf Ebrahimi 
672*6467f958SSadaf Ebrahimi 
673*6467f958SSadaf Ebrahimi /*
674*6467f958SSadaf Ebrahimi  * Extension: cl_khr_spir
675*6467f958SSadaf Ebrahimi  *
676*6467f958SSadaf Ebrahimi  * This extension adds support to create an OpenCL program object from a
677*6467f958SSadaf Ebrahimi  * Standard Portable Intermediate Representation (SPIR) instance
678*6467f958SSadaf Ebrahimi  */
679*6467f958SSadaf Ebrahimi 
680*6467f958SSadaf Ebrahimi #define CL_DEVICE_SPIR_VERSIONS                     0x40E0
681*6467f958SSadaf Ebrahimi #define CL_PROGRAM_BINARY_TYPE_INTERMEDIATE         0x40E1
682*6467f958SSadaf Ebrahimi 
683*6467f958SSadaf Ebrahimi 
684*6467f958SSadaf Ebrahimi /*****************************************
685*6467f958SSadaf Ebrahimi  * cl_khr_create_command_queue extension *
686*6467f958SSadaf Ebrahimi  *****************************************/
687*6467f958SSadaf Ebrahimi #define cl_khr_create_command_queue 1
688*6467f958SSadaf Ebrahimi 
689*6467f958SSadaf Ebrahimi typedef cl_properties cl_queue_properties_khr;
690*6467f958SSadaf Ebrahimi 
691*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_command_queue CL_API_CALL
692*6467f958SSadaf Ebrahimi clCreateCommandQueueWithPropertiesKHR(cl_context context,
693*6467f958SSadaf Ebrahimi                                       cl_device_id device,
694*6467f958SSadaf Ebrahimi                                       const cl_queue_properties_khr* properties,
695*6467f958SSadaf Ebrahimi                                       cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2;
696*6467f958SSadaf Ebrahimi 
697*6467f958SSadaf Ebrahimi typedef cl_command_queue
698*6467f958SSadaf Ebrahimi (CL_API_CALL *clCreateCommandQueueWithPropertiesKHR_fn)(cl_context context,
699*6467f958SSadaf Ebrahimi                                                         cl_device_id device,
700*6467f958SSadaf Ebrahimi                                                         const cl_queue_properties_khr* properties,
701*6467f958SSadaf Ebrahimi                                                         cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2;
702*6467f958SSadaf Ebrahimi 
703*6467f958SSadaf Ebrahimi 
704*6467f958SSadaf Ebrahimi /******************************************
705*6467f958SSadaf Ebrahimi * cl_nv_device_attribute_query extension *
706*6467f958SSadaf Ebrahimi ******************************************/
707*6467f958SSadaf Ebrahimi 
708*6467f958SSadaf Ebrahimi /* cl_nv_device_attribute_query extension - no extension #define since it has no functions */
709*6467f958SSadaf Ebrahimi #define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV       0x4000
710*6467f958SSadaf Ebrahimi #define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV       0x4001
711*6467f958SSadaf Ebrahimi #define CL_DEVICE_REGISTERS_PER_BLOCK_NV            0x4002
712*6467f958SSadaf Ebrahimi #define CL_DEVICE_WARP_SIZE_NV                      0x4003
713*6467f958SSadaf Ebrahimi #define CL_DEVICE_GPU_OVERLAP_NV                    0x4004
714*6467f958SSadaf Ebrahimi #define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV            0x4005
715*6467f958SSadaf Ebrahimi #define CL_DEVICE_INTEGRATED_MEMORY_NV              0x4006
716*6467f958SSadaf Ebrahimi 
717*6467f958SSadaf Ebrahimi 
718*6467f958SSadaf Ebrahimi /*********************************
719*6467f958SSadaf Ebrahimi * cl_amd_device_attribute_query *
720*6467f958SSadaf Ebrahimi *********************************/
721*6467f958SSadaf Ebrahimi 
722*6467f958SSadaf Ebrahimi #define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD            0x4036
723*6467f958SSadaf Ebrahimi #define CL_DEVICE_TOPOLOGY_AMD                          0x4037
724*6467f958SSadaf Ebrahimi #define CL_DEVICE_BOARD_NAME_AMD                        0x4038
725*6467f958SSadaf Ebrahimi #define CL_DEVICE_GLOBAL_FREE_MEMORY_AMD                0x4039
726*6467f958SSadaf Ebrahimi #define CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD             0x4040
727*6467f958SSadaf Ebrahimi #define CL_DEVICE_SIMD_WIDTH_AMD                        0x4041
728*6467f958SSadaf Ebrahimi #define CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD            0x4042
729*6467f958SSadaf Ebrahimi #define CL_DEVICE_WAVEFRONT_WIDTH_AMD                   0x4043
730*6467f958SSadaf Ebrahimi #define CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD               0x4044
731*6467f958SSadaf Ebrahimi #define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD          0x4045
732*6467f958SSadaf Ebrahimi #define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD     0x4046
733*6467f958SSadaf Ebrahimi #define CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD   0x4047
734*6467f958SSadaf Ebrahimi #define CL_DEVICE_LOCAL_MEM_BANKS_AMD                   0x4048
735*6467f958SSadaf Ebrahimi #define CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD            0x4049
736*6467f958SSadaf Ebrahimi #define CL_DEVICE_GFXIP_MAJOR_AMD                       0x404A
737*6467f958SSadaf Ebrahimi #define CL_DEVICE_GFXIP_MINOR_AMD                       0x404B
738*6467f958SSadaf Ebrahimi #define CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD            0x404C
739*6467f958SSadaf Ebrahimi #define CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD         0x4030
740*6467f958SSadaf Ebrahimi #define CL_DEVICE_MAX_WORK_GROUP_SIZE_AMD               0x4031
741*6467f958SSadaf Ebrahimi #define CL_DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD    0x4033
742*6467f958SSadaf Ebrahimi #define CL_DEVICE_PCIE_ID_AMD                           0x4034
743*6467f958SSadaf Ebrahimi 
744*6467f958SSadaf Ebrahimi 
745*6467f958SSadaf Ebrahimi /*********************************
746*6467f958SSadaf Ebrahimi * cl_arm_printf extension
747*6467f958SSadaf Ebrahimi *********************************/
748*6467f958SSadaf Ebrahimi 
749*6467f958SSadaf Ebrahimi #define CL_PRINTF_CALLBACK_ARM                      0x40B0
750*6467f958SSadaf Ebrahimi #define CL_PRINTF_BUFFERSIZE_ARM                    0x40B1
751*6467f958SSadaf Ebrahimi 
752*6467f958SSadaf Ebrahimi 
753*6467f958SSadaf Ebrahimi /***********************************
754*6467f958SSadaf Ebrahimi * cl_ext_device_fission extension
755*6467f958SSadaf Ebrahimi ***********************************/
756*6467f958SSadaf Ebrahimi #define cl_ext_device_fission   1
757*6467f958SSadaf Ebrahimi 
758*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
759*6467f958SSadaf Ebrahimi clReleaseDeviceEXT(cl_device_id device) CL_API_SUFFIX__VERSION_1_1;
760*6467f958SSadaf Ebrahimi 
761*6467f958SSadaf Ebrahimi typedef cl_int
762*6467f958SSadaf Ebrahimi (CL_API_CALL *clReleaseDeviceEXT_fn)(cl_device_id device) CL_API_SUFFIX__VERSION_1_1;
763*6467f958SSadaf Ebrahimi 
764*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
765*6467f958SSadaf Ebrahimi clRetainDeviceEXT(cl_device_id device) CL_API_SUFFIX__VERSION_1_1;
766*6467f958SSadaf Ebrahimi 
767*6467f958SSadaf Ebrahimi typedef cl_int
768*6467f958SSadaf Ebrahimi (CL_API_CALL *clRetainDeviceEXT_fn)(cl_device_id device) CL_API_SUFFIX__VERSION_1_1;
769*6467f958SSadaf Ebrahimi 
770*6467f958SSadaf Ebrahimi typedef cl_ulong  cl_device_partition_property_ext;
771*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
772*6467f958SSadaf Ebrahimi clCreateSubDevicesEXT(cl_device_id   in_device,
773*6467f958SSadaf Ebrahimi                       const cl_device_partition_property_ext * properties,
774*6467f958SSadaf Ebrahimi                       cl_uint        num_entries,
775*6467f958SSadaf Ebrahimi                       cl_device_id * out_devices,
776*6467f958SSadaf Ebrahimi                       cl_uint *      num_devices) CL_API_SUFFIX__VERSION_1_1;
777*6467f958SSadaf Ebrahimi 
778*6467f958SSadaf Ebrahimi typedef cl_int
779*6467f958SSadaf Ebrahimi (CL_API_CALL * clCreateSubDevicesEXT_fn)(cl_device_id   in_device,
780*6467f958SSadaf Ebrahimi                                          const cl_device_partition_property_ext * properties,
781*6467f958SSadaf Ebrahimi                                          cl_uint        num_entries,
782*6467f958SSadaf Ebrahimi                                          cl_device_id * out_devices,
783*6467f958SSadaf Ebrahimi                                          cl_uint *      num_devices) CL_API_SUFFIX__VERSION_1_1;
784*6467f958SSadaf Ebrahimi 
785*6467f958SSadaf Ebrahimi /* cl_device_partition_property_ext */
786*6467f958SSadaf Ebrahimi #define CL_DEVICE_PARTITION_EQUALLY_EXT             0x4050
787*6467f958SSadaf Ebrahimi #define CL_DEVICE_PARTITION_BY_COUNTS_EXT           0x4051
788*6467f958SSadaf Ebrahimi #define CL_DEVICE_PARTITION_BY_NAMES_EXT            0x4052
789*6467f958SSadaf Ebrahimi #define CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN_EXT  0x4053
790*6467f958SSadaf Ebrahimi 
791*6467f958SSadaf Ebrahimi /* clDeviceGetInfo selectors */
792*6467f958SSadaf Ebrahimi #define CL_DEVICE_PARENT_DEVICE_EXT                 0x4054
793*6467f958SSadaf Ebrahimi #define CL_DEVICE_PARTITION_TYPES_EXT               0x4055
794*6467f958SSadaf Ebrahimi #define CL_DEVICE_AFFINITY_DOMAINS_EXT              0x4056
795*6467f958SSadaf Ebrahimi #define CL_DEVICE_REFERENCE_COUNT_EXT               0x4057
796*6467f958SSadaf Ebrahimi #define CL_DEVICE_PARTITION_STYLE_EXT               0x4058
797*6467f958SSadaf Ebrahimi 
798*6467f958SSadaf Ebrahimi /* error codes */
799*6467f958SSadaf Ebrahimi #define CL_DEVICE_PARTITION_FAILED_EXT              -1057
800*6467f958SSadaf Ebrahimi #define CL_INVALID_PARTITION_COUNT_EXT              -1058
801*6467f958SSadaf Ebrahimi #define CL_INVALID_PARTITION_NAME_EXT               -1059
802*6467f958SSadaf Ebrahimi 
803*6467f958SSadaf Ebrahimi /* CL_AFFINITY_DOMAINs */
804*6467f958SSadaf Ebrahimi #define CL_AFFINITY_DOMAIN_L1_CACHE_EXT             0x1
805*6467f958SSadaf Ebrahimi #define CL_AFFINITY_DOMAIN_L2_CACHE_EXT             0x2
806*6467f958SSadaf Ebrahimi #define CL_AFFINITY_DOMAIN_L3_CACHE_EXT             0x3
807*6467f958SSadaf Ebrahimi #define CL_AFFINITY_DOMAIN_L4_CACHE_EXT             0x4
808*6467f958SSadaf Ebrahimi #define CL_AFFINITY_DOMAIN_NUMA_EXT                 0x10
809*6467f958SSadaf Ebrahimi #define CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT     0x100
810*6467f958SSadaf Ebrahimi 
811*6467f958SSadaf Ebrahimi /* cl_device_partition_property_ext list terminators */
812*6467f958SSadaf Ebrahimi #define CL_PROPERTIES_LIST_END_EXT                  ((cl_device_partition_property_ext) 0)
813*6467f958SSadaf Ebrahimi #define CL_PARTITION_BY_COUNTS_LIST_END_EXT         ((cl_device_partition_property_ext) 0)
814*6467f958SSadaf Ebrahimi #define CL_PARTITION_BY_NAMES_LIST_END_EXT          ((cl_device_partition_property_ext) 0 - 1)
815*6467f958SSadaf Ebrahimi 
816*6467f958SSadaf Ebrahimi 
817*6467f958SSadaf Ebrahimi /***********************************
818*6467f958SSadaf Ebrahimi  * cl_ext_migrate_memobject extension definitions
819*6467f958SSadaf Ebrahimi  ***********************************/
820*6467f958SSadaf Ebrahimi #define cl_ext_migrate_memobject 1
821*6467f958SSadaf Ebrahimi 
822*6467f958SSadaf Ebrahimi typedef cl_bitfield cl_mem_migration_flags_ext;
823*6467f958SSadaf Ebrahimi 
824*6467f958SSadaf Ebrahimi #define CL_MIGRATE_MEM_OBJECT_HOST_EXT              0x1
825*6467f958SSadaf Ebrahimi 
826*6467f958SSadaf Ebrahimi #define CL_COMMAND_MIGRATE_MEM_OBJECT_EXT           0x4040
827*6467f958SSadaf Ebrahimi 
828*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
829*6467f958SSadaf Ebrahimi clEnqueueMigrateMemObjectEXT(cl_command_queue command_queue,
830*6467f958SSadaf Ebrahimi                              cl_uint          num_mem_objects,
831*6467f958SSadaf Ebrahimi                              const cl_mem *   mem_objects,
832*6467f958SSadaf Ebrahimi                              cl_mem_migration_flags_ext flags,
833*6467f958SSadaf Ebrahimi                              cl_uint          num_events_in_wait_list,
834*6467f958SSadaf Ebrahimi                              const cl_event * event_wait_list,
835*6467f958SSadaf Ebrahimi                              cl_event *       event);
836*6467f958SSadaf Ebrahimi 
837*6467f958SSadaf Ebrahimi typedef cl_int
838*6467f958SSadaf Ebrahimi (CL_API_CALL *clEnqueueMigrateMemObjectEXT_fn)(cl_command_queue command_queue,
839*6467f958SSadaf Ebrahimi                                                cl_uint          num_mem_objects,
840*6467f958SSadaf Ebrahimi                                                const cl_mem *   mem_objects,
841*6467f958SSadaf Ebrahimi                                                cl_mem_migration_flags_ext flags,
842*6467f958SSadaf Ebrahimi                                                cl_uint          num_events_in_wait_list,
843*6467f958SSadaf Ebrahimi                                                const cl_event * event_wait_list,
844*6467f958SSadaf Ebrahimi                                                cl_event *       event);
845*6467f958SSadaf Ebrahimi 
846*6467f958SSadaf Ebrahimi 
847*6467f958SSadaf Ebrahimi /*********************************
848*6467f958SSadaf Ebrahimi * cl_ext_cxx_for_opencl extension
849*6467f958SSadaf Ebrahimi *********************************/
850*6467f958SSadaf Ebrahimi #define cl_ext_cxx_for_opencl 1
851*6467f958SSadaf Ebrahimi 
852*6467f958SSadaf Ebrahimi #define CL_DEVICE_CXX_FOR_OPENCL_NUMERIC_VERSION_EXT 0x4230
853*6467f958SSadaf Ebrahimi 
854*6467f958SSadaf Ebrahimi /*********************************
855*6467f958SSadaf Ebrahimi * cl_qcom_ext_host_ptr extension
856*6467f958SSadaf Ebrahimi *********************************/
857*6467f958SSadaf Ebrahimi #define cl_qcom_ext_host_ptr 1
858*6467f958SSadaf Ebrahimi 
859*6467f958SSadaf Ebrahimi #define CL_MEM_EXT_HOST_PTR_QCOM                  (1 << 29)
860*6467f958SSadaf Ebrahimi 
861*6467f958SSadaf Ebrahimi #define CL_DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM   0x40A0
862*6467f958SSadaf Ebrahimi #define CL_DEVICE_PAGE_SIZE_QCOM                  0x40A1
863*6467f958SSadaf Ebrahimi #define CL_IMAGE_ROW_ALIGNMENT_QCOM               0x40A2
864*6467f958SSadaf Ebrahimi #define CL_IMAGE_SLICE_ALIGNMENT_QCOM             0x40A3
865*6467f958SSadaf Ebrahimi #define CL_MEM_HOST_UNCACHED_QCOM                 0x40A4
866*6467f958SSadaf Ebrahimi #define CL_MEM_HOST_WRITEBACK_QCOM                0x40A5
867*6467f958SSadaf Ebrahimi #define CL_MEM_HOST_WRITETHROUGH_QCOM             0x40A6
868*6467f958SSadaf Ebrahimi #define CL_MEM_HOST_WRITE_COMBINING_QCOM          0x40A7
869*6467f958SSadaf Ebrahimi 
870*6467f958SSadaf Ebrahimi typedef cl_uint                                   cl_image_pitch_info_qcom;
871*6467f958SSadaf Ebrahimi 
872*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
873*6467f958SSadaf Ebrahimi clGetDeviceImageInfoQCOM(cl_device_id             device,
874*6467f958SSadaf Ebrahimi                          size_t                   image_width,
875*6467f958SSadaf Ebrahimi                          size_t                   image_height,
876*6467f958SSadaf Ebrahimi                          const cl_image_format   *image_format,
877*6467f958SSadaf Ebrahimi                          cl_image_pitch_info_qcom param_name,
878*6467f958SSadaf Ebrahimi                          size_t                   param_value_size,
879*6467f958SSadaf Ebrahimi                          void                    *param_value,
880*6467f958SSadaf Ebrahimi                          size_t                  *param_value_size_ret);
881*6467f958SSadaf Ebrahimi 
882*6467f958SSadaf Ebrahimi typedef struct _cl_mem_ext_host_ptr
883*6467f958SSadaf Ebrahimi {
884*6467f958SSadaf Ebrahimi     /* Type of external memory allocation. */
885*6467f958SSadaf Ebrahimi     /* Legal values will be defined in layered extensions. */
886*6467f958SSadaf Ebrahimi     cl_uint  allocation_type;
887*6467f958SSadaf Ebrahimi 
888*6467f958SSadaf Ebrahimi     /* Host cache policy for this external memory allocation. */
889*6467f958SSadaf Ebrahimi     cl_uint  host_cache_policy;
890*6467f958SSadaf Ebrahimi 
891*6467f958SSadaf Ebrahimi } cl_mem_ext_host_ptr;
892*6467f958SSadaf Ebrahimi 
893*6467f958SSadaf Ebrahimi 
894*6467f958SSadaf Ebrahimi /*******************************************
895*6467f958SSadaf Ebrahimi * cl_qcom_ext_host_ptr_iocoherent extension
896*6467f958SSadaf Ebrahimi ********************************************/
897*6467f958SSadaf Ebrahimi 
898*6467f958SSadaf Ebrahimi /* Cache policy specifying io-coherence */
899*6467f958SSadaf Ebrahimi #define CL_MEM_HOST_IOCOHERENT_QCOM               0x40A9
900*6467f958SSadaf Ebrahimi 
901*6467f958SSadaf Ebrahimi 
902*6467f958SSadaf Ebrahimi /*********************************
903*6467f958SSadaf Ebrahimi * cl_qcom_ion_host_ptr extension
904*6467f958SSadaf Ebrahimi *********************************/
905*6467f958SSadaf Ebrahimi 
906*6467f958SSadaf Ebrahimi #define CL_MEM_ION_HOST_PTR_QCOM                  0x40A8
907*6467f958SSadaf Ebrahimi 
908*6467f958SSadaf Ebrahimi typedef struct _cl_mem_ion_host_ptr
909*6467f958SSadaf Ebrahimi {
910*6467f958SSadaf Ebrahimi     /* Type of external memory allocation. */
911*6467f958SSadaf Ebrahimi     /* Must be CL_MEM_ION_HOST_PTR_QCOM for ION allocations. */
912*6467f958SSadaf Ebrahimi     cl_mem_ext_host_ptr  ext_host_ptr;
913*6467f958SSadaf Ebrahimi 
914*6467f958SSadaf Ebrahimi     /* ION file descriptor */
915*6467f958SSadaf Ebrahimi     int                  ion_filedesc;
916*6467f958SSadaf Ebrahimi 
917*6467f958SSadaf Ebrahimi     /* Host pointer to the ION allocated memory */
918*6467f958SSadaf Ebrahimi     void*                ion_hostptr;
919*6467f958SSadaf Ebrahimi 
920*6467f958SSadaf Ebrahimi } cl_mem_ion_host_ptr;
921*6467f958SSadaf Ebrahimi 
922*6467f958SSadaf Ebrahimi 
923*6467f958SSadaf Ebrahimi /*********************************
924*6467f958SSadaf Ebrahimi * cl_qcom_android_native_buffer_host_ptr extension
925*6467f958SSadaf Ebrahimi *********************************/
926*6467f958SSadaf Ebrahimi 
927*6467f958SSadaf Ebrahimi #define CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM                  0x40C6
928*6467f958SSadaf Ebrahimi 
929*6467f958SSadaf Ebrahimi typedef struct _cl_mem_android_native_buffer_host_ptr
930*6467f958SSadaf Ebrahimi {
931*6467f958SSadaf Ebrahimi     /* Type of external memory allocation. */
932*6467f958SSadaf Ebrahimi     /* Must be CL_MEM_ANDROID_NATIVE_BUFFER_HOST_PTR_QCOM for Android native buffers. */
933*6467f958SSadaf Ebrahimi     cl_mem_ext_host_ptr  ext_host_ptr;
934*6467f958SSadaf Ebrahimi 
935*6467f958SSadaf Ebrahimi     /* Virtual pointer to the android native buffer */
936*6467f958SSadaf Ebrahimi     void*                anb_ptr;
937*6467f958SSadaf Ebrahimi 
938*6467f958SSadaf Ebrahimi } cl_mem_android_native_buffer_host_ptr;
939*6467f958SSadaf Ebrahimi 
940*6467f958SSadaf Ebrahimi 
941*6467f958SSadaf Ebrahimi /******************************************
942*6467f958SSadaf Ebrahimi  * cl_img_yuv_image extension *
943*6467f958SSadaf Ebrahimi  ******************************************/
944*6467f958SSadaf Ebrahimi 
945*6467f958SSadaf Ebrahimi /* Image formats used in clCreateImage */
946*6467f958SSadaf Ebrahimi #define CL_NV21_IMG                                 0x40D0
947*6467f958SSadaf Ebrahimi #define CL_YV12_IMG                                 0x40D1
948*6467f958SSadaf Ebrahimi 
949*6467f958SSadaf Ebrahimi 
950*6467f958SSadaf Ebrahimi /******************************************
951*6467f958SSadaf Ebrahimi  * cl_img_cached_allocations extension *
952*6467f958SSadaf Ebrahimi  ******************************************/
953*6467f958SSadaf Ebrahimi 
954*6467f958SSadaf Ebrahimi /* Flag values used by clCreateBuffer */
955*6467f958SSadaf Ebrahimi #define CL_MEM_USE_UNCACHED_CPU_MEMORY_IMG          (1 << 26)
956*6467f958SSadaf Ebrahimi #define CL_MEM_USE_CACHED_CPU_MEMORY_IMG            (1 << 27)
957*6467f958SSadaf Ebrahimi 
958*6467f958SSadaf Ebrahimi 
959*6467f958SSadaf Ebrahimi /******************************************
960*6467f958SSadaf Ebrahimi  * cl_img_use_gralloc_ptr extension *
961*6467f958SSadaf Ebrahimi  ******************************************/
962*6467f958SSadaf Ebrahimi #define cl_img_use_gralloc_ptr 1
963*6467f958SSadaf Ebrahimi 
964*6467f958SSadaf Ebrahimi /* Flag values used by clCreateBuffer */
965*6467f958SSadaf Ebrahimi #define CL_MEM_USE_GRALLOC_PTR_IMG                  (1 << 28)
966*6467f958SSadaf Ebrahimi 
967*6467f958SSadaf Ebrahimi /* To be used by clGetEventInfo: */
968*6467f958SSadaf Ebrahimi #define CL_COMMAND_ACQUIRE_GRALLOC_OBJECTS_IMG      0x40D2
969*6467f958SSadaf Ebrahimi #define CL_COMMAND_RELEASE_GRALLOC_OBJECTS_IMG      0x40D3
970*6467f958SSadaf Ebrahimi 
971*6467f958SSadaf Ebrahimi /* Error codes from clEnqueueAcquireGrallocObjectsIMG and clEnqueueReleaseGrallocObjectsIMG */
972*6467f958SSadaf Ebrahimi #define CL_GRALLOC_RESOURCE_NOT_ACQUIRED_IMG        0x40D4
973*6467f958SSadaf Ebrahimi #define CL_INVALID_GRALLOC_OBJECT_IMG               0x40D5
974*6467f958SSadaf Ebrahimi 
975*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
976*6467f958SSadaf Ebrahimi clEnqueueAcquireGrallocObjectsIMG(cl_command_queue      command_queue,
977*6467f958SSadaf Ebrahimi                                   cl_uint               num_objects,
978*6467f958SSadaf Ebrahimi                                   const cl_mem *        mem_objects,
979*6467f958SSadaf Ebrahimi                                   cl_uint               num_events_in_wait_list,
980*6467f958SSadaf Ebrahimi                                   const cl_event *      event_wait_list,
981*6467f958SSadaf Ebrahimi                                   cl_event *            event) CL_API_SUFFIX__VERSION_1_2;
982*6467f958SSadaf Ebrahimi 
983*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
984*6467f958SSadaf Ebrahimi clEnqueueReleaseGrallocObjectsIMG(cl_command_queue      command_queue,
985*6467f958SSadaf Ebrahimi                                   cl_uint               num_objects,
986*6467f958SSadaf Ebrahimi                                   const cl_mem *        mem_objects,
987*6467f958SSadaf Ebrahimi                                   cl_uint               num_events_in_wait_list,
988*6467f958SSadaf Ebrahimi                                   const cl_event *      event_wait_list,
989*6467f958SSadaf Ebrahimi                                   cl_event *            event) CL_API_SUFFIX__VERSION_1_2;
990*6467f958SSadaf Ebrahimi 
991*6467f958SSadaf Ebrahimi /******************************************
992*6467f958SSadaf Ebrahimi  * cl_img_generate_mipmap extension *
993*6467f958SSadaf Ebrahimi  ******************************************/
994*6467f958SSadaf Ebrahimi #define cl_img_generate_mipmap 1
995*6467f958SSadaf Ebrahimi 
996*6467f958SSadaf Ebrahimi typedef cl_uint cl_mipmap_filter_mode_img;
997*6467f958SSadaf Ebrahimi 
998*6467f958SSadaf Ebrahimi /* To be used by clEnqueueGenerateMipmapIMG */
999*6467f958SSadaf Ebrahimi #define CL_MIPMAP_FILTER_ANY_IMG 0x0
1000*6467f958SSadaf Ebrahimi #define CL_MIPMAP_FILTER_BOX_IMG 0x1
1001*6467f958SSadaf Ebrahimi 
1002*6467f958SSadaf Ebrahimi /* To be used by clGetEventInfo */
1003*6467f958SSadaf Ebrahimi #define CL_COMMAND_GENERATE_MIPMAP_IMG 0x40D6
1004*6467f958SSadaf Ebrahimi 
1005*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1006*6467f958SSadaf Ebrahimi clEnqueueGenerateMipmapIMG(cl_command_queue          command_queue,
1007*6467f958SSadaf Ebrahimi                            cl_mem                    src_image,
1008*6467f958SSadaf Ebrahimi                            cl_mem                    dst_image,
1009*6467f958SSadaf Ebrahimi                            cl_mipmap_filter_mode_img mipmap_filter_mode,
1010*6467f958SSadaf Ebrahimi                            const size_t              *array_region,
1011*6467f958SSadaf Ebrahimi                            const size_t              *mip_region,
1012*6467f958SSadaf Ebrahimi                            cl_uint                   num_events_in_wait_list,
1013*6467f958SSadaf Ebrahimi                            const cl_event            *event_wait_list,
1014*6467f958SSadaf Ebrahimi                            cl_event *event) CL_API_SUFFIX__VERSION_1_2;
1015*6467f958SSadaf Ebrahimi 
1016*6467f958SSadaf Ebrahimi /******************************************
1017*6467f958SSadaf Ebrahimi  * cl_img_mem_properties extension *
1018*6467f958SSadaf Ebrahimi  ******************************************/
1019*6467f958SSadaf Ebrahimi #define cl_img_mem_properties 1
1020*6467f958SSadaf Ebrahimi 
1021*6467f958SSadaf Ebrahimi /* To be used by clCreateBufferWithProperties */
1022*6467f958SSadaf Ebrahimi #define CL_MEM_ALLOC_FLAGS_IMG 0x40D7
1023*6467f958SSadaf Ebrahimi 
1024*6467f958SSadaf Ebrahimi /* To be used wiith the CL_MEM_ALLOC_FLAGS_IMG property */
1025*6467f958SSadaf Ebrahimi typedef cl_bitfield cl_mem_alloc_flags_img;
1026*6467f958SSadaf Ebrahimi 
1027*6467f958SSadaf Ebrahimi /* To be used with cl_mem_alloc_flags_img */
1028*6467f958SSadaf Ebrahimi #define CL_MEM_ALLOC_RELAX_REQUIREMENTS_IMG (1 << 0)
1029*6467f958SSadaf Ebrahimi 
1030*6467f958SSadaf Ebrahimi /*********************************
1031*6467f958SSadaf Ebrahimi * cl_khr_subgroups extension
1032*6467f958SSadaf Ebrahimi *********************************/
1033*6467f958SSadaf Ebrahimi #define cl_khr_subgroups 1
1034*6467f958SSadaf Ebrahimi 
1035*6467f958SSadaf Ebrahimi #if !defined(CL_VERSION_2_1)
1036*6467f958SSadaf Ebrahimi /* For OpenCL 2.1 and newer, cl_kernel_sub_group_info is declared in CL.h.
1037*6467f958SSadaf Ebrahimi    In hindsight, there should have been a khr suffix on this type for
1038*6467f958SSadaf Ebrahimi    the extension, but keeping it un-suffixed to maintain backwards
1039*6467f958SSadaf Ebrahimi    compatibility. */
1040*6467f958SSadaf Ebrahimi typedef cl_uint             cl_kernel_sub_group_info;
1041*6467f958SSadaf Ebrahimi #endif
1042*6467f958SSadaf Ebrahimi 
1043*6467f958SSadaf Ebrahimi /* cl_kernel_sub_group_info */
1044*6467f958SSadaf Ebrahimi #define CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE_KHR    0x2033
1045*6467f958SSadaf Ebrahimi #define CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE_KHR       0x2034
1046*6467f958SSadaf Ebrahimi 
1047*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1048*6467f958SSadaf Ebrahimi clGetKernelSubGroupInfoKHR(cl_kernel    in_kernel,
1049*6467f958SSadaf Ebrahimi                            cl_device_id in_device,
1050*6467f958SSadaf Ebrahimi                            cl_kernel_sub_group_info param_name,
1051*6467f958SSadaf Ebrahimi                            size_t       input_value_size,
1052*6467f958SSadaf Ebrahimi                            const void * input_value,
1053*6467f958SSadaf Ebrahimi                            size_t       param_value_size,
1054*6467f958SSadaf Ebrahimi                            void *       param_value,
1055*6467f958SSadaf Ebrahimi                            size_t *     param_value_size_ret) CL_API_SUFFIX__VERSION_2_0_DEPRECATED;
1056*6467f958SSadaf Ebrahimi 
1057*6467f958SSadaf Ebrahimi typedef cl_int
1058*6467f958SSadaf Ebrahimi (CL_API_CALL * clGetKernelSubGroupInfoKHR_fn)(cl_kernel    in_kernel,
1059*6467f958SSadaf Ebrahimi                                               cl_device_id in_device,
1060*6467f958SSadaf Ebrahimi                                               cl_kernel_sub_group_info param_name,
1061*6467f958SSadaf Ebrahimi                                               size_t       input_value_size,
1062*6467f958SSadaf Ebrahimi                                               const void * input_value,
1063*6467f958SSadaf Ebrahimi                                               size_t       param_value_size,
1064*6467f958SSadaf Ebrahimi                                               void *       param_value,
1065*6467f958SSadaf Ebrahimi                                               size_t *     param_value_size_ret) CL_API_SUFFIX__VERSION_2_0_DEPRECATED;
1066*6467f958SSadaf Ebrahimi 
1067*6467f958SSadaf Ebrahimi 
1068*6467f958SSadaf Ebrahimi /*********************************
1069*6467f958SSadaf Ebrahimi * cl_khr_mipmap_image extension
1070*6467f958SSadaf Ebrahimi *********************************/
1071*6467f958SSadaf Ebrahimi 
1072*6467f958SSadaf Ebrahimi /* cl_sampler_properties */
1073*6467f958SSadaf Ebrahimi #define CL_SAMPLER_MIP_FILTER_MODE_KHR              0x1155
1074*6467f958SSadaf Ebrahimi #define CL_SAMPLER_LOD_MIN_KHR                      0x1156
1075*6467f958SSadaf Ebrahimi #define CL_SAMPLER_LOD_MAX_KHR                      0x1157
1076*6467f958SSadaf Ebrahimi 
1077*6467f958SSadaf Ebrahimi 
1078*6467f958SSadaf Ebrahimi /*********************************
1079*6467f958SSadaf Ebrahimi * cl_khr_priority_hints extension
1080*6467f958SSadaf Ebrahimi *********************************/
1081*6467f958SSadaf Ebrahimi /* This extension define is for backwards compatibility.
1082*6467f958SSadaf Ebrahimi    It shouldn't be required since this extension has no new functions. */
1083*6467f958SSadaf Ebrahimi #define cl_khr_priority_hints 1
1084*6467f958SSadaf Ebrahimi 
1085*6467f958SSadaf Ebrahimi typedef cl_uint  cl_queue_priority_khr;
1086*6467f958SSadaf Ebrahimi 
1087*6467f958SSadaf Ebrahimi /* cl_command_queue_properties */
1088*6467f958SSadaf Ebrahimi #define CL_QUEUE_PRIORITY_KHR 0x1096
1089*6467f958SSadaf Ebrahimi 
1090*6467f958SSadaf Ebrahimi /* cl_queue_priority_khr */
1091*6467f958SSadaf Ebrahimi #define CL_QUEUE_PRIORITY_HIGH_KHR (1<<0)
1092*6467f958SSadaf Ebrahimi #define CL_QUEUE_PRIORITY_MED_KHR (1<<1)
1093*6467f958SSadaf Ebrahimi #define CL_QUEUE_PRIORITY_LOW_KHR (1<<2)
1094*6467f958SSadaf Ebrahimi 
1095*6467f958SSadaf Ebrahimi 
1096*6467f958SSadaf Ebrahimi /*********************************
1097*6467f958SSadaf Ebrahimi * cl_khr_throttle_hints extension
1098*6467f958SSadaf Ebrahimi *********************************/
1099*6467f958SSadaf Ebrahimi /* This extension define is for backwards compatibility.
1100*6467f958SSadaf Ebrahimi    It shouldn't be required since this extension has no new functions. */
1101*6467f958SSadaf Ebrahimi #define cl_khr_throttle_hints 1
1102*6467f958SSadaf Ebrahimi 
1103*6467f958SSadaf Ebrahimi typedef cl_uint  cl_queue_throttle_khr;
1104*6467f958SSadaf Ebrahimi 
1105*6467f958SSadaf Ebrahimi /* cl_command_queue_properties */
1106*6467f958SSadaf Ebrahimi #define CL_QUEUE_THROTTLE_KHR 0x1097
1107*6467f958SSadaf Ebrahimi 
1108*6467f958SSadaf Ebrahimi /* cl_queue_throttle_khr */
1109*6467f958SSadaf Ebrahimi #define CL_QUEUE_THROTTLE_HIGH_KHR (1<<0)
1110*6467f958SSadaf Ebrahimi #define CL_QUEUE_THROTTLE_MED_KHR (1<<1)
1111*6467f958SSadaf Ebrahimi #define CL_QUEUE_THROTTLE_LOW_KHR (1<<2)
1112*6467f958SSadaf Ebrahimi 
1113*6467f958SSadaf Ebrahimi 
1114*6467f958SSadaf Ebrahimi /*********************************
1115*6467f958SSadaf Ebrahimi * cl_khr_subgroup_named_barrier
1116*6467f958SSadaf Ebrahimi *********************************/
1117*6467f958SSadaf Ebrahimi /* This extension define is for backwards compatibility.
1118*6467f958SSadaf Ebrahimi    It shouldn't be required since this extension has no new functions. */
1119*6467f958SSadaf Ebrahimi #define cl_khr_subgroup_named_barrier 1
1120*6467f958SSadaf Ebrahimi 
1121*6467f958SSadaf Ebrahimi /* cl_device_info */
1122*6467f958SSadaf Ebrahimi #define CL_DEVICE_MAX_NAMED_BARRIER_COUNT_KHR       0x2035
1123*6467f958SSadaf Ebrahimi 
1124*6467f958SSadaf Ebrahimi 
1125*6467f958SSadaf Ebrahimi /*********************************
1126*6467f958SSadaf Ebrahimi * cl_khr_extended_versioning
1127*6467f958SSadaf Ebrahimi *********************************/
1128*6467f958SSadaf Ebrahimi 
1129*6467f958SSadaf Ebrahimi #define cl_khr_extended_versioning 1
1130*6467f958SSadaf Ebrahimi 
1131*6467f958SSadaf Ebrahimi #define CL_VERSION_MAJOR_BITS_KHR (10)
1132*6467f958SSadaf Ebrahimi #define CL_VERSION_MINOR_BITS_KHR (10)
1133*6467f958SSadaf Ebrahimi #define CL_VERSION_PATCH_BITS_KHR (12)
1134*6467f958SSadaf Ebrahimi 
1135*6467f958SSadaf Ebrahimi #define CL_VERSION_MAJOR_MASK_KHR ((1 << CL_VERSION_MAJOR_BITS_KHR) - 1)
1136*6467f958SSadaf Ebrahimi #define CL_VERSION_MINOR_MASK_KHR ((1 << CL_VERSION_MINOR_BITS_KHR) - 1)
1137*6467f958SSadaf Ebrahimi #define CL_VERSION_PATCH_MASK_KHR ((1 << CL_VERSION_PATCH_BITS_KHR) - 1)
1138*6467f958SSadaf Ebrahimi 
1139*6467f958SSadaf Ebrahimi #define CL_VERSION_MAJOR_KHR(version) ((version) >> (CL_VERSION_MINOR_BITS_KHR + CL_VERSION_PATCH_BITS_KHR))
1140*6467f958SSadaf Ebrahimi #define CL_VERSION_MINOR_KHR(version) (((version) >> CL_VERSION_PATCH_BITS_KHR) & CL_VERSION_MINOR_MASK_KHR)
1141*6467f958SSadaf Ebrahimi #define CL_VERSION_PATCH_KHR(version) ((version) & CL_VERSION_PATCH_MASK_KHR)
1142*6467f958SSadaf Ebrahimi 
1143*6467f958SSadaf Ebrahimi #define CL_MAKE_VERSION_KHR(major, minor, patch) \
1144*6467f958SSadaf Ebrahimi     ((((major) & CL_VERSION_MAJOR_MASK_KHR) << (CL_VERSION_MINOR_BITS_KHR + CL_VERSION_PATCH_BITS_KHR)) | \
1145*6467f958SSadaf Ebrahimi     (((minor) &  CL_VERSION_MINOR_MASK_KHR) << CL_VERSION_PATCH_BITS_KHR) | \
1146*6467f958SSadaf Ebrahimi     ((patch) & CL_VERSION_PATCH_MASK_KHR))
1147*6467f958SSadaf Ebrahimi 
1148*6467f958SSadaf Ebrahimi typedef cl_uint cl_version_khr;
1149*6467f958SSadaf Ebrahimi 
1150*6467f958SSadaf Ebrahimi #define CL_NAME_VERSION_MAX_NAME_SIZE_KHR 64
1151*6467f958SSadaf Ebrahimi 
1152*6467f958SSadaf Ebrahimi typedef struct _cl_name_version_khr
1153*6467f958SSadaf Ebrahimi {
1154*6467f958SSadaf Ebrahimi     cl_version_khr version;
1155*6467f958SSadaf Ebrahimi     char name[CL_NAME_VERSION_MAX_NAME_SIZE_KHR];
1156*6467f958SSadaf Ebrahimi } cl_name_version_khr;
1157*6467f958SSadaf Ebrahimi 
1158*6467f958SSadaf Ebrahimi /* cl_platform_info */
1159*6467f958SSadaf Ebrahimi #define CL_PLATFORM_NUMERIC_VERSION_KHR                  0x0906
1160*6467f958SSadaf Ebrahimi #define CL_PLATFORM_EXTENSIONS_WITH_VERSION_KHR          0x0907
1161*6467f958SSadaf Ebrahimi 
1162*6467f958SSadaf Ebrahimi /* cl_device_info */
1163*6467f958SSadaf Ebrahimi #define CL_DEVICE_NUMERIC_VERSION_KHR                    0x105E
1164*6467f958SSadaf Ebrahimi #define CL_DEVICE_OPENCL_C_NUMERIC_VERSION_KHR           0x105F
1165*6467f958SSadaf Ebrahimi #define CL_DEVICE_EXTENSIONS_WITH_VERSION_KHR            0x1060
1166*6467f958SSadaf Ebrahimi #define CL_DEVICE_ILS_WITH_VERSION_KHR                   0x1061
1167*6467f958SSadaf Ebrahimi #define CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION_KHR      0x1062
1168*6467f958SSadaf Ebrahimi 
1169*6467f958SSadaf Ebrahimi 
1170*6467f958SSadaf Ebrahimi /*********************************
1171*6467f958SSadaf Ebrahimi * cl_khr_device_uuid extension
1172*6467f958SSadaf Ebrahimi *********************************/
1173*6467f958SSadaf Ebrahimi #define cl_khr_device_uuid 1
1174*6467f958SSadaf Ebrahimi 
1175*6467f958SSadaf Ebrahimi #define CL_UUID_SIZE_KHR 16
1176*6467f958SSadaf Ebrahimi #define CL_LUID_SIZE_KHR 8
1177*6467f958SSadaf Ebrahimi 
1178*6467f958SSadaf Ebrahimi #define CL_DEVICE_UUID_KHR          0x106A
1179*6467f958SSadaf Ebrahimi #define CL_DRIVER_UUID_KHR          0x106B
1180*6467f958SSadaf Ebrahimi #define CL_DEVICE_LUID_VALID_KHR    0x106C
1181*6467f958SSadaf Ebrahimi #define CL_DEVICE_LUID_KHR          0x106D
1182*6467f958SSadaf Ebrahimi #define CL_DEVICE_NODE_MASK_KHR     0x106E
1183*6467f958SSadaf Ebrahimi 
1184*6467f958SSadaf Ebrahimi 
1185*6467f958SSadaf Ebrahimi /***************************************************************
1186*6467f958SSadaf Ebrahimi * cl_khr_pci_bus_info
1187*6467f958SSadaf Ebrahimi ***************************************************************/
1188*6467f958SSadaf Ebrahimi #define cl_khr_pci_bus_info 1
1189*6467f958SSadaf Ebrahimi 
1190*6467f958SSadaf Ebrahimi typedef struct _cl_device_pci_bus_info_khr {
1191*6467f958SSadaf Ebrahimi     cl_uint pci_domain;
1192*6467f958SSadaf Ebrahimi     cl_uint pci_bus;
1193*6467f958SSadaf Ebrahimi     cl_uint pci_device;
1194*6467f958SSadaf Ebrahimi     cl_uint pci_function;
1195*6467f958SSadaf Ebrahimi } cl_device_pci_bus_info_khr;
1196*6467f958SSadaf Ebrahimi 
1197*6467f958SSadaf Ebrahimi /* cl_device_info */
1198*6467f958SSadaf Ebrahimi #define CL_DEVICE_PCI_BUS_INFO_KHR                          0x410F
1199*6467f958SSadaf Ebrahimi 
1200*6467f958SSadaf Ebrahimi 
1201*6467f958SSadaf Ebrahimi /***************************************************************
1202*6467f958SSadaf Ebrahimi * cl_khr_suggested_local_work_size
1203*6467f958SSadaf Ebrahimi ***************************************************************/
1204*6467f958SSadaf Ebrahimi #define cl_khr_suggested_local_work_size 1
1205*6467f958SSadaf Ebrahimi 
1206*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1207*6467f958SSadaf Ebrahimi clGetKernelSuggestedLocalWorkSizeKHR(
1208*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
1209*6467f958SSadaf Ebrahimi     cl_kernel kernel,
1210*6467f958SSadaf Ebrahimi     cl_uint work_dim,
1211*6467f958SSadaf Ebrahimi     const size_t* global_work_offset,
1212*6467f958SSadaf Ebrahimi     const size_t* global_work_size,
1213*6467f958SSadaf Ebrahimi     size_t* suggested_local_work_size) CL_API_SUFFIX__VERSION_3_0;
1214*6467f958SSadaf Ebrahimi 
1215*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
1216*6467f958SSadaf Ebrahimi clGetKernelSuggestedLocalWorkSizeKHR_fn)(
1217*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
1218*6467f958SSadaf Ebrahimi     cl_kernel kernel,
1219*6467f958SSadaf Ebrahimi     cl_uint work_dim,
1220*6467f958SSadaf Ebrahimi     const size_t* global_work_offset,
1221*6467f958SSadaf Ebrahimi     const size_t* global_work_size,
1222*6467f958SSadaf Ebrahimi     size_t* suggested_local_work_size) CL_API_SUFFIX__VERSION_3_0;
1223*6467f958SSadaf Ebrahimi 
1224*6467f958SSadaf Ebrahimi 
1225*6467f958SSadaf Ebrahimi /***************************************************************
1226*6467f958SSadaf Ebrahimi * cl_khr_integer_dot_product
1227*6467f958SSadaf Ebrahimi ***************************************************************/
1228*6467f958SSadaf Ebrahimi #define cl_khr_integer_dot_product 1
1229*6467f958SSadaf Ebrahimi 
1230*6467f958SSadaf Ebrahimi typedef cl_bitfield         cl_device_integer_dot_product_capabilities_khr;
1231*6467f958SSadaf Ebrahimi 
1232*6467f958SSadaf Ebrahimi /* cl_device_integer_dot_product_capabilities_khr */
1233*6467f958SSadaf Ebrahimi #define CL_DEVICE_INTEGER_DOT_PRODUCT_INPUT_4x8BIT_PACKED_KHR (1 << 0)
1234*6467f958SSadaf Ebrahimi #define CL_DEVICE_INTEGER_DOT_PRODUCT_INPUT_4x8BIT_KHR      (1 << 1)
1235*6467f958SSadaf Ebrahimi 
1236*6467f958SSadaf Ebrahimi typedef struct _cl_device_integer_dot_product_acceleration_properties_khr {
1237*6467f958SSadaf Ebrahimi     cl_bool signed_accelerated;
1238*6467f958SSadaf Ebrahimi     cl_bool unsigned_accelerated;
1239*6467f958SSadaf Ebrahimi     cl_bool mixed_signedness_accelerated;
1240*6467f958SSadaf Ebrahimi     cl_bool accumulating_saturating_signed_accelerated;
1241*6467f958SSadaf Ebrahimi     cl_bool accumulating_saturating_unsigned_accelerated;
1242*6467f958SSadaf Ebrahimi     cl_bool accumulating_saturating_mixed_signedness_accelerated;
1243*6467f958SSadaf Ebrahimi } cl_device_integer_dot_product_acceleration_properties_khr;
1244*6467f958SSadaf Ebrahimi 
1245*6467f958SSadaf Ebrahimi /* cl_device_info */
1246*6467f958SSadaf Ebrahimi #define CL_DEVICE_INTEGER_DOT_PRODUCT_CAPABILITIES_KHR                          0x1073
1247*6467f958SSadaf Ebrahimi #define CL_DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_8BIT_KHR          0x1074
1248*6467f958SSadaf Ebrahimi #define CL_DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED_KHR 0x1075
1249*6467f958SSadaf Ebrahimi 
1250*6467f958SSadaf Ebrahimi 
1251*6467f958SSadaf Ebrahimi /***************************************************************
1252*6467f958SSadaf Ebrahimi * cl_khr_external_memory
1253*6467f958SSadaf Ebrahimi ***************************************************************/
1254*6467f958SSadaf Ebrahimi #define cl_khr_external_memory 1
1255*6467f958SSadaf Ebrahimi 
1256*6467f958SSadaf Ebrahimi typedef cl_uint             cl_external_memory_handle_type_khr;
1257*6467f958SSadaf Ebrahimi 
1258*6467f958SSadaf Ebrahimi /* cl_platform_info */
1259*6467f958SSadaf Ebrahimi #define CL_PLATFORM_EXTERNAL_MEMORY_IMPORT_HANDLE_TYPES_KHR 0x2044
1260*6467f958SSadaf Ebrahimi 
1261*6467f958SSadaf Ebrahimi /* cl_device_info */
1262*6467f958SSadaf Ebrahimi #define CL_DEVICE_EXTERNAL_MEMORY_IMPORT_HANDLE_TYPES_KHR   0x204F
1263*6467f958SSadaf Ebrahimi 
1264*6467f958SSadaf Ebrahimi /* cl_mem_properties */
1265*6467f958SSadaf Ebrahimi #define CL_DEVICE_HANDLE_LIST_KHR                           0x2051
1266*6467f958SSadaf Ebrahimi #define CL_DEVICE_HANDLE_LIST_END_KHR                       0
1267*6467f958SSadaf Ebrahimi 
1268*6467f958SSadaf Ebrahimi /* cl_command_type */
1269*6467f958SSadaf Ebrahimi #define CL_COMMAND_ACQUIRE_EXTERNAL_MEM_OBJECTS_KHR         0x2047
1270*6467f958SSadaf Ebrahimi #define CL_COMMAND_RELEASE_EXTERNAL_MEM_OBJECTS_KHR         0x2048
1271*6467f958SSadaf Ebrahimi 
1272*6467f958SSadaf Ebrahimi 
1273*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
1274*6467f958SSadaf Ebrahimi clEnqueueAcquireExternalMemObjectsKHR_fn)(
1275*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
1276*6467f958SSadaf Ebrahimi     cl_uint num_mem_objects,
1277*6467f958SSadaf Ebrahimi     const cl_mem* mem_objects,
1278*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
1279*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
1280*6467f958SSadaf Ebrahimi     cl_event* event) CL_API_SUFFIX__VERSION_3_0;
1281*6467f958SSadaf Ebrahimi 
1282*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
1283*6467f958SSadaf Ebrahimi clEnqueueReleaseExternalMemObjectsKHR_fn)(
1284*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
1285*6467f958SSadaf Ebrahimi     cl_uint num_mem_objects,
1286*6467f958SSadaf Ebrahimi     const cl_mem* mem_objects,
1287*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
1288*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
1289*6467f958SSadaf Ebrahimi     cl_event* event) CL_API_SUFFIX__VERSION_3_0;
1290*6467f958SSadaf Ebrahimi 
1291*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1292*6467f958SSadaf Ebrahimi clEnqueueAcquireExternalMemObjectsKHR(
1293*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
1294*6467f958SSadaf Ebrahimi     cl_uint num_mem_objects,
1295*6467f958SSadaf Ebrahimi     const cl_mem* mem_objects,
1296*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
1297*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
1298*6467f958SSadaf Ebrahimi     cl_event* event) CL_API_SUFFIX__VERSION_3_0;
1299*6467f958SSadaf Ebrahimi 
1300*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1301*6467f958SSadaf Ebrahimi clEnqueueReleaseExternalMemObjectsKHR(
1302*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
1303*6467f958SSadaf Ebrahimi     cl_uint num_mem_objects,
1304*6467f958SSadaf Ebrahimi     const cl_mem* mem_objects,
1305*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
1306*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
1307*6467f958SSadaf Ebrahimi     cl_event* event) CL_API_SUFFIX__VERSION_3_0;
1308*6467f958SSadaf Ebrahimi 
1309*6467f958SSadaf Ebrahimi /***************************************************************
1310*6467f958SSadaf Ebrahimi * cl_khr_external_memory_dma_buf
1311*6467f958SSadaf Ebrahimi ***************************************************************/
1312*6467f958SSadaf Ebrahimi #define cl_khr_external_memory_dma_buf 1
1313*6467f958SSadaf Ebrahimi 
1314*6467f958SSadaf Ebrahimi /* cl_external_memory_handle_type_khr */
1315*6467f958SSadaf Ebrahimi #define CL_EXTERNAL_MEMORY_HANDLE_DMA_BUF_KHR               0x2067
1316*6467f958SSadaf Ebrahimi 
1317*6467f958SSadaf Ebrahimi /***************************************************************
1318*6467f958SSadaf Ebrahimi * cl_khr_external_memory_dx
1319*6467f958SSadaf Ebrahimi ***************************************************************/
1320*6467f958SSadaf Ebrahimi #define cl_khr_external_memory_dx 1
1321*6467f958SSadaf Ebrahimi 
1322*6467f958SSadaf Ebrahimi /* cl_external_memory_handle_type_khr */
1323*6467f958SSadaf Ebrahimi #define CL_EXTERNAL_MEMORY_HANDLE_D3D11_TEXTURE_KHR         0x2063
1324*6467f958SSadaf Ebrahimi #define CL_EXTERNAL_MEMORY_HANDLE_D3D11_TEXTURE_KMT_KHR     0x2064
1325*6467f958SSadaf Ebrahimi #define CL_EXTERNAL_MEMORY_HANDLE_D3D12_HEAP_KHR            0x2065
1326*6467f958SSadaf Ebrahimi #define CL_EXTERNAL_MEMORY_HANDLE_D3D12_RESOURCE_KHR        0x2066
1327*6467f958SSadaf Ebrahimi 
1328*6467f958SSadaf Ebrahimi /***************************************************************
1329*6467f958SSadaf Ebrahimi * cl_khr_external_memory_opaque_fd
1330*6467f958SSadaf Ebrahimi ***************************************************************/
1331*6467f958SSadaf Ebrahimi #define cl_khr_external_memory_opaque_fd 1
1332*6467f958SSadaf Ebrahimi 
1333*6467f958SSadaf Ebrahimi /* cl_external_memory_handle_type_khr */
1334*6467f958SSadaf Ebrahimi #define CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_FD_KHR             0x2060
1335*6467f958SSadaf Ebrahimi 
1336*6467f958SSadaf Ebrahimi /***************************************************************
1337*6467f958SSadaf Ebrahimi * cl_khr_external_memory_win32
1338*6467f958SSadaf Ebrahimi ***************************************************************/
1339*6467f958SSadaf Ebrahimi #define cl_khr_external_memory_win32 1
1340*6467f958SSadaf Ebrahimi 
1341*6467f958SSadaf Ebrahimi /* cl_external_memory_handle_type_khr */
1342*6467f958SSadaf Ebrahimi #define CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_WIN32_KHR          0x2061
1343*6467f958SSadaf Ebrahimi #define CL_EXTERNAL_MEMORY_HANDLE_OPAQUE_WIN32_KMT_KHR      0x2062
1344*6467f958SSadaf Ebrahimi 
1345*6467f958SSadaf Ebrahimi /***************************************************************
1346*6467f958SSadaf Ebrahimi * cl_khr_external_semaphore
1347*6467f958SSadaf Ebrahimi ***************************************************************/
1348*6467f958SSadaf Ebrahimi #define cl_khr_external_semaphore 1
1349*6467f958SSadaf Ebrahimi 
1350*6467f958SSadaf Ebrahimi typedef struct _cl_semaphore_khr * cl_semaphore_khr;
1351*6467f958SSadaf Ebrahimi typedef cl_uint             cl_external_semaphore_handle_type_khr;
1352*6467f958SSadaf Ebrahimi 
1353*6467f958SSadaf Ebrahimi /* cl_platform_info */
1354*6467f958SSadaf Ebrahimi #define CL_PLATFORM_SEMAPHORE_IMPORT_HANDLE_TYPES_KHR       0x2037
1355*6467f958SSadaf Ebrahimi #define CL_PLATFORM_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR       0x2038
1356*6467f958SSadaf Ebrahimi 
1357*6467f958SSadaf Ebrahimi /* cl_device_info */
1358*6467f958SSadaf Ebrahimi #define CL_DEVICE_SEMAPHORE_IMPORT_HANDLE_TYPES_KHR         0x204D
1359*6467f958SSadaf Ebrahimi #define CL_DEVICE_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR         0x204E
1360*6467f958SSadaf Ebrahimi 
1361*6467f958SSadaf Ebrahimi /* cl_semaphore_properties_khr */
1362*6467f958SSadaf Ebrahimi #define CL_SEMAPHORE_EXPORT_HANDLE_TYPES_KHR                0x203F
1363*6467f958SSadaf Ebrahimi #define CL_SEMAPHORE_EXPORT_HANDLE_TYPES_LIST_END_KHR       0
1364*6467f958SSadaf Ebrahimi 
1365*6467f958SSadaf Ebrahimi 
1366*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
1367*6467f958SSadaf Ebrahimi clGetSemaphoreHandleForTypeKHR_fn)(
1368*6467f958SSadaf Ebrahimi     cl_semaphore_khr sema_object,
1369*6467f958SSadaf Ebrahimi     cl_device_id device,
1370*6467f958SSadaf Ebrahimi     cl_external_semaphore_handle_type_khr handle_type,
1371*6467f958SSadaf Ebrahimi     size_t handle_size,
1372*6467f958SSadaf Ebrahimi     void* handle_ptr,
1373*6467f958SSadaf Ebrahimi     size_t* handle_size_ret) CL_API_SUFFIX__VERSION_1_2;
1374*6467f958SSadaf Ebrahimi 
1375*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1376*6467f958SSadaf Ebrahimi clGetSemaphoreHandleForTypeKHR(
1377*6467f958SSadaf Ebrahimi     cl_semaphore_khr sema_object,
1378*6467f958SSadaf Ebrahimi     cl_device_id device,
1379*6467f958SSadaf Ebrahimi     cl_external_semaphore_handle_type_khr handle_type,
1380*6467f958SSadaf Ebrahimi     size_t handle_size,
1381*6467f958SSadaf Ebrahimi     void* handle_ptr,
1382*6467f958SSadaf Ebrahimi     size_t* handle_size_ret) CL_API_SUFFIX__VERSION_1_2;
1383*6467f958SSadaf Ebrahimi 
1384*6467f958SSadaf Ebrahimi /***************************************************************
1385*6467f958SSadaf Ebrahimi * cl_khr_external_semaphore_dx_fence
1386*6467f958SSadaf Ebrahimi ***************************************************************/
1387*6467f958SSadaf Ebrahimi #define cl_khr_external_semaphore_dx_fence 1
1388*6467f958SSadaf Ebrahimi 
1389*6467f958SSadaf Ebrahimi /* cl_external_semaphore_handle_type_khr */
1390*6467f958SSadaf Ebrahimi #define CL_SEMAPHORE_HANDLE_D3D12_FENCE_KHR                 0x2059
1391*6467f958SSadaf Ebrahimi 
1392*6467f958SSadaf Ebrahimi /***************************************************************
1393*6467f958SSadaf Ebrahimi * cl_khr_external_semaphore_opaque_fd
1394*6467f958SSadaf Ebrahimi ***************************************************************/
1395*6467f958SSadaf Ebrahimi #define cl_khr_external_semaphore_opaque_fd 1
1396*6467f958SSadaf Ebrahimi 
1397*6467f958SSadaf Ebrahimi /* cl_external_semaphore_handle_type_khr */
1398*6467f958SSadaf Ebrahimi #define CL_SEMAPHORE_HANDLE_OPAQUE_FD_KHR                   0x2055
1399*6467f958SSadaf Ebrahimi 
1400*6467f958SSadaf Ebrahimi /***************************************************************
1401*6467f958SSadaf Ebrahimi * cl_khr_external_semaphore_sync_fd
1402*6467f958SSadaf Ebrahimi ***************************************************************/
1403*6467f958SSadaf Ebrahimi #define cl_khr_external_semaphore_sync_fd 1
1404*6467f958SSadaf Ebrahimi 
1405*6467f958SSadaf Ebrahimi /* cl_external_semaphore_handle_type_khr */
1406*6467f958SSadaf Ebrahimi #define CL_SEMAPHORE_HANDLE_SYNC_FD_KHR                     0x2058
1407*6467f958SSadaf Ebrahimi 
1408*6467f958SSadaf Ebrahimi /***************************************************************
1409*6467f958SSadaf Ebrahimi * cl_khr_external_semaphore_win32
1410*6467f958SSadaf Ebrahimi ***************************************************************/
1411*6467f958SSadaf Ebrahimi #define cl_khr_external_semaphore_win32 1
1412*6467f958SSadaf Ebrahimi 
1413*6467f958SSadaf Ebrahimi /* cl_external_semaphore_handle_type_khr */
1414*6467f958SSadaf Ebrahimi #define CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_KHR                0x2056
1415*6467f958SSadaf Ebrahimi #define CL_SEMAPHORE_HANDLE_OPAQUE_WIN32_KMT_KHR            0x2057
1416*6467f958SSadaf Ebrahimi 
1417*6467f958SSadaf Ebrahimi /***************************************************************
1418*6467f958SSadaf Ebrahimi * cl_khr_semaphore
1419*6467f958SSadaf Ebrahimi ***************************************************************/
1420*6467f958SSadaf Ebrahimi #define cl_khr_semaphore 1
1421*6467f958SSadaf Ebrahimi 
1422*6467f958SSadaf Ebrahimi /* type cl_semaphore_khr */
1423*6467f958SSadaf Ebrahimi typedef cl_properties       cl_semaphore_properties_khr;
1424*6467f958SSadaf Ebrahimi typedef cl_uint             cl_semaphore_info_khr;
1425*6467f958SSadaf Ebrahimi typedef cl_uint             cl_semaphore_type_khr;
1426*6467f958SSadaf Ebrahimi typedef cl_ulong            cl_semaphore_payload_khr;
1427*6467f958SSadaf Ebrahimi 
1428*6467f958SSadaf Ebrahimi /* cl_semaphore_type */
1429*6467f958SSadaf Ebrahimi #define CL_SEMAPHORE_TYPE_BINARY_KHR                        1
1430*6467f958SSadaf Ebrahimi 
1431*6467f958SSadaf Ebrahimi /* cl_platform_info */
1432*6467f958SSadaf Ebrahimi #define CL_PLATFORM_SEMAPHORE_TYPES_KHR                     0x2036
1433*6467f958SSadaf Ebrahimi 
1434*6467f958SSadaf Ebrahimi /* cl_device_info */
1435*6467f958SSadaf Ebrahimi #define CL_DEVICE_SEMAPHORE_TYPES_KHR                       0x204C
1436*6467f958SSadaf Ebrahimi 
1437*6467f958SSadaf Ebrahimi /* cl_semaphore_info_khr */
1438*6467f958SSadaf Ebrahimi #define CL_SEMAPHORE_CONTEXT_KHR                            0x2039
1439*6467f958SSadaf Ebrahimi #define CL_SEMAPHORE_REFERENCE_COUNT_KHR                    0x203A
1440*6467f958SSadaf Ebrahimi #define CL_SEMAPHORE_PROPERTIES_KHR                         0x203B
1441*6467f958SSadaf Ebrahimi #define CL_SEMAPHORE_PAYLOAD_KHR                            0x203C
1442*6467f958SSadaf Ebrahimi 
1443*6467f958SSadaf Ebrahimi /* cl_semaphore_info_khr or cl_semaphore_properties_khr */
1444*6467f958SSadaf Ebrahimi #define CL_SEMAPHORE_TYPE_KHR                               0x203D
1445*6467f958SSadaf Ebrahimi /* enum CL_DEVICE_HANDLE_LIST_KHR */
1446*6467f958SSadaf Ebrahimi /* enum CL_DEVICE_HANDLE_LIST_END_KHR */
1447*6467f958SSadaf Ebrahimi 
1448*6467f958SSadaf Ebrahimi /* cl_command_type */
1449*6467f958SSadaf Ebrahimi #define CL_COMMAND_SEMAPHORE_WAIT_KHR                       0x2042
1450*6467f958SSadaf Ebrahimi #define CL_COMMAND_SEMAPHORE_SIGNAL_KHR                     0x2043
1451*6467f958SSadaf Ebrahimi 
1452*6467f958SSadaf Ebrahimi /* Error codes */
1453*6467f958SSadaf Ebrahimi #define CL_INVALID_SEMAPHORE_KHR                            -1142
1454*6467f958SSadaf Ebrahimi 
1455*6467f958SSadaf Ebrahimi 
1456*6467f958SSadaf Ebrahimi typedef cl_semaphore_khr (CL_API_CALL *
1457*6467f958SSadaf Ebrahimi clCreateSemaphoreWithPropertiesKHR_fn)(
1458*6467f958SSadaf Ebrahimi     cl_context context,
1459*6467f958SSadaf Ebrahimi     const cl_semaphore_properties_khr* sema_props,
1460*6467f958SSadaf Ebrahimi     cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2;
1461*6467f958SSadaf Ebrahimi 
1462*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
1463*6467f958SSadaf Ebrahimi clEnqueueWaitSemaphoresKHR_fn)(
1464*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
1465*6467f958SSadaf Ebrahimi     cl_uint num_sema_objects,
1466*6467f958SSadaf Ebrahimi     const cl_semaphore_khr* sema_objects,
1467*6467f958SSadaf Ebrahimi     const cl_semaphore_payload_khr* sema_payload_list,
1468*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
1469*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
1470*6467f958SSadaf Ebrahimi     cl_event* event) CL_API_SUFFIX__VERSION_1_2;
1471*6467f958SSadaf Ebrahimi 
1472*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
1473*6467f958SSadaf Ebrahimi clEnqueueSignalSemaphoresKHR_fn)(
1474*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
1475*6467f958SSadaf Ebrahimi     cl_uint num_sema_objects,
1476*6467f958SSadaf Ebrahimi     const cl_semaphore_khr* sema_objects,
1477*6467f958SSadaf Ebrahimi     const cl_semaphore_payload_khr* sema_payload_list,
1478*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
1479*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
1480*6467f958SSadaf Ebrahimi     cl_event* event) CL_API_SUFFIX__VERSION_1_2;
1481*6467f958SSadaf Ebrahimi 
1482*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
1483*6467f958SSadaf Ebrahimi clGetSemaphoreInfoKHR_fn)(
1484*6467f958SSadaf Ebrahimi     cl_semaphore_khr sema_object,
1485*6467f958SSadaf Ebrahimi     cl_semaphore_info_khr param_name,
1486*6467f958SSadaf Ebrahimi     size_t param_value_size,
1487*6467f958SSadaf Ebrahimi     void* param_value,
1488*6467f958SSadaf Ebrahimi     size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2;
1489*6467f958SSadaf Ebrahimi 
1490*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
1491*6467f958SSadaf Ebrahimi clReleaseSemaphoreKHR_fn)(
1492*6467f958SSadaf Ebrahimi     cl_semaphore_khr sema_object) CL_API_SUFFIX__VERSION_1_2;
1493*6467f958SSadaf Ebrahimi 
1494*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
1495*6467f958SSadaf Ebrahimi clRetainSemaphoreKHR_fn)(
1496*6467f958SSadaf Ebrahimi     cl_semaphore_khr sema_object) CL_API_SUFFIX__VERSION_1_2;
1497*6467f958SSadaf Ebrahimi 
1498*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_semaphore_khr CL_API_CALL
1499*6467f958SSadaf Ebrahimi clCreateSemaphoreWithPropertiesKHR(
1500*6467f958SSadaf Ebrahimi     cl_context context,
1501*6467f958SSadaf Ebrahimi     const cl_semaphore_properties_khr* sema_props,
1502*6467f958SSadaf Ebrahimi     cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2;
1503*6467f958SSadaf Ebrahimi 
1504*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1505*6467f958SSadaf Ebrahimi clEnqueueWaitSemaphoresKHR(
1506*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
1507*6467f958SSadaf Ebrahimi     cl_uint num_sema_objects,
1508*6467f958SSadaf Ebrahimi     const cl_semaphore_khr* sema_objects,
1509*6467f958SSadaf Ebrahimi     const cl_semaphore_payload_khr* sema_payload_list,
1510*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
1511*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
1512*6467f958SSadaf Ebrahimi     cl_event* event) CL_API_SUFFIX__VERSION_1_2;
1513*6467f958SSadaf Ebrahimi 
1514*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1515*6467f958SSadaf Ebrahimi clEnqueueSignalSemaphoresKHR(
1516*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
1517*6467f958SSadaf Ebrahimi     cl_uint num_sema_objects,
1518*6467f958SSadaf Ebrahimi     const cl_semaphore_khr* sema_objects,
1519*6467f958SSadaf Ebrahimi     const cl_semaphore_payload_khr* sema_payload_list,
1520*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
1521*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
1522*6467f958SSadaf Ebrahimi     cl_event* event) CL_API_SUFFIX__VERSION_1_2;
1523*6467f958SSadaf Ebrahimi 
1524*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1525*6467f958SSadaf Ebrahimi clGetSemaphoreInfoKHR(
1526*6467f958SSadaf Ebrahimi     cl_semaphore_khr sema_object,
1527*6467f958SSadaf Ebrahimi     cl_semaphore_info_khr param_name,
1528*6467f958SSadaf Ebrahimi     size_t param_value_size,
1529*6467f958SSadaf Ebrahimi     void* param_value,
1530*6467f958SSadaf Ebrahimi     size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_2;
1531*6467f958SSadaf Ebrahimi 
1532*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1533*6467f958SSadaf Ebrahimi clReleaseSemaphoreKHR(
1534*6467f958SSadaf Ebrahimi     cl_semaphore_khr sema_object) CL_API_SUFFIX__VERSION_1_2;
1535*6467f958SSadaf Ebrahimi 
1536*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1537*6467f958SSadaf Ebrahimi clRetainSemaphoreKHR(
1538*6467f958SSadaf Ebrahimi     cl_semaphore_khr sema_object) CL_API_SUFFIX__VERSION_1_2;
1539*6467f958SSadaf Ebrahimi 
1540*6467f958SSadaf Ebrahimi /**********************************
1541*6467f958SSadaf Ebrahimi  * cl_arm_import_memory extension *
1542*6467f958SSadaf Ebrahimi  **********************************/
1543*6467f958SSadaf Ebrahimi #define cl_arm_import_memory 1
1544*6467f958SSadaf Ebrahimi 
1545*6467f958SSadaf Ebrahimi typedef intptr_t cl_import_properties_arm;
1546*6467f958SSadaf Ebrahimi 
1547*6467f958SSadaf Ebrahimi /* Default and valid proporties name for cl_arm_import_memory */
1548*6467f958SSadaf Ebrahimi #define CL_IMPORT_TYPE_ARM                        0x40B2
1549*6467f958SSadaf Ebrahimi 
1550*6467f958SSadaf Ebrahimi /* Host process memory type default value for CL_IMPORT_TYPE_ARM property */
1551*6467f958SSadaf Ebrahimi #define CL_IMPORT_TYPE_HOST_ARM                   0x40B3
1552*6467f958SSadaf Ebrahimi 
1553*6467f958SSadaf Ebrahimi /* DMA BUF memory type value for CL_IMPORT_TYPE_ARM property */
1554*6467f958SSadaf Ebrahimi #define CL_IMPORT_TYPE_DMA_BUF_ARM                0x40B4
1555*6467f958SSadaf Ebrahimi 
1556*6467f958SSadaf Ebrahimi /* Protected memory property */
1557*6467f958SSadaf Ebrahimi #define CL_IMPORT_TYPE_PROTECTED_ARM              0x40B5
1558*6467f958SSadaf Ebrahimi 
1559*6467f958SSadaf Ebrahimi /* Android hardware buffer type value for CL_IMPORT_TYPE_ARM property */
1560*6467f958SSadaf Ebrahimi #define CL_IMPORT_TYPE_ANDROID_HARDWARE_BUFFER_ARM 0x41E2
1561*6467f958SSadaf Ebrahimi 
1562*6467f958SSadaf Ebrahimi /* Data consistency with host property */
1563*6467f958SSadaf Ebrahimi #define CL_IMPORT_DMA_BUF_DATA_CONSISTENCY_WITH_HOST_ARM 0x41E3
1564*6467f958SSadaf Ebrahimi 
1565*6467f958SSadaf Ebrahimi /* Index of plane in a multiplanar hardware buffer */
1566*6467f958SSadaf Ebrahimi #define CL_IMPORT_ANDROID_HARDWARE_BUFFER_PLANE_INDEX_ARM 0x41EF
1567*6467f958SSadaf Ebrahimi 
1568*6467f958SSadaf Ebrahimi /* Index of layer in a multilayer hardware buffer */
1569*6467f958SSadaf Ebrahimi #define CL_IMPORT_ANDROID_HARDWARE_BUFFER_LAYER_INDEX_ARM 0x41F0
1570*6467f958SSadaf Ebrahimi 
1571*6467f958SSadaf Ebrahimi /* Import memory size value to indicate a size for the whole buffer */
1572*6467f958SSadaf Ebrahimi #define CL_IMPORT_MEMORY_WHOLE_ALLOCATION_ARM SIZE_MAX
1573*6467f958SSadaf Ebrahimi 
1574*6467f958SSadaf Ebrahimi /* This extension adds a new function that allows for direct memory import into
1575*6467f958SSadaf Ebrahimi  * OpenCL via the clImportMemoryARM function.
1576*6467f958SSadaf Ebrahimi  *
1577*6467f958SSadaf Ebrahimi  * Memory imported through this interface will be mapped into the device's page
1578*6467f958SSadaf Ebrahimi  * tables directly, providing zero copy access. It will never fall back to copy
1579*6467f958SSadaf Ebrahimi  * operations and aliased buffers.
1580*6467f958SSadaf Ebrahimi  *
1581*6467f958SSadaf Ebrahimi  * Types of memory supported for import are specified as additional extension
1582*6467f958SSadaf Ebrahimi  * strings.
1583*6467f958SSadaf Ebrahimi  *
1584*6467f958SSadaf Ebrahimi  * This extension produces cl_mem allocations which are compatible with all other
1585*6467f958SSadaf Ebrahimi  * users of cl_mem in the standard API.
1586*6467f958SSadaf Ebrahimi  *
1587*6467f958SSadaf Ebrahimi  * This extension maps pages with the same properties as the normal buffer creation
1588*6467f958SSadaf Ebrahimi  * function clCreateBuffer.
1589*6467f958SSadaf Ebrahimi  */
1590*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_mem CL_API_CALL
1591*6467f958SSadaf Ebrahimi clImportMemoryARM( cl_context context,
1592*6467f958SSadaf Ebrahimi                    cl_mem_flags flags,
1593*6467f958SSadaf Ebrahimi                    const cl_import_properties_arm *properties,
1594*6467f958SSadaf Ebrahimi                    void *memory,
1595*6467f958SSadaf Ebrahimi                    size_t size,
1596*6467f958SSadaf Ebrahimi                    cl_int *errcode_ret) CL_API_SUFFIX__VERSION_1_0;
1597*6467f958SSadaf Ebrahimi 
1598*6467f958SSadaf Ebrahimi 
1599*6467f958SSadaf Ebrahimi /******************************************
1600*6467f958SSadaf Ebrahimi  * cl_arm_shared_virtual_memory extension *
1601*6467f958SSadaf Ebrahimi  ******************************************/
1602*6467f958SSadaf Ebrahimi #define cl_arm_shared_virtual_memory 1
1603*6467f958SSadaf Ebrahimi 
1604*6467f958SSadaf Ebrahimi /* Used by clGetDeviceInfo */
1605*6467f958SSadaf Ebrahimi #define CL_DEVICE_SVM_CAPABILITIES_ARM                  0x40B6
1606*6467f958SSadaf Ebrahimi 
1607*6467f958SSadaf Ebrahimi /* Used by clGetMemObjectInfo */
1608*6467f958SSadaf Ebrahimi #define CL_MEM_USES_SVM_POINTER_ARM                     0x40B7
1609*6467f958SSadaf Ebrahimi 
1610*6467f958SSadaf Ebrahimi /* Used by clSetKernelExecInfoARM: */
1611*6467f958SSadaf Ebrahimi #define CL_KERNEL_EXEC_INFO_SVM_PTRS_ARM                0x40B8
1612*6467f958SSadaf Ebrahimi #define CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM_ARM   0x40B9
1613*6467f958SSadaf Ebrahimi 
1614*6467f958SSadaf Ebrahimi /* To be used by clGetEventInfo: */
1615*6467f958SSadaf Ebrahimi #define CL_COMMAND_SVM_FREE_ARM                         0x40BA
1616*6467f958SSadaf Ebrahimi #define CL_COMMAND_SVM_MEMCPY_ARM                       0x40BB
1617*6467f958SSadaf Ebrahimi #define CL_COMMAND_SVM_MEMFILL_ARM                      0x40BC
1618*6467f958SSadaf Ebrahimi #define CL_COMMAND_SVM_MAP_ARM                          0x40BD
1619*6467f958SSadaf Ebrahimi #define CL_COMMAND_SVM_UNMAP_ARM                        0x40BE
1620*6467f958SSadaf Ebrahimi 
1621*6467f958SSadaf Ebrahimi /* Flag values returned by clGetDeviceInfo with CL_DEVICE_SVM_CAPABILITIES_ARM as the param_name. */
1622*6467f958SSadaf Ebrahimi #define CL_DEVICE_SVM_COARSE_GRAIN_BUFFER_ARM           (1 << 0)
1623*6467f958SSadaf Ebrahimi #define CL_DEVICE_SVM_FINE_GRAIN_BUFFER_ARM             (1 << 1)
1624*6467f958SSadaf Ebrahimi #define CL_DEVICE_SVM_FINE_GRAIN_SYSTEM_ARM             (1 << 2)
1625*6467f958SSadaf Ebrahimi #define CL_DEVICE_SVM_ATOMICS_ARM                       (1 << 3)
1626*6467f958SSadaf Ebrahimi 
1627*6467f958SSadaf Ebrahimi /* Flag values used by clSVMAllocARM: */
1628*6467f958SSadaf Ebrahimi #define CL_MEM_SVM_FINE_GRAIN_BUFFER_ARM                (1 << 10)
1629*6467f958SSadaf Ebrahimi #define CL_MEM_SVM_ATOMICS_ARM                          (1 << 11)
1630*6467f958SSadaf Ebrahimi 
1631*6467f958SSadaf Ebrahimi typedef cl_bitfield cl_svm_mem_flags_arm;
1632*6467f958SSadaf Ebrahimi typedef cl_uint     cl_kernel_exec_info_arm;
1633*6467f958SSadaf Ebrahimi typedef cl_bitfield cl_device_svm_capabilities_arm;
1634*6467f958SSadaf Ebrahimi 
1635*6467f958SSadaf Ebrahimi extern CL_API_ENTRY void * CL_API_CALL
1636*6467f958SSadaf Ebrahimi clSVMAllocARM(cl_context       context,
1637*6467f958SSadaf Ebrahimi               cl_svm_mem_flags_arm flags,
1638*6467f958SSadaf Ebrahimi               size_t           size,
1639*6467f958SSadaf Ebrahimi               cl_uint          alignment) CL_API_SUFFIX__VERSION_1_2;
1640*6467f958SSadaf Ebrahimi 
1641*6467f958SSadaf Ebrahimi extern CL_API_ENTRY void CL_API_CALL
1642*6467f958SSadaf Ebrahimi clSVMFreeARM(cl_context        context,
1643*6467f958SSadaf Ebrahimi              void *            svm_pointer) CL_API_SUFFIX__VERSION_1_2;
1644*6467f958SSadaf Ebrahimi 
1645*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1646*6467f958SSadaf Ebrahimi clEnqueueSVMFreeARM(cl_command_queue  command_queue,
1647*6467f958SSadaf Ebrahimi                     cl_uint           num_svm_pointers,
1648*6467f958SSadaf Ebrahimi                     void *            svm_pointers[],
1649*6467f958SSadaf Ebrahimi                     void (CL_CALLBACK * pfn_free_func)(cl_command_queue queue,
1650*6467f958SSadaf Ebrahimi                                                        cl_uint          num_svm_pointers,
1651*6467f958SSadaf Ebrahimi                                                        void *           svm_pointers[],
1652*6467f958SSadaf Ebrahimi                                                        void *           user_data),
1653*6467f958SSadaf Ebrahimi                     void *            user_data,
1654*6467f958SSadaf Ebrahimi                     cl_uint           num_events_in_wait_list,
1655*6467f958SSadaf Ebrahimi                     const cl_event *  event_wait_list,
1656*6467f958SSadaf Ebrahimi                     cl_event *        event) CL_API_SUFFIX__VERSION_1_2;
1657*6467f958SSadaf Ebrahimi 
1658*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1659*6467f958SSadaf Ebrahimi clEnqueueSVMMemcpyARM(cl_command_queue  command_queue,
1660*6467f958SSadaf Ebrahimi                       cl_bool           blocking_copy,
1661*6467f958SSadaf Ebrahimi                       void *            dst_ptr,
1662*6467f958SSadaf Ebrahimi                       const void *      src_ptr,
1663*6467f958SSadaf Ebrahimi                       size_t            size,
1664*6467f958SSadaf Ebrahimi                       cl_uint           num_events_in_wait_list,
1665*6467f958SSadaf Ebrahimi                       const cl_event *  event_wait_list,
1666*6467f958SSadaf Ebrahimi                       cl_event *        event) CL_API_SUFFIX__VERSION_1_2;
1667*6467f958SSadaf Ebrahimi 
1668*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1669*6467f958SSadaf Ebrahimi clEnqueueSVMMemFillARM(cl_command_queue  command_queue,
1670*6467f958SSadaf Ebrahimi                        void *            svm_ptr,
1671*6467f958SSadaf Ebrahimi                        const void *      pattern,
1672*6467f958SSadaf Ebrahimi                        size_t            pattern_size,
1673*6467f958SSadaf Ebrahimi                        size_t            size,
1674*6467f958SSadaf Ebrahimi                        cl_uint           num_events_in_wait_list,
1675*6467f958SSadaf Ebrahimi                        const cl_event *  event_wait_list,
1676*6467f958SSadaf Ebrahimi                        cl_event *        event) CL_API_SUFFIX__VERSION_1_2;
1677*6467f958SSadaf Ebrahimi 
1678*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1679*6467f958SSadaf Ebrahimi clEnqueueSVMMapARM(cl_command_queue  command_queue,
1680*6467f958SSadaf Ebrahimi                    cl_bool           blocking_map,
1681*6467f958SSadaf Ebrahimi                    cl_map_flags      flags,
1682*6467f958SSadaf Ebrahimi                    void *            svm_ptr,
1683*6467f958SSadaf Ebrahimi                    size_t            size,
1684*6467f958SSadaf Ebrahimi                    cl_uint           num_events_in_wait_list,
1685*6467f958SSadaf Ebrahimi                    const cl_event *  event_wait_list,
1686*6467f958SSadaf Ebrahimi                    cl_event *        event) CL_API_SUFFIX__VERSION_1_2;
1687*6467f958SSadaf Ebrahimi 
1688*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1689*6467f958SSadaf Ebrahimi clEnqueueSVMUnmapARM(cl_command_queue  command_queue,
1690*6467f958SSadaf Ebrahimi                      void *            svm_ptr,
1691*6467f958SSadaf Ebrahimi                      cl_uint           num_events_in_wait_list,
1692*6467f958SSadaf Ebrahimi                      const cl_event *  event_wait_list,
1693*6467f958SSadaf Ebrahimi                      cl_event *        event) CL_API_SUFFIX__VERSION_1_2;
1694*6467f958SSadaf Ebrahimi 
1695*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1696*6467f958SSadaf Ebrahimi clSetKernelArgSVMPointerARM(cl_kernel    kernel,
1697*6467f958SSadaf Ebrahimi                             cl_uint      arg_index,
1698*6467f958SSadaf Ebrahimi                             const void * arg_value) CL_API_SUFFIX__VERSION_1_2;
1699*6467f958SSadaf Ebrahimi 
1700*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1701*6467f958SSadaf Ebrahimi clSetKernelExecInfoARM(cl_kernel            kernel,
1702*6467f958SSadaf Ebrahimi                        cl_kernel_exec_info_arm  param_name,
1703*6467f958SSadaf Ebrahimi                        size_t               param_value_size,
1704*6467f958SSadaf Ebrahimi                        const void *         param_value) CL_API_SUFFIX__VERSION_1_2;
1705*6467f958SSadaf Ebrahimi 
1706*6467f958SSadaf Ebrahimi /********************************
1707*6467f958SSadaf Ebrahimi  * cl_arm_get_core_id extension *
1708*6467f958SSadaf Ebrahimi  ********************************/
1709*6467f958SSadaf Ebrahimi 
1710*6467f958SSadaf Ebrahimi #ifdef CL_VERSION_1_2
1711*6467f958SSadaf Ebrahimi 
1712*6467f958SSadaf Ebrahimi #define cl_arm_get_core_id 1
1713*6467f958SSadaf Ebrahimi 
1714*6467f958SSadaf Ebrahimi /* Device info property for bitfield of cores present */
1715*6467f958SSadaf Ebrahimi #define CL_DEVICE_COMPUTE_UNITS_BITFIELD_ARM      0x40BF
1716*6467f958SSadaf Ebrahimi 
1717*6467f958SSadaf Ebrahimi #endif  /* CL_VERSION_1_2 */
1718*6467f958SSadaf Ebrahimi 
1719*6467f958SSadaf Ebrahimi /*********************************
1720*6467f958SSadaf Ebrahimi * cl_arm_job_slot_selection
1721*6467f958SSadaf Ebrahimi *********************************/
1722*6467f958SSadaf Ebrahimi 
1723*6467f958SSadaf Ebrahimi #define cl_arm_job_slot_selection 1
1724*6467f958SSadaf Ebrahimi 
1725*6467f958SSadaf Ebrahimi /* cl_device_info */
1726*6467f958SSadaf Ebrahimi #define CL_DEVICE_JOB_SLOTS_ARM                   0x41E0
1727*6467f958SSadaf Ebrahimi 
1728*6467f958SSadaf Ebrahimi /* cl_command_queue_properties */
1729*6467f958SSadaf Ebrahimi #define CL_QUEUE_JOB_SLOT_ARM                     0x41E1
1730*6467f958SSadaf Ebrahimi 
1731*6467f958SSadaf Ebrahimi /*********************************
1732*6467f958SSadaf Ebrahimi * cl_arm_scheduling_controls
1733*6467f958SSadaf Ebrahimi *********************************/
1734*6467f958SSadaf Ebrahimi 
1735*6467f958SSadaf Ebrahimi #define cl_arm_scheduling_controls 1
1736*6467f958SSadaf Ebrahimi 
1737*6467f958SSadaf Ebrahimi typedef cl_bitfield cl_device_scheduling_controls_capabilities_arm;
1738*6467f958SSadaf Ebrahimi 
1739*6467f958SSadaf Ebrahimi /* cl_device_info */
1740*6467f958SSadaf Ebrahimi #define CL_DEVICE_SCHEDULING_CONTROLS_CAPABILITIES_ARM          0x41E4
1741*6467f958SSadaf Ebrahimi 
1742*6467f958SSadaf Ebrahimi #define CL_DEVICE_SCHEDULING_KERNEL_BATCHING_ARM               (1 << 0)
1743*6467f958SSadaf Ebrahimi #define CL_DEVICE_SCHEDULING_WORKGROUP_BATCH_SIZE_ARM          (1 << 1)
1744*6467f958SSadaf Ebrahimi #define CL_DEVICE_SCHEDULING_WORKGROUP_BATCH_SIZE_MODIFIER_ARM (1 << 2)
1745*6467f958SSadaf Ebrahimi #define CL_DEVICE_SCHEDULING_DEFERRED_FLUSH_ARM                (1 << 3)
1746*6467f958SSadaf Ebrahimi #define CL_DEVICE_SCHEDULING_REGISTER_ALLOCATION_ARM           (1 << 4)
1747*6467f958SSadaf Ebrahimi #define CL_DEVICE_SCHEDULING_WARP_THROTTLING_ARM               (1 << 5)
1748*6467f958SSadaf Ebrahimi #define CL_DEVICE_SCHEDULING_COMPUTE_UNIT_BATCH_QUEUE_SIZE_ARM (1 << 6)
1749*6467f958SSadaf Ebrahimi 
1750*6467f958SSadaf Ebrahimi #define CL_DEVICE_SUPPORTED_REGISTER_ALLOCATIONS_ARM            0x41EB
1751*6467f958SSadaf Ebrahimi #define CL_DEVICE_MAX_WARP_COUNT_ARM                            0x41EA
1752*6467f958SSadaf Ebrahimi 
1753*6467f958SSadaf Ebrahimi /* cl_kernel_info */
1754*6467f958SSadaf Ebrahimi #define CL_KERNEL_MAX_WARP_COUNT_ARM                            0x41E9
1755*6467f958SSadaf Ebrahimi 
1756*6467f958SSadaf Ebrahimi /* cl_kernel_exec_info */
1757*6467f958SSadaf Ebrahimi #define CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_ARM            0x41E5
1758*6467f958SSadaf Ebrahimi #define CL_KERNEL_EXEC_INFO_WORKGROUP_BATCH_SIZE_MODIFIER_ARM   0x41E6
1759*6467f958SSadaf Ebrahimi #define CL_KERNEL_EXEC_INFO_WARP_COUNT_LIMIT_ARM                0x41E8
1760*6467f958SSadaf Ebrahimi #define CL_KERNEL_EXEC_INFO_COMPUTE_UNIT_MAX_QUEUED_BATCHES_ARM 0x41F1
1761*6467f958SSadaf Ebrahimi 
1762*6467f958SSadaf Ebrahimi /* cl_queue_properties */
1763*6467f958SSadaf Ebrahimi #define CL_QUEUE_KERNEL_BATCHING_ARM                            0x41E7
1764*6467f958SSadaf Ebrahimi #define CL_QUEUE_DEFERRED_FLUSH_ARM                             0x41EC
1765*6467f958SSadaf Ebrahimi 
1766*6467f958SSadaf Ebrahimi /**************************************
1767*6467f958SSadaf Ebrahimi * cl_arm_controlled_kernel_termination
1768*6467f958SSadaf Ebrahimi ***************************************/
1769*6467f958SSadaf Ebrahimi 
1770*6467f958SSadaf Ebrahimi #define cl_arm_controlled_kernel_termination 1
1771*6467f958SSadaf Ebrahimi 
1772*6467f958SSadaf Ebrahimi /* Error code to indicate kernel terminated with failure */
1773*6467f958SSadaf Ebrahimi #define CL_COMMAND_TERMINATED_ITSELF_WITH_FAILURE_ARM -1108
1774*6467f958SSadaf Ebrahimi 
1775*6467f958SSadaf Ebrahimi /* cl_device_info */
1776*6467f958SSadaf Ebrahimi #define CL_DEVICE_CONTROLLED_TERMINATION_CAPABILITIES_ARM 0x41EE
1777*6467f958SSadaf Ebrahimi 
1778*6467f958SSadaf Ebrahimi /* Bit fields for controlled termination feature query */
1779*6467f958SSadaf Ebrahimi typedef cl_bitfield cl_device_controlled_termination_capabilities_arm;
1780*6467f958SSadaf Ebrahimi 
1781*6467f958SSadaf Ebrahimi #define CL_DEVICE_CONTROLLED_TERMINATION_SUCCESS_ARM (1 << 0)
1782*6467f958SSadaf Ebrahimi #define CL_DEVICE_CONTROLLED_TERMINATION_FAILURE_ARM (1 << 1)
1783*6467f958SSadaf Ebrahimi #define CL_DEVICE_CONTROLLED_TERMINATION_QUERY_ARM (1 << 2)
1784*6467f958SSadaf Ebrahimi 
1785*6467f958SSadaf Ebrahimi /* cl_event_info */
1786*6467f958SSadaf Ebrahimi #define CL_EVENT_COMMAND_TERMINATION_REASON_ARM 0x41ED
1787*6467f958SSadaf Ebrahimi 
1788*6467f958SSadaf Ebrahimi /* Values returned for event termination reason query */
1789*6467f958SSadaf Ebrahimi typedef cl_uint cl_command_termination_reason_arm;
1790*6467f958SSadaf Ebrahimi 
1791*6467f958SSadaf Ebrahimi #define CL_COMMAND_TERMINATION_COMPLETION_ARM  0
1792*6467f958SSadaf Ebrahimi #define CL_COMMAND_TERMINATION_CONTROLLED_SUCCESS_ARM 1
1793*6467f958SSadaf Ebrahimi #define CL_COMMAND_TERMINATION_CONTROLLED_FAILURE_ARM 2
1794*6467f958SSadaf Ebrahimi #define CL_COMMAND_TERMINATION_ERROR_ARM 3
1795*6467f958SSadaf Ebrahimi 
1796*6467f958SSadaf Ebrahimi /*************************************
1797*6467f958SSadaf Ebrahimi * cl_arm_protected_memory_allocation *
1798*6467f958SSadaf Ebrahimi *************************************/
1799*6467f958SSadaf Ebrahimi 
1800*6467f958SSadaf Ebrahimi #define cl_arm_protected_memory_allocation 1
1801*6467f958SSadaf Ebrahimi 
1802*6467f958SSadaf Ebrahimi #define CL_MEM_PROTECTED_ALLOC_ARM (1ULL << 36)
1803*6467f958SSadaf Ebrahimi 
1804*6467f958SSadaf Ebrahimi /******************************************
1805*6467f958SSadaf Ebrahimi * cl_intel_exec_by_local_thread extension *
1806*6467f958SSadaf Ebrahimi ******************************************/
1807*6467f958SSadaf Ebrahimi 
1808*6467f958SSadaf Ebrahimi #define cl_intel_exec_by_local_thread 1
1809*6467f958SSadaf Ebrahimi 
1810*6467f958SSadaf Ebrahimi #define CL_QUEUE_THREAD_LOCAL_EXEC_ENABLE_INTEL      (((cl_bitfield)1) << 31)
1811*6467f958SSadaf Ebrahimi 
1812*6467f958SSadaf Ebrahimi /***************************************************************
1813*6467f958SSadaf Ebrahimi * cl_intel_device_attribute_query
1814*6467f958SSadaf Ebrahimi ***************************************************************/
1815*6467f958SSadaf Ebrahimi 
1816*6467f958SSadaf Ebrahimi #define cl_intel_device_attribute_query 1
1817*6467f958SSadaf Ebrahimi 
1818*6467f958SSadaf Ebrahimi typedef cl_bitfield         cl_device_feature_capabilities_intel;
1819*6467f958SSadaf Ebrahimi 
1820*6467f958SSadaf Ebrahimi /* cl_device_feature_capabilities_intel */
1821*6467f958SSadaf Ebrahimi #define CL_DEVICE_FEATURE_FLAG_DP4A_INTEL                   (1 << 0)
1822*6467f958SSadaf Ebrahimi #define CL_DEVICE_FEATURE_FLAG_DPAS_INTEL                   (1 << 1)
1823*6467f958SSadaf Ebrahimi 
1824*6467f958SSadaf Ebrahimi /* cl_device_info */
1825*6467f958SSadaf Ebrahimi #define CL_DEVICE_IP_VERSION_INTEL                          0x4250
1826*6467f958SSadaf Ebrahimi #define CL_DEVICE_ID_INTEL                                  0x4251
1827*6467f958SSadaf Ebrahimi #define CL_DEVICE_NUM_SLICES_INTEL                          0x4252
1828*6467f958SSadaf Ebrahimi #define CL_DEVICE_NUM_SUB_SLICES_PER_SLICE_INTEL            0x4253
1829*6467f958SSadaf Ebrahimi #define CL_DEVICE_NUM_EUS_PER_SUB_SLICE_INTEL               0x4254
1830*6467f958SSadaf Ebrahimi #define CL_DEVICE_NUM_THREADS_PER_EU_INTEL                  0x4255
1831*6467f958SSadaf Ebrahimi #define CL_DEVICE_FEATURE_CAPABILITIES_INTEL                0x4256
1832*6467f958SSadaf Ebrahimi 
1833*6467f958SSadaf Ebrahimi /***********************************************
1834*6467f958SSadaf Ebrahimi * cl_intel_device_partition_by_names extension *
1835*6467f958SSadaf Ebrahimi ************************************************/
1836*6467f958SSadaf Ebrahimi 
1837*6467f958SSadaf Ebrahimi #define cl_intel_device_partition_by_names 1
1838*6467f958SSadaf Ebrahimi 
1839*6467f958SSadaf Ebrahimi #define CL_DEVICE_PARTITION_BY_NAMES_INTEL          0x4052
1840*6467f958SSadaf Ebrahimi #define CL_PARTITION_BY_NAMES_LIST_END_INTEL        -1
1841*6467f958SSadaf Ebrahimi 
1842*6467f958SSadaf Ebrahimi /************************************************
1843*6467f958SSadaf Ebrahimi * cl_intel_accelerator extension                *
1844*6467f958SSadaf Ebrahimi * cl_intel_motion_estimation extension          *
1845*6467f958SSadaf Ebrahimi * cl_intel_advanced_motion_estimation extension *
1846*6467f958SSadaf Ebrahimi *************************************************/
1847*6467f958SSadaf Ebrahimi 
1848*6467f958SSadaf Ebrahimi #define cl_intel_accelerator 1
1849*6467f958SSadaf Ebrahimi #define cl_intel_motion_estimation 1
1850*6467f958SSadaf Ebrahimi #define cl_intel_advanced_motion_estimation 1
1851*6467f958SSadaf Ebrahimi 
1852*6467f958SSadaf Ebrahimi typedef struct _cl_accelerator_intel* cl_accelerator_intel;
1853*6467f958SSadaf Ebrahimi typedef cl_uint cl_accelerator_type_intel;
1854*6467f958SSadaf Ebrahimi typedef cl_uint cl_accelerator_info_intel;
1855*6467f958SSadaf Ebrahimi 
1856*6467f958SSadaf Ebrahimi typedef struct _cl_motion_estimation_desc_intel {
1857*6467f958SSadaf Ebrahimi     cl_uint mb_block_type;
1858*6467f958SSadaf Ebrahimi     cl_uint subpixel_mode;
1859*6467f958SSadaf Ebrahimi     cl_uint sad_adjust_mode;
1860*6467f958SSadaf Ebrahimi     cl_uint search_path_type;
1861*6467f958SSadaf Ebrahimi } cl_motion_estimation_desc_intel;
1862*6467f958SSadaf Ebrahimi 
1863*6467f958SSadaf Ebrahimi /* error codes */
1864*6467f958SSadaf Ebrahimi #define CL_INVALID_ACCELERATOR_INTEL                              -1094
1865*6467f958SSadaf Ebrahimi #define CL_INVALID_ACCELERATOR_TYPE_INTEL                         -1095
1866*6467f958SSadaf Ebrahimi #define CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL                   -1096
1867*6467f958SSadaf Ebrahimi #define CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL                   -1097
1868*6467f958SSadaf Ebrahimi 
1869*6467f958SSadaf Ebrahimi /* cl_accelerator_type_intel */
1870*6467f958SSadaf Ebrahimi #define CL_ACCELERATOR_TYPE_MOTION_ESTIMATION_INTEL               0x0
1871*6467f958SSadaf Ebrahimi 
1872*6467f958SSadaf Ebrahimi /* cl_accelerator_info_intel */
1873*6467f958SSadaf Ebrahimi #define CL_ACCELERATOR_DESCRIPTOR_INTEL                           0x4090
1874*6467f958SSadaf Ebrahimi #define CL_ACCELERATOR_REFERENCE_COUNT_INTEL                      0x4091
1875*6467f958SSadaf Ebrahimi #define CL_ACCELERATOR_CONTEXT_INTEL                              0x4092
1876*6467f958SSadaf Ebrahimi #define CL_ACCELERATOR_TYPE_INTEL                                 0x4093
1877*6467f958SSadaf Ebrahimi 
1878*6467f958SSadaf Ebrahimi /* cl_motion_detect_desc_intel flags */
1879*6467f958SSadaf Ebrahimi #define CL_ME_MB_TYPE_16x16_INTEL                                 0x0
1880*6467f958SSadaf Ebrahimi #define CL_ME_MB_TYPE_8x8_INTEL                                   0x1
1881*6467f958SSadaf Ebrahimi #define CL_ME_MB_TYPE_4x4_INTEL                                   0x2
1882*6467f958SSadaf Ebrahimi 
1883*6467f958SSadaf Ebrahimi #define CL_ME_SUBPIXEL_MODE_INTEGER_INTEL                         0x0
1884*6467f958SSadaf Ebrahimi #define CL_ME_SUBPIXEL_MODE_HPEL_INTEL                            0x1
1885*6467f958SSadaf Ebrahimi #define CL_ME_SUBPIXEL_MODE_QPEL_INTEL                            0x2
1886*6467f958SSadaf Ebrahimi 
1887*6467f958SSadaf Ebrahimi #define CL_ME_SAD_ADJUST_MODE_NONE_INTEL                          0x0
1888*6467f958SSadaf Ebrahimi #define CL_ME_SAD_ADJUST_MODE_HAAR_INTEL                          0x1
1889*6467f958SSadaf Ebrahimi 
1890*6467f958SSadaf Ebrahimi #define CL_ME_SEARCH_PATH_RADIUS_2_2_INTEL                        0x0
1891*6467f958SSadaf Ebrahimi #define CL_ME_SEARCH_PATH_RADIUS_4_4_INTEL                        0x1
1892*6467f958SSadaf Ebrahimi #define CL_ME_SEARCH_PATH_RADIUS_16_12_INTEL                      0x5
1893*6467f958SSadaf Ebrahimi 
1894*6467f958SSadaf Ebrahimi #define CL_ME_SKIP_BLOCK_TYPE_16x16_INTEL                         0x0
1895*6467f958SSadaf Ebrahimi #define CL_ME_CHROMA_INTRA_PREDICT_ENABLED_INTEL                  0x1
1896*6467f958SSadaf Ebrahimi #define CL_ME_LUMA_INTRA_PREDICT_ENABLED_INTEL                    0x2
1897*6467f958SSadaf Ebrahimi #define CL_ME_SKIP_BLOCK_TYPE_8x8_INTEL                           0x4
1898*6467f958SSadaf Ebrahimi 
1899*6467f958SSadaf Ebrahimi #define CL_ME_FORWARD_INPUT_MODE_INTEL                            0x1
1900*6467f958SSadaf Ebrahimi #define CL_ME_BACKWARD_INPUT_MODE_INTEL                           0x2
1901*6467f958SSadaf Ebrahimi #define CL_ME_BIDIRECTION_INPUT_MODE_INTEL                        0x3
1902*6467f958SSadaf Ebrahimi 
1903*6467f958SSadaf Ebrahimi #define CL_ME_BIDIR_WEIGHT_QUARTER_INTEL                          16
1904*6467f958SSadaf Ebrahimi #define CL_ME_BIDIR_WEIGHT_THIRD_INTEL                            21
1905*6467f958SSadaf Ebrahimi #define CL_ME_BIDIR_WEIGHT_HALF_INTEL                             32
1906*6467f958SSadaf Ebrahimi #define CL_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL                        43
1907*6467f958SSadaf Ebrahimi #define CL_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL                    48
1908*6467f958SSadaf Ebrahimi 
1909*6467f958SSadaf Ebrahimi #define CL_ME_COST_PENALTY_NONE_INTEL                             0x0
1910*6467f958SSadaf Ebrahimi #define CL_ME_COST_PENALTY_LOW_INTEL                              0x1
1911*6467f958SSadaf Ebrahimi #define CL_ME_COST_PENALTY_NORMAL_INTEL                           0x2
1912*6467f958SSadaf Ebrahimi #define CL_ME_COST_PENALTY_HIGH_INTEL                             0x3
1913*6467f958SSadaf Ebrahimi 
1914*6467f958SSadaf Ebrahimi #define CL_ME_COST_PRECISION_QPEL_INTEL                           0x0
1915*6467f958SSadaf Ebrahimi #define CL_ME_COST_PRECISION_HPEL_INTEL                           0x1
1916*6467f958SSadaf Ebrahimi #define CL_ME_COST_PRECISION_PEL_INTEL                            0x2
1917*6467f958SSadaf Ebrahimi #define CL_ME_COST_PRECISION_DPEL_INTEL                           0x3
1918*6467f958SSadaf Ebrahimi 
1919*6467f958SSadaf Ebrahimi #define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL                  0x0
1920*6467f958SSadaf Ebrahimi #define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL                0x1
1921*6467f958SSadaf Ebrahimi #define CL_ME_LUMA_PREDICTOR_MODE_DC_INTEL                        0x2
1922*6467f958SSadaf Ebrahimi #define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL        0x3
1923*6467f958SSadaf Ebrahimi 
1924*6467f958SSadaf Ebrahimi #define CL_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL       0x4
1925*6467f958SSadaf Ebrahimi #define CL_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL                     0x4
1926*6467f958SSadaf Ebrahimi #define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL            0x5
1927*6467f958SSadaf Ebrahimi #define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL           0x6
1928*6467f958SSadaf Ebrahimi #define CL_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL             0x7
1929*6467f958SSadaf Ebrahimi #define CL_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL             0x8
1930*6467f958SSadaf Ebrahimi 
1931*6467f958SSadaf Ebrahimi #define CL_ME_CHROMA_PREDICTOR_MODE_DC_INTEL                      0x0
1932*6467f958SSadaf Ebrahimi #define CL_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL              0x1
1933*6467f958SSadaf Ebrahimi #define CL_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL                0x2
1934*6467f958SSadaf Ebrahimi #define CL_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL                   0x3
1935*6467f958SSadaf Ebrahimi 
1936*6467f958SSadaf Ebrahimi /* cl_device_info */
1937*6467f958SSadaf Ebrahimi #define CL_DEVICE_ME_VERSION_INTEL                                0x407E
1938*6467f958SSadaf Ebrahimi 
1939*6467f958SSadaf Ebrahimi #define CL_ME_VERSION_LEGACY_INTEL                                0x0
1940*6467f958SSadaf Ebrahimi #define CL_ME_VERSION_ADVANCED_VER_1_INTEL                        0x1
1941*6467f958SSadaf Ebrahimi #define CL_ME_VERSION_ADVANCED_VER_2_INTEL                        0x2
1942*6467f958SSadaf Ebrahimi 
1943*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_accelerator_intel CL_API_CALL
1944*6467f958SSadaf Ebrahimi clCreateAcceleratorINTEL(
1945*6467f958SSadaf Ebrahimi     cl_context                   context,
1946*6467f958SSadaf Ebrahimi     cl_accelerator_type_intel    accelerator_type,
1947*6467f958SSadaf Ebrahimi     size_t                       descriptor_size,
1948*6467f958SSadaf Ebrahimi     const void*                  descriptor,
1949*6467f958SSadaf Ebrahimi     cl_int*                      errcode_ret) CL_API_SUFFIX__VERSION_1_2;
1950*6467f958SSadaf Ebrahimi 
1951*6467f958SSadaf Ebrahimi typedef cl_accelerator_intel (CL_API_CALL *clCreateAcceleratorINTEL_fn)(
1952*6467f958SSadaf Ebrahimi     cl_context                   context,
1953*6467f958SSadaf Ebrahimi     cl_accelerator_type_intel    accelerator_type,
1954*6467f958SSadaf Ebrahimi     size_t                       descriptor_size,
1955*6467f958SSadaf Ebrahimi     const void*                  descriptor,
1956*6467f958SSadaf Ebrahimi     cl_int*                      errcode_ret) CL_API_SUFFIX__VERSION_1_2;
1957*6467f958SSadaf Ebrahimi 
1958*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1959*6467f958SSadaf Ebrahimi clGetAcceleratorInfoINTEL(
1960*6467f958SSadaf Ebrahimi     cl_accelerator_intel         accelerator,
1961*6467f958SSadaf Ebrahimi     cl_accelerator_info_intel    param_name,
1962*6467f958SSadaf Ebrahimi     size_t                       param_value_size,
1963*6467f958SSadaf Ebrahimi     void*                        param_value,
1964*6467f958SSadaf Ebrahimi     size_t*                      param_value_size_ret) CL_API_SUFFIX__VERSION_1_2;
1965*6467f958SSadaf Ebrahimi 
1966*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *clGetAcceleratorInfoINTEL_fn)(
1967*6467f958SSadaf Ebrahimi     cl_accelerator_intel         accelerator,
1968*6467f958SSadaf Ebrahimi     cl_accelerator_info_intel    param_name,
1969*6467f958SSadaf Ebrahimi     size_t                       param_value_size,
1970*6467f958SSadaf Ebrahimi     void*                        param_value,
1971*6467f958SSadaf Ebrahimi     size_t*                      param_value_size_ret) CL_API_SUFFIX__VERSION_1_2;
1972*6467f958SSadaf Ebrahimi 
1973*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1974*6467f958SSadaf Ebrahimi clRetainAcceleratorINTEL(
1975*6467f958SSadaf Ebrahimi     cl_accelerator_intel         accelerator) CL_API_SUFFIX__VERSION_1_2;
1976*6467f958SSadaf Ebrahimi 
1977*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *clRetainAcceleratorINTEL_fn)(
1978*6467f958SSadaf Ebrahimi     cl_accelerator_intel         accelerator) CL_API_SUFFIX__VERSION_1_2;
1979*6467f958SSadaf Ebrahimi 
1980*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
1981*6467f958SSadaf Ebrahimi clReleaseAcceleratorINTEL(
1982*6467f958SSadaf Ebrahimi     cl_accelerator_intel         accelerator) CL_API_SUFFIX__VERSION_1_2;
1983*6467f958SSadaf Ebrahimi 
1984*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *clReleaseAcceleratorINTEL_fn)(
1985*6467f958SSadaf Ebrahimi     cl_accelerator_intel         accelerator) CL_API_SUFFIX__VERSION_1_2;
1986*6467f958SSadaf Ebrahimi 
1987*6467f958SSadaf Ebrahimi /******************************************
1988*6467f958SSadaf Ebrahimi * cl_intel_simultaneous_sharing extension *
1989*6467f958SSadaf Ebrahimi *******************************************/
1990*6467f958SSadaf Ebrahimi 
1991*6467f958SSadaf Ebrahimi #define cl_intel_simultaneous_sharing 1
1992*6467f958SSadaf Ebrahimi 
1993*6467f958SSadaf Ebrahimi #define CL_DEVICE_SIMULTANEOUS_INTEROPS_INTEL            0x4104
1994*6467f958SSadaf Ebrahimi #define CL_DEVICE_NUM_SIMULTANEOUS_INTEROPS_INTEL        0x4105
1995*6467f958SSadaf Ebrahimi 
1996*6467f958SSadaf Ebrahimi /***********************************
1997*6467f958SSadaf Ebrahimi * cl_intel_egl_image_yuv extension *
1998*6467f958SSadaf Ebrahimi ************************************/
1999*6467f958SSadaf Ebrahimi 
2000*6467f958SSadaf Ebrahimi #define cl_intel_egl_image_yuv 1
2001*6467f958SSadaf Ebrahimi 
2002*6467f958SSadaf Ebrahimi #define CL_EGL_YUV_PLANE_INTEL                           0x4107
2003*6467f958SSadaf Ebrahimi 
2004*6467f958SSadaf Ebrahimi /********************************
2005*6467f958SSadaf Ebrahimi * cl_intel_packed_yuv extension *
2006*6467f958SSadaf Ebrahimi *********************************/
2007*6467f958SSadaf Ebrahimi 
2008*6467f958SSadaf Ebrahimi #define cl_intel_packed_yuv 1
2009*6467f958SSadaf Ebrahimi 
2010*6467f958SSadaf Ebrahimi #define CL_YUYV_INTEL                                    0x4076
2011*6467f958SSadaf Ebrahimi #define CL_UYVY_INTEL                                    0x4077
2012*6467f958SSadaf Ebrahimi #define CL_YVYU_INTEL                                    0x4078
2013*6467f958SSadaf Ebrahimi #define CL_VYUY_INTEL                                    0x4079
2014*6467f958SSadaf Ebrahimi 
2015*6467f958SSadaf Ebrahimi /********************************************
2016*6467f958SSadaf Ebrahimi * cl_intel_required_subgroup_size extension *
2017*6467f958SSadaf Ebrahimi *********************************************/
2018*6467f958SSadaf Ebrahimi 
2019*6467f958SSadaf Ebrahimi #define cl_intel_required_subgroup_size 1
2020*6467f958SSadaf Ebrahimi 
2021*6467f958SSadaf Ebrahimi #define CL_DEVICE_SUB_GROUP_SIZES_INTEL                  0x4108
2022*6467f958SSadaf Ebrahimi #define CL_KERNEL_SPILL_MEM_SIZE_INTEL                   0x4109
2023*6467f958SSadaf Ebrahimi #define CL_KERNEL_COMPILE_SUB_GROUP_SIZE_INTEL           0x410A
2024*6467f958SSadaf Ebrahimi 
2025*6467f958SSadaf Ebrahimi /****************************************
2026*6467f958SSadaf Ebrahimi * cl_intel_driver_diagnostics extension *
2027*6467f958SSadaf Ebrahimi *****************************************/
2028*6467f958SSadaf Ebrahimi 
2029*6467f958SSadaf Ebrahimi #define cl_intel_driver_diagnostics 1
2030*6467f958SSadaf Ebrahimi 
2031*6467f958SSadaf Ebrahimi typedef cl_uint cl_diagnostics_verbose_level;
2032*6467f958SSadaf Ebrahimi 
2033*6467f958SSadaf Ebrahimi #define CL_CONTEXT_SHOW_DIAGNOSTICS_INTEL                0x4106
2034*6467f958SSadaf Ebrahimi 
2035*6467f958SSadaf Ebrahimi #define CL_CONTEXT_DIAGNOSTICS_LEVEL_ALL_INTEL           ( 0xff )
2036*6467f958SSadaf Ebrahimi #define CL_CONTEXT_DIAGNOSTICS_LEVEL_GOOD_INTEL          ( 1 )
2037*6467f958SSadaf Ebrahimi #define CL_CONTEXT_DIAGNOSTICS_LEVEL_BAD_INTEL           ( 1 << 1 )
2038*6467f958SSadaf Ebrahimi #define CL_CONTEXT_DIAGNOSTICS_LEVEL_NEUTRAL_INTEL       ( 1 << 2 )
2039*6467f958SSadaf Ebrahimi 
2040*6467f958SSadaf Ebrahimi /********************************
2041*6467f958SSadaf Ebrahimi * cl_intel_planar_yuv extension *
2042*6467f958SSadaf Ebrahimi *********************************/
2043*6467f958SSadaf Ebrahimi 
2044*6467f958SSadaf Ebrahimi #define CL_NV12_INTEL                                       0x410E
2045*6467f958SSadaf Ebrahimi 
2046*6467f958SSadaf Ebrahimi #define CL_MEM_NO_ACCESS_INTEL                              ( 1 << 24 )
2047*6467f958SSadaf Ebrahimi #define CL_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL              ( 1 << 25 )
2048*6467f958SSadaf Ebrahimi 
2049*6467f958SSadaf Ebrahimi #define CL_DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL                0x417E
2050*6467f958SSadaf Ebrahimi #define CL_DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL               0x417F
2051*6467f958SSadaf Ebrahimi 
2052*6467f958SSadaf Ebrahimi /*******************************************************
2053*6467f958SSadaf Ebrahimi * cl_intel_device_side_avc_motion_estimation extension *
2054*6467f958SSadaf Ebrahimi ********************************************************/
2055*6467f958SSadaf Ebrahimi 
2056*6467f958SSadaf Ebrahimi #define CL_DEVICE_AVC_ME_VERSION_INTEL                      0x410B
2057*6467f958SSadaf Ebrahimi #define CL_DEVICE_AVC_ME_SUPPORTS_TEXTURE_SAMPLER_USE_INTEL 0x410C
2058*6467f958SSadaf Ebrahimi #define CL_DEVICE_AVC_ME_SUPPORTS_PREEMPTION_INTEL          0x410D
2059*6467f958SSadaf Ebrahimi 
2060*6467f958SSadaf Ebrahimi #define CL_AVC_ME_VERSION_0_INTEL                           0x0   /* No support. */
2061*6467f958SSadaf Ebrahimi #define CL_AVC_ME_VERSION_1_INTEL                           0x1   /* First supported version. */
2062*6467f958SSadaf Ebrahimi 
2063*6467f958SSadaf Ebrahimi #define CL_AVC_ME_MAJOR_16x16_INTEL                         0x0
2064*6467f958SSadaf Ebrahimi #define CL_AVC_ME_MAJOR_16x8_INTEL                          0x1
2065*6467f958SSadaf Ebrahimi #define CL_AVC_ME_MAJOR_8x16_INTEL                          0x2
2066*6467f958SSadaf Ebrahimi #define CL_AVC_ME_MAJOR_8x8_INTEL                           0x3
2067*6467f958SSadaf Ebrahimi 
2068*6467f958SSadaf Ebrahimi #define CL_AVC_ME_MINOR_8x8_INTEL                           0x0
2069*6467f958SSadaf Ebrahimi #define CL_AVC_ME_MINOR_8x4_INTEL                           0x1
2070*6467f958SSadaf Ebrahimi #define CL_AVC_ME_MINOR_4x8_INTEL                           0x2
2071*6467f958SSadaf Ebrahimi #define CL_AVC_ME_MINOR_4x4_INTEL                           0x3
2072*6467f958SSadaf Ebrahimi 
2073*6467f958SSadaf Ebrahimi #define CL_AVC_ME_MAJOR_FORWARD_INTEL                       0x0
2074*6467f958SSadaf Ebrahimi #define CL_AVC_ME_MAJOR_BACKWARD_INTEL                      0x1
2075*6467f958SSadaf Ebrahimi #define CL_AVC_ME_MAJOR_BIDIRECTIONAL_INTEL                 0x2
2076*6467f958SSadaf Ebrahimi 
2077*6467f958SSadaf Ebrahimi #define CL_AVC_ME_PARTITION_MASK_ALL_INTEL                  0x0
2078*6467f958SSadaf Ebrahimi #define CL_AVC_ME_PARTITION_MASK_16x16_INTEL                0x7E
2079*6467f958SSadaf Ebrahimi #define CL_AVC_ME_PARTITION_MASK_16x8_INTEL                 0x7D
2080*6467f958SSadaf Ebrahimi #define CL_AVC_ME_PARTITION_MASK_8x16_INTEL                 0x7B
2081*6467f958SSadaf Ebrahimi #define CL_AVC_ME_PARTITION_MASK_8x8_INTEL                  0x77
2082*6467f958SSadaf Ebrahimi #define CL_AVC_ME_PARTITION_MASK_8x4_INTEL                  0x6F
2083*6467f958SSadaf Ebrahimi #define CL_AVC_ME_PARTITION_MASK_4x8_INTEL                  0x5F
2084*6467f958SSadaf Ebrahimi #define CL_AVC_ME_PARTITION_MASK_4x4_INTEL                  0x3F
2085*6467f958SSadaf Ebrahimi 
2086*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SEARCH_WINDOW_EXHAUSTIVE_INTEL            0x0
2087*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SEARCH_WINDOW_SMALL_INTEL                 0x1
2088*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SEARCH_WINDOW_TINY_INTEL                  0x2
2089*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SEARCH_WINDOW_EXTRA_TINY_INTEL            0x3
2090*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SEARCH_WINDOW_DIAMOND_INTEL               0x4
2091*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SEARCH_WINDOW_LARGE_DIAMOND_INTEL         0x5
2092*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SEARCH_WINDOW_RESERVED0_INTEL             0x6
2093*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SEARCH_WINDOW_RESERVED1_INTEL             0x7
2094*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SEARCH_WINDOW_CUSTOM_INTEL                0x8
2095*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SEARCH_WINDOW_16x12_RADIUS_INTEL          0x9
2096*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SEARCH_WINDOW_4x4_RADIUS_INTEL            0x2
2097*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SEARCH_WINDOW_2x2_RADIUS_INTEL            0xa
2098*6467f958SSadaf Ebrahimi 
2099*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SAD_ADJUST_MODE_NONE_INTEL                0x0
2100*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SAD_ADJUST_MODE_HAAR_INTEL                0x2
2101*6467f958SSadaf Ebrahimi 
2102*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SUBPIXEL_MODE_INTEGER_INTEL               0x0
2103*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SUBPIXEL_MODE_HPEL_INTEL                  0x1
2104*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SUBPIXEL_MODE_QPEL_INTEL                  0x3
2105*6467f958SSadaf Ebrahimi 
2106*6467f958SSadaf Ebrahimi #define CL_AVC_ME_COST_PRECISION_QPEL_INTEL                 0x0
2107*6467f958SSadaf Ebrahimi #define CL_AVC_ME_COST_PRECISION_HPEL_INTEL                 0x1
2108*6467f958SSadaf Ebrahimi #define CL_AVC_ME_COST_PRECISION_PEL_INTEL                  0x2
2109*6467f958SSadaf Ebrahimi #define CL_AVC_ME_COST_PRECISION_DPEL_INTEL                 0x3
2110*6467f958SSadaf Ebrahimi 
2111*6467f958SSadaf Ebrahimi #define CL_AVC_ME_BIDIR_WEIGHT_QUARTER_INTEL                0x10
2112*6467f958SSadaf Ebrahimi #define CL_AVC_ME_BIDIR_WEIGHT_THIRD_INTEL                  0x15
2113*6467f958SSadaf Ebrahimi #define CL_AVC_ME_BIDIR_WEIGHT_HALF_INTEL                   0x20
2114*6467f958SSadaf Ebrahimi #define CL_AVC_ME_BIDIR_WEIGHT_TWO_THIRD_INTEL              0x2B
2115*6467f958SSadaf Ebrahimi #define CL_AVC_ME_BIDIR_WEIGHT_THREE_QUARTER_INTEL          0x30
2116*6467f958SSadaf Ebrahimi 
2117*6467f958SSadaf Ebrahimi #define CL_AVC_ME_BORDER_REACHED_LEFT_INTEL                 0x0
2118*6467f958SSadaf Ebrahimi #define CL_AVC_ME_BORDER_REACHED_RIGHT_INTEL                0x2
2119*6467f958SSadaf Ebrahimi #define CL_AVC_ME_BORDER_REACHED_TOP_INTEL                  0x4
2120*6467f958SSadaf Ebrahimi #define CL_AVC_ME_BORDER_REACHED_BOTTOM_INTEL               0x8
2121*6467f958SSadaf Ebrahimi 
2122*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SKIP_BLOCK_PARTITION_16x16_INTEL          0x0
2123*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SKIP_BLOCK_PARTITION_8x8_INTEL            0x4000
2124*6467f958SSadaf Ebrahimi 
2125*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SKIP_BLOCK_16x16_FORWARD_ENABLE_INTEL     ( 0x1 << 24 )
2126*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SKIP_BLOCK_16x16_BACKWARD_ENABLE_INTEL    ( 0x2 << 24 )
2127*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SKIP_BLOCK_16x16_DUAL_ENABLE_INTEL        ( 0x3 << 24 )
2128*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SKIP_BLOCK_8x8_FORWARD_ENABLE_INTEL       ( 0x55 << 24 )
2129*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SKIP_BLOCK_8x8_BACKWARD_ENABLE_INTEL      ( 0xAA << 24 )
2130*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SKIP_BLOCK_8x8_DUAL_ENABLE_INTEL          ( 0xFF << 24 )
2131*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SKIP_BLOCK_8x8_0_FORWARD_ENABLE_INTEL     ( 0x1 << 24 )
2132*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SKIP_BLOCK_8x8_0_BACKWARD_ENABLE_INTEL    ( 0x2 << 24 )
2133*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SKIP_BLOCK_8x8_1_FORWARD_ENABLE_INTEL     ( 0x1 << 26 )
2134*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SKIP_BLOCK_8x8_1_BACKWARD_ENABLE_INTEL    ( 0x2 << 26 )
2135*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SKIP_BLOCK_8x8_2_FORWARD_ENABLE_INTEL     ( 0x1 << 28 )
2136*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SKIP_BLOCK_8x8_2_BACKWARD_ENABLE_INTEL    ( 0x2 << 28 )
2137*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SKIP_BLOCK_8x8_3_FORWARD_ENABLE_INTEL     ( 0x1 << 30 )
2138*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SKIP_BLOCK_8x8_3_BACKWARD_ENABLE_INTEL    ( 0x2 << 30 )
2139*6467f958SSadaf Ebrahimi 
2140*6467f958SSadaf Ebrahimi #define CL_AVC_ME_BLOCK_BASED_SKIP_4x4_INTEL                0x00
2141*6467f958SSadaf Ebrahimi #define CL_AVC_ME_BLOCK_BASED_SKIP_8x8_INTEL                0x80
2142*6467f958SSadaf Ebrahimi 
2143*6467f958SSadaf Ebrahimi #define CL_AVC_ME_INTRA_16x16_INTEL                         0x0
2144*6467f958SSadaf Ebrahimi #define CL_AVC_ME_INTRA_8x8_INTEL                           0x1
2145*6467f958SSadaf Ebrahimi #define CL_AVC_ME_INTRA_4x4_INTEL                           0x2
2146*6467f958SSadaf Ebrahimi 
2147*6467f958SSadaf Ebrahimi #define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_16x16_INTEL     0x6
2148*6467f958SSadaf Ebrahimi #define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_8x8_INTEL       0x5
2149*6467f958SSadaf Ebrahimi #define CL_AVC_ME_INTRA_LUMA_PARTITION_MASK_4x4_INTEL       0x3
2150*6467f958SSadaf Ebrahimi 
2151*6467f958SSadaf Ebrahimi #define CL_AVC_ME_INTRA_NEIGHBOR_LEFT_MASK_ENABLE_INTEL         0x60
2152*6467f958SSadaf Ebrahimi #define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_MASK_ENABLE_INTEL        0x10
2153*6467f958SSadaf Ebrahimi #define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_RIGHT_MASK_ENABLE_INTEL  0x8
2154*6467f958SSadaf Ebrahimi #define CL_AVC_ME_INTRA_NEIGHBOR_UPPER_LEFT_MASK_ENABLE_INTEL   0x4
2155*6467f958SSadaf Ebrahimi 
2156*6467f958SSadaf Ebrahimi #define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_INTEL            0x0
2157*6467f958SSadaf Ebrahimi #define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_INTEL          0x1
2158*6467f958SSadaf Ebrahimi #define CL_AVC_ME_LUMA_PREDICTOR_MODE_DC_INTEL                  0x2
2159*6467f958SSadaf Ebrahimi #define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_LEFT_INTEL  0x3
2160*6467f958SSadaf Ebrahimi #define CL_AVC_ME_LUMA_PREDICTOR_MODE_DIAGONAL_DOWN_RIGHT_INTEL 0x4
2161*6467f958SSadaf Ebrahimi #define CL_AVC_ME_LUMA_PREDICTOR_MODE_PLANE_INTEL               0x4
2162*6467f958SSadaf Ebrahimi #define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_RIGHT_INTEL      0x5
2163*6467f958SSadaf Ebrahimi #define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_DOWN_INTEL     0x6
2164*6467f958SSadaf Ebrahimi #define CL_AVC_ME_LUMA_PREDICTOR_MODE_VERTICAL_LEFT_INTEL       0x7
2165*6467f958SSadaf Ebrahimi #define CL_AVC_ME_LUMA_PREDICTOR_MODE_HORIZONTAL_UP_INTEL       0x8
2166*6467f958SSadaf Ebrahimi #define CL_AVC_ME_CHROMA_PREDICTOR_MODE_DC_INTEL                0x0
2167*6467f958SSadaf Ebrahimi #define CL_AVC_ME_CHROMA_PREDICTOR_MODE_HORIZONTAL_INTEL        0x1
2168*6467f958SSadaf Ebrahimi #define CL_AVC_ME_CHROMA_PREDICTOR_MODE_VERTICAL_INTEL          0x2
2169*6467f958SSadaf Ebrahimi #define CL_AVC_ME_CHROMA_PREDICTOR_MODE_PLANE_INTEL             0x3
2170*6467f958SSadaf Ebrahimi 
2171*6467f958SSadaf Ebrahimi #define CL_AVC_ME_FRAME_FORWARD_INTEL                       0x1
2172*6467f958SSadaf Ebrahimi #define CL_AVC_ME_FRAME_BACKWARD_INTEL                      0x2
2173*6467f958SSadaf Ebrahimi #define CL_AVC_ME_FRAME_DUAL_INTEL                          0x3
2174*6467f958SSadaf Ebrahimi 
2175*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SLICE_TYPE_PRED_INTEL                     0x0
2176*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SLICE_TYPE_BPRED_INTEL                    0x1
2177*6467f958SSadaf Ebrahimi #define CL_AVC_ME_SLICE_TYPE_INTRA_INTEL                    0x2
2178*6467f958SSadaf Ebrahimi 
2179*6467f958SSadaf Ebrahimi #define CL_AVC_ME_INTERLACED_SCAN_TOP_FIELD_INTEL           0x0
2180*6467f958SSadaf Ebrahimi #define CL_AVC_ME_INTERLACED_SCAN_BOTTOM_FIELD_INTEL        0x1
2181*6467f958SSadaf Ebrahimi 
2182*6467f958SSadaf Ebrahimi /*******************************************
2183*6467f958SSadaf Ebrahimi * cl_intel_unified_shared_memory extension *
2184*6467f958SSadaf Ebrahimi ********************************************/
2185*6467f958SSadaf Ebrahimi #define cl_intel_unified_shared_memory 1
2186*6467f958SSadaf Ebrahimi 
2187*6467f958SSadaf Ebrahimi typedef cl_bitfield         cl_device_unified_shared_memory_capabilities_intel;
2188*6467f958SSadaf Ebrahimi typedef cl_properties 		cl_mem_properties_intel;
2189*6467f958SSadaf Ebrahimi typedef cl_bitfield         cl_mem_alloc_flags_intel;
2190*6467f958SSadaf Ebrahimi typedef cl_uint             cl_mem_info_intel;
2191*6467f958SSadaf Ebrahimi typedef cl_uint             cl_unified_shared_memory_type_intel;
2192*6467f958SSadaf Ebrahimi typedef cl_uint             cl_mem_advice_intel;
2193*6467f958SSadaf Ebrahimi 
2194*6467f958SSadaf Ebrahimi /* cl_device_info */
2195*6467f958SSadaf Ebrahimi #define CL_DEVICE_HOST_MEM_CAPABILITIES_INTEL               0x4190
2196*6467f958SSadaf Ebrahimi #define CL_DEVICE_DEVICE_MEM_CAPABILITIES_INTEL             0x4191
2197*6467f958SSadaf Ebrahimi #define CL_DEVICE_SINGLE_DEVICE_SHARED_MEM_CAPABILITIES_INTEL 0x4192
2198*6467f958SSadaf Ebrahimi #define CL_DEVICE_CROSS_DEVICE_SHARED_MEM_CAPABILITIES_INTEL 0x4193
2199*6467f958SSadaf Ebrahimi #define CL_DEVICE_SHARED_SYSTEM_MEM_CAPABILITIES_INTEL      0x4194
2200*6467f958SSadaf Ebrahimi 
2201*6467f958SSadaf Ebrahimi /* cl_device_unified_shared_memory_capabilities_intel - bitfield */
2202*6467f958SSadaf Ebrahimi #define CL_UNIFIED_SHARED_MEMORY_ACCESS_INTEL               (1 << 0)
2203*6467f958SSadaf Ebrahimi #define CL_UNIFIED_SHARED_MEMORY_ATOMIC_ACCESS_INTEL        (1 << 1)
2204*6467f958SSadaf Ebrahimi #define CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS_INTEL    (1 << 2)
2205*6467f958SSadaf Ebrahimi #define CL_UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS_INTEL (1 << 3)
2206*6467f958SSadaf Ebrahimi 
2207*6467f958SSadaf Ebrahimi /* cl_mem_properties_intel */
2208*6467f958SSadaf Ebrahimi #define CL_MEM_ALLOC_FLAGS_INTEL                            0x4195
2209*6467f958SSadaf Ebrahimi 
2210*6467f958SSadaf Ebrahimi /* cl_mem_alloc_flags_intel - bitfield */
2211*6467f958SSadaf Ebrahimi #define CL_MEM_ALLOC_WRITE_COMBINED_INTEL                   (1 << 0)
2212*6467f958SSadaf Ebrahimi #define CL_MEM_ALLOC_INITIAL_PLACEMENT_DEVICE_INTEL         (1 << 1)
2213*6467f958SSadaf Ebrahimi #define CL_MEM_ALLOC_INITIAL_PLACEMENT_HOST_INTEL           (1 << 2)
2214*6467f958SSadaf Ebrahimi 
2215*6467f958SSadaf Ebrahimi /* cl_mem_alloc_info_intel */
2216*6467f958SSadaf Ebrahimi #define CL_MEM_ALLOC_TYPE_INTEL                             0x419A
2217*6467f958SSadaf Ebrahimi #define CL_MEM_ALLOC_BASE_PTR_INTEL                         0x419B
2218*6467f958SSadaf Ebrahimi #define CL_MEM_ALLOC_SIZE_INTEL                             0x419C
2219*6467f958SSadaf Ebrahimi #define CL_MEM_ALLOC_DEVICE_INTEL                           0x419D
2220*6467f958SSadaf Ebrahimi 
2221*6467f958SSadaf Ebrahimi /* cl_unified_shared_memory_type_intel */
2222*6467f958SSadaf Ebrahimi #define CL_MEM_TYPE_UNKNOWN_INTEL                           0x4196
2223*6467f958SSadaf Ebrahimi #define CL_MEM_TYPE_HOST_INTEL                              0x4197
2224*6467f958SSadaf Ebrahimi #define CL_MEM_TYPE_DEVICE_INTEL                            0x4198
2225*6467f958SSadaf Ebrahimi #define CL_MEM_TYPE_SHARED_INTEL                            0x4199
2226*6467f958SSadaf Ebrahimi 
2227*6467f958SSadaf Ebrahimi /* cl_kernel_exec_info */
2228*6467f958SSadaf Ebrahimi #define CL_KERNEL_EXEC_INFO_INDIRECT_HOST_ACCESS_INTEL      0x4200
2229*6467f958SSadaf Ebrahimi #define CL_KERNEL_EXEC_INFO_INDIRECT_DEVICE_ACCESS_INTEL    0x4201
2230*6467f958SSadaf Ebrahimi #define CL_KERNEL_EXEC_INFO_INDIRECT_SHARED_ACCESS_INTEL    0x4202
2231*6467f958SSadaf Ebrahimi #define CL_KERNEL_EXEC_INFO_USM_PTRS_INTEL                  0x4203
2232*6467f958SSadaf Ebrahimi 
2233*6467f958SSadaf Ebrahimi /* cl_command_type */
2234*6467f958SSadaf Ebrahimi #define CL_COMMAND_MEMFILL_INTEL                            0x4204
2235*6467f958SSadaf Ebrahimi #define CL_COMMAND_MEMCPY_INTEL                             0x4205
2236*6467f958SSadaf Ebrahimi #define CL_COMMAND_MIGRATEMEM_INTEL                         0x4206
2237*6467f958SSadaf Ebrahimi #define CL_COMMAND_MEMADVISE_INTEL                          0x4207
2238*6467f958SSadaf Ebrahimi 
2239*6467f958SSadaf Ebrahimi 
2240*6467f958SSadaf Ebrahimi typedef void* (CL_API_CALL *
2241*6467f958SSadaf Ebrahimi clHostMemAllocINTEL_fn)(
2242*6467f958SSadaf Ebrahimi     cl_context context,
2243*6467f958SSadaf Ebrahimi     const cl_mem_properties_intel* properties,
2244*6467f958SSadaf Ebrahimi     size_t size,
2245*6467f958SSadaf Ebrahimi     cl_uint alignment,
2246*6467f958SSadaf Ebrahimi     cl_int* errcode_ret) ;
2247*6467f958SSadaf Ebrahimi 
2248*6467f958SSadaf Ebrahimi typedef void* (CL_API_CALL *
2249*6467f958SSadaf Ebrahimi clDeviceMemAllocINTEL_fn)(
2250*6467f958SSadaf Ebrahimi     cl_context context,
2251*6467f958SSadaf Ebrahimi     cl_device_id device,
2252*6467f958SSadaf Ebrahimi     const cl_mem_properties_intel* properties,
2253*6467f958SSadaf Ebrahimi     size_t size,
2254*6467f958SSadaf Ebrahimi     cl_uint alignment,
2255*6467f958SSadaf Ebrahimi     cl_int* errcode_ret) ;
2256*6467f958SSadaf Ebrahimi 
2257*6467f958SSadaf Ebrahimi typedef void* (CL_API_CALL *
2258*6467f958SSadaf Ebrahimi clSharedMemAllocINTEL_fn)(
2259*6467f958SSadaf Ebrahimi     cl_context context,
2260*6467f958SSadaf Ebrahimi     cl_device_id device,
2261*6467f958SSadaf Ebrahimi     const cl_mem_properties_intel* properties,
2262*6467f958SSadaf Ebrahimi     size_t size,
2263*6467f958SSadaf Ebrahimi     cl_uint alignment,
2264*6467f958SSadaf Ebrahimi     cl_int* errcode_ret) ;
2265*6467f958SSadaf Ebrahimi 
2266*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
2267*6467f958SSadaf Ebrahimi clMemFreeINTEL_fn)(
2268*6467f958SSadaf Ebrahimi     cl_context context,
2269*6467f958SSadaf Ebrahimi     void* ptr) ;
2270*6467f958SSadaf Ebrahimi 
2271*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
2272*6467f958SSadaf Ebrahimi clMemBlockingFreeINTEL_fn)(
2273*6467f958SSadaf Ebrahimi     cl_context context,
2274*6467f958SSadaf Ebrahimi     void* ptr) ;
2275*6467f958SSadaf Ebrahimi 
2276*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
2277*6467f958SSadaf Ebrahimi clGetMemAllocInfoINTEL_fn)(
2278*6467f958SSadaf Ebrahimi     cl_context context,
2279*6467f958SSadaf Ebrahimi     const void* ptr,
2280*6467f958SSadaf Ebrahimi     cl_mem_info_intel param_name,
2281*6467f958SSadaf Ebrahimi     size_t param_value_size,
2282*6467f958SSadaf Ebrahimi     void* param_value,
2283*6467f958SSadaf Ebrahimi     size_t* param_value_size_ret) ;
2284*6467f958SSadaf Ebrahimi 
2285*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
2286*6467f958SSadaf Ebrahimi clSetKernelArgMemPointerINTEL_fn)(
2287*6467f958SSadaf Ebrahimi     cl_kernel kernel,
2288*6467f958SSadaf Ebrahimi     cl_uint arg_index,
2289*6467f958SSadaf Ebrahimi     const void* arg_value) ;
2290*6467f958SSadaf Ebrahimi 
2291*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
2292*6467f958SSadaf Ebrahimi clEnqueueMemFillINTEL_fn)(
2293*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
2294*6467f958SSadaf Ebrahimi     void* dst_ptr,
2295*6467f958SSadaf Ebrahimi     const void* pattern,
2296*6467f958SSadaf Ebrahimi     size_t pattern_size,
2297*6467f958SSadaf Ebrahimi     size_t size,
2298*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
2299*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
2300*6467f958SSadaf Ebrahimi     cl_event* event) ;
2301*6467f958SSadaf Ebrahimi 
2302*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
2303*6467f958SSadaf Ebrahimi clEnqueueMemcpyINTEL_fn)(
2304*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
2305*6467f958SSadaf Ebrahimi     cl_bool blocking,
2306*6467f958SSadaf Ebrahimi     void* dst_ptr,
2307*6467f958SSadaf Ebrahimi     const void* src_ptr,
2308*6467f958SSadaf Ebrahimi     size_t size,
2309*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
2310*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
2311*6467f958SSadaf Ebrahimi     cl_event* event) ;
2312*6467f958SSadaf Ebrahimi 
2313*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
2314*6467f958SSadaf Ebrahimi clEnqueueMemAdviseINTEL_fn)(
2315*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
2316*6467f958SSadaf Ebrahimi     const void* ptr,
2317*6467f958SSadaf Ebrahimi     size_t size,
2318*6467f958SSadaf Ebrahimi     cl_mem_advice_intel advice,
2319*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
2320*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
2321*6467f958SSadaf Ebrahimi     cl_event* event) ;
2322*6467f958SSadaf Ebrahimi 
2323*6467f958SSadaf Ebrahimi #ifndef CL_NO_PROTOTYPES
2324*6467f958SSadaf Ebrahimi 
2325*6467f958SSadaf Ebrahimi extern CL_API_ENTRY void* CL_API_CALL
2326*6467f958SSadaf Ebrahimi clHostMemAllocINTEL(
2327*6467f958SSadaf Ebrahimi     cl_context context,
2328*6467f958SSadaf Ebrahimi     const cl_mem_properties_intel* properties,
2329*6467f958SSadaf Ebrahimi     size_t size,
2330*6467f958SSadaf Ebrahimi     cl_uint alignment,
2331*6467f958SSadaf Ebrahimi     cl_int* errcode_ret) ;
2332*6467f958SSadaf Ebrahimi 
2333*6467f958SSadaf Ebrahimi extern CL_API_ENTRY void* CL_API_CALL
2334*6467f958SSadaf Ebrahimi clDeviceMemAllocINTEL(
2335*6467f958SSadaf Ebrahimi     cl_context context,
2336*6467f958SSadaf Ebrahimi     cl_device_id device,
2337*6467f958SSadaf Ebrahimi     const cl_mem_properties_intel* properties,
2338*6467f958SSadaf Ebrahimi     size_t size,
2339*6467f958SSadaf Ebrahimi     cl_uint alignment,
2340*6467f958SSadaf Ebrahimi     cl_int* errcode_ret) ;
2341*6467f958SSadaf Ebrahimi 
2342*6467f958SSadaf Ebrahimi extern CL_API_ENTRY void* CL_API_CALL
2343*6467f958SSadaf Ebrahimi clSharedMemAllocINTEL(
2344*6467f958SSadaf Ebrahimi     cl_context context,
2345*6467f958SSadaf Ebrahimi     cl_device_id device,
2346*6467f958SSadaf Ebrahimi     const cl_mem_properties_intel* properties,
2347*6467f958SSadaf Ebrahimi     size_t size,
2348*6467f958SSadaf Ebrahimi     cl_uint alignment,
2349*6467f958SSadaf Ebrahimi     cl_int* errcode_ret) ;
2350*6467f958SSadaf Ebrahimi 
2351*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
2352*6467f958SSadaf Ebrahimi clMemFreeINTEL(
2353*6467f958SSadaf Ebrahimi     cl_context context,
2354*6467f958SSadaf Ebrahimi     void* ptr) ;
2355*6467f958SSadaf Ebrahimi 
2356*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
2357*6467f958SSadaf Ebrahimi clMemBlockingFreeINTEL(
2358*6467f958SSadaf Ebrahimi     cl_context context,
2359*6467f958SSadaf Ebrahimi     void* ptr) ;
2360*6467f958SSadaf Ebrahimi 
2361*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
2362*6467f958SSadaf Ebrahimi clGetMemAllocInfoINTEL(
2363*6467f958SSadaf Ebrahimi     cl_context context,
2364*6467f958SSadaf Ebrahimi     const void* ptr,
2365*6467f958SSadaf Ebrahimi     cl_mem_info_intel param_name,
2366*6467f958SSadaf Ebrahimi     size_t param_value_size,
2367*6467f958SSadaf Ebrahimi     void* param_value,
2368*6467f958SSadaf Ebrahimi     size_t* param_value_size_ret) ;
2369*6467f958SSadaf Ebrahimi 
2370*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
2371*6467f958SSadaf Ebrahimi clSetKernelArgMemPointerINTEL(
2372*6467f958SSadaf Ebrahimi     cl_kernel kernel,
2373*6467f958SSadaf Ebrahimi     cl_uint arg_index,
2374*6467f958SSadaf Ebrahimi     const void* arg_value) ;
2375*6467f958SSadaf Ebrahimi 
2376*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
2377*6467f958SSadaf Ebrahimi clEnqueueMemFillINTEL(
2378*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
2379*6467f958SSadaf Ebrahimi     void* dst_ptr,
2380*6467f958SSadaf Ebrahimi     const void* pattern,
2381*6467f958SSadaf Ebrahimi     size_t pattern_size,
2382*6467f958SSadaf Ebrahimi     size_t size,
2383*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
2384*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
2385*6467f958SSadaf Ebrahimi     cl_event* event) ;
2386*6467f958SSadaf Ebrahimi 
2387*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
2388*6467f958SSadaf Ebrahimi clEnqueueMemcpyINTEL(
2389*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
2390*6467f958SSadaf Ebrahimi     cl_bool blocking,
2391*6467f958SSadaf Ebrahimi     void* dst_ptr,
2392*6467f958SSadaf Ebrahimi     const void* src_ptr,
2393*6467f958SSadaf Ebrahimi     size_t size,
2394*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
2395*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
2396*6467f958SSadaf Ebrahimi     cl_event* event) ;
2397*6467f958SSadaf Ebrahimi 
2398*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
2399*6467f958SSadaf Ebrahimi clEnqueueMemAdviseINTEL(
2400*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
2401*6467f958SSadaf Ebrahimi     const void* ptr,
2402*6467f958SSadaf Ebrahimi     size_t size,
2403*6467f958SSadaf Ebrahimi     cl_mem_advice_intel advice,
2404*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
2405*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
2406*6467f958SSadaf Ebrahimi     cl_event* event) ;
2407*6467f958SSadaf Ebrahimi 
2408*6467f958SSadaf Ebrahimi #endif /* CL_NO_PROTOTYPES */
2409*6467f958SSadaf Ebrahimi 
2410*6467f958SSadaf Ebrahimi #if defined(CL_VERSION_1_2)
2411*6467f958SSadaf Ebrahimi /* Requires OpenCL 1.2 for cl_mem_migration_flags: */
2412*6467f958SSadaf Ebrahimi 
2413*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
2414*6467f958SSadaf Ebrahimi clEnqueueMigrateMemINTEL_fn)(
2415*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
2416*6467f958SSadaf Ebrahimi     const void* ptr,
2417*6467f958SSadaf Ebrahimi     size_t size,
2418*6467f958SSadaf Ebrahimi     cl_mem_migration_flags flags,
2419*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
2420*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
2421*6467f958SSadaf Ebrahimi     cl_event* event) ;
2422*6467f958SSadaf Ebrahimi 
2423*6467f958SSadaf Ebrahimi #ifndef CL_NO_PROTOTYPES
2424*6467f958SSadaf Ebrahimi 
2425*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
2426*6467f958SSadaf Ebrahimi clEnqueueMigrateMemINTEL(
2427*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
2428*6467f958SSadaf Ebrahimi     const void* ptr,
2429*6467f958SSadaf Ebrahimi     size_t size,
2430*6467f958SSadaf Ebrahimi     cl_mem_migration_flags flags,
2431*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
2432*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
2433*6467f958SSadaf Ebrahimi     cl_event* event) ;
2434*6467f958SSadaf Ebrahimi 
2435*6467f958SSadaf Ebrahimi #endif /* CL_NO_PROTOTYPES */
2436*6467f958SSadaf Ebrahimi 
2437*6467f958SSadaf Ebrahimi #endif /* defined(CL_VERSION_1_2) */
2438*6467f958SSadaf Ebrahimi 
2439*6467f958SSadaf Ebrahimi /* deprecated, use clEnqueueMemFillINTEL instead */
2440*6467f958SSadaf Ebrahimi 
2441*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
2442*6467f958SSadaf Ebrahimi clEnqueueMemsetINTEL_fn)(
2443*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
2444*6467f958SSadaf Ebrahimi     void* dst_ptr,
2445*6467f958SSadaf Ebrahimi     cl_int value,
2446*6467f958SSadaf Ebrahimi     size_t size,
2447*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
2448*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
2449*6467f958SSadaf Ebrahimi     cl_event* event) ;
2450*6467f958SSadaf Ebrahimi 
2451*6467f958SSadaf Ebrahimi #ifndef CL_NO_PROTOTYPES
2452*6467f958SSadaf Ebrahimi 
2453*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
2454*6467f958SSadaf Ebrahimi clEnqueueMemsetINTEL(
2455*6467f958SSadaf Ebrahimi     cl_command_queue command_queue,
2456*6467f958SSadaf Ebrahimi     void* dst_ptr,
2457*6467f958SSadaf Ebrahimi     cl_int value,
2458*6467f958SSadaf Ebrahimi     size_t size,
2459*6467f958SSadaf Ebrahimi     cl_uint num_events_in_wait_list,
2460*6467f958SSadaf Ebrahimi     const cl_event* event_wait_list,
2461*6467f958SSadaf Ebrahimi     cl_event* event) ;
2462*6467f958SSadaf Ebrahimi 
2463*6467f958SSadaf Ebrahimi #endif /* CL_NO_PROTOTYPES */
2464*6467f958SSadaf Ebrahimi 
2465*6467f958SSadaf Ebrahimi /***************************************************************
2466*6467f958SSadaf Ebrahimi * cl_intel_mem_alloc_buffer_location
2467*6467f958SSadaf Ebrahimi ***************************************************************/
2468*6467f958SSadaf Ebrahimi #define cl_intel_mem_alloc_buffer_location 1
2469*6467f958SSadaf Ebrahimi #define CL_INTEL_MEM_ALLOC_BUFFER_LOCATION_EXTENSION_NAME \
2470*6467f958SSadaf Ebrahimi     "cl_intel_mem_alloc_buffer_location"
2471*6467f958SSadaf Ebrahimi 
2472*6467f958SSadaf Ebrahimi /* cl_mem_properties_intel */
2473*6467f958SSadaf Ebrahimi #define CL_MEM_ALLOC_BUFFER_LOCATION_INTEL                  0x419E
2474*6467f958SSadaf Ebrahimi 
2475*6467f958SSadaf Ebrahimi /* cl_mem_alloc_info_intel */
2476*6467f958SSadaf Ebrahimi /* enum CL_MEM_ALLOC_BUFFER_LOCATION_INTEL */
2477*6467f958SSadaf Ebrahimi 
2478*6467f958SSadaf Ebrahimi /***************************************************
2479*6467f958SSadaf Ebrahimi * cl_intel_create_buffer_with_properties extension *
2480*6467f958SSadaf Ebrahimi ****************************************************/
2481*6467f958SSadaf Ebrahimi 
2482*6467f958SSadaf Ebrahimi #define cl_intel_create_buffer_with_properties 1
2483*6467f958SSadaf Ebrahimi 
2484*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_mem CL_API_CALL
2485*6467f958SSadaf Ebrahimi clCreateBufferWithPropertiesINTEL(
2486*6467f958SSadaf Ebrahimi     cl_context   context,
2487*6467f958SSadaf Ebrahimi     const cl_mem_properties_intel* properties,
2488*6467f958SSadaf Ebrahimi     cl_mem_flags flags,
2489*6467f958SSadaf Ebrahimi     size_t       size,
2490*6467f958SSadaf Ebrahimi     void *       host_ptr,
2491*6467f958SSadaf Ebrahimi     cl_int *     errcode_ret) CL_API_SUFFIX__VERSION_1_0;
2492*6467f958SSadaf Ebrahimi 
2493*6467f958SSadaf Ebrahimi typedef cl_mem (CL_API_CALL *
2494*6467f958SSadaf Ebrahimi clCreateBufferWithPropertiesINTEL_fn)(
2495*6467f958SSadaf Ebrahimi     cl_context   context,
2496*6467f958SSadaf Ebrahimi     const cl_mem_properties_intel* properties,
2497*6467f958SSadaf Ebrahimi     cl_mem_flags flags,
2498*6467f958SSadaf Ebrahimi     size_t       size,
2499*6467f958SSadaf Ebrahimi     void *       host_ptr,
2500*6467f958SSadaf Ebrahimi     cl_int *     errcode_ret) CL_API_SUFFIX__VERSION_1_0;
2501*6467f958SSadaf Ebrahimi 
2502*6467f958SSadaf Ebrahimi /******************************************
2503*6467f958SSadaf Ebrahimi * cl_intel_mem_channel_property extension *
2504*6467f958SSadaf Ebrahimi *******************************************/
2505*6467f958SSadaf Ebrahimi 
2506*6467f958SSadaf Ebrahimi #define CL_MEM_CHANNEL_INTEL            0x4213
2507*6467f958SSadaf Ebrahimi 
2508*6467f958SSadaf Ebrahimi /*********************************
2509*6467f958SSadaf Ebrahimi * cl_intel_mem_force_host_memory *
2510*6467f958SSadaf Ebrahimi **********************************/
2511*6467f958SSadaf Ebrahimi 
2512*6467f958SSadaf Ebrahimi #define cl_intel_mem_force_host_memory 1
2513*6467f958SSadaf Ebrahimi 
2514*6467f958SSadaf Ebrahimi /* cl_mem_flags */
2515*6467f958SSadaf Ebrahimi #define CL_MEM_FORCE_HOST_MEMORY_INTEL                      (1 << 20)
2516*6467f958SSadaf Ebrahimi 
2517*6467f958SSadaf Ebrahimi /***************************************************************
2518*6467f958SSadaf Ebrahimi * cl_intel_command_queue_families
2519*6467f958SSadaf Ebrahimi ***************************************************************/
2520*6467f958SSadaf Ebrahimi #define cl_intel_command_queue_families 1
2521*6467f958SSadaf Ebrahimi 
2522*6467f958SSadaf Ebrahimi typedef cl_bitfield         cl_command_queue_capabilities_intel;
2523*6467f958SSadaf Ebrahimi 
2524*6467f958SSadaf Ebrahimi #define CL_QUEUE_FAMILY_MAX_NAME_SIZE_INTEL                 64
2525*6467f958SSadaf Ebrahimi 
2526*6467f958SSadaf Ebrahimi typedef struct _cl_queue_family_properties_intel {
2527*6467f958SSadaf Ebrahimi     cl_command_queue_properties properties;
2528*6467f958SSadaf Ebrahimi     cl_command_queue_capabilities_intel capabilities;
2529*6467f958SSadaf Ebrahimi     cl_uint count;
2530*6467f958SSadaf Ebrahimi     char name[CL_QUEUE_FAMILY_MAX_NAME_SIZE_INTEL];
2531*6467f958SSadaf Ebrahimi } cl_queue_family_properties_intel;
2532*6467f958SSadaf Ebrahimi 
2533*6467f958SSadaf Ebrahimi /* cl_device_info */
2534*6467f958SSadaf Ebrahimi #define CL_DEVICE_QUEUE_FAMILY_PROPERTIES_INTEL             0x418B
2535*6467f958SSadaf Ebrahimi 
2536*6467f958SSadaf Ebrahimi /* cl_queue_properties */
2537*6467f958SSadaf Ebrahimi #define CL_QUEUE_FAMILY_INTEL                               0x418C
2538*6467f958SSadaf Ebrahimi #define CL_QUEUE_INDEX_INTEL                                0x418D
2539*6467f958SSadaf Ebrahimi 
2540*6467f958SSadaf Ebrahimi /* cl_command_queue_capabilities_intel */
2541*6467f958SSadaf Ebrahimi #define CL_QUEUE_DEFAULT_CAPABILITIES_INTEL                 0
2542*6467f958SSadaf Ebrahimi #define CL_QUEUE_CAPABILITY_CREATE_SINGLE_QUEUE_EVENTS_INTEL (1 << 0)
2543*6467f958SSadaf Ebrahimi #define CL_QUEUE_CAPABILITY_CREATE_CROSS_QUEUE_EVENTS_INTEL (1 << 1)
2544*6467f958SSadaf Ebrahimi #define CL_QUEUE_CAPABILITY_SINGLE_QUEUE_EVENT_WAIT_LIST_INTEL (1 << 2)
2545*6467f958SSadaf Ebrahimi #define CL_QUEUE_CAPABILITY_CROSS_QUEUE_EVENT_WAIT_LIST_INTEL (1 << 3)
2546*6467f958SSadaf Ebrahimi #define CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_INTEL           (1 << 8)
2547*6467f958SSadaf Ebrahimi #define CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_RECT_INTEL      (1 << 9)
2548*6467f958SSadaf Ebrahimi #define CL_QUEUE_CAPABILITY_MAP_BUFFER_INTEL                (1 << 10)
2549*6467f958SSadaf Ebrahimi #define CL_QUEUE_CAPABILITY_FILL_BUFFER_INTEL               (1 << 11)
2550*6467f958SSadaf Ebrahimi #define CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_INTEL            (1 << 12)
2551*6467f958SSadaf Ebrahimi #define CL_QUEUE_CAPABILITY_MAP_IMAGE_INTEL                 (1 << 13)
2552*6467f958SSadaf Ebrahimi #define CL_QUEUE_CAPABILITY_FILL_IMAGE_INTEL                (1 << 14)
2553*6467f958SSadaf Ebrahimi #define CL_QUEUE_CAPABILITY_TRANSFER_BUFFER_IMAGE_INTEL     (1 << 15)
2554*6467f958SSadaf Ebrahimi #define CL_QUEUE_CAPABILITY_TRANSFER_IMAGE_BUFFER_INTEL     (1 << 16)
2555*6467f958SSadaf Ebrahimi #define CL_QUEUE_CAPABILITY_MARKER_INTEL                    (1 << 24)
2556*6467f958SSadaf Ebrahimi #define CL_QUEUE_CAPABILITY_BARRIER_INTEL                   (1 << 25)
2557*6467f958SSadaf Ebrahimi #define CL_QUEUE_CAPABILITY_KERNEL_INTEL                    (1 << 26)
2558*6467f958SSadaf Ebrahimi 
2559*6467f958SSadaf Ebrahimi /***************************************************************
2560*6467f958SSadaf Ebrahimi * cl_intel_queue_no_sync_operations
2561*6467f958SSadaf Ebrahimi ***************************************************************/
2562*6467f958SSadaf Ebrahimi 
2563*6467f958SSadaf Ebrahimi #define cl_intel_queue_no_sync_operations 1
2564*6467f958SSadaf Ebrahimi 
2565*6467f958SSadaf Ebrahimi /* addition to cl_command_queue_properties */
2566*6467f958SSadaf Ebrahimi #define CL_QUEUE_NO_SYNC_OPERATIONS_INTEL                   (1 << 29)
2567*6467f958SSadaf Ebrahimi 
2568*6467f958SSadaf Ebrahimi /***************************************************************
2569*6467f958SSadaf Ebrahimi * cl_intel_sharing_format_query
2570*6467f958SSadaf Ebrahimi ***************************************************************/
2571*6467f958SSadaf Ebrahimi #define cl_intel_sharing_format_query 1
2572*6467f958SSadaf Ebrahimi 
2573*6467f958SSadaf Ebrahimi /***************************************************************
2574*6467f958SSadaf Ebrahimi * cl_ext_image_requirements_info
2575*6467f958SSadaf Ebrahimi ***************************************************************/
2576*6467f958SSadaf Ebrahimi 
2577*6467f958SSadaf Ebrahimi #ifdef CL_VERSION_3_0
2578*6467f958SSadaf Ebrahimi 
2579*6467f958SSadaf Ebrahimi #define cl_ext_image_requirements_info 1
2580*6467f958SSadaf Ebrahimi 
2581*6467f958SSadaf Ebrahimi typedef cl_uint cl_image_requirements_info_ext;
2582*6467f958SSadaf Ebrahimi 
2583*6467f958SSadaf Ebrahimi #define CL_IMAGE_REQUIREMENTS_ROW_PITCH_ALIGNMENT_EXT    0x1290
2584*6467f958SSadaf Ebrahimi #define CL_IMAGE_REQUIREMENTS_BASE_ADDRESS_ALIGNMENT_EXT 0x1292
2585*6467f958SSadaf Ebrahimi #define CL_IMAGE_REQUIREMENTS_SIZE_EXT                   0x12B2
2586*6467f958SSadaf Ebrahimi #define CL_IMAGE_REQUIREMENTS_MAX_WIDTH_EXT              0x12B3
2587*6467f958SSadaf Ebrahimi #define CL_IMAGE_REQUIREMENTS_MAX_HEIGHT_EXT             0x12B4
2588*6467f958SSadaf Ebrahimi #define CL_IMAGE_REQUIREMENTS_MAX_DEPTH_EXT              0x12B5
2589*6467f958SSadaf Ebrahimi #define CL_IMAGE_REQUIREMENTS_MAX_ARRAY_SIZE_EXT         0x12B6
2590*6467f958SSadaf Ebrahimi 
2591*6467f958SSadaf Ebrahimi extern CL_API_ENTRY cl_int CL_API_CALL
2592*6467f958SSadaf Ebrahimi clGetImageRequirementsInfoEXT(
2593*6467f958SSadaf Ebrahimi     cl_context                     context,
2594*6467f958SSadaf Ebrahimi     const cl_mem_properties*       properties,
2595*6467f958SSadaf Ebrahimi     cl_mem_flags                   flags,
2596*6467f958SSadaf Ebrahimi     const cl_image_format*         image_format,
2597*6467f958SSadaf Ebrahimi     const cl_image_desc*           image_desc,
2598*6467f958SSadaf Ebrahimi     cl_image_requirements_info_ext param_name,
2599*6467f958SSadaf Ebrahimi     size_t  param_value_size,
2600*6467f958SSadaf Ebrahimi     void*   param_value,
2601*6467f958SSadaf Ebrahimi     size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_3_0;
2602*6467f958SSadaf Ebrahimi 
2603*6467f958SSadaf Ebrahimi typedef cl_int (CL_API_CALL *
2604*6467f958SSadaf Ebrahimi clGetImageRequirementsInfoEXT_fn)(
2605*6467f958SSadaf Ebrahimi     cl_context                     context,
2606*6467f958SSadaf Ebrahimi     const cl_mem_properties*       properties,
2607*6467f958SSadaf Ebrahimi     cl_mem_flags                   flags,
2608*6467f958SSadaf Ebrahimi     const cl_image_format*         image_format,
2609*6467f958SSadaf Ebrahimi     const cl_image_desc*           image_desc,
2610*6467f958SSadaf Ebrahimi     cl_image_requirements_info_ext param_name,
2611*6467f958SSadaf Ebrahimi     size_t  param_value_size,
2612*6467f958SSadaf Ebrahimi     void*   param_value,
2613*6467f958SSadaf Ebrahimi     size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_3_0;
2614*6467f958SSadaf Ebrahimi 
2615*6467f958SSadaf Ebrahimi #endif
2616*6467f958SSadaf Ebrahimi 
2617*6467f958SSadaf Ebrahimi /***************************************************************
2618*6467f958SSadaf Ebrahimi * cl_ext_image_from_buffer
2619*6467f958SSadaf Ebrahimi ***************************************************************/
2620*6467f958SSadaf Ebrahimi 
2621*6467f958SSadaf Ebrahimi #ifdef CL_VERSION_3_0
2622*6467f958SSadaf Ebrahimi 
2623*6467f958SSadaf Ebrahimi #define cl_ext_image_from_buffer 1
2624*6467f958SSadaf Ebrahimi 
2625*6467f958SSadaf Ebrahimi #define CL_IMAGE_REQUIREMENTS_SLICE_PITCH_ALIGNMENT_EXT  0x1291
2626*6467f958SSadaf Ebrahimi 
2627*6467f958SSadaf Ebrahimi #endif
2628*6467f958SSadaf Ebrahimi 
2629*6467f958SSadaf Ebrahimi #ifdef __cplusplus
2630*6467f958SSadaf Ebrahimi }
2631*6467f958SSadaf Ebrahimi #endif
2632*6467f958SSadaf Ebrahimi 
2633*6467f958SSadaf Ebrahimi 
2634*6467f958SSadaf Ebrahimi #endif /* __CL_EXT_H */
2635