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