doxygen: add newline after \file
[blender.git] / intern / glew-mx / intern / symbol-binding.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2014 Blender Foundation.
17  * All rights reserved.
18  */
19
20 /** \file
21  * \ingroup glew-mx
22  *
23  * This file is for any simple stuff that is missing from GLEW when
24  * compiled with either the GLEW_ES_ONLY or the GLEW_NO_ES flag.
25  *
26  * Should be limited to symbolic constants.
27  *
28  * This file is NOT for checking DEPRECATED OpenGL symbolic constants.
29  */
30
31 #ifndef __SYMBOL_BINDING_H__
32 #define __SYMBOL_BINDING_H__
33
34 #ifndef __GLEW_MX_H__
35 #error This file is meant to be included from glew-mx.h
36 #endif
37
38
39 #ifdef GLEW_ES_ONLY
40
41 /* ES does not support the GLdouble type. */
42 #ifndef GLdouble
43 #define GLdouble double
44 #endif
45
46 /*
47  * Need stubs for these version checks if compiling with only ES support.
48  * Rely on compiler to eliminate unreachable code when version checks become constants.
49  */
50
51 #ifndef GLEW_VERSION_1_1
52 #define GLEW_VERSION_1_1 0
53 #endif
54
55 #ifndef GLEW_VERSION_1_2
56 #define GLEW_VERSION_1_2 0
57 #endif
58
59 #ifndef GLEW_VERSION_1_3
60 #define GLEW_VERSION_1_3 0
61 #endif
62
63 #ifndef GLEW_VERSION_1_4
64 #define GLEW_VERSION_1_4 0
65 #endif
66
67 #ifndef GLEW_VERSION_1_5
68 #define GLEW_VERSION_1_5 0
69 #endif
70
71 #ifndef GLEW_VERSION_2_0
72 #define GLEW_VERSION_2_0 0
73 #endif
74
75 #ifndef GLEW_VERSION_3_0
76 #define GLEW_VERSION_3_0 0
77 #endif
78
79 #ifndef GLEW_ARB_shader_objects
80 #define GLEW_ARB_shader_objects 0
81 #endif
82
83 #ifndef GLEW_ARB_vertex_shader
84 #define GLEW_ARB_vertex_shader 0
85 #endif
86
87 #ifndef GLEW_ARB_vertex_program
88 #define GLEW_ARB_vertex_program 0
89 #endif
90
91 #ifndef GLEW_ARB_fragment_program
92 #define GLEW_ARB_fragment_program 0
93 #endif
94
95 #ifndef GLEW_ARB_vertex_buffer_object
96 #define GLEW_ARB_vertex_buffer_object 0
97 #endif
98
99 #ifndef GLEW_ARB_framebuffer_object
100 #define GLEW_ARB_framebuffer_object 0
101 #endif
102
103 #ifndef GLEW_ARB_multitexture
104 #define GLEW_ARB_multitexture 0
105 #endif
106
107 #ifndef GLEW_EXT_framebuffer_object
108 #define GLEW_EXT_framebuffer_object 0
109 #endif
110
111 #ifndef GLEW_ARB_depth_texture
112 #define GLEW_ARB_depth_texture 0
113 #endif
114
115 #ifndef GLEW_ARB_shadow
116 #define GLEW_ARB_shadow 0
117 #endif
118
119 #ifndef GLEW_ARB_texture_float
120 #define GLEW_ARB_texture_float 0
121 #endif
122
123 #ifndef GLEW_ARB_texture_non_power_of_two
124 #define GLEW_ARB_texture_non_power_of_two 0
125 #endif
126
127 #ifndef GLEW_ARB_texture3D
128 #define GLEW_ARB_texture3D 0
129 #endif
130
131 #ifndef GLEW_EXT_texture3D
132 #define GLEW_EXT_texture3D 0
133 #endif
134
135 #ifndef GLEW_ARB_texture_rg
136 #define GLEW_ARB_texture_rg 0
137 #endif
138
139 #ifndef GLEW_ARB_texture_query_lod
140 #define GLEW_ARB_texture_query_lod 0
141 #endif
142
143
144 /*
145  * The following symbolic constants are missing from an ES only header,
146  * so alias them to their (same valued) extension versions which are available in the header.
147  *
148  * Be careful that this does not lead to unguarded use of what are extensions in ES!
149  *
150  * Some of these may be here simply to patch inconsistencies in the header files.
151  */
152
153 #ifndef GL_TEXTURE_3D
154 #define GL_TEXTURE_3D GL_TEXTURE_3D_OES
155 #endif
156
157 #ifndef GL_TEXTURE_WRAP_R
158 #define GL_TEXTURE_WRAP_R GL_TEXTURE_WRAP_R_OES
159 #endif
160
161 #ifndef GL_TEXTURE_COMPARE_MODE
162 #define GL_TEXTURE_COMPARE_MODE GL_TEXTURE_COMPARE_MODE_EXT
163 #endif
164
165 #ifndef GL_COMPARE_REF_TO_TEXTURE
166 #define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_REF_TO_TEXTURE_EXT
167 #endif
168
169 #ifndef GL_TEXTURE_COMPARE_FUNC
170 #define GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_FUNC_EXT
171 #endif
172
173 #ifndef GL_RGBA8
174 #define GL_RGBA8 GL_RGBA8_OES
175 #endif
176
177 #ifndef GL_RGBA16F
178 #define GL_RGBA16F GL_RGBA16F_EXT
179 #endif
180
181 #ifndef GL_RG32F
182 #define GL_RG32F GL_RG32F_EXT
183 #endif
184
185 #ifndef GL_RGB8
186 #define GL_RGB8 GL_RGB8_OES
187 #endif
188
189 #ifndef GL_RG
190 #define GL_RG GL_RG_EXT
191 #endif
192
193 #ifndef GL_RED
194 #define GL_RED GL_RED_EXT
195 #endif
196
197 #ifndef GL_FRAMEBUFFER_INCOMPLETE_FORMATS
198 #define GL_FRAMEBUFFER_INCOMPLETE_FORMATS GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES
199 #endif
200
201 #ifndef GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER
202 #define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES
203 #endif
204
205 #ifndef GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER
206 #define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES
207 #endif
208
209 #ifndef GL_WRITE_ONLY
210 #define GL_WRITE_ONLY GL_WRITE_ONLY_OES
211 #endif
212
213 #ifndef GLEW_ARB_vertex_array_object
214 #define GLEW_ARB_vertex_array_object 0
215 #endif
216
217
218 /* end of ifdef GLEW_ES_ONLY */
219 #elif defined(GLEW_NO_ES)
220
221
222 /*
223  * Need stubs for these version checks if compiling without any support.
224  * Rely on compiler to eliminate unreachable code when version checks become constants
225  */
226
227 #ifndef GLEW_ES_VERSION_2_0
228 #define GLEW_ES_VERSION_2_0 0
229 #endif
230
231 #ifndef GLEW_EXT_texture_storage
232 #define GLEW_EXT_texture_storage 0
233 #endif
234
235 #ifndef GLEW_OES_framebuffer_object
236 #define GLEW_OES_framebuffer_object 0
237 #endif
238
239 #ifndef GLEW_OES_mapbuffer
240 #define GLEW_OES_mapbuffer 0
241 #endif
242
243 #ifndef GLEW_OES_required_internalformat
244 #define GLEW_OES_required_internalformat 0
245 #endif
246
247 #ifndef GLEW_EXT_color_buffer_half_float
248 #define GLEW_EXT_color_buffer_half_float 0
249 #endif
250
251 #ifndef GLEW_OES_depth_texture
252 #define GLEW_OES_depth_texture 0
253 #endif
254
255 #ifndef GLEW_EXT_shadow_samplers
256 #define GLEW_EXT_shadow_samplers 0
257 #endif
258
259 #ifndef GLEW_ARB_texture3D
260 #define GLEW_ARB_texture3D 0
261 #endif
262
263 #ifndef GLEW_OES_texture_3D
264 #define GLEW_OES_texture_3D 0
265 #endif
266
267 #ifndef GLEW_EXT_texture_rg
268 #define GLEW_EXT_texture_rg 0
269 #endif
270
271 #ifndef GLEW_OES_vertex_array_object
272 #define GLEW_OES_vertex_array_object 0
273 #endif
274
275
276 /*
277  * The following symbolic constants are missing when there is no ES support,
278  * so alias them to their (same valued) extension versions which are available in the header.
279  *
280  * Desktop GL typically does not have any extensions that originated from ES,
281  * unlike ES which has many extensions to replace what was taken out.
282  *
283  * For that reason these aliases are more likely just patching inconsistencies in the header files.
284  */
285
286 #ifndef GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS
287 #define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT
288 #endif
289
290 #ifndef GL_FRAMEBUFFER_INCOMPLETE_FORMATS
291 #define GL_FRAMEBUFFER_INCOMPLETE_FORMATS GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT
292 #endif
293
294 #endif /* ifdef GLEW_NO_ES */
295
296
297 #endif /* __SYMBOL_BINDING_H__*/