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