1 /******************************************************************************* 2 * Copyright (c) 2008-2023 The Khronos Group Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 ******************************************************************************/ 16 17 #ifndef OPENCL_CL_GL_H_ 18 #define OPENCL_CL_GL_H_ 19 20 /* 21 ** This header is generated from the Khronos OpenCL XML API Registry. 22 */ 23 24 #include <CL/cl.h> 25 26 /* CL_NO_PROTOTYPES implies CL_NO_EXTENSION_PROTOTYPES: */ 27 #if defined(CL_NO_PROTOTYPES) && !defined(CL_NO_EXTENSION_PROTOTYPES) 28 #define CL_NO_EXTENSION_PROTOTYPES 29 #endif 30 31 /* CL_NO_EXTENSION_PROTOTYPES implies 32 CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES and 33 CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES: */ 34 #if defined(CL_NO_EXTENSION_PROTOTYPES) && \ 35 !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) 36 #define CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES 37 #endif 38 #if defined(CL_NO_EXTENSION_PROTOTYPES) && \ 39 !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) 40 #define CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES 41 #endif 42 43 #ifdef __cplusplus 44 extern "C" { 45 #endif 46 47 /*************************************************************** 48 * cl_khr_gl_sharing 49 ***************************************************************/ 50 #define cl_khr_gl_sharing 1 51 #define CL_KHR_GL_SHARING_EXTENSION_NAME \ 52 "cl_khr_gl_sharing" 53 54 typedef cl_uint cl_gl_context_info; 55 56 /* Error codes */ 57 #define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000 58 59 /* cl_gl_context_info */ 60 #define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006 61 #define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007 62 63 /* Additional cl_context_properties */ 64 #define CL_GL_CONTEXT_KHR 0x2008 65 #define CL_EGL_DISPLAY_KHR 0x2009 66 #define CL_GLX_DISPLAY_KHR 0x200A 67 #define CL_WGL_HDC_KHR 0x200B 68 #define CL_CGL_SHAREGROUP_KHR 0x200C 69 70 typedef cl_uint cl_gl_object_type; 71 typedef cl_uint cl_gl_texture_info; 72 typedef cl_uint cl_gl_platform_info; 73 74 /* cl_gl_object_type */ 75 #define CL_GL_OBJECT_BUFFER 0x2000 76 #define CL_GL_OBJECT_TEXTURE2D 0x2001 77 #define CL_GL_OBJECT_TEXTURE3D 0x2002 78 #define CL_GL_OBJECT_RENDERBUFFER 0x2003 79 80 #if defined(CL_VERSION_1_2) 81 /* cl_gl_object_type */ 82 #define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E 83 #define CL_GL_OBJECT_TEXTURE1D 0x200F 84 #define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010 85 #define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011 86 87 #endif /* defined(CL_VERSION_1_2) */ 88 89 /* cl_gl_texture_info */ 90 #define CL_GL_TEXTURE_TARGET 0x2004 91 #define CL_GL_MIPMAP_LEVEL 0x2005 92 93 94 typedef cl_int CL_API_CALL 95 clGetGLContextInfoKHR_t( 96 const cl_context_properties* properties, 97 cl_gl_context_info param_name, 98 size_t param_value_size, 99 void* param_value, 100 size_t* param_value_size_ret); 101 102 typedef clGetGLContextInfoKHR_t * 103 clGetGLContextInfoKHR_fn CL_API_SUFFIX__VERSION_1_0; 104 105 typedef cl_mem CL_API_CALL 106 clCreateFromGLBuffer_t( 107 cl_context context, 108 cl_mem_flags flags, 109 cl_GLuint bufobj, 110 cl_int* errcode_ret); 111 112 typedef clCreateFromGLBuffer_t * 113 clCreateFromGLBuffer_fn CL_API_SUFFIX__VERSION_1_0; 114 115 #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) 116 117 extern CL_API_ENTRY cl_int CL_API_CALL 118 clGetGLContextInfoKHR( 119 const cl_context_properties* properties, 120 cl_gl_context_info param_name, 121 size_t param_value_size, 122 void* param_value, 123 size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; 124 125 extern CL_API_ENTRY cl_mem CL_API_CALL 126 clCreateFromGLBuffer( 127 cl_context context, 128 cl_mem_flags flags, 129 cl_GLuint bufobj, 130 cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; 131 132 #endif /* !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ 133 134 #if defined(CL_VERSION_1_2) 135 136 typedef cl_mem CL_API_CALL 137 clCreateFromGLTexture_t( 138 cl_context context, 139 cl_mem_flags flags, 140 cl_GLenum target, 141 cl_GLint miplevel, 142 cl_GLuint texture, 143 cl_int* errcode_ret); 144 145 typedef clCreateFromGLTexture_t * 146 clCreateFromGLTexture_fn CL_API_SUFFIX__VERSION_1_2; 147 148 #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) 149 150 extern CL_API_ENTRY cl_mem CL_API_CALL 151 clCreateFromGLTexture( 152 cl_context context, 153 cl_mem_flags flags, 154 cl_GLenum target, 155 cl_GLint miplevel, 156 cl_GLuint texture, 157 cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_2; 158 159 #endif /* !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ 160 161 #endif /* defined(CL_VERSION_1_2) */ 162 163 164 typedef cl_mem CL_API_CALL 165 clCreateFromGLRenderbuffer_t( 166 cl_context context, 167 cl_mem_flags flags, 168 cl_GLuint renderbuffer, 169 cl_int* errcode_ret); 170 171 typedef clCreateFromGLRenderbuffer_t * 172 clCreateFromGLRenderbuffer_fn CL_API_SUFFIX__VERSION_1_0; 173 174 typedef cl_int CL_API_CALL 175 clGetGLObjectInfo_t( 176 cl_mem memobj, 177 cl_gl_object_type* gl_object_type, 178 cl_GLuint* gl_object_name); 179 180 typedef clGetGLObjectInfo_t * 181 clGetGLObjectInfo_fn CL_API_SUFFIX__VERSION_1_0; 182 183 typedef cl_int CL_API_CALL 184 clGetGLTextureInfo_t( 185 cl_mem memobj, 186 cl_gl_texture_info param_name, 187 size_t param_value_size, 188 void* param_value, 189 size_t* param_value_size_ret); 190 191 typedef clGetGLTextureInfo_t * 192 clGetGLTextureInfo_fn CL_API_SUFFIX__VERSION_1_0; 193 194 typedef cl_int CL_API_CALL 195 clEnqueueAcquireGLObjects_t( 196 cl_command_queue command_queue, 197 cl_uint num_objects, 198 const cl_mem* mem_objects, 199 cl_uint num_events_in_wait_list, 200 const cl_event* event_wait_list, 201 cl_event* event); 202 203 typedef clEnqueueAcquireGLObjects_t * 204 clEnqueueAcquireGLObjects_fn CL_API_SUFFIX__VERSION_1_0; 205 206 typedef cl_int CL_API_CALL 207 clEnqueueReleaseGLObjects_t( 208 cl_command_queue command_queue, 209 cl_uint num_objects, 210 const cl_mem* mem_objects, 211 cl_uint num_events_in_wait_list, 212 const cl_event* event_wait_list, 213 cl_event* event); 214 215 typedef clEnqueueReleaseGLObjects_t * 216 clEnqueueReleaseGLObjects_fn CL_API_SUFFIX__VERSION_1_0; 217 218 #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) 219 220 extern CL_API_ENTRY cl_mem CL_API_CALL 221 clCreateFromGLRenderbuffer( 222 cl_context context, 223 cl_mem_flags flags, 224 cl_GLuint renderbuffer, 225 cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_0; 226 227 extern CL_API_ENTRY cl_int CL_API_CALL 228 clGetGLObjectInfo( 229 cl_mem memobj, 230 cl_gl_object_type* gl_object_type, 231 cl_GLuint* gl_object_name) CL_API_SUFFIX__VERSION_1_0; 232 233 extern CL_API_ENTRY cl_int CL_API_CALL 234 clGetGLTextureInfo( 235 cl_mem memobj, 236 cl_gl_texture_info param_name, 237 size_t param_value_size, 238 void* param_value, 239 size_t* param_value_size_ret) CL_API_SUFFIX__VERSION_1_0; 240 241 extern CL_API_ENTRY cl_int CL_API_CALL 242 clEnqueueAcquireGLObjects( 243 cl_command_queue command_queue, 244 cl_uint num_objects, 245 const cl_mem* mem_objects, 246 cl_uint num_events_in_wait_list, 247 const cl_event* event_wait_list, 248 cl_event* event) CL_API_SUFFIX__VERSION_1_0; 249 250 extern CL_API_ENTRY cl_int CL_API_CALL 251 clEnqueueReleaseGLObjects( 252 cl_command_queue command_queue, 253 cl_uint num_objects, 254 const cl_mem* mem_objects, 255 cl_uint num_events_in_wait_list, 256 const cl_event* event_wait_list, 257 cl_event* event) CL_API_SUFFIX__VERSION_1_0; 258 259 #endif /* !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ 260 261 /* OpenCL 1.0 APIs that were deprecated in OpenCL 1.2 */ 262 263 typedef cl_mem CL_API_CALL 264 clCreateFromGLTexture2D_t( 265 cl_context context, 266 cl_mem_flags flags, 267 cl_GLenum target, 268 cl_GLint miplevel, 269 cl_GLuint texture, 270 cl_int* errcode_ret); 271 272 typedef clCreateFromGLTexture2D_t * 273 clCreateFromGLTexture2D_fn CL_API_SUFFIX__VERSION_1_1_DEPRECATED; 274 275 typedef cl_mem CL_API_CALL 276 clCreateFromGLTexture3D_t( 277 cl_context context, 278 cl_mem_flags flags, 279 cl_GLenum target, 280 cl_GLint miplevel, 281 cl_GLuint texture, 282 cl_int* errcode_ret); 283 284 typedef clCreateFromGLTexture3D_t * 285 clCreateFromGLTexture3D_fn CL_API_SUFFIX__VERSION_1_1_DEPRECATED; 286 287 #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) 288 289 extern CL_API_ENTRY cl_mem CL_API_CALL 290 clCreateFromGLTexture2D( 291 cl_context context, 292 cl_mem_flags flags, 293 cl_GLenum target, 294 cl_GLint miplevel, 295 cl_GLuint texture, 296 cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_1_DEPRECATED; 297 298 extern CL_API_ENTRY cl_mem CL_API_CALL 299 clCreateFromGLTexture3D( 300 cl_context context, 301 cl_mem_flags flags, 302 cl_GLenum target, 303 cl_GLint miplevel, 304 cl_GLuint texture, 305 cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_1_DEPRECATED; 306 307 #endif /* !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ 308 309 /*************************************************************** 310 * cl_khr_gl_event 311 ***************************************************************/ 312 #define cl_khr_gl_event 1 313 #define CL_KHR_GL_EVENT_EXTENSION_NAME \ 314 "cl_khr_gl_event" 315 316 typedef struct __GLsync * cl_GLsync; 317 318 /* cl_command_type */ 319 #define CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR 0x200D 320 321 322 typedef cl_event CL_API_CALL 323 clCreateEventFromGLsyncKHR_t( 324 cl_context context, 325 cl_GLsync sync, 326 cl_int* errcode_ret); 327 328 typedef clCreateEventFromGLsyncKHR_t * 329 clCreateEventFromGLsyncKHR_fn CL_API_SUFFIX__VERSION_1_1; 330 331 #if !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) 332 333 extern CL_API_ENTRY cl_event CL_API_CALL 334 clCreateEventFromGLsyncKHR( 335 cl_context context, 336 cl_GLsync sync, 337 cl_int* errcode_ret) CL_API_SUFFIX__VERSION_1_1; 338 339 #endif /* !defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ 340 341 /*************************************************************** 342 * cl_khr_gl_depth_images 343 ***************************************************************/ 344 #define cl_khr_gl_depth_images 1 345 #define CL_KHR_GL_DEPTH_IMAGES_EXTENSION_NAME \ 346 "cl_khr_gl_depth_images" 347 348 /* cl_channel_order */ 349 #define CL_DEPTH_STENCIL 0x10BE 350 351 /* cl_channel_type */ 352 #define CL_UNORM_INT24 0x10DF 353 354 /*************************************************************** 355 * cl_khr_gl_msaa_sharing 356 ***************************************************************/ 357 #define cl_khr_gl_msaa_sharing 1 358 #define CL_KHR_GL_MSAA_SHARING_EXTENSION_NAME \ 359 "cl_khr_gl_msaa_sharing" 360 361 /* cl_gl_texture_info */ 362 #define CL_GL_NUM_SAMPLES 0x2012 363 364 /*************************************************************** 365 * cl_intel_sharing_format_query_gl 366 ***************************************************************/ 367 #define cl_intel_sharing_format_query_gl 1 368 #define CL_INTEL_SHARING_FORMAT_QUERY_GL_EXTENSION_NAME \ 369 "cl_intel_sharing_format_query_gl" 370 371 /* when cl_khr_gl_sharing is supported */ 372 373 typedef cl_int CL_API_CALL 374 clGetSupportedGLTextureFormatsINTEL_t( 375 cl_context context, 376 cl_mem_flags flags, 377 cl_mem_object_type image_type, 378 cl_uint num_entries, 379 cl_GLenum* gl_formats, 380 cl_uint* num_texture_formats); 381 382 typedef clGetSupportedGLTextureFormatsINTEL_t * 383 clGetSupportedGLTextureFormatsINTEL_fn ; 384 385 #if !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) 386 387 extern CL_API_ENTRY cl_int CL_API_CALL 388 clGetSupportedGLTextureFormatsINTEL( 389 cl_context context, 390 cl_mem_flags flags, 391 cl_mem_object_type image_type, 392 cl_uint num_entries, 393 cl_GLenum* gl_formats, 394 cl_uint* num_texture_formats) ; 395 396 #endif /* !defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES) */ 397 398 #ifdef __cplusplus 399 } 400 #endif 401 402 #endif /* OPENCL_CL_GL_H_ */ 403