1 /**********************************************************************************
2 * Copyright (c) 2008-2019 The Khronos Group Inc.
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and/or associated documentation files (the
6 * "Materials"), to deal in the Materials without restriction, including
7 * without limitation the rights to use, copy, modify, merge, publish,
8 * distribute, sublicense, and/or sell copies of the Materials, and to
9 * permit persons to whom the Materials are furnished to do so, subject to
10 * the following conditions:
12 * The above copyright notice and this permission notice shall be included
13 * in all copies or substantial portions of the Materials.
15 * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
16 * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
17 * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
18 * https://www.khronos.org/registry/
20 * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26 * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
27 **********************************************************************************/
29 #ifndef __OPENCL_CL_GL_H
30 #define __OPENCL_CL_GL_H
38 typedef cl_uint cl_gl_object_type
;
39 typedef cl_uint cl_gl_texture_info
;
40 typedef cl_uint cl_gl_platform_info
;
41 typedef struct __GLsync
*cl_GLsync
;
43 /* cl_gl_object_type = 0x2000 - 0x200F enum values are currently taken */
44 #define CL_GL_OBJECT_BUFFER 0x2000
45 #define CL_GL_OBJECT_TEXTURE2D 0x2001
46 #define CL_GL_OBJECT_TEXTURE3D 0x2002
47 #define CL_GL_OBJECT_RENDERBUFFER 0x2003
49 #define CL_GL_OBJECT_TEXTURE2D_ARRAY 0x200E
50 #define CL_GL_OBJECT_TEXTURE1D 0x200F
51 #define CL_GL_OBJECT_TEXTURE1D_ARRAY 0x2010
52 #define CL_GL_OBJECT_TEXTURE_BUFFER 0x2011
55 /* cl_gl_texture_info */
56 #define CL_GL_TEXTURE_TARGET 0x2004
57 #define CL_GL_MIPMAP_LEVEL 0x2005
59 #define CL_GL_NUM_SAMPLES 0x2012
63 extern CL_API_ENTRY cl_mem CL_API_CALL
64 clCreateFromGLBuffer(cl_context context
,
67 cl_int
* errcode_ret
) CL_API_SUFFIX__VERSION_1_0
;
71 extern CL_API_ENTRY cl_mem CL_API_CALL
72 clCreateFromGLTexture(cl_context context
,
77 cl_int
* errcode_ret
) CL_API_SUFFIX__VERSION_1_2
;
81 extern CL_API_ENTRY cl_mem CL_API_CALL
82 clCreateFromGLRenderbuffer(cl_context context
,
84 cl_GLuint renderbuffer
,
85 cl_int
* errcode_ret
) CL_API_SUFFIX__VERSION_1_0
;
87 extern CL_API_ENTRY cl_int CL_API_CALL
88 clGetGLObjectInfo(cl_mem memobj
,
89 cl_gl_object_type
* gl_object_type
,
90 cl_GLuint
* gl_object_name
) CL_API_SUFFIX__VERSION_1_0
;
92 extern CL_API_ENTRY cl_int CL_API_CALL
93 clGetGLTextureInfo(cl_mem memobj
,
94 cl_gl_texture_info param_name
,
95 size_t param_value_size
,
97 size_t * param_value_size_ret
) CL_API_SUFFIX__VERSION_1_0
;
99 extern CL_API_ENTRY cl_int CL_API_CALL
100 clEnqueueAcquireGLObjects(cl_command_queue command_queue
,
102 const cl_mem
* mem_objects
,
103 cl_uint num_events_in_wait_list
,
104 const cl_event
* event_wait_list
,
105 cl_event
* event
) CL_API_SUFFIX__VERSION_1_0
;
107 extern CL_API_ENTRY cl_int CL_API_CALL
108 clEnqueueReleaseGLObjects(cl_command_queue command_queue
,
110 const cl_mem
* mem_objects
,
111 cl_uint num_events_in_wait_list
,
112 const cl_event
* event_wait_list
,
113 cl_event
* event
) CL_API_SUFFIX__VERSION_1_0
;
116 /* Deprecated OpenCL 1.1 APIs */
117 extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL
118 clCreateFromGLTexture2D(cl_context context
,
123 cl_int
* errcode_ret
) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED
;
125 extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL
126 clCreateFromGLTexture3D(cl_context context
,
131 cl_int
* errcode_ret
) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED
;
133 /* cl_khr_gl_sharing extension */
135 #define cl_khr_gl_sharing 1
137 typedef cl_uint cl_gl_context_info
;
139 /* Additional Error Codes */
140 #define CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR -1000
142 /* cl_gl_context_info */
143 #define CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR 0x2006
144 #define CL_DEVICES_FOR_GL_CONTEXT_KHR 0x2007
146 /* Additional cl_context_properties */
147 #define CL_GL_CONTEXT_KHR 0x2008
148 #define CL_EGL_DISPLAY_KHR 0x2009
149 #define CL_GLX_DISPLAY_KHR 0x200A
150 #define CL_WGL_HDC_KHR 0x200B
151 #define CL_CGL_SHAREGROUP_KHR 0x200C
153 extern CL_API_ENTRY cl_int CL_API_CALL
154 clGetGLContextInfoKHR(const cl_context_properties
* properties
,
155 cl_gl_context_info param_name
,
156 size_t param_value_size
,
158 size_t * param_value_size_ret
) CL_API_SUFFIX__VERSION_1_0
;
160 typedef CL_API_ENTRY
cl_int (CL_API_CALL
*clGetGLContextInfoKHR_fn
)(
161 const cl_context_properties
* properties
,
162 cl_gl_context_info param_name
,
163 size_t param_value_size
,
165 size_t * param_value_size_ret
);
171 #endif /* __OPENCL_CL_GL_H */