xref: /aosp_15_r20/external/angle/include/CL/cl_gl.h (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1 /*******************************************************************************
2  * Copyright (c) 2008-2023 The Khronos Group Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *    http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  ******************************************************************************/
16 
17 #ifndef OPENCL_CL_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