blob: a1231f9831a7ba6acef80f32e0d2843cff247ff7 [file] [log] [blame]
José Fonsecac6b49ce2010-11-28 16:43:04 +00001##########################################################################
2#
3# Copyright 2010 VMware, Inc.
4# All Rights Reserved.
5#
6# Permission is hereby granted, free of charge, to any person obtaining a copy
7# of this software and associated documentation files (the "Software"), to deal
8# in the Software without restriction, including without limitation the rights
9# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10# copies of the Software, and to permit persons to whom the Software is
11# furnished to do so, subject to the following conditions:
12#
13# The above copyright notice and this permission notice shall be included in
14# all copies or substantial portions of the Software.
15#
16# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22# THE SOFTWARE.
23#
24##########################################################################/
25
26
José Fonseca4a826ed2010-11-30 16:58:22 +000027"""Generated an header, glproc.hpp, which does pretty much what GLEW does, but
28covers all the functions we support.
29"""
30
31
José Fonsecae91f5bc2014-07-17 20:42:35 +010032import sys
33
José Fonseca669b2002011-02-20 13:32:19 +000034from dispatch import Dispatcher
José Fonseca4f242f42012-04-14 18:13:25 +010035import specs.stdapi as stdapi
José Fonsecabd86a222011-09-27 09:21:38 +010036from specs.glapi import glapi
37from specs.glxapi import glxapi
38from specs.wglapi import wglapi
39from specs.cglapi import cglapi
Chia-I Wue50c14b2011-11-03 12:24:53 +080040from specs.eglapi import eglapi
José Fonsecac6b49ce2010-11-28 16:43:04 +000041
42
José Fonseca68ec4122011-02-20 11:25:25 +000043# See http://www.opengl.org/registry/ABI/
José Fonsecac6b49ce2010-11-28 16:43:04 +000044public_symbols = set([
José Fonsecab87c2292011-10-09 14:56:16 +010045 # GL 1.2 and ARB_multitexture
46 "glAccum",
47 "glAlphaFunc",
48 "glAreTexturesResident",
49 "glArrayElement",
50 "glBegin",
51 "glBindTexture",
52 "glBitmap",
53 "glBlendFunc",
54 "glCallList",
55 "glCallLists",
56 "glClear",
57 "glClearAccum",
58 "glClearColor",
59 "glClearDepth",
60 "glClearIndex",
61 "glClearStencil",
62 "glClipPlane",
63 "glColor3b",
64 "glColor3bv",
65 "glColor3d",
66 "glColor3dv",
67 "glColor3f",
68 "glColor3fv",
69 "glColor3i",
70 "glColor3iv",
71 "glColor3s",
72 "glColor3sv",
73 "glColor3ub",
74 "glColor3ubv",
75 "glColor3ui",
76 "glColor3uiv",
77 "glColor3us",
78 "glColor3usv",
79 "glColor4b",
80 "glColor4bv",
81 "glColor4d",
82 "glColor4dv",
83 "glColor4f",
84 "glColor4fv",
85 "glColor4i",
86 "glColor4iv",
87 "glColor4s",
88 "glColor4sv",
89 "glColor4ub",
90 "glColor4ubv",
91 "glColor4ui",
92 "glColor4uiv",
93 "glColor4us",
94 "glColor4usv",
95 "glColorMask",
96 "glColorMaterial",
97 "glColorPointer",
98 "glCopyPixels",
99 "glCopyTexImage1D",
100 "glCopyTexImage2D",
101 "glCopyTexSubImage1D",
102 "glCopyTexSubImage2D",
103 "glCullFace",
104 "glDeleteLists",
105 "glDeleteTextures",
106 "glDepthFunc",
107 "glDepthMask",
108 "glDepthRange",
109 "glDisable",
110 "glDisableClientState",
111 "glDrawArrays",
112 "glDrawBuffer",
113 "glDrawElements",
114 "glDrawPixels",
115 "glEdgeFlag",
116 "glEdgeFlagPointer",
117 "glEdgeFlagv",
118 "glEnable",
119 "glEnableClientState",
120 "glEnd",
121 "glEndList",
122 "glEvalCoord1d",
123 "glEvalCoord1dv",
124 "glEvalCoord1f",
125 "glEvalCoord1fv",
126 "glEvalCoord2d",
127 "glEvalCoord2dv",
128 "glEvalCoord2f",
129 "glEvalCoord2fv",
130 "glEvalMesh1",
131 "glEvalMesh2",
132 "glEvalPoint1",
133 "glEvalPoint2",
134 "glFeedbackBuffer",
135 "glFinish",
136 "glFlush",
137 "glFogf",
138 "glFogfv",
139 "glFogi",
140 "glFogiv",
141 "glFrontFace",
142 "glFrustum",
143 "glGenLists",
144 "glGenTextures",
145 "glGetBooleanv",
146 "glGetClipPlane",
147 "glGetDoublev",
148 "glGetError",
149 "glGetFloatv",
150 "glGetIntegerv",
151 "glGetLightfv",
152 "glGetLightiv",
153 "glGetMapdv",
154 "glGetMapfv",
155 "glGetMapiv",
156 "glGetMaterialfv",
157 "glGetMaterialiv",
158 "glGetPixelMapfv",
159 "glGetPixelMapuiv",
160 "glGetPixelMapusv",
161 "glGetPointerv",
162 "glGetPolygonStipple",
163 "glGetString",
164 "glGetTexEnvfv",
165 "glGetTexEnviv",
166 "glGetTexGendv",
167 "glGetTexGenfv",
168 "glGetTexGeniv",
169 "glGetTexImage",
170 "glGetTexLevelParameterfv",
171 "glGetTexLevelParameteriv",
172 "glGetTexParameterfv",
173 "glGetTexParameteriv",
174 "glHint",
175 "glIndexMask",
176 "glIndexPointer",
177 "glIndexd",
178 "glIndexdv",
179 "glIndexf",
180 "glIndexfv",
181 "glIndexi",
182 "glIndexiv",
183 "glIndexs",
184 "glIndexsv",
185 "glIndexub",
186 "glIndexubv",
187 "glInitNames",
188 "glInterleavedArrays",
189 "glIsEnabled",
190 "glIsList",
191 "glIsTexture",
192 "glLightModelf",
193 "glLightModelfv",
194 "glLightModeli",
195 "glLightModeliv",
196 "glLightf",
197 "glLightfv",
198 "glLighti",
199 "glLightiv",
200 "glLineStipple",
201 "glLineWidth",
202 "glListBase",
203 "glLoadIdentity",
204 "glLoadMatrixd",
205 "glLoadMatrixf",
206 "glLoadName",
207 "glLogicOp",
208 "glMap1d",
209 "glMap1f",
210 "glMap2d",
211 "glMap2f",
212 "glMapGrid1d",
213 "glMapGrid1f",
214 "glMapGrid2d",
215 "glMapGrid2f",
216 "glMaterialf",
217 "glMaterialfv",
218 "glMateriali",
219 "glMaterialiv",
220 "glMatrixMode",
221 "glMultMatrixd",
222 "glMultMatrixf",
223 "glNewList",
224 "glNormal3b",
225 "glNormal3bv",
226 "glNormal3d",
227 "glNormal3dv",
228 "glNormal3f",
229 "glNormal3fv",
230 "glNormal3i",
231 "glNormal3iv",
232 "glNormal3s",
233 "glNormal3sv",
234 "glNormalPointer",
235 "glOrtho",
236 "glPassThrough",
237 "glPixelMapfv",
238 "glPixelMapuiv",
239 "glPixelMapusv",
240 "glPixelStoref",
241 "glPixelStorei",
242 "glPixelTransferf",
243 "glPixelTransferi",
244 "glPixelZoom",
245 "glPointSize",
246 "glPolygonMode",
247 "glPolygonOffset",
248 "glPolygonStipple",
249 "glPopAttrib",
250 "glPopClientAttrib",
251 "glPopMatrix",
252 "glPopName",
253 "glPrioritizeTextures",
254 "glPushAttrib",
255 "glPushClientAttrib",
256 "glPushMatrix",
257 "glPushName",
258 "glRasterPos2d",
259 "glRasterPos2dv",
260 "glRasterPos2f",
261 "glRasterPos2fv",
262 "glRasterPos2i",
263 "glRasterPos2iv",
264 "glRasterPos2s",
265 "glRasterPos2sv",
266 "glRasterPos3d",
267 "glRasterPos3dv",
268 "glRasterPos3f",
269 "glRasterPos3fv",
270 "glRasterPos3i",
271 "glRasterPos3iv",
272 "glRasterPos3s",
273 "glRasterPos3sv",
274 "glRasterPos4d",
275 "glRasterPos4dv",
276 "glRasterPos4f",
277 "glRasterPos4fv",
278 "glRasterPos4i",
279 "glRasterPos4iv",
280 "glRasterPos4s",
281 "glRasterPos4sv",
282 "glReadBuffer",
283 "glReadPixels",
284 "glRectd",
285 "glRectdv",
286 "glRectf",
287 "glRectfv",
288 "glRecti",
289 "glRectiv",
290 "glRects",
291 "glRectsv",
292 "glRenderMode",
293 "glRotated",
294 "glRotatef",
295 "glScaled",
296 "glScalef",
297 "glScissor",
298 "glSelectBuffer",
299 "glShadeModel",
300 "glStencilFunc",
301 "glStencilMask",
302 "glStencilOp",
303 "glTexCoord1d",
304 "glTexCoord1dv",
305 "glTexCoord1f",
306 "glTexCoord1fv",
307 "glTexCoord1i",
308 "glTexCoord1iv",
309 "glTexCoord1s",
310 "glTexCoord1sv",
311 "glTexCoord2d",
312 "glTexCoord2dv",
313 "glTexCoord2f",
314 "glTexCoord2fv",
315 "glTexCoord2i",
316 "glTexCoord2iv",
317 "glTexCoord2s",
318 "glTexCoord2sv",
319 "glTexCoord3d",
320 "glTexCoord3dv",
321 "glTexCoord3f",
322 "glTexCoord3fv",
323 "glTexCoord3i",
324 "glTexCoord3iv",
325 "glTexCoord3s",
326 "glTexCoord3sv",
327 "glTexCoord4d",
328 "glTexCoord4dv",
329 "glTexCoord4f",
330 "glTexCoord4fv",
331 "glTexCoord4i",
332 "glTexCoord4iv",
333 "glTexCoord4s",
334 "glTexCoord4sv",
335 "glTexCoordPointer",
336 "glTexEnvf",
337 "glTexEnvfv",
338 "glTexEnvi",
339 "glTexEnviv",
340 "glTexGend",
341 "glTexGendv",
342 "glTexGenf",
343 "glTexGenfv",
344 "glTexGeni",
345 "glTexGeniv",
346 "glTexImage1D",
347 "glTexImage2D",
348 "glTexParameterf",
349 "glTexParameterfv",
350 "glTexParameteri",
351 "glTexParameteriv",
352 "glTexSubImage1D",
353 "glTexSubImage2D",
354 "glTranslated",
355 "glTranslatef",
356 "glVertex2d",
357 "glVertex2dv",
358 "glVertex2f",
359 "glVertex2fv",
360 "glVertex2i",
361 "glVertex2iv",
362 "glVertex2s",
363 "glVertex2sv",
364 "glVertex3d",
365 "glVertex3dv",
366 "glVertex3f",
367 "glVertex3fv",
368 "glVertex3i",
369 "glVertex3iv",
370 "glVertex3s",
371 "glVertex3sv",
372 "glVertex4d",
373 "glVertex4dv",
374 "glVertex4f",
375 "glVertex4fv",
376 "glVertex4i",
377 "glVertex4iv",
378 "glVertex4s",
379 "glVertex4sv",
380 "glVertexPointer",
381 "glViewport",
José Fonseca68ec4122011-02-20 11:25:25 +0000382
José Fonsecab87c2292011-10-09 14:56:16 +0100383 # GLX 1.3 and GLX_ARB_get_proc_address
384 "glXChooseVisual",
385 "glXCreateContext",
386 "glXDestroyContext",
387 "glXMakeCurrent",
388 "glXCopyContext",
389 "glXSwapBuffers",
390 "glXCreateGLXPixmap",
391 "glXDestroyGLXPixmap",
392 "glXQueryExtension",
393 "glXQueryVersion",
394 "glXIsDirect",
395 "glXGetConfig",
396 "glXGetCurrentContext",
397 "glXGetCurrentDrawable",
398 "glXWaitGL",
399 "glXWaitX",
400 "glXUseXFont",
401 "glXQueryExtensionsString",
402 "glXQueryServerString",
403 "glXGetClientString",
404 "glXGetCurrentDisplay",
405 "glXChooseFBConfig",
406 "glXGetFBConfigAttrib",
407 "glXGetFBConfigs",
408 "glXGetVisualFromFBConfig",
409 "glXCreateWindow",
410 "glXDestroyWindow",
411 "glXCreatePixmap",
412 "glXDestroyPixmap",
413 "glXCreatePbuffer",
414 "glXDestroyPbuffer",
415 "glXQueryDrawable",
416 "glXCreateNewContext",
417 "glXMakeContextCurrent",
418 "glXGetCurrentReadDrawable",
419 "glXQueryContext",
420 "glXSelectEvent",
421 "glXGetSelectedEvent",
José Fonseca68ec4122011-02-20 11:25:25 +0000422 "glXGetProcAddressARB",
423 "glXGetProcAddress",
José Fonsecab87c2292011-10-09 14:56:16 +0100424
425 # WGL
426 #"glDebugEntry",
427 "wglChoosePixelFormat",
428 "wglCopyContext",
429 "wglCreateContext",
430 "wglCreateLayerContext",
431 "wglDeleteContext",
432 "wglDescribeLayerPlane",
433 "wglDescribePixelFormat",
434 "wglGetCurrentContext",
435 "wglGetCurrentDC",
436 "wglGetDefaultProcAddress",
437 "wglGetLayerPaletteEntries",
438 "wglGetPixelFormat",
439 "wglGetProcAddress",
440 "wglMakeCurrent",
441 "wglRealizeLayerPalette",
442 "wglSetLayerPaletteEntries",
443 "wglSetPixelFormat",
444 "wglShareLists",
445 "wglSwapBuffers",
446 "wglSwapLayerBuffers",
447 "wglSwapMultipleBuffers",
448 "wglUseFontBitmapsA",
449 "wglUseFontBitmapsW",
450 "wglUseFontOutlinesA",
451 "wglUseFontOutlinesW",
452
José Fonsecac6b49ce2010-11-28 16:43:04 +0000453])
454
Chia-I Wue50c14b2011-11-03 12:24:53 +0800455# EGL 1.4
456public_symbols.update([
457 "eglBindAPI",
458 "eglBindTexImage",
459 "eglChooseConfig",
460 "eglCopyBuffers",
461 "eglCreateContext",
462 "eglCreatePbufferFromClientBuffer",
463 "eglCreatePbufferSurface",
464 "eglCreatePixmapSurface",
465 "eglCreateWindowSurface",
466 "eglDestroyContext",
467 "eglDestroySurface",
468 "eglGetConfigAttrib",
469 "eglGetConfigs",
470 "eglGetCurrentContext",
471 "eglGetCurrentDisplay",
472 "eglGetCurrentSurface",
473 "eglGetDisplay",
474 "eglGetError",
475 "eglGetProcAddress",
476 "eglInitialize",
477 "eglMakeCurrent",
478 "eglQueryAPI",
479 "eglQueryContext",
480 "eglQueryString",
481 "eglQuerySurface",
482 "eglReleaseTexImage",
483 "eglReleaseThread",
484 "eglSurfaceAttrib",
485 "eglSwapBuffers",
486 "eglSwapInterval",
487 "eglTerminate",
488 "eglWaitClient",
489 "eglWaitGL",
490 "eglWaitNative",
491])
José Fonsecac6b49ce2010-11-28 16:43:04 +0000492
José Fonseca68ec4122011-02-20 11:25:25 +0000493class GlDispatcher(Dispatcher):
494
José Fonseca81301932012-11-11 00:10:20 +0000495 def isFunctionPublic(self, module, function):
José Fonseca3bcb33c2011-05-27 20:14:31 +0100496 return function.name in public_symbols or function.name.startswith('CGL')
José Fonsecac6b49ce2010-11-28 16:43:04 +0000497
José Fonseca7989f932014-07-17 19:45:15 +0100498 def getProcAddressName(self, module, function):
499 if self.isFunctionPublic(module, function):
500 return '_getPublicProcAddress'
501 else:
502 return '_getPrivateProcAddress'
503
Peter Lohrmann9d9eb812013-07-12 16:15:25 -0400504 def failFunction(self, function):
José Fonseca71f5a352014-07-28 12:19:50 +0100505 # We fake these when they are not available
Jose Fonseca22a850d2015-02-05 23:25:02 +0000506 if sys.platform == 'darwin':
Roland Scheidegger98a8ca12015-04-16 22:24:35 +0200507 # Fallback to EXT_debug_label on MacOSX, some enums need to be translated.
Jose Fonseca22a850d2015-02-05 23:25:02 +0000508 if function.name == 'glObjectLabel':
Jose Fonseca7f98ed32015-04-21 12:09:21 +0100509 print r' if (translateDebugLabelIdentifier(identifier)) {'
510 print r' _glLabelObjectEXT(identifier, name, length < 0 ? 0 : length, length == 0 ? "" : label);'
511 print r' return;'
Roland Scheidegger98a8ca12015-04-16 22:24:35 +0200512 print r' }'
Jose Fonseca22a850d2015-02-05 23:25:02 +0000513 if function.name == 'glGetObjectLabel':
Jose Fonseca7f98ed32015-04-21 12:09:21 +0100514 print r' if (translateDebugLabelIdentifier(identifier)) {'
515 print r' _glGetObjectLabelEXT(identifier, name, bufSize, length, label);'
516 print r' return;'
Roland Scheidegger98a8ca12015-04-16 22:24:35 +0200517 print r' }'
José Fonseca71f5a352014-07-28 12:19:50 +0100518 if function.name in (
519 # GL_KHR_debug
520 'glDebugMessageControl',
521 'glDebugMessageInsert',
522 'glDebugMessageCallback',
523 'glPushDebugGroup',
524 'glPopDebugGroup',
525 'glObjectLabel',
526 'glObjectPtrLabel',
527 # GL_ARB_debug_output
528 'glDebugMessageControlARB',
529 'glDebugMessageInsertARB',
530 'glDebugMessageCallbackARB',
531 # GL_AMD_debug_output
532 'glDebugMessageEnableAMD',
533 'glDebugMessageInsertAMD',
534 'glDebugMessageCallbackAMD',
535 # GL_EXT_debug_label
536 'glLabelObjectEXT',
537 # GL_EXT_debug_marker
538 'glInsertEventMarkerEXT',
539 'glPushGroupMarkerEXT',
540 'glPopGroupMarkerEXT',
541 ):
542 return
José Fonseca7ff82412014-02-04 19:01:22 +0000543 if function.name in ('glGetObjectLabel', 'glGetObjectPtrLabel', 'glGetObjectLabelEXT'):
Peter Lohrmann9d9eb812013-07-12 16:15:25 -0400544 print r' if (length != 0) *length = 0;'
545 print r' if (label != 0 && bufSize > 0) *label = 0;'
546 return
547 if function.name in ('glGetDebugMessageLog', 'glGetDebugMessageLogARB'):
548 print r' if (sources != 0) *sources = 0;'
549 print r' if (types != 0) *types = 0;'
550 print r' if (ids != 0) *ids = 0;'
551 print r' if (severities != 0) *severities = 0;'
552 print r' if (lengths != 0) *lengths = 0;'
553 print r' if (messageLog != 0 && bufsize > 0) *messageLog = 0;'
José Fonseca31215642014-07-17 20:32:12 +0100554 print r' return 0;'
Peter Lohrmann9d9eb812013-07-12 16:15:25 -0400555 return
556 if function.name in ('glGetDebugMessageLogAMD'):
557 print r' if (categories != 0) *categories = 0;'
558 print r' if (ids != 0) *ids = 0;'
559 print r' if (severities != 0) *severities = 0;'
560 print r' if (lengths != 0) *lengths = 0;'
561 print r' if (message != 0 && bufsize > 0) *message = 0;'
José Fonseca31215642014-07-17 20:32:12 +0100562 print r' return 0;'
Peter Lohrmann9d9eb812013-07-12 16:15:25 -0400563 return
564
565 Dispatcher.failFunction(self, function)
566
José Fonsecac6b49ce2010-11-28 16:43:04 +0000567
568if __name__ == '__main__':
José Fonsecae91f5bc2014-07-17 20:42:35 +0100569 decl, impl = sys.argv[1:]
570
571 sys.stdout = open(decl, 'wt')
José Fonsecac6b49ce2010-11-28 16:43:04 +0000572 print
José Fonseca669b2002011-02-20 13:32:19 +0000573 print '#ifndef _GLPROC_HPP_'
574 print '#define _GLPROC_HPP_'
José Fonsecae91f5bc2014-07-17 20:42:35 +0100575 print
José Fonsecac6b49ce2010-11-28 16:43:04 +0000576 print '#include "glimports.hpp"'
José Fonsecae91f5bc2014-07-17 20:42:35 +0100577 print
578 print '#if defined(_WIN32)'
579 print 'extern HMODULE _libGlHandle;'
580 print '#else'
581 print 'extern void * _libGlHandle;'
582 print '#endif'
583 print
584 print 'void * _getPublicProcAddress(const char *procName);'
585 print 'void * _getPrivateProcAddress(const char *procName);'
586 print
587 dispatcher = GlDispatcher()
588 print
589 dispatcher.dispatchModuleDecl(eglapi)
590 print
591 print '#if defined(_WIN32)'
592 print
593 dispatcher.dispatchModuleDecl(wglapi)
594 print
595 print '#elif defined(__APPLE__)'
596 print
597 dispatcher.dispatchModuleDecl(cglapi)
598 print
599 print '#elif defined(HAVE_X11)'
600 print
601 dispatcher.dispatchModuleDecl(glxapi)
602 print
603 print '#endif'
604 print
605 dispatcher.dispatchModuleDecl(glapi)
606 print
José Fonsecae91f5bc2014-07-17 20:42:35 +0100607 print '#endif /* !_GLPROC_HPP_ */'
608 print
609
610 sys.stdout = open(impl, 'wt')
611 print
612 print '#include "glproc.hpp"'
José Fonsecac6b49ce2010-11-28 16:43:04 +0000613 print '#include "os.hpp"'
614 print
José Fonseca68ec4122011-02-20 11:25:25 +0000615 dispatcher = GlDispatcher()
José Fonsecaafc32ba2012-03-30 00:18:16 +0100616 print
José Fonsecae91f5bc2014-07-17 20:42:35 +0100617 dispatcher.dispatchModuleImpl(eglapi)
José Fonsecaafc32ba2012-03-30 00:18:16 +0100618 print
619 print '#if defined(_WIN32)'
José Fonseca68ec4122011-02-20 11:25:25 +0000620 print
José Fonsecae91f5bc2014-07-17 20:42:35 +0100621 dispatcher.dispatchModuleImpl(wglapi)
José Fonsecaafc32ba2012-03-30 00:18:16 +0100622 print
José Fonseca3dabe542011-05-19 17:57:18 +0100623 print '#elif defined(__APPLE__)'
José Fonsecaafc32ba2012-03-30 00:18:16 +0100624 print
Jose Fonseca7f98ed32015-04-21 12:09:21 +0100625 print 'static inline bool'
626 print 'translateDebugLabelIdentifier(GLenum & identifier)'
627 print '{'
628 print ' switch (identifier) {'
629 print ' case GL_TEXTURE:'
630 print ' case GL_FRAMEBUFFER:'
631 print ' case GL_RENDERBUFFER:'
632 print ' case GL_SAMPLER:'
633 print ' case GL_TRANSFORM_FEEDBACK:'
634 print ' return true;'
635 print ' case GL_BUFFER:'
636 print ' identifier = GL_BUFFER_OBJECT_EXT;'
637 print ' return true;'
638 print ' case GL_SHADER:'
639 print ' identifier = GL_SHADER_OBJECT_EXT;'
640 print ' return true;'
641 print ' case GL_PROGRAM:'
642 print ' identifier = GL_PROGRAM_OBJECT_EXT;'
643 print ' return true;'
644 print ' case GL_VERTEX_ARRAY:'
645 print ' identifier = GL_VERTEX_ARRAY_OBJECT_EXT;'
646 print ' return true;'
647 print ' case GL_QUERY:'
648 print ' identifier = GL_QUERY_OBJECT_EXT;'
649 print ' return true;'
650 print ' case GL_PROGRAM_PIPELINE:'
651 print ' identifier = GL_PROGRAM_PIPELINE_OBJECT_EXT;'
652 print ' return true;'
653 print ' default:'
654 print ' return false;'
655 print ' }'
656 print '}'
657 print
José Fonsecae91f5bc2014-07-17 20:42:35 +0100658 dispatcher.dispatchModuleImpl(cglapi)
José Fonsecaafc32ba2012-03-30 00:18:16 +0100659 print
José Fonseca5409d1e2012-03-30 19:58:20 +0100660 print '#elif defined(HAVE_X11)'
José Fonseca68ec4122011-02-20 11:25:25 +0000661 print
José Fonsecae91f5bc2014-07-17 20:42:35 +0100662 dispatcher.dispatchModuleImpl(glxapi)
José Fonsecaafc32ba2012-03-30 00:18:16 +0100663 print
José Fonseca3dabe542011-05-19 17:57:18 +0100664 print '#endif'
José Fonseca43648602011-05-15 12:56:59 +0100665 print
José Fonsecae91f5bc2014-07-17 20:42:35 +0100666 dispatcher.dispatchModuleImpl(glapi)
José Fonsecac6b49ce2010-11-28 16:43:04 +0000667 print