· 9 years ago · Feb 02, 2017, 09:26 AM
1commit c79ea5cfcd8d005653199619c30128480fe0e945
2Author: Timo Aaltonen <tjaalton@debian.org>
3Date: Thu Feb 2 11:23:00 2017 +0200
4
5 glvnd WIP
6
7diff --git a/debian/changelog b/debian/changelog
8index 2af4f69..659c0dc 100644
9--- a/debian/changelog
10+++ b/debian/changelog
11@@ -1,3 +1,9 @@
12+mesa (17.0.0~rc2-1.1) UNRELEASED; urgency=medium
13+
14+ * glvnd WIP
15+
16+ -- Timo Aaltonen <tjaalton@debian.org> Wed, 01 Feb 2017 20:35:20 +0200
17+
18 mesa (17.0.0~rc2-1) experimental; urgency=medium
19
20 * New upstream release candidate.
21diff --git a/debian/control b/debian/control
22index 431bea2..33f5754 100644
23--- a/debian/control
24+++ b/debian/control
25@@ -46,6 +46,8 @@ Build-Depends:
26 libwayland-dev (>= 1.11.0) [linux-any],
27 libclang-3.9-dev (>= 1:3.9.1) [amd64 i386 kfreebsd-amd64 kfreebsd-i386 arm64 armhf],
28 libclc-dev (>= 0.2.0+git20160907) [amd64 i386 kfreebsd-amd64 kfreebsd-i386 arm64 armhf],
29+ libglvnd-core-dev,
30+ libegl1,
31 Vcs-Git: https://anonscm.debian.org/git/pkg-xorg/lib/mesa.git
32 Vcs-Browser: https://anonscm.debian.org/cgit/pkg-xorg/lib/mesa.git
33 Homepage: http://mesa3d.org/
34@@ -117,9 +119,7 @@ Depends:
35 ${shlibs:Depends},
36 ${misc:Depends},
37 libgbm1 (= ${binary:Version}) [!hurd-any],
38-Provides: libegl1-x11
39-Conflicts: libegl1-x11
40-Replaces: libegl1-x11
41+ libegl1 (>= 0.2.999),
42 Pre-Depends: ${misc:Pre-Depends}
43 Multi-Arch: same
44 Description: free implementation of the EGL API -- runtime
45@@ -137,6 +137,7 @@ Depends:
46 libegl1-mesa (= ${binary:Version}),
47 libwayland-egl1-mesa (= ${binary:Version}) [linux-any],
48 libdrm-dev (>= 2.4.74) [!hurd-any],
49+ libglvnd-dev,
50 x11proto-dri2-dev (>= 2.6),
51 x11proto-gl-dev (>= 1.4.14),
52 libx11-dev,
53@@ -232,11 +233,9 @@ Section: libs
54 Architecture: any
55 Depends:
56 libglapi-mesa (= ${binary:Version}),
57+ libgles2 (>= 1:0.2.999),
58 ${shlibs:Depends},
59 ${misc:Depends},
60-Provides: libgles2
61-Conflicts: libgles2
62-Replaces: libgles2
63 Pre-Depends: ${misc:Pre-Depends}
64 Multi-Arch: same
65 Description: free implementation of the OpenGL|ES 2.x API -- runtime
66@@ -254,6 +253,7 @@ Architecture: any
67 Depends:
68 libgles2-mesa (= ${binary:Version}),
69 libegl1-mesa-dev,
70+ libglvnd-dev,
71 ${misc:Depends},
72 Multi-Arch: same
73 Description: free implementation of the OpenGL|ES 2.x API -- development files
74@@ -288,10 +288,8 @@ Depends:
75 ${shlibs:Depends},
76 ${misc:Depends},
77 libglapi-mesa (= ${binary:Version}),
78+# libgl1 (>= 1:0.2.999),
79 Recommends: libgl1-mesa-dri
80-Conflicts: libgl1
81-Replaces: libgl1
82-Provides: libgl1
83 Breaks:
84 glx-diversions (<< 0.4),
85 libopengl-perl (<< 0.6704+dfsg-2),
86@@ -341,6 +339,7 @@ Depends:
87 mesa-common-dev (= ${binary:Version}),
88 libgl1-mesa-glx (= ${binary:Version}),
89 libdrm-dev (>= 2.4.74) [!hurd-any],
90+ libglvnd-dev,
91 libx11-dev,
92 libx11-xcb-dev,
93 libxcb-dri3-dev,
94diff --git a/debian/libegl1-mesa-dev.install b/debian/libegl1-mesa-dev.install
95index 62d648f..7b1af5f 100644
96--- a/debian/libegl1-mesa-dev.install
97+++ b/debian/libegl1-mesa-dev.install
98@@ -1,5 +1,5 @@
99 # This file gets tweaked in an os-specific fashion (see libegl1-mesa-dev.install.linux)
100-usr/lib/*/libEGL.so
101+usr/lib/*/libEGL_mesa.so
102 usr/include/EGL
103 usr/include/KHR
104 usr/lib/*/pkgconfig/egl.pc
105diff --git a/debian/libegl1-mesa-dev.install.linux b/debian/libegl1-mesa-dev.install.linux
106index faf9836..5878b5e 100644
107--- a/debian/libegl1-mesa-dev.install.linux
108+++ b/debian/libegl1-mesa-dev.install.linux
109@@ -1,5 +1,5 @@
110 # OS-independent part (from libegl1-mesa-dev.install):
111-usr/lib/*/libEGL.so
112+usr/lib/*/libEGL_mesa.so
113 usr/include/EGL
114 usr/include/KHR
115 usr/lib/*/pkgconfig/egl.pc
116diff --git a/debian/libegl1-mesa.install b/debian/libegl1-mesa.install
117index 1df9b19..71c9951 100644
118--- a/debian/libegl1-mesa.install
119+++ b/debian/libegl1-mesa.install
120@@ -1 +1,2 @@
121-usr/lib/*/libEGL.so.1*
122+usr/lib/*/libEGL_mesa.so.0*
123+usr/share/glvnd/egl_vendor.d/50_mesa.json
124diff --git a/debian/libegl1-mesa.lintian-overrides b/debian/libegl1-mesa.lintian-overrides
125index 2f45998..5160034 100644
126--- a/debian/libegl1-mesa.lintian-overrides
127+++ b/debian/libegl1-mesa.lintian-overrides
128@@ -1 +1 @@
129-package-name-doesnt-match-sonames libEGL1
130+package-name-doesnt-match-sonames libEGL-mesa0
131diff --git a/debian/libegl1-mesa.symbols b/debian/libegl1-mesa.symbols
132index 0f5eb6c..b4e1fc3 100644
133--- a/debian/libegl1-mesa.symbols
134+++ b/debian/libegl1-mesa.symbols
135@@ -1,6 +1,7 @@
136-libEGL.so.1 libegl1-mesa #MINVER# | libegl1-x11
137+libEGL_mesa.so.0 libegl1-mesa #MINVER# | libegl1-x11
138 MesaGLInteropEGLExportObject@Base 12.0.4
139 MesaGLInteropEGLQueryDeviceInfo@Base 12.0.4
140+ __egl_Main@Base 17.0.0~
141 eglBindAPI@Base 7.8.1
142 eglBindTexImage@Base 7.8.1
143 eglChooseConfig@Base 7.8.1
144diff --git a/debian/libgl1-mesa-dev.install b/debian/libgl1-mesa-dev.install
145index a8c371e..9c655ac 100644
146--- a/debian/libgl1-mesa-dev.install
147+++ b/debian/libgl1-mesa-dev.install
148@@ -1,2 +1,2 @@
149-usr/lib/*/libGL.so
150+usr/lib/*/libGLX_mesa.so
151 usr/lib/*/pkgconfig/gl.pc
152diff --git a/debian/libgl1-mesa-glx.install b/debian/libgl1-mesa-glx.install
153index 6fc3110..08cae63 100644
154--- a/debian/libgl1-mesa-glx.install
155+++ b/debian/libgl1-mesa-glx.install
156@@ -1 +1 @@
157-usr/lib/*/libGL.so.*
158+usr/lib/*/libGLX_mesa.so.*
159diff --git a/debian/libgl1-mesa-glx.lintian-overrides b/debian/libgl1-mesa-glx.lintian-overrides
160index a5252a9..7f4162d 100644
161--- a/debian/libgl1-mesa-glx.lintian-overrides
162+++ b/debian/libgl1-mesa-glx.lintian-overrides
163@@ -1 +1 @@
164-package-name-doesnt-match-sonames libGL1
165+package-name-doesnt-match-sonames libGLX-mesa0
166diff --git a/debian/libgl1-mesa-glx.symbols b/debian/libgl1-mesa-glx.symbols
167index 324f80e..d191645 100644
168--- a/debian/libgl1-mesa-glx.symbols
169+++ b/debian/libgl1-mesa-glx.symbols
170@@ -1,6 +1,7 @@
171-libGL.so.1 libgl1-mesa-glx | libgl1
172+libGLX_mesa.so.0 libgl1-mesa-glx | libgl1
173 (arch=!hurd-any)MesaGLInteropGLXExportObject@Base 12.0.4
174 (arch=!hurd-any)MesaGLInteropGLXQueryDeviceInfo@Base 12.0.4
175+ __glx_Main@Base 17.0.0~
176 glAccum@Base 0
177 glActiveShaderProgram@Base 12.0.1
178 glActiveTexture@Base 0
179@@ -1295,63 +1296,3 @@ libGL.so.1 libgl1-mesa-glx | libgl1
180 glWindowPos3sARB@Base 0
181 glWindowPos3sv@Base 0
182 glWindowPos3svARB@Base 0
183- glXChooseFBConfig@Base 0
184- glXChooseFBConfigSGIX@Base 0
185- glXChooseVisual@Base 0
186- glXCopyContext@Base 0
187- glXCreateContext@Base 0
188- glXCreateContextWithConfigSGIX@Base 0
189- glXCreateGLXPbufferSGIX@Base 0
190- glXCreateGLXPixmap@Base 0
191- glXCreateGLXPixmapMESA@Base 0
192- glXCreateGLXPixmapWithConfigSGIX@Base 0
193- glXCreateNewContext@Base 0
194- glXCreatePbuffer@Base 0
195- glXCreatePixmap@Base 0
196- glXCreateWindow@Base 0
197- glXDestroyContext@Base 0
198- glXDestroyGLXPbufferSGIX@Base 0
199- glXDestroyGLXPixmap@Base 0
200- glXDestroyPbuffer@Base 0
201- glXDestroyPixmap@Base 0
202- glXDestroyWindow@Base 0
203- glXFreeContextEXT@Base 0
204- glXGetClientString@Base 0
205- glXGetConfig@Base 0
206- glXGetContextIDEXT@Base 0
207- glXGetCurrentContext@Base 0
208- glXGetCurrentDisplay@Base 0
209- glXGetCurrentDisplayEXT@Base 0
210- glXGetCurrentDrawable@Base 0
211- glXGetCurrentReadDrawable@Base 0
212- (arch=!hurd-any)glXGetDriverConfig@Base 0
213- glXGetFBConfigAttrib@Base 0
214- glXGetFBConfigAttribSGIX@Base 0
215- glXGetFBConfigFromVisualSGIX@Base 0
216- glXGetFBConfigs@Base 0
217- glXGetProcAddress@Base 0
218- glXGetProcAddressARB@Base 0
219- (arch=!hurd-any)glXGetScreenDriver@Base 0
220- glXGetSelectedEvent@Base 0
221- glXGetSelectedEventSGIX@Base 0
222- glXGetVisualFromFBConfig@Base 0
223- glXGetVisualFromFBConfigSGIX@Base 0
224- glXImportContextEXT@Base 0
225- glXIsDirect@Base 0
226- glXMakeContextCurrent@Base 0
227- glXMakeCurrent@Base 0
228- glXMakeCurrentReadSGI@Base 0
229- glXQueryContext@Base 0
230- glXQueryContextInfoEXT@Base 0
231- glXQueryDrawable@Base 0
232- glXQueryExtension@Base 0
233- glXQueryExtensionsString@Base 0
234- glXQueryGLXPbufferSGIX@Base 0
235- glXQueryServerString@Base 0
236- glXQueryVersion@Base 0
237- glXSelectEvent@Base 0
238- glXSelectEventSGIX@Base 0
239- glXSwapBuffers@Base 0
240- glXUseXFont@Base 0
241- glXWaitGL@Base 0
242- glXWaitX@Base 0
243diff --git a/debian/libgles2-mesa-dev.install b/debian/libgles2-mesa-dev.install
244index 2c0b837..3d40e9a 100644
245--- a/debian/libgles2-mesa-dev.install
246+++ b/debian/libgles2-mesa-dev.install
247@@ -1,4 +1,3 @@
248-usr/lib/*/libGLESv2.so
249 usr/include/GLES2
250 usr/include/GLES3
251 usr/lib/*/pkgconfig/glesv2.pc
252diff --git a/debian/libgles2-mesa.install b/debian/libgles2-mesa.install
253deleted file mode 100644
254index a6891c6..0000000
255--- a/debian/libgles2-mesa.install
256+++ /dev/null
257@@ -1 +0,0 @@
258-usr/lib/*/libGLESv2.so.2*
259diff --git a/debian/libgles2-mesa.symbols b/debian/libgles2-mesa.symbols
260deleted file mode 100644
261index b19cef5..0000000
262--- a/debian/libgles2-mesa.symbols
263+++ /dev/null
264@@ -1,366 +0,0 @@
265-libGLESv2.so.2 libgles2-mesa #MINVER# | libgles2
266- glActiveShaderProgram@Base 12.0.1
267- glActiveTexture@Base 7.8.1
268- glAttachShader@Base 7.8.1
269- glBeginQuery@Base 9.1~
270- glBeginTransformFeedback@Base 9.1~
271- glBindAttribLocation@Base 7.8.1
272- glBindBuffer@Base 7.8.1
273- glBindBufferBase@Base 9.1~
274- glBindBufferRange@Base 9.1~
275- glBindFragDataLocationEXT@Base 11.1.0~
276- glBindFramebuffer@Base 7.8.1
277- glBindImageTexture@Base 10.7.0~
278- glBindProgramPipeline@Base 12.0.1
279- glBindRenderbuffer@Base 7.8.1
280- glBindSampler@Base 9.1~
281- glBindTexture@Base 7.8.1
282- glBindTransformFeedback@Base 9.1~
283- glBindVertexArray@Base 9.1~
284- glBindVertexBuffer@Base 10.7.0~
285- glBlendBarrier@Base 13.0.0~
286- glBlendColor@Base 7.8.1
287- glBlendEquation@Base 7.8.1
288- glBlendEquationSeparate@Base 7.8.1
289- glBlendEquationSeparatei@Base 13.0.0~
290- glBlendEquationi@Base 13.0.0~
291- glBlendFunc@Base 7.8.1
292- glBlendFuncSeparate@Base 7.8.1
293- glBlendFuncSeparatei@Base 13.0.0~
294- glBlendFunci@Base 13.0.0~
295- glBlitFramebuffer@Base 9.1~
296- glBufferData@Base 7.8.1
297- glBufferSubData@Base 7.8.1
298- glCheckFramebufferStatus@Base 7.8.1
299- glClear@Base 7.8.1
300- glClearBufferfi@Base 9.1~
301- glClearBufferfv@Base 9.1~
302- glClearBufferiv@Base 9.1~
303- glClearBufferuiv@Base 9.1~
304- glClearColor@Base 7.8.1
305- glClearDepthf@Base 7.8.1
306- glClearStencil@Base 7.8.1
307- glClientWaitSync@Base 9.1~
308- glColorMask@Base 7.8.1
309- glColorMaski@Base 12.0.0~
310- glCompileShader@Base 7.8.1
311- glCompressedTexImage2D@Base 7.8.1
312- glCompressedTexImage3D@Base 9.1~
313- glCompressedTexSubImage2D@Base 7.8.1
314- glCompressedTexSubImage3D@Base 9.1~
315- glCopyBufferSubData@Base 9.1~
316- glCopyImageSubData@Base 12.0.0~
317- glCopyTexImage2D@Base 7.8.1
318- glCopyTexSubImage2D@Base 7.8.1
319- glCopyTexSubImage3D@Base 9.1~
320- glCreateProgram@Base 7.8.1
321- glCreateShader@Base 7.8.1
322- glCreateShaderProgramv@Base 12.0.1
323- glCullFace@Base 7.8.1
324- glDebugMessageCallback@Base 12.0.0~
325- glDebugMessageControl@Base 12.0.0~
326- glDebugMessageInsert@Base 12.0.0~
327- glDeleteBuffers@Base 7.8.1
328- glDeleteFramebuffers@Base 7.8.1
329- glDeleteProgram@Base 7.8.1
330- glDeleteProgramPipelines@Base 12.0.1
331- glDeleteQueries@Base 9.1~
332- glDeleteRenderbuffers@Base 7.8.1
333- glDeleteSamplers@Base 9.1~
334- glDeleteShader@Base 7.8.1
335- glDeleteSync@Base 9.1~
336- glDeleteTextures@Base 7.8.1
337- glDeleteTransformFeedbacks@Base 9.1~
338- glDeleteVertexArrays@Base 9.1~
339- glDepthFunc@Base 7.8.1
340- glDepthMask@Base 7.8.1
341- glDepthRangef@Base 7.8.1
342- glDetachShader@Base 7.8.1
343- glDisable@Base 7.8.1
344- glDisableVertexAttribArray@Base 7.8.1
345- glDisablei@Base 12.0.0~
346- glDispatchCompute@Base 10.7.0~
347- glDispatchComputeIndirect@Base 10.7.0~
348- glDrawArrays@Base 7.8.1
349- glDrawArraysIndirect@Base 10.7.0~
350- glDrawArraysInstanced@Base 9.1~
351- glDrawBuffers@Base 9.1~
352- glDrawElements@Base 7.8.1
353- glDrawElementsBaseVertex@Base 11.1.0~
354- glDrawElementsIndirect@Base 10.7.0~
355- glDrawElementsInstanced@Base 9.1~
356- glDrawElementsInstancedBaseVertex@Base 11.1.0~
357- glDrawRangeElements@Base 9.1~
358- glDrawRangeElementsBaseVertex@Base 11.1.0~
359- glEnable@Base 7.8.1
360- glEnableVertexAttribArray@Base 7.8.1
361- glEnablei@Base 12.0.0~
362- glEndQuery@Base 9.1~
363- glEndTransformFeedback@Base 9.1~
364- glFenceSync@Base 9.1~
365- glFinish@Base 7.8.1
366- glFlush@Base 7.8.1
367- glFlushMappedBufferRange@Base 9.1~
368- glFramebufferParameteri@Base 12.0.1
369- glFramebufferRenderbuffer@Base 7.8.1
370- glFramebufferTexture2D@Base 7.8.1
371- glFramebufferTexture@Base 12.0.0~
372- glFramebufferTextureLayer@Base 9.1~
373- glFrontFace@Base 7.8.1
374- glGenBuffers@Base 7.8.1
375- glGenFramebuffers@Base 7.8.1
376- glGenProgramPipelines@Base 12.0.1
377- glGenQueries@Base 9.1~
378- glGenRenderbuffers@Base 7.8.1
379- glGenSamplers@Base 9.1~
380- glGenTextures@Base 7.8.1
381- glGenTransformFeedbacks@Base 9.1~
382- glGenVertexArrays@Base 9.1~
383- glGenerateMipmap@Base 7.8.1
384- glGetActiveAttrib@Base 7.8.1
385- glGetActiveUniform@Base 7.8.1
386- glGetActiveUniformBlockName@Base 9.1~
387- glGetActiveUniformBlockiv@Base 9.1~
388- glGetActiveUniformsiv@Base 9.1~
389- glGetAttachedShaders@Base 7.8.1
390- glGetAttribLocation@Base 7.8.1
391- glGetBooleani_v@Base 10.7.0~
392- glGetBooleanv@Base 7.8.1
393- glGetBufferParameteri64v@Base 9.1~
394- glGetBufferParameteriv@Base 7.8.1
395- glGetBufferPointerv@Base 9.1~
396- glGetDebugMessageLog@Base 12.0.0~
397- glGetError@Base 7.8.1
398- glGetFloatv@Base 7.8.1
399- glGetFragDataLocation@Base 9.1~
400- glGetFramebufferAttachmentParameteriv@Base 7.8.1
401- glGetFramebufferParameteriv@Base 12.0.1
402- glGetGraphicsResetStatus@Base 13.0.0~
403- glGetInteger64i_v@Base 9.1~
404- glGetInteger64v@Base 9.1~
405- glGetIntegeri_v@Base 9.1~
406- glGetIntegerv@Base 7.8.1
407- glGetInternalformativ@Base 9.1~
408- glGetMultisamplefv@Base 10.7.0~
409- glGetObjectLabel@Base 12.0.0~
410- glGetObjectPtrLabel@Base 12.0.0~
411- glGetPointerv@Base 13.0.0~
412- glGetProgramBinary@Base 9.1~
413- glGetProgramInfoLog@Base 7.8.1
414- glGetProgramInterfaceiv@Base 12.0.1
415- glGetProgramPipelineInfoLog@Base 12.0.1
416- glGetProgramPipelineiv@Base 12.0.1
417- glGetProgramResourceIndex@Base 12.0.1
418- glGetProgramResourceLocation@Base 12.0.1
419- glGetProgramResourceName@Base 12.0.1
420- glGetProgramResourceiv@Base 12.0.1
421- glGetProgramiv@Base 7.8.1
422- glGetQueryObjectuiv@Base 9.1~
423- glGetQueryiv@Base 9.1~
424- glGetRenderbufferParameteriv@Base 7.8.1
425- glGetSamplerParameterIiv@Base 12.0.0~
426- glGetSamplerParameterIuiv@Base 12.0.0~
427- glGetSamplerParameterfv@Base 9.1~
428- glGetSamplerParameteriv@Base 9.1~
429- glGetShaderInfoLog@Base 7.8.1
430- glGetShaderPrecisionFormat@Base 7.8.1
431- glGetShaderSource@Base 7.8.1
432- glGetShaderiv@Base 7.8.1
433- glGetString@Base 7.8.1
434- glGetStringi@Base 9.1~
435- glGetSynciv@Base 9.1~
436- glGetTexLevelParameterfv@Base 10.7.0~
437- glGetTexLevelParameteriv@Base 10.7.0~
438- glGetTexParameterIiv@Base 12.0.0~
439- glGetTexParameterIivEXT@Base 11.3.0~
440- glGetTexParameterIuiv@Base 12.0.0~
441- glGetTexParameterIuivEXT@Base 11.3.0~
442- glGetTexParameterfv@Base 7.8.1
443- glGetTexParameteriv@Base 7.8.1
444- glGetTransformFeedbackVarying@Base 9.1~
445- glGetUniformBlockIndex@Base 9.1~
446- glGetUniformIndices@Base 9.1~
447- glGetUniformLocation@Base 7.8.1
448- glGetUniformfv@Base 7.8.1
449- glGetUniformiv@Base 7.8.1
450- glGetUniformuiv@Base 9.1~
451- glGetVertexAttribIiv@Base 9.1~
452- glGetVertexAttribIuiv@Base 9.1~
453- glGetVertexAttribPointerv@Base 7.8.1
454- glGetVertexAttribfv@Base 7.8.1
455- glGetVertexAttribiv@Base 7.8.1
456- glGetnUniformfv@Base 13.0.0~
457- glGetnUniformiv@Base 13.0.0~
458- glGetnUniformuiv@Base 13.0.0~
459- glHint@Base 7.8.1
460- glInvalidateFramebuffer@Base 9.1~
461- glInvalidateSubFramebuffer@Base 9.1~
462- glIsBuffer@Base 7.8.1
463- glIsEnabled@Base 7.8.1
464- glIsEnabledi@Base 12.0.0~
465- glIsFramebuffer@Base 7.8.1
466- glIsProgram@Base 7.8.1
467- glIsProgramPipeline@Base 12.0.1
468- glIsQuery@Base 9.1~
469- glIsRenderbuffer@Base 7.8.1
470- glIsSampler@Base 9.1~
471- glIsShader@Base 7.8.1
472- glIsSync@Base 9.1~
473- glIsTexture@Base 7.8.1
474- glIsTransformFeedback@Base 9.1~
475- glIsVertexArray@Base 9.1~
476- glLineWidth@Base 7.8.1
477- glLinkProgram@Base 7.8.1
478- glMapBufferRange@Base 9.1~
479- glMemoryBarrier@Base 10.7.0~
480- glMemoryBarrierByRegion@Base 12.0.1
481- glMinSampleShading@Base 12.0.0~
482- glMultiDrawArraysEXT@Base 7.8.1
483- glMultiDrawElementsEXT@Base 7.8.1
484- glObjectLabel@Base 12.0.0~
485- glObjectPtrLabel@Base 12.0.0~
486- glPatchParameteri@Base 13.0.0~
487- glPauseTransformFeedback@Base 9.1~
488- glPixelStorei@Base 7.8.1
489- glPolygonOffset@Base 7.8.1
490- glPopDebugGroup@Base 12.0.0~
491- glPrimitiveBoundingBox@Base 13.0.0~
492- glProgramBinary@Base 9.1~
493- glProgramParameteri@Base 9.1~
494- glProgramUniform1f@Base 12.0.1
495- glProgramUniform1fv@Base 12.0.1
496- glProgramUniform1i@Base 12.0.1
497- glProgramUniform1iv@Base 12.0.1
498- glProgramUniform1ui@Base 12.0.1
499- glProgramUniform1uiv@Base 12.0.1
500- glProgramUniform2f@Base 12.0.1
501- glProgramUniform2fv@Base 12.0.1
502- glProgramUniform2i@Base 12.0.1
503- glProgramUniform2iv@Base 12.0.1
504- glProgramUniform2ui@Base 12.0.1
505- glProgramUniform2uiv@Base 12.0.1
506- glProgramUniform3f@Base 12.0.1
507- glProgramUniform3fv@Base 12.0.1
508- glProgramUniform3i@Base 12.0.1
509- glProgramUniform3iv@Base 12.0.1
510- glProgramUniform3ui@Base 12.0.1
511- glProgramUniform3uiv@Base 12.0.1
512- glProgramUniform4f@Base 12.0.1
513- glProgramUniform4fv@Base 12.0.1
514- glProgramUniform4i@Base 12.0.1
515- glProgramUniform4iv@Base 12.0.1
516- glProgramUniform4ui@Base 12.0.1
517- glProgramUniform4uiv@Base 12.0.1
518- glProgramUniformMatrix2fv@Base 12.0.1
519- glProgramUniformMatrix2x3fv@Base 12.0.1
520- glProgramUniformMatrix2x4fv@Base 12.0.1
521- glProgramUniformMatrix3fv@Base 12.0.1
522- glProgramUniformMatrix3x2fv@Base 12.0.1
523- glProgramUniformMatrix3x4fv@Base 12.0.1
524- glProgramUniformMatrix4fv@Base 12.0.1
525- glProgramUniformMatrix4x2fv@Base 12.0.1
526- glProgramUniformMatrix4x3fv@Base 12.0.1
527- glPushDebugGroup@Base 12.0.0~
528- glReadBuffer@Base 9.1~
529- glReadPixels@Base 7.8.1
530- glReadnPixels@Base 13.0.0~
531- glReleaseShaderCompiler@Base 7.8.1
532- glRenderbufferStorage@Base 7.8.1
533- glRenderbufferStorageMultisample@Base 9.1~
534- glResumeTransformFeedback@Base 9.1~
535- glSampleCoverage@Base 7.8.1
536- glSampleMaski@Base 10.7.0~
537- glSamplerParameterIiv@Base 12.0.0~
538- glSamplerParameterIuiv@Base 12.0.0~
539- glSamplerParameterf@Base 9.1~
540- glSamplerParameterfv@Base 9.1~
541- glSamplerParameteri@Base 9.1~
542- glSamplerParameteriv@Base 9.1~
543- glScissor@Base 7.8.1
544- glShaderBinary@Base 7.8.1
545- glShaderSource@Base 7.8.1
546- glStencilFunc@Base 7.8.1
547- glStencilFuncSeparate@Base 7.8.1
548- glStencilMask@Base 7.8.1
549- glStencilMaskSeparate@Base 7.8.1
550- glStencilOp@Base 7.8.1
551- glStencilOpSeparate@Base 7.8.1
552- glTexBuffer@Base 12.0.0~
553- glTexBufferRange@Base 12.0.0~
554- glTexImage2D@Base 7.8.1
555- glTexImage3D@Base 9.1~
556- glTexParameterIiv@Base 12.0.0~
557- glTexParameterIivEXT@Base 11.3.0~
558- glTexParameterIuiv@Base 12.0.0~
559- glTexParameterIuivEXT@Base 11.3.0~
560- glTexParameterf@Base 7.8.1
561- glTexParameterfv@Base 7.8.1
562- glTexParameteri@Base 7.8.1
563- glTexParameteriv@Base 7.8.1
564- glTexStorage2D@Base 9.1~
565- glTexStorage2DMultisample@Base 10.7.0~
566- glTexStorage3D@Base 9.1~
567- glTexStorage3DMultisample@Base 12.0.0~
568- glTexSubImage2D@Base 7.8.1
569- glTexSubImage3D@Base 9.1~
570- glTransformFeedbackVaryings@Base 9.1~
571- glUniform1f@Base 7.8.1
572- glUniform1fv@Base 7.8.1
573- glUniform1i@Base 7.8.1
574- glUniform1iv@Base 7.8.1
575- glUniform1ui@Base 9.1~
576- glUniform1uiv@Base 9.1~
577- glUniform2f@Base 7.8.1
578- glUniform2fv@Base 7.8.1
579- glUniform2i@Base 7.8.1
580- glUniform2iv@Base 7.8.1
581- glUniform2ui@Base 9.1~
582- glUniform2uiv@Base 9.1~
583- glUniform3f@Base 7.8.1
584- glUniform3fv@Base 7.8.1
585- glUniform3i@Base 7.8.1
586- glUniform3iv@Base 7.8.1
587- glUniform3ui@Base 9.1~
588- glUniform3uiv@Base 9.1~
589- glUniform4f@Base 7.8.1
590- glUniform4fv@Base 7.8.1
591- glUniform4i@Base 7.8.1
592- glUniform4iv@Base 7.8.1
593- glUniform4ui@Base 9.1~
594- glUniform4uiv@Base 9.1~
595- glUniformBlockBinding@Base 9.1~
596- glUniformMatrix2fv@Base 7.8.1
597- glUniformMatrix2x3fv@Base 9.1~
598- glUniformMatrix2x4fv@Base 9.1~
599- glUniformMatrix3fv@Base 7.8.1
600- glUniformMatrix3x2fv@Base 9.1~
601- glUniformMatrix3x4fv@Base 9.1~
602- glUniformMatrix4fv@Base 7.8.1
603- glUniformMatrix4x2fv@Base 9.1~
604- glUniformMatrix4x3fv@Base 9.1~
605- glUnmapBuffer@Base 9.1~
606- glUseProgram@Base 7.8.1
607- glUseProgramStages@Base 12.0.1
608- glValidateProgram@Base 7.8.1
609- glValidateProgramPipeline@Base 12.0.1
610- glVertexAttrib1f@Base 7.8.1
611- glVertexAttrib1fv@Base 7.8.1
612- glVertexAttrib2f@Base 7.8.1
613- glVertexAttrib2fv@Base 7.8.1
614- glVertexAttrib3f@Base 7.8.1
615- glVertexAttrib3fv@Base 7.8.1
616- glVertexAttrib4f@Base 7.8.1
617- glVertexAttrib4fv@Base 7.8.1
618- glVertexAttribBinding@Base 10.7.0~
619- glVertexAttribDivisor@Base 9.1~
620- glVertexAttribFormat@Base 10.7.0~
621- glVertexAttribI4i@Base 9.1~
622- glVertexAttribI4iv@Base 9.1~
623- glVertexAttribI4ui@Base 9.1~
624- glVertexAttribI4uiv@Base 9.1~
625- glVertexAttribIFormat@Base 10.7.0~
626- glVertexAttribIPointer@Base 9.1~
627- glVertexAttribPointer@Base 7.8.1
628- glVertexBindingDivisor@Base 10.7.0~
629- glViewport@Base 7.8.1
630- glWaitSync@Base 9.1~
631diff --git a/debian/patches/0001-EGL-Implement-the-libglvnd-interface-for-EGL-v2.patch b/debian/patches/0001-EGL-Implement-the-libglvnd-interface-for-EGL-v2.patch
632new file mode 100644
633index 0000000..913a9dd
634--- /dev/null
635+++ b/debian/patches/0001-EGL-Implement-the-libglvnd-interface-for-EGL-v2.patch
636@@ -0,0 +1,3952 @@
637+From 97b447ee480a09a744094562da36b019a3eeb10f Mon Sep 17 00:00:00 2001
638+From: Kyle Brenneman <kbrenneman@nvidia.com>
639+Date: Wed, 4 Jan 2017 11:31:58 -0700
640+Subject: [PATCH 1/2] EGL: Implement the libglvnd interface for EGL (v2)
641+
642+Added separate --enable-libglvnd-glx and --enable-libglvnd-egl configure
643+options to enable libglvnd for GLX and EGL. The existing --enable-libglvnd
644+option will now enable both EGL and GLX.
645+
646+The new interface mostly just sits on top of the existing library. The only
647+change to the existing EGL code is to split the client extension string into
648+platform extensions and everything else. On non-glvnd builds, eglQueryString
649+will just concatenate the two strings.
650+
651+The EGL dispatch stubs are all generated. The script is based on the one used
652+to generate entrypoints in libglvnd itself.
653+
654+v2:
655+
656+Rebased against master.
657+
658+Reworked the EGL makefile to use separate libtool targets instead of an
659+automake substitution "lib@EGL_LIB@_la_*" in the variable names. Using the
660+substitution broke automake's dependency tracking for "make dist".
661+
662+Made the EGL code generation scripts work with Python 2 or 3.
663+
664+Change gen_egl_dispatch.py to use argparse for the command line arguments.
665+
666+Assorted formatting and style cleanup in the Python scripts.
667+---
668+ configure.ac | 154 ++-
669+ src/egl/Makefile.am | 97 +-
670+ src/egl/generate/egl.xml | 2412 ++++++++++++++++++++++++++++++++++
671+ src/egl/generate/eglFunctionList.py | 197 +++
672+ src/egl/generate/egl_other.xml | 47 +
673+ src/egl/generate/genCommon.py | 223 ++++
674+ src/egl/generate/gen_egl_dispatch.py | 250 ++++
675+ src/egl/main/50_mesa.json | 6 +
676+ src/egl/main/eglapi.c | 6 +-
677+ src/egl/main/egldispatchstubs.c | 110 ++
678+ src/egl/main/egldispatchstubs.h | 26 +
679+ src/egl/main/eglglobals.c | 47 +-
680+ src/egl/main/eglglobals.h | 13 +-
681+ src/egl/main/eglglvnd.c | 82 ++
682+ 14 files changed, 3576 insertions(+), 94 deletions(-)
683+ create mode 100755 src/egl/generate/egl.xml
684+ create mode 100644 src/egl/generate/eglFunctionList.py
685+ create mode 100644 src/egl/generate/egl_other.xml
686+ create mode 100644 src/egl/generate/genCommon.py
687+ create mode 100755 src/egl/generate/gen_egl_dispatch.py
688+ create mode 100644 src/egl/main/50_mesa.json
689+ create mode 100644 src/egl/main/egldispatchstubs.c
690+ create mode 100644 src/egl/main/egldispatchstubs.h
691+ create mode 100644 src/egl/main/eglglvnd.c
692+
693+diff --git a/configure.ac b/configure.ac
694+index de8af874ec..839b25c057 100644
695+--- a/configure.ac
696++++ b/configure.ac
697+@@ -528,8 +528,6 @@ else
698+ DEFINES="$DEFINES -DNDEBUG"
699+ fi
700+
701+-DEFAULT_GL_LIB_NAME=GL
702+-
703+ dnl
704+ dnl Check if linker supports -Bsymbolic
705+ dnl
706+@@ -627,23 +625,6 @@ esac
707+
708+ AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes)
709+
710+-DEFAULT_GL_LIB_NAME=GL
711+-
712+-dnl
713+-dnl Libglvnd configuration
714+-dnl
715+-AC_ARG_ENABLE([libglvnd],
716+- [AS_HELP_STRING([--enable-libglvnd],
717+- [Build for libglvnd @<:@default=disabled@:>@])],
718+- [enable_libglvnd="$enableval"],
719+- [enable_libglvnd=no])
720+-AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd" = xyes)
721+-#AM_COND_IF([USE_LIBGLVND_GLX], [DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1"])
722+-if test "x$enable_libglvnd" = xyes ; then
723+- DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1"
724+- DEFAULT_GL_LIB_NAME=GLX_mesa
725+-fi
726+-
727+ dnl
728+ dnl library names
729+ dnl
730+@@ -677,36 +658,6 @@ esac
731+
732+ AC_SUBST([LIB_EXT])
733+
734+-AC_ARG_WITH([gl-lib-name],
735+- [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
736+- [specify GL library name @<:@default=GL@:>@])],
737+- [GL_LIB=$withval],
738+- [GL_LIB="$DEFAULT_GL_LIB_NAME"])
739+-AC_ARG_WITH([osmesa-lib-name],
740+- [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
741+- [specify OSMesa library name @<:@default=OSMesa@:>@])],
742+- [OSMESA_LIB=$withval],
743+- [OSMESA_LIB=OSMesa])
744+-AS_IF([test "x$GL_LIB" = xyes], [GL_LIB="$DEFAULT_GL_LIB_NAME"])
745+-AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
746+-
747+-dnl
748+-dnl Mangled Mesa support
749+-dnl
750+-AC_ARG_ENABLE([mangling],
751+- [AS_HELP_STRING([--enable-mangling],
752+- [enable mangled symbols and library name @<:@default=disabled@:>@])],
753+- [enable_mangling="${enableval}"],
754+- [enable_mangling=no]
755+-)
756+-if test "x${enable_mangling}" = "xyes" ; then
757+- DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
758+- GL_LIB="Mangled${GL_LIB}"
759+- OSMESA_LIB="Mangled${OSMESA_LIB}"
760+-fi
761+-AC_SUBST([GL_LIB])
762+-AC_SUBST([OSMESA_LIB])
763+-
764+ dnl
765+ dnl potentially-infringing-but-nobody-knows-for-sure stuff
766+ dnl
767+@@ -1335,31 +1286,94 @@ AM_CONDITIONAL(HAVE_GALLIUM_XLIB_GLX, test "x$enable_glx" = xgallium-xlib)
768+ dnl
769+ dnl Libglvnd configuration
770+ dnl
771++
772++DEFAULT_GL_LIB_NAME=GL
773++
774+ AC_ARG_ENABLE([libglvnd],
775+ [AS_HELP_STRING([--enable-libglvnd],
776+- [Build for libglvnd @<:@default=disabled@:>@])],
777++ [Build GLX and EGL for libglvnd @<:@default=disabled@:>@])],
778+ [enable_libglvnd="$enableval"],
779+ [enable_libglvnd=no])
780+-AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd" = xyes)
781+-if test "x$enable_libglvnd" = xyes ; then
782+- dnl XXX: update once we can handle more than libGL/glx.
783+- dnl Namely: we should error out if neither of the glvnd enabled libraries
784+- dnl are built
785+- case "x$enable_glx" in
786+- xno)
787+- AC_MSG_ERROR([cannot build libglvnd without GLX])
788+- ;;
789+- xxlib | xgallium-xlib )
790+- AC_MSG_ERROR([cannot build libgvnd when Xlib-GLX or Gallium-Xlib-GLX is enabled])
791+- ;;
792+- xdri)
793+- ;;
794+- esac
795++AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd_glx" = xyes)
796++
797++AC_ARG_ENABLE([libglvnd-glx],
798++ [AS_HELP_STRING([--enable-libglvnd-glx],
799++ [Build GLX for libglvnd @<:@default=disabled@:>@])],
800++ [enable_libglvnd_glx="$enableval"],
801++ [enable_libglvnd_glx="$enable_libglvnd"])
802++AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd_glx" = xyes)
803++
804++AC_ARG_ENABLE([libglvnd-egl],
805++ [AS_HELP_STRING([--enable-libglvnd-egl],
806++ [Build EGL for libglvnd @<:@default=disabled@:>@])],
807++ [enable_libglvnd_egl="$enableval"],
808++ [enable_libglvnd_egl="$enable_libglvnd"])
809++AM_CONDITIONAL(USE_LIBGLVND_EGL, test "x$enable_libglvnd_egl" = xyes)
810++
811++if test "x$enable_libglvnd_glx" = xyes -o "x$enable_libglvnd_egl" = xyes ; then
812++ PKG_CHECK_VAR(LIBGLVND_DATADIR, libglvnd, datadir)
813++ AC_SUBST([LIBGLVND_DATADIR])
814++
815++ if test "x$enable_libglvnd_egl" = xyes ; then
816++ PKG_CHECK_MODULES([GLVND], libglvnd >= 0.2.0)
817++
818++ if test "x$enable_egl" != xyes ; then
819++ AC_MSG_ERROR([cannot build libglvnd without EGL])
820++ fi
821++ DEFINES="${DEFINES} -DUSE_LIBGLVND_EGL=1"
822++ else
823++ PKG_CHECK_MODULES([GLVND], libglvnd >= 0.1.0)
824++ fi
825++
826++ if test "x$enable_libglvnd_glx" = xyes ; then
827++ dnl XXX: update once we can handle more than libGL/glx.
828++ dnl Namely: we should error out if neither of the glvnd enabled libraries
829++ dnl are built
830++ case "x$enable_glx" in
831++ xno)
832++ AC_MSG_ERROR([cannot build libglvnd without GLX])
833++ ;;
834++ xxlib | xgallium-xlib )
835++ AC_MSG_ERROR([cannot build libgvnd when Xlib-GLX or Gallium-Xlib-GLX is enabled])
836++ ;;
837++ xdri)
838++ ;;
839++ esac
840++
841++ DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1"
842++ DEFAULT_GL_LIB_NAME=GLX_mesa
843++ fi
844++fi
845++
846++AC_ARG_WITH([gl-lib-name],
847++ [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
848++ [specify GL library name @<:@default=GL@:>@])],
849++ [GL_LIB=$withval],
850++ [GL_LIB="$DEFAULT_GL_LIB_NAME"])
851++AC_ARG_WITH([osmesa-lib-name],
852++ [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
853++ [specify OSMesa library name @<:@default=OSMesa@:>@])],
854++ [OSMESA_LIB=$withval],
855++ [OSMESA_LIB=OSMesa])
856++AS_IF([test "x$GL_LIB" = xyes], [GL_LIB="$DEFAULT_GL_LIB_NAME"])
857++AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
858+
859+- PKG_CHECK_MODULES([GLVND], libglvnd >= 0.1.0)
860+- DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1"
861+- DEFAULT_GL_LIB_NAME=GLX_mesa
862++dnl
863++dnl Mangled Mesa support
864++dnl
865++AC_ARG_ENABLE([mangling],
866++ [AS_HELP_STRING([--enable-mangling],
867++ [enable mangled symbols and library name @<:@default=disabled@:>@])],
868++ [enable_mangling="${enableval}"],
869++ [enable_mangling=no]
870++)
871++if test "x${enable_mangling}" = "xyes" ; then
872++ DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
873++ GL_LIB="Mangled${GL_LIB}"
874++ OSMESA_LIB="Mangled${OSMESA_LIB}"
875+ fi
876++AC_SUBST([GL_LIB])
877++AC_SUBST([OSMESA_LIB])
878+
879+ # Check for libdrm
880+ PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
881+@@ -2759,11 +2773,15 @@ xgallium-xlib)
882+ echo " GLX: $enable_glx"
883+ ;;
884+ esac
885++if test "x$enable_glx" != xno; then
886++ echo " GLX libglvnd: $enable_libglvnd_glx"
887++fi
888+
889+ dnl EGL
890+ echo ""
891+ echo " EGL: $enable_egl"
892+ if test "$enable_egl" = yes; then
893++ echo " EGL libglvnd: $enable_libglvnd_egl"
894+ echo " EGL platforms: $egl_platforms"
895+
896+ egl_drivers=""
897+diff --git a/src/egl/Makefile.am b/src/egl/Makefile.am
898+index 78cf525951..3bc62d550f 100644
899+--- a/src/egl/Makefile.am
900++++ b/src/egl/Makefile.am
901+@@ -32,19 +32,16 @@ AM_CFLAGS = \
902+ $(EGL_CFLAGS) \
903+ -D_EGL_NATIVE_PLATFORM=$(EGL_NATIVE_PLATFORM)
904+
905+-lib_LTLIBRARIES = libEGL.la
906+-
907+-libEGL_la_SOURCES = \
908++# Depending on whether libglvnd is enabled, we'll build the EGL library as
909++# either libEGL.so.1 or libEGL_mesa.so.0. Using an automake substitution
910++# in the variable names breaks "make dist" target, so use a conenience library
911++# instead.
912++noinst_LTLIBRARIES = libEGL_common.la
913++libEGL_common_la_SOURCES = \
914+ $(LIBEGL_C_FILES)
915+
916+-libEGL_la_LIBADD = \
917++libEGL_common_la_LIBADD = \
918+ $(EGL_LIB_DEPS)
919+-libEGL_la_LDFLAGS = \
920+- -no-undefined \
921+- -version-number 1:0 \
922+- $(BSYMBOLIC) \
923+- $(GC_SECTIONS) \
924+- $(LD_NO_UNDEFINED)
925+
926+ dri2_backend_FILES =
927+ dri3_backend_FILES =
928+@@ -52,7 +49,7 @@ dri3_backend_FILES =
929+ if HAVE_PLATFORM_X11
930+ AM_CFLAGS += -DHAVE_X11_PLATFORM
931+ AM_CFLAGS += $(XCB_DRI2_CFLAGS)
932+-libEGL_la_LIBADD += $(XCB_DRI2_LIBS)
933++libEGL_common_la_LIBADD += $(XCB_DRI2_LIBS)
934+ dri2_backend_FILES += drivers/dri2/platform_x11.c
935+
936+ if HAVE_DRI3
937+@@ -60,22 +57,22 @@ dri3_backend_FILES += \
938+ drivers/dri2/platform_x11_dri3.c \
939+ drivers/dri2/platform_x11_dri3.h
940+
941+-libEGL_la_LIBADD += $(top_builddir)/src/loader/libloader_dri3_helper.la
942++libEGL_common_la_LIBADD += $(top_builddir)/src/loader/libloader_dri3_helper.la
943+ endif
944+ endif
945+
946+ if HAVE_PLATFORM_WAYLAND
947+ AM_CFLAGS += -DHAVE_WAYLAND_PLATFORM
948+ AM_CFLAGS += $(WAYLAND_CFLAGS)
949+-libEGL_la_LIBADD += $(WAYLAND_LIBS)
950+-libEGL_la_LIBADD += $(LIBDRM_LIBS)
951+-libEGL_la_LIBADD += $(top_builddir)/src/egl/wayland/wayland-drm/libwayland-drm.la
952++libEGL_common_la_LIBADD += $(WAYLAND_LIBS)
953++libEGL_common_la_LIBADD += $(LIBDRM_LIBS)
954++libEGL_common_la_LIBADD += $(top_builddir)/src/egl/wayland/wayland-drm/libwayland-drm.la
955+ dri2_backend_FILES += drivers/dri2/platform_wayland.c
956+ endif
957+
958+ if HAVE_EGL_PLATFORM_DRM
959+ AM_CFLAGS += -DHAVE_DRM_PLATFORM
960+-libEGL_la_LIBADD += $(top_builddir)/src/gbm/libgbm.la
961++libEGL_common_la_LIBADD += $(top_builddir)/src/gbm/libgbm.la
962+ dri2_backend_FILES += drivers/dri2/platform_drm.c
963+ endif
964+
965+@@ -87,7 +84,7 @@ endif
966+ if HAVE_EGL_PLATFORM_ANDROID
967+ AM_CFLAGS += -DHAVE_ANDROID_PLATFORM
968+ AM_CFLAGS += $(ANDROID_CFLAGS)
969+-libEGL_la_LIBADD += $(ANDROID_LIBS)
970++libEGL_common_la_LIBADD += $(ANDROID_LIBS)
971+ dri2_backend_FILES += drivers/dri2/platform_android.c
972+ endif
973+
974+@@ -101,13 +98,68 @@ AM_CFLAGS += \
975+ -DDEFAULT_DRIVER_DIR=\"$(DRI_DRIVER_SEARCH_DIR)\" \
976+ -D_EGL_BUILT_IN_DRIVER_DRI2
977+
978+-libEGL_la_SOURCES += \
979++libEGL_common_la_SOURCES += \
980+ $(dri2_backend_core_FILES) \
981+ $(dri2_backend_FILES) \
982+ $(dri3_backend_FILES)
983+
984+-libEGL_la_LIBADD += $(top_builddir)/src/loader/libloader.la
985+-libEGL_la_LIBADD += $(DLOPEN_LIBS) $(LIBDRM_LIBS) $(CLOCK_LIB)
986++libEGL_common_la_LIBADD += $(top_builddir)/src/loader/libloader.la
987++libEGL_common_la_LIBADD += $(DLOPEN_LIBS) $(LIBDRM_LIBS) $(CLOCK_LIB)
988++
989++GLVND_GEN_DEPS = generate/gen_egl_dispatch.py \
990++ generate/egl.xml generate/eglFunctionList.py generate/genCommon.py \
991++ generate/egl_other.xml
992++
993++PYTHON_GEN = $(AM_V_GEN)$(PYTHON2) $(PYTHON_FLAGS)
994++g_egldispatchstubs.c: $(GLVND_GEN_DEPS)
995++ $(PYTHON_GEN) $(top_srcdir)/src/egl/generate/gen_egl_dispatch.py source \
996++ $(top_srcdir)/src/egl/generate/eglFunctionList.py \
997++ $(top_srcdir)/src/egl/generate/egl.xml \
998++ $(top_srcdir)/src/egl/generate/egl_other.xml > $@
999++
1000++g_egldispatchstubs.h: $(GLVND_GEN_DEPS)
1001++ $(PYTHON_GEN) $(top_srcdir)/src/egl/generate/gen_egl_dispatch.py header \
1002++ $(top_srcdir)/src/egl/generate/eglFunctionList.py \
1003++ $(top_srcdir)/src/egl/generate/egl.xml \
1004++ $(top_srcdir)/src/egl/generate/egl_other.xml > $@
1005++
1006++BUILT_SOURCES = g_egldispatchstubs.c g_egldispatchstubs.h
1007++CLEANFILES = $(BUILT_SOURCES)
1008++
1009++if USE_LIBGLVND_EGL
1010++AM_CFLAGS += \
1011++ $(GLVND_CFLAGS)
1012++
1013++vendorjsondir = @LIBGLVND_DATADIR@/glvnd/egl_vendor.d
1014++vendorjson_DATA = main/50_mesa.json
1015++
1016++lib_LTLIBRARIES = libEGL_mesa.la
1017++libEGL_mesa_la_SOURCES = \
1018++ main/eglglvnd.c \
1019++ main/egldispatchstubs.h \
1020++ main/egldispatchstubs.c \
1021++ g_egldispatchstubs.c
1022++libEGL_mesa_la_LIBADD = libEGL_common.la
1023++libEGL_mesa_la_LDFLAGS = \
1024++ -no-undefined \
1025++ -version-number 0 \
1026++ $(BSYMBOLIC) \
1027++ $(GC_SECTIONS) \
1028++ $(LD_NO_UNDEFINED)
1029++
1030++else # USE_LIBGLVND_EGL
1031++
1032++lib_LTLIBRARIES = libEGL.la
1033++libEGL_la_SOURCES =
1034++libEGL_la_LIBADD = libEGL_common.la
1035++libEGL_la_LDFLAGS = \
1036++ -no-undefined \
1037++ -version-number 1:0 \
1038++ $(BSYMBOLIC) \
1039++ $(GC_SECTIONS) \
1040++ $(LD_NO_UNDEFINED)
1041++
1042++endif # USE_LIBGLVND_EGL
1043+
1044+ include $(top_srcdir)/install-lib-links.mk
1045+
1046+@@ -133,4 +185,7 @@ EXTRA_DIST = \
1047+ SConscript \
1048+ drivers/haiku \
1049+ main/egl.def \
1050+- main/README.txt
1051++ main/README.txt \
1052++ $(GLVND_GEN_DEPS) \
1053++ main/50_mesa.json
1054++
1055+diff --git a/src/egl/generate/egl.xml b/src/egl/generate/egl.xml
1056+new file mode 100755
1057+index 0000000000..f6dbbc0f26
1058+--- /dev/null
1059++++ b/src/egl/generate/egl.xml
1060+@@ -0,0 +1,2412 @@
1061++<?xml version="1.0" encoding="UTF-8"?>
1062++<registry>
1063++ <!--
1064++ Copyright (c) 2013-2014 The Khronos Group Inc.
1065++
1066++ Permission is hereby granted, free of charge, to any person obtaining a
1067++ copy of this software and/or associated documentation files (the
1068++ "Materials"), to deal in the Materials without restriction, including
1069++ without limitation the rights to use, copy, modify, merge, publish,
1070++ distribute, sublicense, and/or sell copies of the Materials, and to
1071++ permit persons to whom the Materials are furnished to do so, subject to
1072++ the following conditions:
1073++
1074++ The above copyright notice and this permission notice shall be included
1075++ in all copies or substantial portions of the Materials.
1076++
1077++ THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1078++ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1079++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
1080++ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
1081++ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
1082++ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
1083++ MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
1084++ -->
1085++ <!--
1086++ This file, egl.xml, is the EGL API Registry. The older ".spec" file
1087++ format has been retired and will no longer be updated with new
1088++ extensions and API versions. The canonical version of the registry,
1089++ together with documentation, schema, and Python generator scripts used
1090++ to generate C header files for EGL, can be found in the Khronos Registry
1091++ at
1092++ http://www.opengl.org/registry/
1093++ -->
1094++
1095++ <!-- SECTION: EGL type definitions. Does not include GL types. -->
1096++ <types>
1097++ <!-- These are dependencies EGL types require to be declared legally -->
1098++ <type name="khrplatform">#include <KHR/khrplatform.h></type>
1099++ <type name="eglplatform" requires="khrplatform">#include <EGL/eglplatform.h></type>
1100++ <type name="khronos_utime_nanoseconds_t" requires="khrplatform"/>
1101++ <type name="khronos_uint64_t" requires="khrplatform"/>
1102++ <type name="khronos_ssize_t" requires="khrplatform"/>
1103++ <type name="EGLNativeDisplayType" requires="eglplatform"/>
1104++ <type name="EGLNativePixmapType" requires="eglplatform"/>
1105++ <type name="EGLNativeWindowType" requires="eglplatform"/>
1106++ <type name="EGLint" requires="eglplatform"/>
1107++ <type name="NativeDisplayType" requires="eglplatform"/>
1108++ <type name="NativePixmapType" requires="eglplatform"/>
1109++ <type name="NativeWindowType" requires="eglplatform"/>
1110++ <!-- Dummy placeholders for non-EGL types -->
1111++ <type name="Bool"/>
1112++ <!-- These are actual EGL types. -->
1113++ <type>typedef unsigned int <name>EGLBoolean</name>;</type>
1114++ <type>typedef unsigned int <name>EGLenum</name>;</type>
1115++ <type requires="khrplatform">typedef intptr_t <name>EGLAttribKHR</name>;</type>
1116++ <type requires="khrplatform">typedef intptr_t <name>EGLAttrib</name>;</type>
1117++ <type>typedef void *<name>EGLClientBuffer</name>;</type>
1118++ <type>typedef void *<name>EGLConfig</name>;</type>
1119++ <type>typedef void *<name>EGLContext</name>;</type>
1120++ <type>typedef void *<name>EGLDeviceEXT</name>;</type>
1121++ <type>typedef void *<name>EGLDisplay</name>;</type>
1122++ <type>typedef void *<name>EGLImage</name>;</type>
1123++ <type>typedef void *<name>EGLImageKHR</name>;</type>
1124++ <type>typedef void *<name>EGLLabelKHR</name>;</type>
1125++ <type>typedef void *<name>EGLObjectKHR</name>;</type>
1126++ <type>typedef void *<name>EGLOutputLayerEXT</name>;</type>
1127++ <type>typedef void *<name>EGLOutputPortEXT</name>;</type>
1128++ <type>typedef void *<name>EGLStreamKHR</name>;</type>
1129++ <type>typedef void *<name>EGLSurface</name>;</type>
1130++ <type>typedef void *<name>EGLSync</name>;</type>
1131++ <type>typedef void *<name>EGLSyncKHR</name>;</type>
1132++ <type>typedef void *<name>EGLSyncNV</name>;</type>
1133++ <type>typedef void (*<name>__eglMustCastToProperFunctionPointerType</name>)(void);</type>
1134++ <type requires="khrplatform">typedef khronos_utime_nanoseconds_t <name>EGLTimeKHR</name>;</type>
1135++ <type requires="khrplatform">typedef khronos_utime_nanoseconds_t <name>EGLTime</name>;</type>
1136++ <type requires="khrplatform">typedef khronos_utime_nanoseconds_t <name>EGLTimeNV</name>;</type>
1137++ <type requires="khrplatform">typedef khronos_utime_nanoseconds_t <name>EGLuint64NV</name>;</type>
1138++ <type requires="khrplatform">typedef khronos_uint64_t <name>EGLuint64KHR</name>;</type>
1139++ <type>typedef int <name>EGLNativeFileDescriptorKHR</name>;</type>
1140++ <type requires="khrplatform">typedef khronos_ssize_t <name>EGLsizeiANDROID</name>;</type>
1141++ <type requires="EGLsizeiANDROID">typedef void (*<name>EGLSetBlobFuncANDROID</name>) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);</type>
1142++ <type requires="EGLsizeiANDROID">typedef EGLsizeiANDROID (*<name>EGLGetBlobFuncANDROID</name>) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);</type>
1143++ <type>struct <name>EGLClientPixmapHI</name> {
1144++ void *pData;
1145++ EGLint iWidth;
1146++ EGLint iHeight;
1147++ EGLint iStride;
1148++};</type>
1149++ <type>typedef void (<apientry/> *<name>EGLDEBUGPROCKHR</name>)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message);</type>
1150++ </types>
1151++
1152++ <!-- SECTION: EGL enumerant (token) definitions. -->
1153++
1154++ <!-- Bitmasks each have their own namespace, as do a few other
1155++ categories of enumeration -->
1156++
1157++ <enums namespace="EGLSurfaceTypeMask" type="bitmask" comment="EGL_SURFACE_TYPE bits">
1158++ <enum value="0x0001" name="EGL_PBUFFER_BIT"/>
1159++ <enum value="0x0002" name="EGL_PIXMAP_BIT"/>
1160++ <enum value="0x0004" name="EGL_WINDOW_BIT"/>
1161++ <enum value="0x0008" name="EGL_PBUFFER_IMAGE_BIT_TAO" comment="Unreleased TAO extension"/>
1162++ <enum value="0x0010" name="EGL_PBUFFER_PALETTE_IMAGE_BIT_TAO" comment="Unreleased TAO extension"/>
1163++ <enum value="0x0020" name="EGL_VG_COLORSPACE_LINEAR_BIT"/>
1164++ <enum value="0x0020" name="EGL_VG_COLORSPACE_LINEAR_BIT_KHR"/>
1165++ <enum value="0x0040" name="EGL_VG_ALPHA_FORMAT_PRE_BIT"/>
1166++ <enum value="0x0040" name="EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR"/>
1167++ <enum value="0x0080" name="EGL_LOCK_SURFACE_BIT_KHR"/>
1168++ <enum value="0x0100" name="EGL_OPTIMAL_FORMAT_BIT_KHR"/>
1169++ <enum value="0x0200" name="EGL_MULTISAMPLE_RESOLVE_BOX_BIT"/>
1170++ <enum value="0x0400" name="EGL_SWAP_BEHAVIOR_PRESERVED_BIT"/>
1171++ <enum value="0x0800" name="EGL_STREAM_BIT_KHR"/>
1172++ <!--
1173++ <enum value="0x0800" name="EGL_STREAM_BIT_NV" comment="Draft EGL_NV_stream_producer_eglsurface extension (bug 8064)"/>
1174++ -->
1175++ </enums>
1176++
1177++ <enums namespace="EGLRenderableTypeMask" type="bitmask" comment="EGL_RENDERABLE_TYPE bits">
1178++ <enum value="0x0001" name="EGL_OPENGL_ES_BIT"/>
1179++ <enum value="0x0002" name="EGL_OPENVG_BIT"/>
1180++ <enum value="0x0004" name="EGL_OPENGL_ES2_BIT"/>
1181++ <enum value="0x0008" name="EGL_OPENGL_BIT"/>
1182++ <enum value="0x0010" name="EGL_INTEROP_BIT_KHR" comment="EGL_KHR_interop"/>
1183++ <enum value="0x0020" name="EGL_OPENMAX_IL_BIT_KHR" comment="EGL_KHR_interop"/>
1184++ <enum value="0x00000040" name="EGL_OPENGL_ES3_BIT"/>
1185++ <enum value="0x00000040" name="EGL_OPENGL_ES3_BIT_KHR" alias="EGL_OPENGL_ES3_BIT"/>
1186++ </enums>
1187++
1188++ <enums namespace="EGLLockUsageHintKHRMask" type="bitmask" comment="EGL_LOCK_USAGE_HINT_KHR bits">
1189++ <enum value="0x0001" name="EGL_READ_SURFACE_BIT_KHR"/>
1190++ <enum value="0x0002" name="EGL_WRITE_SURFACE_BIT_KHR"/>
1191++ </enums>
1192++
1193++ <enums namespace="EGLSyncFlagsKHR" type="bitmask" comment="Fence/reusable sync wait bits">
1194++ <enum value="0x0001" name="EGL_SYNC_FLUSH_COMMANDS_BIT"/>
1195++ <enum value="0x0001" name="EGL_SYNC_FLUSH_COMMANDS_BIT_KHR" alias="EGL_SYNC_FLUSH_COMMANDS_BIT"/>
1196++ <enum value="0x0001" name="EGL_SYNC_FLUSH_COMMANDS_BIT_NV" alias="EGL_SYNC_FLUSH_COMMANDS_BIT"/>
1197++ </enums>
1198++
1199++ <enums namespace="EGLDRMBufferUseMESAMask" type="bitmask" comment="EGL_DRM_BUFFER_USE_MESA bits">
1200++ <enum value="0x00000001" name="EGL_DRM_BUFFER_USE_SCANOUT_MESA"/>
1201++ <enum value="0x00000002" name="EGL_DRM_BUFFER_USE_SHARE_MESA"/>
1202++ </enums>
1203++
1204++ <!-- Should be shared with GL, but aren't aren't since the
1205++ FORWARD_COMPATIBLE and DEBUG_BIT values are swapped in the
1206++ corresponding GL enums. Oops :-( -->
1207++ <enums namespace="EGLContextFlagMask" type="bitmask" comment="EGL_CONTEXT_FLAGS_KHR bits">
1208++ <enum value="0x00000001" name="EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR"/>
1209++ <enum value="0x00000002" name="EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR"/>
1210++ <enum value="0x00000004" name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR"/>
1211++ </enums>
1212++
1213++ <enums namespace="EGLContextProfileMask" type="bitmask" comment="Shared with GL">
1214++ <enum value="0x00000001" name="EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT"/>
1215++ <enum value="0x00000001" name="EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR" alias="EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT"/>
1216++ <enum value="0x00000002" name="EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT"/>
1217++ <enum value="0x00000002" name="EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR" alias="EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT"/>
1218++ </enums>
1219++
1220++ <!-- The default ("API") enum namespace starts here. While some
1221++ assigned values may overlap, and different parts of the
1222++ namespace are reserved for different purposes, it is a single
1223++ namespace. The "class" attribute indicates some of the reserved
1224++ purposes but is by no means complete (and cannot be, since many
1225++ tokens are reused for different purposes in different
1226++ extensions and API versions). -->
1227++
1228++ <enums namespace="EGL" start="0x0000" end="0x2FFF" vendor="ARB"/>
1229++
1230++ <enums namespace="EGL" group="Boolean" vendor="ARB">
1231++ <enum value="0" name="EGL_FALSE"/>
1232++ <enum value="1" name="EGL_TRUE"/>
1233++ </enums>
1234++
1235++ <enums namespace="EGL" group="SpecialNumbers" vendor="ARB" comment="Tokens whose numeric value is intrinsically meaningful">
1236++ <enum value="((EGLint)-1)" name="EGL_DONT_CARE"/>
1237++ <enum value="((EGLint)-1)" name="EGL_UNKNOWN"/>
1238++ <enum value="-1" name="EGL_NO_NATIVE_FENCE_FD_ANDROID"/>
1239++ <enum value="0" name="EGL_DEPTH_ENCODING_NONE_NV"/>
1240++ <enum value="((EGLContext)0)" name="EGL_NO_CONTEXT"/>
1241++ <enum value="((EGLDeviceEXT)(0))" name="EGL_NO_DEVICE_EXT"/>
1242++ <enum value="((EGLDisplay)0)" name="EGL_NO_DISPLAY"/>
1243++ <enum value="((EGLImage)0)" name="EGL_NO_IMAGE"/>
1244++ <enum value="((EGLImageKHR)0)" name="EGL_NO_IMAGE_KHR"/>
1245++ <enum value="((EGLNativeDisplayType)0)" name="EGL_DEFAULT_DISPLAY"/>
1246++ <enum value="((EGLNativeFileDescriptorKHR)(-1))" name="EGL_NO_FILE_DESCRIPTOR_KHR"/>
1247++ <enum value="((EGLOutputLayerEXT)0)" name="EGL_NO_OUTPUT_LAYER_EXT"/>
1248++ <enum value="((EGLOutputPortEXT)0)" name="EGL_NO_OUTPUT_PORT_EXT"/>
1249++ <enum value="((EGLStreamKHR)0)" name="EGL_NO_STREAM_KHR"/>
1250++ <enum value="((EGLSurface)0)" name="EGL_NO_SURFACE"/>
1251++ <enum value="((EGLSync)0)" name="EGL_NO_SYNC"/>
1252++ <enum value="((EGLSyncKHR)0)" name="EGL_NO_SYNC_KHR" alias="EGL_NO_SYNC"/>
1253++ <enum value="((EGLSyncNV)0)" name="EGL_NO_SYNC_NV" alias="EGL_NO_SYNC"/>
1254++ <enum value="10000" name="EGL_DISPLAY_SCALING"/>
1255++ <enum value="0xFFFFFFFFFFFFFFFF" name="EGL_FOREVER" type="ull"/>
1256++ <enum value="0xFFFFFFFFFFFFFFFF" name="EGL_FOREVER_KHR" type="ull" alias="EGL_FOREVER"/>
1257++ <enum value="0xFFFFFFFFFFFFFFFF" name="EGL_FOREVER_NV" type="ull" alias="EGL_FOREVER"/>
1258++ </enums>
1259++
1260++ <enums namespace="EGL" start="0x3000" end="0x305F" vendor="KHR">
1261++ <enum value="0x3000" name="EGL_SUCCESS"/>
1262++ <enum value="0x3001" name="EGL_NOT_INITIALIZED"/>
1263++ <enum value="0x3002" name="EGL_BAD_ACCESS"/>
1264++ <enum value="0x3003" name="EGL_BAD_ALLOC"/>
1265++ <enum value="0x3004" name="EGL_BAD_ATTRIBUTE"/>
1266++ <enum value="0x3005" name="EGL_BAD_CONFIG"/>
1267++ <enum value="0x3006" name="EGL_BAD_CONTEXT"/>
1268++ <enum value="0x3007" name="EGL_BAD_CURRENT_SURFACE"/>
1269++ <enum value="0x3008" name="EGL_BAD_DISPLAY"/>
1270++ <enum value="0x3009" name="EGL_BAD_MATCH"/>
1271++ <enum value="0x300A" name="EGL_BAD_NATIVE_PIXMAP"/>
1272++ <enum value="0x300B" name="EGL_BAD_NATIVE_WINDOW"/>
1273++ <enum value="0x300C" name="EGL_BAD_PARAMETER"/>
1274++ <enum value="0x300D" name="EGL_BAD_SURFACE"/>
1275++ <enum value="0x300E" name="EGL_CONTEXT_LOST"/>
1276++ <unused start="0x300F" end="0x301F" comment="for additional errors"/>
1277++ <enum value="0x3020" name="EGL_BUFFER_SIZE"/>
1278++ <enum value="0x3021" name="EGL_ALPHA_SIZE"/>
1279++ <enum value="0x3022" name="EGL_BLUE_SIZE"/>
1280++ <enum value="0x3023" name="EGL_GREEN_SIZE"/>
1281++ <enum value="0x3024" name="EGL_RED_SIZE"/>
1282++ <enum value="0x3025" name="EGL_DEPTH_SIZE"/>
1283++ <enum value="0x3026" name="EGL_STENCIL_SIZE"/>
1284++ <enum value="0x3027" name="EGL_CONFIG_CAVEAT"/>
1285++ <enum value="0x3028" name="EGL_CONFIG_ID"/>
1286++ <enum value="0x3029" name="EGL_LEVEL"/>
1287++ <enum value="0x302A" name="EGL_MAX_PBUFFER_HEIGHT"/>
1288++ <enum value="0x302B" name="EGL_MAX_PBUFFER_PIXELS"/>
1289++ <enum value="0x302C" name="EGL_MAX_PBUFFER_WIDTH"/>
1290++ <enum value="0x302D" name="EGL_NATIVE_RENDERABLE"/>
1291++ <enum value="0x302E" name="EGL_NATIVE_VISUAL_ID"/>
1292++ <enum value="0x302F" name="EGL_NATIVE_VISUAL_TYPE"/>
1293++ <enum value="0x3031" name="EGL_SAMPLES"/>
1294++ <enum value="0x3032" name="EGL_SAMPLE_BUFFERS"/>
1295++ <enum value="0x3033" name="EGL_SURFACE_TYPE"/>
1296++ <enum value="0x3034" name="EGL_TRANSPARENT_TYPE"/>
1297++ <enum value="0x3035" name="EGL_TRANSPARENT_BLUE_VALUE"/>
1298++ <enum value="0x3036" name="EGL_TRANSPARENT_GREEN_VALUE"/>
1299++ <enum value="0x3037" name="EGL_TRANSPARENT_RED_VALUE"/>
1300++ <enum value="0x3038" name="EGL_NONE" comment="Attribute list terminator"/>
1301++ <enum value="0x3039" name="EGL_BIND_TO_TEXTURE_RGB"/>
1302++ <enum value="0x303A" name="EGL_BIND_TO_TEXTURE_RGBA"/>
1303++ <enum value="0x303B" name="EGL_MIN_SWAP_INTERVAL"/>
1304++ <enum value="0x303C" name="EGL_MAX_SWAP_INTERVAL"/>
1305++ <enum value="0x303D" name="EGL_LUMINANCE_SIZE"/>
1306++ <enum value="0x303E" name="EGL_ALPHA_MASK_SIZE"/>
1307++ <enum value="0x303F" name="EGL_COLOR_BUFFER_TYPE"/>
1308++ <enum value="0x3040" name="EGL_RENDERABLE_TYPE"/>
1309++ <enum value="0x3041" name="EGL_MATCH_NATIVE_PIXMAP"/>
1310++ <enum value="0x3042" name="EGL_CONFORMANT"/>
1311++ <enum value="0x3042" name="EGL_CONFORMANT_KHR"/>
1312++ <enum value="0x3043" name="EGL_MATCH_FORMAT_KHR"/>
1313++ <unused start="0x3044" end="0x304F" comment="for additional config attributes"/>
1314++ <enum value="0x3050" name="EGL_SLOW_CONFIG"/>
1315++ <enum value="0x3051" name="EGL_NON_CONFORMANT_CONFIG"/>
1316++ <enum value="0x3052" name="EGL_TRANSPARENT_RGB"/>
1317++ <enum value="0x3053" name="EGL_VENDOR"/>
1318++ <enum value="0x3054" name="EGL_VERSION"/>
1319++ <enum value="0x3055" name="EGL_EXTENSIONS"/>
1320++ <enum value="0x3056" name="EGL_HEIGHT"/>
1321++ <enum value="0x3057" name="EGL_WIDTH"/>
1322++ <enum value="0x3058" name="EGL_LARGEST_PBUFFER"/>
1323++ <enum value="0x3059" name="EGL_DRAW"/>
1324++ <enum value="0x305A" name="EGL_READ"/>
1325++ <enum value="0x305B" name="EGL_CORE_NATIVE_ENGINE"/>
1326++ <enum value="0x305C" name="EGL_NO_TEXTURE"/>
1327++ <enum value="0x305D" name="EGL_TEXTURE_RGB"/>
1328++ <enum value="0x305E" name="EGL_TEXTURE_RGBA"/>
1329++ <enum value="0x305F" name="EGL_TEXTURE_2D"/>
1330++ </enums>
1331++
1332++ <enums namespace="EGL" start="0x3060-0x306F" vendor="TAO" comment="Reserved for Phil Huxley">
1333++ <unused start="0x3060" end="0x306F"/>
1334++ </enums>
1335++
1336++ <enums namespace="EGL" start="0x3070-0x307F" vendor="NOK" comment="Reserved for Jani Vaarala">
1337++ <unused start="0x3070" end="0x307E"/>
1338++ <enum value="0x307F" name="EGL_Y_INVERTED_NOK"/>
1339++ </enums>
1340++
1341++ <enums namespace="EGL" start="0x3080-0x30AF" vendor="KHR">
1342++ <enum value="0x3080" name="EGL_TEXTURE_FORMAT"/>
1343++ <enum value="0x3081" name="EGL_TEXTURE_TARGET"/>
1344++ <enum value="0x3082" name="EGL_MIPMAP_TEXTURE"/>
1345++ <enum value="0x3083" name="EGL_MIPMAP_LEVEL"/>
1346++ <enum value="0x3084" name="EGL_BACK_BUFFER"/>
1347++ <enum value="0x3085" name="EGL_SINGLE_BUFFER"/>
1348++ <enum value="0x3086" name="EGL_RENDER_BUFFER"/>
1349++ <enum value="0x3087" name="EGL_COLORSPACE" alias="EGL_VG_COLORSPACE"/>
1350++ <enum value="0x3087" name="EGL_VG_COLORSPACE"/>
1351++ <enum value="0x3088" name="EGL_ALPHA_FORMAT" alias="EGL_VG_ALPHA_FORMAT"/>
1352++ <enum value="0x3088" name="EGL_VG_ALPHA_FORMAT"/>
1353++ <enum value="0x3089" name="EGL_COLORSPACE_sRGB"/>
1354++ <enum value="0x3089" name="EGL_GL_COLORSPACE_SRGB" alias="EGL_COLORSPACE_sRGB"/>
1355++ <enum value="0x3089" name="EGL_GL_COLORSPACE_SRGB_KHR" alias="EGL_COLORSPACE_sRGB"/>
1356++ <enum value="0x3089" name="EGL_VG_COLORSPACE_sRGB" alias="EGL_COLORSPACE_sRGB"/>
1357++ <enum value="0x308A" name="EGL_COLORSPACE_LINEAR"/>
1358++ <enum value="0x308A" name="EGL_GL_COLORSPACE_LINEAR" alias="EGL_COLORSPACE_LINEAR"/>
1359++ <enum value="0x308A" name="EGL_GL_COLORSPACE_LINEAR_KHR" alias="EGL_COLORSPACE_LINEAR"/>
1360++ <enum value="0x308A" name="EGL_VG_COLORSPACE_LINEAR" alias="EGL_COLORSPACE_LINEAR"/>
1361++ <enum value="0x308B" name="EGL_ALPHA_FORMAT_NONPRE" alias="EGL_VG_ALPHA_FORMAT_NONPRE"/>
1362++ <enum value="0x308B" name="EGL_VG_ALPHA_FORMAT_NONPRE"/>
1363++ <enum value="0x308C" name="EGL_ALPHA_FORMAT_PRE" alias="EGL_VG_ALPHA_FORMAT_PRE"/>
1364++ <enum value="0x308C" name="EGL_VG_ALPHA_FORMAT_PRE"/>
1365++ <enum value="0x308D" name="EGL_CLIENT_APIS"/>
1366++ <enum value="0x308E" name="EGL_RGB_BUFFER"/>
1367++ <enum value="0x308F" name="EGL_LUMINANCE_BUFFER"/>
1368++ <enum value="0x3090" name="EGL_HORIZONTAL_RESOLUTION"/>
1369++ <enum value="0x3091" name="EGL_VERTICAL_RESOLUTION"/>
1370++ <enum value="0x3092" name="EGL_PIXEL_ASPECT_RATIO"/>
1371++ <enum value="0x3093" name="EGL_SWAP_BEHAVIOR"/>
1372++ <enum value="0x3094" name="EGL_BUFFER_PRESERVED"/>
1373++ <enum value="0x3095" name="EGL_BUFFER_DESTROYED"/>
1374++ <enum value="0x3096" name="EGL_OPENVG_IMAGE"/>
1375++ <enum value="0x3097" name="EGL_CONTEXT_CLIENT_TYPE"/>
1376++ <enum value="0x3098" name="EGL_CONTEXT_CLIENT_VERSION"/>
1377++ <enum value="0x3098" name="EGL_CONTEXT_MAJOR_VERSION" alias="EGL_CONTEXT_CLIENT_VERSION"/>
1378++ <enum value="0x3098" name="EGL_CONTEXT_MAJOR_VERSION_KHR" alias="EGL_CONTEXT_CLIENT_VERSION"/>
1379++ <enum value="0x3099" name="EGL_MULTISAMPLE_RESOLVE"/>
1380++ <enum value="0x309A" name="EGL_MULTISAMPLE_RESOLVE_DEFAULT"/>
1381++ <enum value="0x309B" name="EGL_MULTISAMPLE_RESOLVE_BOX"/>
1382++ <enum value="0x309C" name="EGL_CL_EVENT_HANDLE"/>
1383++ <enum value="0x309C" name="EGL_CL_EVENT_HANDLE_KHR" alias="EGL_CL_EVENT_HANDLE"/>
1384++ <enum value="0x309D" name="EGL_GL_COLORSPACE"/>
1385++ <enum value="0x309D" name="EGL_GL_COLORSPACE_KHR" alias="EGL_GL_COLORSPACE"/>
1386++ <unused start="0x309E" end="0x309F"/>
1387++ <enum value="0x30A0" name="EGL_OPENGL_ES_API"/>
1388++ <enum value="0x30A1" name="EGL_OPENVG_API"/>
1389++ <enum value="0x30A2" name="EGL_OPENGL_API"/>
1390++ <unused start="0x30A3" end="0x30AF" comment="for additional client API names"/>
1391++ </enums>
1392++
1393++ <enums namespace="EGL" start="0x30B0-0x30BF" vendor="NV" comment="Reserved for Ignacio Llamas">
1394++ <enum value="0x30B0" name="EGL_NATIVE_PIXMAP_KHR"/>
1395++ <enum value="0x30B1" name="EGL_GL_TEXTURE_2D"/>
1396++ <enum value="0x30B1" name="EGL_GL_TEXTURE_2D_KHR" alias="EGL_GL_TEXTURE_2D"/>
1397++ <enum value="0x30B2" name="EGL_GL_TEXTURE_3D"/>
1398++ <enum value="0x30B2" name="EGL_GL_TEXTURE_3D_KHR" alias="EGL_GL_TEXTURE_3D"/>
1399++ <enum value="0x30B3" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X"/>
1400++ <enum value="0x30B3" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X"/>
1401++ <enum value="0x30B4" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X"/>
1402++ <enum value="0x30B4" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X"/>
1403++ <enum value="0x30B5" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y"/>
1404++ <enum value="0x30B5" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y"/>
1405++ <enum value="0x30B6" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y"/>
1406++ <enum value="0x30B6" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y"/>
1407++ <enum value="0x30B7" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z"/>
1408++ <enum value="0x30B7" name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z"/>
1409++ <enum value="0x30B8" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"/>
1410++ <enum value="0x30B8" name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR" alias="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"/>
1411++ <enum value="0x30B9" name="EGL_GL_RENDERBUFFER"/>
1412++ <enum value="0x30B9" name="EGL_GL_RENDERBUFFER_KHR" alias="EGL_GL_RENDERBUFFER"/>
1413++ <enum value="0x30BA" name="EGL_VG_PARENT_IMAGE_KHR"/>
1414++ <enum value="0x30BC" name="EGL_GL_TEXTURE_LEVEL"/>
1415++ <enum value="0x30BC" name="EGL_GL_TEXTURE_LEVEL_KHR" alias="EGL_GL_TEXTURE_LEVEL"/>
1416++ <enum value="0x30BD" name="EGL_GL_TEXTURE_ZOFFSET"/>
1417++ <enum value="0x30BD" name="EGL_GL_TEXTURE_ZOFFSET_KHR" alias="EGL_GL_TEXTURE_ZOFFSET"/>
1418++ <enum value="0x30BE" name="EGL_POST_SUB_BUFFER_SUPPORTED_NV"/>
1419++ <enum value="0x30BF" name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT" alias="EGL_CONTEXT_OPENGL_ROBUST_ACCESS"/>
1420++ </enums>
1421++
1422++ <enums namespace="EGL" start="0x30C0-0x30CF" vendor="KHR">
1423++ <enum value="0x30C0" name="EGL_FORMAT_RGB_565_EXACT_KHR"/>
1424++ <enum value="0x30C1" name="EGL_FORMAT_RGB_565_KHR"/>
1425++ <enum value="0x30C2" name="EGL_FORMAT_RGBA_8888_EXACT_KHR"/>
1426++ <enum value="0x30C3" name="EGL_FORMAT_RGBA_8888_KHR"/>
1427++ <enum value="0x30C4" name="EGL_MAP_PRESERVE_PIXELS_KHR"/>
1428++ <enum value="0x30C5" name="EGL_LOCK_USAGE_HINT_KHR"/>
1429++ <enum value="0x30C6" name="EGL_BITMAP_POINTER_KHR"/>
1430++ <enum value="0x30C7" name="EGL_BITMAP_PITCH_KHR"/>
1431++ <enum value="0x30C8" name="EGL_BITMAP_ORIGIN_KHR"/>
1432++ <enum value="0x30C9" name="EGL_BITMAP_PIXEL_RED_OFFSET_KHR"/>
1433++ <enum value="0x30CA" name="EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR"/>
1434++ <enum value="0x30CB" name="EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR"/>
1435++ <enum value="0x30CC" name="EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR"/>
1436++ <enum value="0x30CD" name="EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR"/>
1437++ <enum value="0x30CE" name="EGL_LOWER_LEFT_KHR"/>
1438++ <enum value="0x30CF" name="EGL_UPPER_LEFT_KHR"/>
1439++ </enums>
1440++
1441++ <enums namespace="EGL" start="0x30D0" end="0x30DF" vendor="Symbian" comment="Reserved for Robert Palmer (bug #2545)">
1442++ <unused start="0x30D0" end="0x30D1"/>
1443++ <enum value="0x30D2" name="EGL_IMAGE_PRESERVED"/>
1444++ <enum value="0x30D2" name="EGL_IMAGE_PRESERVED_KHR"/>
1445++ <unused start="0x30D3" end="0x30D9"/>
1446++ <enum value="0x30DA" name="EGL_SHARED_IMAGE_NOK" comment="Unreleased extension"/>
1447++ <unused start="0x30DB" end="0x30DF"/>
1448++ </enums>
1449++
1450++ <enums namespace="EGL" start="0x30E0" end="0x30EF" vendor="NV" comment="Reserved for Russell Pflughaupt (bug #3314)">
1451++ <enum value="0x30E0" name="EGL_COVERAGE_BUFFERS_NV"/>
1452++ <enum value="0x30E1" name="EGL_COVERAGE_SAMPLES_NV"/>
1453++ <enum value="0x30E2" name="EGL_DEPTH_ENCODING_NV"/>
1454++ <enum value="0x30E3" name="EGL_DEPTH_ENCODING_NONLINEAR_NV"/>
1455++ <unused start="0x30E4" end="0x30E5"/>
1456++ <enum value="0x30E6" name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV"/>
1457++ <enum value="0x30E7" name="EGL_SYNC_STATUS_NV"/>
1458++ <enum value="0x30E8" name="EGL_SIGNALED_NV"/>
1459++ <enum value="0x30E9" name="EGL_UNSIGNALED_NV"/>
1460++ <enum value="0x30EA" name="EGL_ALREADY_SIGNALED_NV"/>
1461++ <enum value="0x30EB" name="EGL_TIMEOUT_EXPIRED_NV"/>
1462++ <enum value="0x30EC" name="EGL_CONDITION_SATISFIED_NV"/>
1463++ <enum value="0x30ED" name="EGL_SYNC_TYPE_NV"/>
1464++ <enum value="0x30EE" name="EGL_SYNC_CONDITION_NV"/>
1465++ <enum value="0x30EF" name="EGL_SYNC_FENCE_NV"/>
1466++ </enums>
1467++
1468++ <enums namespace="EGL" start="0x30F0" end="0x30FF" vendor="KHR">
1469++ <enum value="0x30F0" name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE"/>
1470++ <enum value="0x30F0" name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR" alias="EGL_SYNC_PRIOR_COMMANDS_COMPLETE"/>
1471++ <enum value="0x30F1" name="EGL_SYNC_STATUS"/>
1472++ <enum value="0x30F1" name="EGL_SYNC_STATUS_KHR" alias="EGL_SYNC_STATUS"/>
1473++ <enum value="0x30F2" name="EGL_SIGNALED"/>
1474++ <enum value="0x30F2" name="EGL_SIGNALED_KHR" alias="EGL_SIGNALED"/>
1475++ <enum value="0x30F3" name="EGL_UNSIGNALED"/>
1476++ <enum value="0x30F3" name="EGL_UNSIGNALED_KHR" alias="EGL_UNSIGNALED"/>
1477++ <enum value="0x30F5" name="EGL_TIMEOUT_EXPIRED"/>
1478++ <enum value="0x30F5" name="EGL_TIMEOUT_EXPIRED_KHR" alias="EGL_TIMEOUT_EXPIRED"/>
1479++ <enum value="0x30F6" name="EGL_CONDITION_SATISFIED"/>
1480++ <enum value="0x30F6" name="EGL_CONDITION_SATISFIED_KHR" alias="EGL_CONDITION_SATISFIED"/>
1481++ <enum value="0x30F7" name="EGL_SYNC_TYPE"/>
1482++ <enum value="0x30F7" name="EGL_SYNC_TYPE_KHR" alias="EGL_SYNC_TYPE"/>
1483++ <enum value="0x30F8" name="EGL_SYNC_CONDITION"/>
1484++ <enum value="0x30F8" name="EGL_SYNC_CONDITION_KHR" alias="EGL_SYNC_CONDITION"/>
1485++ <enum value="0x30F9" name="EGL_SYNC_FENCE"/>
1486++ <enum value="0x30F9" name="EGL_SYNC_FENCE_KHR" alias="EGL_SYNC_FENCE"/>
1487++ <enum value="0x30FA" name="EGL_SYNC_REUSABLE_KHR"/>
1488++ <enum value="0x30FB" name="EGL_CONTEXT_MINOR_VERSION"/>
1489++ <enum value="0x30FB" name="EGL_CONTEXT_MINOR_VERSION_KHR" alias="EGL_CONTEXT_MINOR_VERSION"/>
1490++ <enum value="0x30FC" name="EGL_CONTEXT_FLAGS_KHR"/>
1491++ <enum value="0x30FD" name="EGL_CONTEXT_OPENGL_PROFILE_MASK"/>
1492++ <enum value="0x30FD" name="EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR" alias="EGL_CONTEXT_OPENGL_PROFILE_MASK"/>
1493++ <enum value="0x30FE" name="EGL_SYNC_CL_EVENT"/>
1494++ <enum value="0x30FE" name="EGL_SYNC_CL_EVENT_KHR" alias="EGL_SYNC_CL_EVENT"/>
1495++ <enum value="0x30FF" name="EGL_SYNC_CL_EVENT_COMPLETE"/>
1496++ <enum value="0x30FF" name="EGL_SYNC_CL_EVENT_COMPLETE_KHR" alias="EGL_SYNC_CL_EVENT_COMPLETE"/>
1497++ </enums>
1498++
1499++ <enums namespace="EGL" start="0x3100" end="0x310F" vendor="IMG" comment="Reserved for Ben Bowman (Khronos bug 4748)">
1500++ <enum value="0x3100" name="EGL_CONTEXT_PRIORITY_LEVEL_IMG"/>
1501++ <enum value="0x3101" name="EGL_CONTEXT_PRIORITY_HIGH_IMG"/>
1502++ <enum value="0x3102" name="EGL_CONTEXT_PRIORITY_MEDIUM_IMG"/>
1503++ <enum value="0x3103" name="EGL_CONTEXT_PRIORITY_LOW_IMG"/>
1504++ <unused start="0x3104" end="0x310F"/>
1505++ </enums>
1506++
1507++ <enums namespace="EGL" start="0x3110" end="0x311F" vendor="ATX" comment="Reserved for Tim Renouf, Antix (Khronos bug 4949)">
1508++ <enum value="0x3110" name="EGL_BITMAP_PIXEL_SIZE_KHR"/>
1509++ <unused start="0x3111" end="0x311F"/>
1510++ </enums>
1511++
1512++ <enums namespace="EGL" start="0x3120" end="0x312F" vendor="AMD" comment="Reserved for David Garcia (Khronos bug 5149)">
1513++ <unused start="0x3120" end="0x312F"/>
1514++ </enums>
1515++
1516++ <enums namespace="EGL" start="0x3130" end="0x313F" vendor="NV" comment="Reserved for Greg Prisament (Khronos bug 5166)">
1517++ <unused start="0x3130"/>
1518++ <enum value="0x3131" name="EGL_COVERAGE_SAMPLE_RESOLVE_NV"/>
1519++ <enum value="0x3132" name="EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV"/>
1520++ <enum value="0x3133" name="EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV"/>
1521++ <enum value="0x3134" name="EGL_MULTIVIEW_VIEW_COUNT_EXT"/>
1522++ <unused start="0x3135"/>
1523++ <enum value="0x3136" name="EGL_AUTO_STEREO_NV"/>
1524++ <unused start="0x3137"/>
1525++ <enum value="0x3138" name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT"/>
1526++ <unused start="0x3139" end="0x313C"/>
1527++ <enum value="0x313D" name="EGL_BUFFER_AGE_KHR"/>
1528++ <enum value="0x313D" name="EGL_BUFFER_AGE_EXT" alias="EGL_BUFFER_AGE_KHR"/>
1529++ <unused start="0x313E" end="0x313F"/>
1530++ <enum value="0x313F" name="EGL_PLATFORM_DEVICE_EXT"/>
1531++ </enums>
1532++
1533++ <enums namespace="EGL" start="0x3140" end="0x314F" vendor="Google" comment="Reserved for Mathias Agopian (Khronos bug 5199)">
1534++ <enum value="0x3140" name="EGL_NATIVE_BUFFER_ANDROID"/>
1535++ <enum value="0x3141" name="EGL_PLATFORM_ANDROID_KHR"/>
1536++ <enum value="0x3142" name="EGL_RECORDABLE_ANDROID"/>
1537++ <unused start="0x3143"/>
1538++ <enum value="0x3144" name="EGL_SYNC_NATIVE_FENCE_ANDROID"/>
1539++ <enum value="0x3145" name="EGL_SYNC_NATIVE_FENCE_FD_ANDROID"/>
1540++ <enum value="0x3146" name="EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID"/>
1541++ <enum value="0x3147" name="EGL_FRAMEBUFFER_TARGET_ANDROID"/>
1542++ <unused start="0x3148" end="0x314F"/>
1543++ </enums>
1544++
1545++ <enums namespace="EGL" start="0x3150" end="0x315F" vendor="NOK" comment="Reserved for Robert Palmer (Khronos bug 5368)">
1546++ <unused start="0x3150" end="0x315F"/>
1547++ </enums>
1548++
1549++ <enums namespace="EGL" start="0x3160" end="0x316F" vendor="Seaweed" comment="Reserved for Sree Sridharan (Khronos public bug 198)">
1550++ <unused start="0x3160" end="0x316F"/>
1551++ </enums>
1552++
1553++ <enums namespace="EGL" start="0x3170" end="0x318F" vendor="QNX" comment="Reserved for Joel Pilon (Khronos bug 5834)">
1554++ <unused start="0x3170" end="0x318F"/>
1555++ </enums>
1556++
1557++ <enums namespace="EGL" start="0x3190" end="0x31AF" vendor="FSL" comment="Reserved for Brian Murray, Freescale (Khronos bug 5939)">
1558++ <unused start="0x3190" end="0x31AF"/>
1559++ </enums>
1560++
1561++ <enums namespace="EGL" start="0x31B0" end="0x31BF" vendor="KHR" comment="Reserved for Marcus Lorentzon (Khronos bug 6437)">
1562++ <enum value="0x31B0" name="EGL_CONTEXT_OPENGL_DEBUG"/>
1563++ <enum value="0x31B1" name="EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE"/>
1564++ <enum value="0x31B2" name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS"/>
1565++ <enum value="0x31B3" name="EGL_CONTEXT_OPENGL_NO_ERROR_KHR"/>
1566++ <unused start="0x31B4" end="0x31BC" comment="0x31B3-0x31BC formerly reserved for EGL_image_stream"/>
1567++ <enum value="0x31BD" name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR" alias="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY"/>
1568++ <enum value="0x31BD" name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY"/>
1569++ <enum value="0x31BE" name="EGL_NO_RESET_NOTIFICATION"/>
1570++ <enum value="0x31BE" name="EGL_NO_RESET_NOTIFICATION_KHR" alias="EGL_NO_RESET_NOTIFICATION"/>
1571++ <enum value="0x31BE" name="EGL_NO_RESET_NOTIFICATION_EXT" alias="EGL_NO_RESET_NOTIFICATION"/>
1572++ <enum value="0x31BF" name="EGL_LOSE_CONTEXT_ON_RESET"/>
1573++ <enum value="0x31BF" name="EGL_LOSE_CONTEXT_ON_RESET_KHR" alias="EGL_LOSE_CONTEXT_ON_RESET"/>
1574++ <enum value="0x31BF" name="EGL_LOSE_CONTEXT_ON_RESET_EXT" alias="EGL_LOSE_CONTEXT_ON_RESET"/>
1575++ </enums>
1576++
1577++ <enums namespace="EGL" start="0x31C0" end="0x31CF" vendor="QCOM" comment="Reserved for Maurice Ribble (Khronos bug 6644) - EGL_QCOM_create_image spec TBD">
1578++ <unused start="0x31C0" end="0x31CF"/>
1579++ </enums>
1580++
1581++ <enums namespace="EGL" start="0x31D0" end="0x31DF" vendor="MESA" comment="Reserved for Kristian Høgsberg (Khronos bug 6757)">
1582++ <enum value="0x31D0" name="EGL_DRM_BUFFER_FORMAT_MESA"/>
1583++ <enum value="0x31D1" name="EGL_DRM_BUFFER_USE_MESA"/>
1584++ <enum value="0x31D2" name="EGL_DRM_BUFFER_FORMAT_ARGB32_MESA"/>
1585++ <enum value="0x31D3" name="EGL_DRM_BUFFER_MESA"/>
1586++ <enum value="0x31D4" name="EGL_DRM_BUFFER_STRIDE_MESA"/>
1587++ <enum value="0x31D5" name="EGL_PLATFORM_X11_KHR"/>
1588++ <enum value="0x31D5" name="EGL_PLATFORM_X11_EXT" alias="EGL_PLATFORM_X11_KHR"/>
1589++ <enum value="0x31D6" name="EGL_PLATFORM_X11_SCREEN_KHR"/>
1590++ <enum value="0x31D6" name="EGL_PLATFORM_X11_SCREEN_EXT" alias="EGL_PLATFORM_X11_SCREEN_KHR"/>
1591++ <enum value="0x31D7" name="EGL_PLATFORM_GBM_KHR"/>
1592++ <enum value="0x31D7" name="EGL_PLATFORM_GBM_MESA" alias="EGL_PLATFORM_GBM_KHR"/>
1593++ <enum value="0x31D8" name="EGL_PLATFORM_WAYLAND_KHR"/>
1594++ <enum value="0x31D8" name="EGL_PLATFORM_WAYLAND_EXT" alias="EGL_PLATFORM_WAYLAND_KHR"/>
1595++ <unused start="0x31D9" end="0x31DF"/>
1596++ </enums>
1597++
1598++ <enums namespace="EGL" start="0x31E0" end="0x31EF" vendor="HI" comment="Reserved for Mark Callow (Khronos bug 6799)">
1599++ <unused start="0x31E0" end="0x31EF"/>
1600++ </enums>
1601++
1602++ <enums namespace="EGL" start="0x31F0" end="0x31FF" vendor="KHR">
1603++ <unused start="0x31F0" end="0x31FB" comment="Placeholders for draft extensions follow"/>
1604++ <!--
1605++ <enum value="0x31F0" name="EGL_IMAGE_USE_AS_OPENGL_ES1_RENDERBUFFER_KHR" comment="Draft KHR_image_use_gl1_renderbuffer"/>
1606++ <enum value="0x31F1" name="EGL_IMAGE_USE_AS_OPENGL_ES1_TEXTURE_2D_KHR" comment="Draft KHR_image_use_gl1_texture_2d"/>
1607++ <enum value="0x31F2" name="EGL_IMAGE_USE_AS_OPENGL_ES1_TEXTURE_EXTERNAL_KHR" comment="Draft KHR_image_use_gl1_texture_external"/>
1608++ <enum value="0x31F3" name="EGL_IMAGE_USE_AS_OPENGL_ES2_RENDERBUFFER_KHR" comment="Draft KHR_image_use_gl2_renderbuffer"/>
1609++ <enum value="0x31F4" name="EGL_IMAGE_USE_AS_OPENGL_ES2_TEXTURE_2D_KHR" comment="Draft KHR_image_use_gl2_texture_2d"/>
1610++ <enum value="0x31F5" name="EGL_IMAGE_USE_AS_OPENGL_ES2_TEXTURE_EXTERNAL_KHR" comment="Draft KHR_image_use_gl2_texture_external"/>
1611++ <enum value="0x31F6" name="EGL_IMAGE_USE_AS_OPENVG_IMAGE_KHR" comment="Draft KHR_image_use_vg_vgimage"/>
1612++ <enum value="0x31F7" name="EGL_STREAM_CONSUMER_ATTACHMENT_MESA" comment="Draft EGL_MESA_image_stream_internal"/>
1613++ <enum value="0x31F8" name="EGL_NO_FORMAT_MESA" comment="Draft EGL_MESA_image_stream_internal"/>
1614++ <enum value="0x31F9" name="EGL_FORMAT_RGBA8888_MESA" comment="Draft EGL_MESA_image_stream_internal"/>
1615++ <enum value="0x31FA" name="EGL_FORMAT_RGB888_MESA" comment="Draft EGL_MESA_image_stream_internal"/>
1616++ <enum value="0x31FB" name="EGL_FORMAT_RGB565_MESA" comment="Draft EGL_MESA_image_stream_internal"/>
1617++ -->
1618++ <enum value="0x31FC" name="EGL_STREAM_FIFO_LENGTH_KHR"/>
1619++ <enum value="0x31FD" name="EGL_STREAM_TIME_NOW_KHR"/>
1620++ <enum value="0x31FE" name="EGL_STREAM_TIME_CONSUMER_KHR"/>
1621++ <enum value="0x31FF" name="EGL_STREAM_TIME_PRODUCER_KHR"/>
1622++ </enums>
1623++
1624++ <enums namespace="EGL" start="0x3200" end="0x320F" vendor="ANGLE" comment="Reserved for Daniel Koch, ANGLE Project (Khronos bug 7139)">
1625++ <enum value="0x3200" name="EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE"/>
1626++ <enum value="0x3201" name="EGL_FIXED_SIZE_ANGLE"/>
1627++ <unused start="0x3202" end="0x320F"/>
1628++ </enums>
1629++
1630++ <enums namespace="EGL" start="0x3210" end="0x321F" vendor="KHR">
1631++ <enum value="0x3210" name="EGL_CONSUMER_LATENCY_USEC_KHR"/>
1632++ <unused start="0x3211"/>
1633++ <enum value="0x3212" name="EGL_PRODUCER_FRAME_KHR"/>
1634++ <enum value="0x3213" name="EGL_CONSUMER_FRAME_KHR"/>
1635++ <enum value="0x3214" name="EGL_STREAM_STATE_KHR"/>
1636++ <enum value="0x3215" name="EGL_STREAM_STATE_CREATED_KHR"/>
1637++ <enum value="0x3216" name="EGL_STREAM_STATE_CONNECTING_KHR"/>
1638++ <enum value="0x3217" name="EGL_STREAM_STATE_EMPTY_KHR"/>
1639++ <enum value="0x3218" name="EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR"/>
1640++ <enum value="0x3219" name="EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR"/>
1641++ <enum value="0x321A" name="EGL_STREAM_STATE_DISCONNECTED_KHR"/>
1642++ <enum value="0x321B" name="EGL_BAD_STREAM_KHR"/>
1643++ <enum value="0x321C" name="EGL_BAD_STATE_KHR"/>
1644++ <enum value="0x321D" name="EGL_BUFFER_COUNT_NV" comment="From EGL_NV_stream_producer_eglsurface, which has no known specification and was replaced by a KHR extension"/>
1645++ <enum value="0x321E" name="EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR"/>
1646++ <enum value="0x321F" name="EGL_SYNC_NEW_FRAME_NV"/>
1647++ </enums>
1648++
1649++ <enums namespace="EGL" start="0x3220" end="0x325F" vendor="NV" comment="Reserved for Greg Roth (Bug 8220)">
1650++ <unused start="0x3220" end="0x322A"/>
1651++ <enum value="0x322B" name="EGL_BAD_DEVICE_EXT"/>
1652++ <enum value="0x322C" name="EGL_DEVICE_EXT"/>
1653++ <enum value="0x322D" name="EGL_BAD_OUTPUT_LAYER_EXT"/>
1654++ <enum value="0x322E" name="EGL_BAD_OUTPUT_PORT_EXT"/>
1655++ <enum value="0x322F" name="EGL_SWAP_INTERVAL_EXT"/>
1656++ <unused start="0x3230" end="0x3232"/>
1657++ <enum value="0x3233" name="EGL_DRM_DEVICE_FILE_EXT"/>
1658++ <enum value="0x3234" name="EGL_DRM_CRTC_EXT"/>
1659++ <enum value="0x3235" name="EGL_DRM_PLANE_EXT"/>
1660++ <enum value="0x3236" name="EGL_DRM_CONNECTOR_EXT"/>
1661++ <enum value="0x3237" name="EGL_OPENWF_DEVICE_ID_EXT"/>
1662++ <enum value="0x3238" name="EGL_OPENWF_PIPELINE_ID_EXT"/>
1663++ <enum value="0x3239" name="EGL_OPENWF_PORT_ID_EXT"/>
1664++ <enum value="0x323A" name="EGL_CUDA_DEVICE_NV"/>
1665++ <enum value="0x323B" name="EGL_CUDA_EVENT_HANDLE_NV"/>
1666++ <enum value="0x323C" name="EGL_SYNC_CUDA_EVENT_NV"/>
1667++ <enum value="0x323D" name="EGL_SYNC_CUDA_EVENT_COMPLETE_NV"/>
1668++ <unused start="0x323E" end="0x325F"/>
1669++ </enums>
1670++
1671++ <enums namespace="EGL" start="0x3260" end="0x326F" vendor="BCOM" comment="Reserved for Gary Sweet, Broadcom (Public bug 620)">
1672++ <unused start="0x3260" end="0x326F"/>
1673++ </enums>
1674++
1675++ <enums namespace="EGL" start="0x3270" end="0x328F" vendor="ARM" comment="Reserved for Tom Cooksey (Bug 9963)">
1676++ <enum value="0x3270" name="EGL_LINUX_DMA_BUF_EXT"/>
1677++ <enum value="0x3271" name="EGL_LINUX_DRM_FOURCC_EXT"/>
1678++ <enum value="0x3272" name="EGL_DMA_BUF_PLANE0_FD_EXT"/>
1679++ <enum value="0x3273" name="EGL_DMA_BUF_PLANE0_OFFSET_EXT"/>
1680++ <enum value="0x3274" name="EGL_DMA_BUF_PLANE0_PITCH_EXT"/>
1681++ <enum value="0x3275" name="EGL_DMA_BUF_PLANE1_FD_EXT"/>
1682++ <enum value="0x3276" name="EGL_DMA_BUF_PLANE1_OFFSET_EXT"/>
1683++ <enum value="0x3277" name="EGL_DMA_BUF_PLANE1_PITCH_EXT"/>
1684++ <enum value="0x3278" name="EGL_DMA_BUF_PLANE2_FD_EXT"/>
1685++ <enum value="0x3279" name="EGL_DMA_BUF_PLANE2_OFFSET_EXT"/>
1686++ <enum value="0x327A" name="EGL_DMA_BUF_PLANE2_PITCH_EXT"/>
1687++ <enum value="0x327B" name="EGL_YUV_COLOR_SPACE_HINT_EXT"/>
1688++ <enum value="0x327C" name="EGL_SAMPLE_RANGE_HINT_EXT"/>
1689++ <enum value="0x327D" name="EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT"/>
1690++ <enum value="0x327E" name="EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT"/>
1691++ <enum value="0x327F" name="EGL_ITU_REC601_EXT"/>
1692++ <enum value="0x3280" name="EGL_ITU_REC709_EXT"/>
1693++ <enum value="0x3281" name="EGL_ITU_REC2020_EXT"/>
1694++ <enum value="0x3282" name="EGL_YUV_FULL_RANGE_EXT"/>
1695++ <enum value="0x3283" name="EGL_YUV_NARROW_RANGE_EXT"/>
1696++ <enum value="0x3284" name="EGL_YUV_CHROMA_SITING_0_EXT"/>
1697++ <enum value="0x3285" name="EGL_YUV_CHROMA_SITING_0_5_EXT"/>
1698++ <enum value="0x3286" name="EGL_DISCARD_SAMPLES_ARM"/>
1699++ <unused start="0x3287" end="0x328F"/>
1700++ </enums>
1701++
1702++ <enums namespace="EGL" start="0x3290" end="0x329F" vendor="MESA" comment="Reserved for John Kåre Alsaker (Public bug 757)">
1703++ <unused start="0x3290" end="0x329F"/>
1704++ </enums>
1705++
1706++ <enums namespace="EGL" start="0x32A0" end="0x32AF" vendor="Samsung" comment="Reserved for Dongyeon Kim (Public bug 880)">
1707++ <enum value="0x32A0" name="EGL_NATIVE_BUFFER_TIZEN"/>
1708++ <enum value="0x32A1" name="EGL_NATIVE_SURFACE_TIZEN"/>
1709++ <unused start="0x32A2" end="0x32AF"/>
1710++ </enums>
1711++
1712++ <enums namespace="EGL" start="0x32B0" end="0x32BF" vendor="QCOM" comment="Reserved for Jeff Vigil (Bug 10663) - EGL_QCOM_lock_image spec TBD">
1713++ <unused start="0x32B0" end="0x32BF"/>
1714++ </enums>
1715++
1716++ <enums namespace="EGL" start="0x32C0" end="0x32CF" vendor="Vivante" comment="Reserved for Yanjun Zhang (Bug 11498)">
1717++ <enum value="0x32C0" name="EGL_PROTECTED_CONTENT_EXT"/>
1718++ <unused start="0x32C1" end="0x32CF"/>
1719++ </enums>
1720++
1721++ <enums namespace="EGL" start="0x32D0" end="0x32EF" vendor="QCOM" comment="Reserved for Jeff Vigil (Bug 11735) - EGL_QCOM_gpu_perf spec TBD + Bug 12286 - EGL_QCOM_content_protection spec TBD">
1722++ <unused start="0x32D0" end="0x32EF"/>
1723++ </enums>
1724++
1725++ <enums namespace="EGL" start="0x32F0" end="0x32FF" vendor="BCOM" comment="Reserved for Gary Sweet, Broadcom (Bug 12870)">
1726++ <unused start="0x32F0" end="0x32FF"/>
1727++ </enums>
1728++
1729++ <enums namespace="EGL" start="0x3300" end="0x331F" vendor="QCOM" comment="Reserved for Jeff Vigil (Bugs 12973,12849) - EGL_EXT_yuv_surface spec TBD">
1730++ <enum value="0x3300" name="EGL_YUV_BUFFER_EXT"/>
1731++ <enum value="0x3301" name="EGL_YUV_ORDER_EXT"/>
1732++ <enum value="0x3302" name="EGL_YUV_ORDER_YUV_EXT"/>
1733++ <enum value="0x3303" name="EGL_YUV_ORDER_YVU_EXT"/>
1734++ <enum value="0x3304" name="EGL_YUV_ORDER_YUYV_EXT"/>
1735++ <enum value="0x3305" name="EGL_YUV_ORDER_UYVY_EXT"/>
1736++ <enum value="0x3306" name="EGL_YUV_ORDER_YVYU_EXT"/>
1737++ <enum value="0x3307" name="EGL_YUV_ORDER_VYUY_EXT"/>
1738++ <enum value="0x3308" name="EGL_YUV_ORDER_AYUV_EXT"/>
1739++ <unused start="0x3309"/>
1740++ <enum value="0x330A" name="EGL_YUV_CSC_STANDARD_EXT"/>
1741++ <enum value="0x330B" name="EGL_YUV_CSC_STANDARD_601_EXT"/>
1742++ <enum value="0x330C" name="EGL_YUV_CSC_STANDARD_709_EXT"/>
1743++ <enum value="0x330D" name="EGL_YUV_CSC_STANDARD_2020_EXT"/>
1744++ <unused start="0x330E" end="0x3310"/>
1745++ <enum value="0x3311" name="EGL_YUV_NUMBER_OF_PLANES_EXT"/>
1746++ <enum value="0x3312" name="EGL_YUV_SUBSAMPLE_EXT"/>
1747++ <enum value="0x3313" name="EGL_YUV_SUBSAMPLE_4_2_0_EXT"/>
1748++ <enum value="0x3314" name="EGL_YUV_SUBSAMPLE_4_2_2_EXT"/>
1749++ <enum value="0x3315" name="EGL_YUV_SUBSAMPLE_4_4_4_EXT"/>
1750++ <unused start="0x3316"/>
1751++ <enum value="0x3317" name="EGL_YUV_DEPTH_RANGE_EXT"/>
1752++ <enum value="0x3318" name="EGL_YUV_DEPTH_RANGE_LIMITED_EXT"/>
1753++ <enum value="0x3319" name="EGL_YUV_DEPTH_RANGE_FULL_EXT"/>
1754++ <enum value="0x331A" name="EGL_YUV_PLANE_BPP_EXT"/>
1755++ <enum value="0x331B" name="EGL_YUV_PLANE_BPP_0_EXT"/>
1756++ <enum value="0x331C" name="EGL_YUV_PLANE_BPP_8_EXT"/>
1757++ <enum value="0x331D" name="EGL_YUV_PLANE_BPP_10_EXT"/>
1758++ <unused start="0x331E" end="0x331F"/>
1759++ </enums>
1760++
1761++ <enums namespace="EGL" start="0x3320" end="0x339F" vendor="NV" comment="Reserved for James Jones (Bug 13209)">
1762++ <unused start="0x3320" end="0x339F"/>
1763++ </enums>
1764++
1765++ <enums namespace="EGL" start="0x33A0" end="0x33AF" vendor="ANGLE" comment="Reserved for Shannon Woods (Bug 13175)">
1766++ <enum value="0x33A0" name="EGL_D3D9_DEVICE_ANGLE"/>
1767++ <enum value="0x33A1" name="EGL_D3D11_DEVICE_ANGLE"/>
1768++ <unused start="0x33A2" end="0x33AF"/>
1769++ </enums>
1770++
1771++ <enums namespace="EGL" start="0x33B0" end="0x33BF" vendor="KHR" comment="Reserved for EGL_KHR_debug / Jeff Vigil (Bug 13357)">
1772++ <enum value="0x33B0" name="EGL_OBJECT_THREAD_KHR"/>
1773++ <enum value="0x33B1" name="EGL_OBJECT_DISPLAY_KHR"/>
1774++ <enum value="0x33B2" name="EGL_OBJECT_CONTEXT_KHR"/>
1775++ <enum value="0x33B3" name="EGL_OBJECT_SURFACE_KHR"/>
1776++ <enum value="0x33B4" name="EGL_OBJECT_IMAGE_KHR"/>
1777++ <enum value="0x33B5" name="EGL_OBJECT_SYNC_KHR"/>
1778++ <enum value="0x33B6" name="EGL_OBJECT_STREAM_KHR"/>
1779++ <unused start="0x33B7"/>
1780++ <enum value="0x33B8" name="EGL_DEBUG_CALLBACK_KHR"/>
1781++ <enum value="0x33B9" name="EGL_DEBUG_MSG_CRITICAL_KHR"/>
1782++ <enum value="0x33BA" name="EGL_DEBUG_MSG_ERROR_KHR"/>
1783++ <enum value="0x33BB" name="EGL_DEBUG_MSG_WARN_KHR"/>
1784++ <enum value="0x33BC" name="EGL_DEBUG_MSG_INFO_KHR"/>
1785++ <unused start="0x33BD" end="0x33BF"/>
1786++ </enums>
1787++
1788++ <enums namespace="EGL" start="0x33C0" end="0x33DF" vendor="BCOM" comment="Reserved for Gary Sweet (Bug 12203)">
1789++ <unused start="0x33C0" end="0x33DF"/>
1790++ </enums>
1791++
1792++ <enums namespace="EGL" start="0x33E0" end="0x342F" vendor="QCOM" comment="Reserved for Jeff Vigil (Bugs 10663,13364)">
1793++ <unused start="0x33E0" end="0x342F"/>
1794++ </enums>
1795++
1796++<!-- Please remember that new enumerant allocations must be obtained by
1797++ request to the Khronos API registrar (see comments at the top of this
1798++ file) File requests in the Khronos Bugzilla, EGL project, Registry
1799++ component. Also note that some EGL enum values are shared with other
1800++ Khronos APIs, and new ranges should be allocated with such overlaps in
1801++ mind. -->
1802++
1803++<!-- Reservable for future use. To generate a new range, allocate multiples
1804++ of 16 starting at the lowest available point in this block. -->
1805++ <enums namespace="EGL" start="0x3420" end="0x3FFF" vendor="KHR">
1806++ <unused start="0x3420" end="0x3FFF" comment="Reserved for future use"/>
1807++ </enums>
1808++
1809++ <enums namespace="EGL" start="0x8F70" end="0x8F7F" vendor="HI" comment="For Mark Callow, Khronos bug 4055. Shared with GL.">
1810++ <enum value="0x8F70" name="EGL_COLOR_FORMAT_HI"/>
1811++ <enum value="0x8F71" name="EGL_COLOR_RGB_HI"/>
1812++ <enum value="0x8F72" name="EGL_COLOR_RGBA_HI"/>
1813++ <enum value="0x8F73" name="EGL_COLOR_ARGB_HI"/>
1814++ <enum value="0x8F74" name="EGL_CLIENT_PIXMAP_POINTER_HI"/>
1815++ </enums>
1816++
1817++ <!-- SECTION: EGL command definitions. -->
1818++ <commands namespace="EGL">
1819++ <command>
1820++ <proto><ptype>EGLBoolean</ptype> <name>eglBindAPI</name></proto>
1821++ <param><ptype>EGLenum</ptype> <name>api</name></param>
1822++ </command>
1823++ <command>
1824++ <proto><ptype>EGLBoolean</ptype> <name>eglBindTexImage</name></proto>
1825++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1826++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
1827++ <param><ptype>EGLint</ptype> <name>buffer</name></param>
1828++ </command>
1829++ <command>
1830++ <proto><ptype>EGLBoolean</ptype> <name>eglChooseConfig</name></proto>
1831++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1832++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
1833++ <param><ptype>EGLConfig</ptype> *<name>configs</name></param>
1834++ <param><ptype>EGLint</ptype> <name>config_size</name></param>
1835++ <param><ptype>EGLint</ptype> *<name>num_config</name></param>
1836++ </command>
1837++ <command>
1838++ <proto><ptype>EGLint</ptype> <name>eglClientWaitSync</name></proto>
1839++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1840++ <param><ptype>EGLSync</ptype> <name>sync</name></param>
1841++ <param><ptype>EGLint</ptype> <name>flags</name></param>
1842++ <param><ptype>EGLTime</ptype> <name>timeout</name></param>
1843++ </command>
1844++ <command>
1845++ <proto><ptype>EGLint</ptype> <name>eglClientWaitSyncKHR</name></proto>
1846++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1847++ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
1848++ <param><ptype>EGLint</ptype> <name>flags</name></param>
1849++ <param><ptype>EGLTimeKHR</ptype> <name>timeout</name></param>
1850++ <alias name="eglClientWaitSync"/>
1851++ </command>
1852++ <command>
1853++ <proto><ptype>EGLint</ptype> <name>eglClientWaitSyncNV</name></proto>
1854++ <param><ptype>EGLSyncNV</ptype> <name>sync</name></param>
1855++ <param><ptype>EGLint</ptype> <name>flags</name></param>
1856++ <param><ptype>EGLTimeNV</ptype> <name>timeout</name></param>
1857++ </command>
1858++ <command>
1859++ <proto><ptype>EGLBoolean</ptype> <name>eglCopyBuffers</name></proto>
1860++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1861++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
1862++ <param><ptype>EGLNativePixmapType</ptype> <name>target</name></param>
1863++ </command>
1864++ <command>
1865++ <proto><ptype>EGLContext</ptype> <name>eglCreateContext</name></proto>
1866++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1867++ <param><ptype>EGLConfig</ptype> <name>config</name></param>
1868++ <param><ptype>EGLContext</ptype> <name>share_context</name></param>
1869++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
1870++ </command>
1871++ <command>
1872++ <proto><ptype>EGLImageKHR</ptype> <name>eglCreateDRMImageMESA</name></proto>
1873++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1874++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
1875++ </command>
1876++ <command>
1877++ <proto><ptype>EGLSyncNV</ptype> <name>eglCreateFenceSyncNV</name></proto>
1878++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1879++ <param><ptype>EGLenum</ptype> <name>condition</name></param>
1880++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
1881++ </command>
1882++ <command>
1883++ <proto><ptype>EGLImage</ptype> <name>eglCreateImage</name></proto>
1884++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1885++ <param><ptype>EGLContext</ptype> <name>ctx</name></param>
1886++ <param><ptype>EGLenum</ptype> <name>target</name></param>
1887++ <param><ptype>EGLClientBuffer</ptype> <name>buffer</name></param>
1888++ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
1889++ </command>
1890++ <command>
1891++ <proto><ptype>EGLImageKHR</ptype> <name>eglCreateImageKHR</name></proto>
1892++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1893++ <param><ptype>EGLContext</ptype> <name>ctx</name></param>
1894++ <param><ptype>EGLenum</ptype> <name>target</name></param>
1895++ <param><ptype>EGLClientBuffer</ptype> <name>buffer</name></param>
1896++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
1897++ </command>
1898++ <command>
1899++ <proto><ptype>EGLSurface</ptype> <name>eglCreatePbufferFromClientBuffer</name></proto>
1900++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1901++ <param><ptype>EGLenum</ptype> <name>buftype</name></param>
1902++ <param><ptype>EGLClientBuffer</ptype> <name>buffer</name></param>
1903++ <param><ptype>EGLConfig</ptype> <name>config</name></param>
1904++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
1905++ </command>
1906++ <command>
1907++ <proto><ptype>EGLSurface</ptype> <name>eglCreatePbufferSurface</name></proto>
1908++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1909++ <param><ptype>EGLConfig</ptype> <name>config</name></param>
1910++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
1911++ </command>
1912++ <command>
1913++ <proto><ptype>EGLSurface</ptype> <name>eglCreatePixmapSurface</name></proto>
1914++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1915++ <param><ptype>EGLConfig</ptype> <name>config</name></param>
1916++ <param><ptype>EGLNativePixmapType</ptype> <name>pixmap</name></param>
1917++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
1918++ </command>
1919++ <command>
1920++ <proto><ptype>EGLSurface</ptype> <name>eglCreatePixmapSurfaceHI</name></proto>
1921++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1922++ <param><ptype>EGLConfig</ptype> <name>config</name></param>
1923++ <param>struct <ptype>EGLClientPixmapHI</ptype> *<name>pixmap</name></param>
1924++ </command>
1925++ <command>
1926++ <proto><ptype>EGLSurface</ptype> <name>eglCreatePlatformPixmapSurface</name></proto>
1927++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1928++ <param><ptype>EGLConfig</ptype> <name>config</name></param>
1929++ <param>void *<name>native_pixmap</name></param>
1930++ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
1931++ </command>
1932++ <command>
1933++ <proto><ptype>EGLSurface</ptype> <name>eglCreatePlatformPixmapSurfaceEXT</name></proto>
1934++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1935++ <param><ptype>EGLConfig</ptype> <name>config</name></param>
1936++ <param>void *<name>native_pixmap</name></param>
1937++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
1938++ </command>
1939++ <command>
1940++ <proto><ptype>EGLSurface</ptype> <name>eglCreatePlatformWindowSurface</name></proto>
1941++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1942++ <param><ptype>EGLConfig</ptype> <name>config</name></param>
1943++ <param>void *<name>native_window</name></param>
1944++ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
1945++ </command>
1946++ <command>
1947++ <proto><ptype>EGLSurface</ptype> <name>eglCreatePlatformWindowSurfaceEXT</name></proto>
1948++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1949++ <param><ptype>EGLConfig</ptype> <name>config</name></param>
1950++ <param>void *<name>native_window</name></param>
1951++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
1952++ </command>
1953++ <command>
1954++ <proto><ptype>EGLStreamKHR</ptype> <name>eglCreateStreamFromFileDescriptorKHR</name></proto>
1955++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1956++ <param><ptype>EGLNativeFileDescriptorKHR</ptype> <name>file_descriptor</name></param>
1957++ </command>
1958++ <command>
1959++ <proto><ptype>EGLStreamKHR</ptype> <name>eglCreateStreamKHR</name></proto>
1960++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1961++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
1962++ </command>
1963++ <command>
1964++ <proto><ptype>EGLSurface</ptype> <name>eglCreateStreamProducerSurfaceKHR</name></proto>
1965++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1966++ <param><ptype>EGLConfig</ptype> <name>config</name></param>
1967++ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
1968++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
1969++ </command>
1970++ <command>
1971++ <proto><ptype>EGLSyncKHR</ptype> <name>eglCreateStreamSyncNV</name></proto>
1972++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1973++ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
1974++ <param><ptype>EGLenum</ptype> <name>type</name></param>
1975++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
1976++ </command>
1977++ <command>
1978++ <proto><ptype>EGLSync</ptype> <name>eglCreateSync</name></proto>
1979++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1980++ <param><ptype>EGLenum</ptype> <name>type</name></param>
1981++ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
1982++ </command>
1983++ <command>
1984++ <proto><ptype>EGLSyncKHR</ptype> <name>eglCreateSyncKHR</name></proto>
1985++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1986++ <param><ptype>EGLenum</ptype> <name>type</name></param>
1987++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
1988++ </command>
1989++ <command>
1990++ <proto><ptype>EGLSyncKHR</ptype> <name>eglCreateSync64KHR</name></proto>
1991++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1992++ <param><ptype>EGLenum</ptype> <name>type</name></param>
1993++ <param>const <ptype>EGLAttribKHR</ptype> *<name>attrib_list</name></param>
1994++ <alias name="eglCreateSync"/>
1995++ </command>
1996++ <command>
1997++ <proto><ptype>EGLSurface</ptype> <name>eglCreateWindowSurface</name></proto>
1998++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
1999++ <param><ptype>EGLConfig</ptype> <name>config</name></param>
2000++ <param><ptype>EGLNativeWindowType</ptype> <name>win</name></param>
2001++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
2002++ </command>
2003++ <command>
2004++ <proto><ptype>EGLint</ptype> <name>eglDebugMessageControlKHR</name></proto>
2005++ <param><ptype>EGLDEBUGPROCKHR</ptype> <name>callback</name></param>
2006++ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
2007++ </command>
2008++ <command>
2009++ <proto><ptype>EGLBoolean</ptype> <name>eglDestroyContext</name></proto>
2010++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2011++ <param><ptype>EGLContext</ptype> <name>ctx</name></param>
2012++ </command>
2013++ <command>
2014++ <proto><ptype>EGLBoolean</ptype> <name>eglDestroyImage</name></proto>
2015++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2016++ <param><ptype>EGLImage</ptype> <name>image</name></param>
2017++ </command>
2018++ <command>
2019++ <proto><ptype>EGLBoolean</ptype> <name>eglDestroyImageKHR</name></proto>
2020++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2021++ <param><ptype>EGLImageKHR</ptype> <name>image</name></param>
2022++ <alias name="eglDestroyImage"/>
2023++ </command>
2024++ <command>
2025++ <proto><ptype>EGLBoolean</ptype> <name>eglDestroyStreamKHR</name></proto>
2026++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2027++ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
2028++ </command>
2029++ <command>
2030++ <proto><ptype>EGLBoolean</ptype> <name>eglDestroySurface</name></proto>
2031++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2032++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
2033++ </command>
2034++ <command>
2035++ <proto><ptype>EGLBoolean</ptype> <name>eglDestroySync</name></proto>
2036++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2037++ <param><ptype>EGLSync</ptype> <name>sync</name></param>
2038++ </command>
2039++ <command>
2040++ <proto><ptype>EGLBoolean</ptype> <name>eglDestroySyncKHR</name></proto>
2041++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2042++ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
2043++ <alias name="eglDestroySync"/>
2044++ </command>
2045++ <command>
2046++ <proto><ptype>EGLBoolean</ptype> <name>eglDestroySyncNV</name></proto>
2047++ <param><ptype>EGLSyncNV</ptype> <name>sync</name></param>
2048++ </command>
2049++ <command>
2050++ <proto><ptype>EGLint</ptype> <name>eglDupNativeFenceFDANDROID</name></proto>
2051++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2052++ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
2053++ </command>
2054++ <command>
2055++ <proto><ptype>EGLBoolean</ptype> <name>eglExportDMABUFImageMESA</name></proto>
2056++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2057++ <param><ptype>EGLImageKHR</ptype> <name>image</name></param>
2058++ <param>int *<name>fds</name></param>
2059++ <param><ptype>EGLint</ptype> *<name>strides</name></param>
2060++ <param><ptype>EGLint</ptype> *<name>offsets</name></param>
2061++ </command>
2062++ <command>
2063++ <proto><ptype>EGLBoolean</ptype> <name>eglExportDMABUFImageQueryMESA</name></proto>
2064++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2065++ <param><ptype>EGLImageKHR</ptype> <name>image</name></param>
2066++ <param>int *<name>fourcc</name></param>
2067++ <param>int *<name>num_planes</name></param>
2068++ <param><ptype>EGLuint64KHR</ptype> *<name>modifiers</name></param>
2069++ </command>
2070++ <command>
2071++ <proto><ptype>EGLBoolean</ptype> <name>eglExportDRMImageMESA</name></proto>
2072++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2073++ <param><ptype>EGLImageKHR</ptype> <name>image</name></param>
2074++ <param><ptype>EGLint</ptype> *<name>name</name></param>
2075++ <param><ptype>EGLint</ptype> *<name>handle</name></param>
2076++ <param><ptype>EGLint</ptype> *<name>stride</name></param>
2077++ </command>
2078++ <command>
2079++ <proto><ptype>EGLBoolean</ptype> <name>eglFenceNV</name></proto>
2080++ <param><ptype>EGLSyncNV</ptype> <name>sync</name></param>
2081++ </command>
2082++ <command>
2083++ <proto><ptype>EGLBoolean</ptype> <name>eglGetConfigAttrib</name></proto>
2084++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2085++ <param><ptype>EGLConfig</ptype> <name>config</name></param>
2086++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
2087++ <param><ptype>EGLint</ptype> *<name>value</name></param>
2088++ </command>
2089++ <command>
2090++ <proto><ptype>EGLBoolean</ptype> <name>eglGetConfigs</name></proto>
2091++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2092++ <param><ptype>EGLConfig</ptype> *<name>configs</name></param>
2093++ <param><ptype>EGLint</ptype> <name>config_size</name></param>
2094++ <param><ptype>EGLint</ptype> *<name>num_config</name></param>
2095++ </command>
2096++ <command>
2097++ <proto><ptype>EGLContext</ptype> <name>eglGetCurrentContext</name></proto>
2098++ </command>
2099++ <command>
2100++ <proto><ptype>EGLDisplay</ptype> <name>eglGetCurrentDisplay</name></proto>
2101++ </command>
2102++ <command>
2103++ <proto><ptype>EGLSurface</ptype> <name>eglGetCurrentSurface</name></proto>
2104++ <param><ptype>EGLint</ptype> <name>readdraw</name></param>
2105++ </command>
2106++ <command>
2107++ <proto><ptype>EGLDisplay</ptype> <name>eglGetDisplay</name></proto>
2108++ <param><ptype>EGLNativeDisplayType</ptype> <name>display_id</name></param>
2109++ </command>
2110++ <command>
2111++ <proto><ptype>EGLint</ptype> <name>eglGetError</name></proto>
2112++ </command>
2113++ <command>
2114++ <proto><ptype>EGLBoolean</ptype> <name>eglGetOutputLayersEXT</name></proto>
2115++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2116++ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
2117++ <param><ptype>EGLOutputLayerEXT</ptype> *<name>layers</name></param>
2118++ <param><ptype>EGLint</ptype> <name>max_layers</name></param>
2119++ <param><ptype>EGLint</ptype> *<name>num_layers</name></param>
2120++ </command>
2121++ <command>
2122++ <proto><ptype>EGLBoolean</ptype> <name>eglGetOutputPortsEXT</name></proto>
2123++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2124++ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
2125++ <param><ptype>EGLOutputPortEXT</ptype> *<name>ports</name></param>
2126++ <param><ptype>EGLint</ptype> <name>max_ports</name></param>
2127++ <param><ptype>EGLint</ptype> *<name>num_ports</name></param>
2128++ </command>
2129++ <command>
2130++ <proto><ptype>EGLDisplay</ptype> <name>eglGetPlatformDisplay</name></proto>
2131++ <param><ptype>EGLenum</ptype> <name>platform</name></param>
2132++ <param>void *<name>native_display</name></param>
2133++ <param>const <ptype>EGLAttrib</ptype> *<name>attrib_list</name></param>
2134++ </command>
2135++ <command>
2136++ <proto><ptype>EGLDisplay</ptype> <name>eglGetPlatformDisplayEXT</name></proto>
2137++ <param><ptype>EGLenum</ptype> <name>platform</name></param>
2138++ <param>void *<name>native_display</name></param>
2139++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
2140++ </command>
2141++ <command>
2142++ <proto><ptype>__eglMustCastToProperFunctionPointerType</ptype> <name>eglGetProcAddress</name></proto>
2143++ <param>const char *<name>procname</name></param>
2144++ </command>
2145++ <command>
2146++ <proto><ptype>EGLNativeFileDescriptorKHR</ptype> <name>eglGetStreamFileDescriptorKHR</name></proto>
2147++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2148++ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
2149++ </command>
2150++ <command>
2151++ <proto><ptype>EGLBoolean</ptype> <name>eglGetSyncAttrib</name></proto>
2152++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2153++ <param><ptype>EGLSync</ptype> <name>sync</name></param>
2154++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
2155++ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
2156++ </command>
2157++ <command>
2158++ <proto><ptype>EGLBoolean</ptype> <name>eglGetSyncAttribKHR</name></proto>
2159++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2160++ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
2161++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
2162++ <param><ptype>EGLint</ptype> *<name>value</name></param>
2163++ </command>
2164++ <command>
2165++ <proto><ptype>EGLBoolean</ptype> <name>eglGetSyncAttribNV</name></proto>
2166++ <param><ptype>EGLSyncNV</ptype> <name>sync</name></param>
2167++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
2168++ <param><ptype>EGLint</ptype> *<name>value</name></param>
2169++ </command>
2170++ <command>
2171++ <proto><ptype>EGLuint64NV</ptype> <name>eglGetSystemTimeFrequencyNV</name></proto>
2172++ </command>
2173++ <command>
2174++ <proto><ptype>EGLuint64NV</ptype> <name>eglGetSystemTimeNV</name></proto>
2175++ </command>
2176++ <command>
2177++ <proto><ptype>EGLBoolean</ptype> <name>eglInitialize</name></proto>
2178++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2179++ <param><ptype>EGLint</ptype> *<name>major</name></param>
2180++ <param><ptype>EGLint</ptype> *<name>minor</name></param>
2181++ </command>
2182++ <command>
2183++ <proto><ptype>EGLint</ptype> <name>eglLabelObjectKHR</name></proto>
2184++ <param><ptype>EGLDisplay</ptype> <name>display</name></param>
2185++ <param><ptype>EGLenum</ptype> <name>objectType</name></param>
2186++ <param><ptype>EGLObjectKHR</ptype> <name>object</name></param>
2187++ <param><ptype>EGLLabelKHR</ptype> <name>label</name></param>
2188++ </command>
2189++ <command>
2190++ <proto><ptype>EGLBoolean</ptype> <name>eglLockSurfaceKHR</name></proto>
2191++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2192++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
2193++ <param>const <ptype>EGLint</ptype> *<name>attrib_list</name></param>
2194++ </command>
2195++ <command>
2196++ <proto><ptype>EGLBoolean</ptype> <name>eglMakeCurrent</name></proto>
2197++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2198++ <param><ptype>EGLSurface</ptype> <name>draw</name></param>
2199++ <param><ptype>EGLSurface</ptype> <name>read</name></param>
2200++ <param><ptype>EGLContext</ptype> <name>ctx</name></param>
2201++ </command>
2202++ <command>
2203++ <proto><ptype>EGLBoolean</ptype> <name>eglOutputLayerAttribEXT</name></proto>
2204++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2205++ <param><ptype>EGLOutputLayerEXT</ptype> <name>layer</name></param>
2206++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
2207++ <param><ptype>EGLAttrib</ptype> <name>value</name></param>
2208++ </command>
2209++ <command>
2210++ <proto><ptype>EGLBoolean</ptype> <name>eglOutputPortAttribEXT</name></proto>
2211++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2212++ <param><ptype>EGLOutputPortEXT</ptype> <name>port</name></param>
2213++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
2214++ <param><ptype>EGLAttrib</ptype> <name>value</name></param>
2215++ </command>
2216++ <command>
2217++ <proto><ptype>EGLBoolean</ptype> <name>eglPostSubBufferNV</name></proto>
2218++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2219++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
2220++ <param><ptype>EGLint</ptype> <name>x</name></param>
2221++ <param><ptype>EGLint</ptype> <name>y</name></param>
2222++ <param><ptype>EGLint</ptype> <name>width</name></param>
2223++ <param><ptype>EGLint</ptype> <name>height</name></param>
2224++ </command>
2225++ <command>
2226++ <proto><ptype>EGLenum</ptype> <name>eglQueryAPI</name></proto>
2227++ </command>
2228++ <command>
2229++ <proto><ptype>EGLBoolean</ptype> <name>eglQueryContext</name></proto>
2230++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2231++ <param><ptype>EGLContext</ptype> <name>ctx</name></param>
2232++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
2233++ <param><ptype>EGLint</ptype> *<name>value</name></param>
2234++ </command>
2235++ <command>
2236++ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDebugKHR</name></proto>
2237++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
2238++ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
2239++ </command>
2240++ <command>
2241++ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDeviceAttribEXT</name></proto>
2242++ <param><ptype>EGLDeviceEXT</ptype> <name>device</name></param>
2243++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
2244++ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
2245++ </command>
2246++ <command>
2247++ <proto>const char *<name>eglQueryDeviceStringEXT</name></proto>
2248++ <param><ptype>EGLDeviceEXT</ptype> <name>device</name></param>
2249++ <param><ptype>EGLint</ptype> <name>name</name></param>
2250++ </command>
2251++ <command>
2252++ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDevicesEXT</name></proto>
2253++ <param><ptype>EGLint</ptype> <name>max_devices</name></param>
2254++ <param><ptype>EGLDeviceEXT</ptype> *<name>devices</name></param>
2255++ <param><ptype>EGLint</ptype> *<name>num_devices</name></param>
2256++ </command>
2257++ <command>
2258++ <proto><ptype>EGLBoolean</ptype> <name>eglQueryDisplayAttribEXT</name></proto>
2259++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2260++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
2261++ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
2262++ </command>
2263++ <command>
2264++ <proto><ptype>EGLBoolean</ptype> <name>eglQueryNativeDisplayNV</name></proto>
2265++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2266++ <param><ptype>EGLNativeDisplayType</ptype> *<name>display_id</name></param>
2267++ </command>
2268++ <command>
2269++ <proto><ptype>EGLBoolean</ptype> <name>eglQueryNativePixmapNV</name></proto>
2270++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2271++ <param><ptype>EGLSurface</ptype> <name>surf</name></param>
2272++ <param><ptype>EGLNativePixmapType</ptype> *<name>pixmap</name></param>
2273++ </command>
2274++ <command>
2275++ <proto><ptype>EGLBoolean</ptype> <name>eglQueryNativeWindowNV</name></proto>
2276++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2277++ <param><ptype>EGLSurface</ptype> <name>surf</name></param>
2278++ <param><ptype>EGLNativeWindowType</ptype> *<name>window</name></param>
2279++ </command>
2280++ <command>
2281++ <proto><ptype>EGLBoolean</ptype> <name>eglQueryOutputLayerAttribEXT</name></proto>
2282++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2283++ <param><ptype>EGLOutputLayerEXT</ptype> <name>layer</name></param>
2284++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
2285++ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
2286++ </command>
2287++ <command>
2288++ <proto>const char *<name>eglQueryOutputLayerStringEXT</name></proto>
2289++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2290++ <param><ptype>EGLOutputLayerEXT</ptype> <name>layer</name></param>
2291++ <param><ptype>EGLint</ptype> <name>name</name></param>
2292++ </command>
2293++ <command>
2294++ <proto><ptype>EGLBoolean</ptype> <name>eglQueryOutputPortAttribEXT</name></proto>
2295++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2296++ <param><ptype>EGLOutputPortEXT</ptype> <name>port</name></param>
2297++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
2298++ <param><ptype>EGLAttrib</ptype> *<name>value</name></param>
2299++ </command>
2300++ <command>
2301++ <proto>const char *<name>eglQueryOutputPortStringEXT</name></proto>
2302++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2303++ <param><ptype>EGLOutputPortEXT</ptype> <name>port</name></param>
2304++ <param><ptype>EGLint</ptype> <name>name</name></param>
2305++ </command>
2306++ <command>
2307++ <proto><ptype>EGLBoolean</ptype> <name>eglQueryStreamKHR</name></proto>
2308++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2309++ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
2310++ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
2311++ <param><ptype>EGLint</ptype> *<name>value</name></param>
2312++ </command>
2313++ <command>
2314++ <proto><ptype>EGLBoolean</ptype> <name>eglQueryStreamTimeKHR</name></proto>
2315++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2316++ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
2317++ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
2318++ <param><ptype>EGLTimeKHR</ptype> *<name>value</name></param>
2319++ </command>
2320++ <command>
2321++ <proto><ptype>EGLBoolean</ptype> <name>eglQueryStreamu64KHR</name></proto>
2322++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2323++ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
2324++ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
2325++ <param><ptype>EGLuint64KHR</ptype> *<name>value</name></param>
2326++ </command>
2327++ <command>
2328++ <proto>const char *<name>eglQueryString</name></proto>
2329++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2330++ <param><ptype>EGLint</ptype> <name>name</name></param>
2331++ </command>
2332++ <command>
2333++ <proto><ptype>EGLBoolean</ptype> <name>eglQuerySurface</name></proto>
2334++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2335++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
2336++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
2337++ <param><ptype>EGLint</ptype> *<name>value</name></param>
2338++ </command>
2339++ <command>
2340++ <proto><ptype>EGLBoolean</ptype> <name>eglQuerySurface64KHR</name></proto>
2341++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2342++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
2343++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
2344++ <param><ptype>EGLAttribKHR</ptype> *<name>value</name></param>
2345++ </command>
2346++ <command>
2347++ <proto><ptype>EGLBoolean</ptype> <name>eglQuerySurfacePointerANGLE</name></proto>
2348++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2349++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
2350++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
2351++ <param>void **<name>value</name></param>
2352++ </command>
2353++ <command>
2354++ <proto><ptype>EGLBoolean</ptype> <name>eglReleaseTexImage</name></proto>
2355++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2356++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
2357++ <param><ptype>EGLint</ptype> <name>buffer</name></param>
2358++ </command>
2359++ <command>
2360++ <proto><ptype>EGLBoolean</ptype> <name>eglReleaseThread</name></proto>
2361++ </command>
2362++ <command>
2363++ <proto>void <name>eglSetBlobCacheFuncsANDROID</name></proto>
2364++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2365++ <param><ptype>EGLSetBlobFuncANDROID</ptype> <name>set</name></param>
2366++ <param><ptype>EGLGetBlobFuncANDROID</ptype> <name>get</name></param>
2367++ </command>
2368++ <command>
2369++ <proto><ptype>EGLBoolean</ptype> <name>eglSetDamageRegionKHR</name></proto>
2370++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2371++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
2372++ <param><ptype>EGLint</ptype> *<name>rects</name></param>
2373++ <param><ptype>EGLint</ptype> <name>n_rects</name></param>
2374++ </command>
2375++ <command>
2376++ <proto><ptype>EGLBoolean</ptype> <name>eglSignalSyncKHR</name></proto>
2377++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2378++ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
2379++ <param><ptype>EGLenum</ptype> <name>mode</name></param>
2380++ </command>
2381++ <command>
2382++ <proto><ptype>EGLBoolean</ptype> <name>eglSignalSyncNV</name></proto>
2383++ <param><ptype>EGLSyncNV</ptype> <name>sync</name></param>
2384++ <param><ptype>EGLenum</ptype> <name>mode</name></param>
2385++ </command>
2386++ <command>
2387++ <proto><ptype>EGLBoolean</ptype> <name>eglStreamAttribKHR</name></proto>
2388++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2389++ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
2390++ <param><ptype>EGLenum</ptype> <name>attribute</name></param>
2391++ <param><ptype>EGLint</ptype> <name>value</name></param>
2392++ </command>
2393++ <command>
2394++ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerAcquireKHR</name></proto>
2395++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2396++ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
2397++ </command>
2398++ <command>
2399++ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerGLTextureExternalKHR</name></proto>
2400++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2401++ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
2402++ </command>
2403++ <command>
2404++ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerOutputEXT</name></proto>
2405++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2406++ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
2407++ <param><ptype>EGLOutputLayerEXT</ptype> <name>layer</name></param>
2408++ </command>
2409++ <command>
2410++ <proto><ptype>EGLBoolean</ptype> <name>eglStreamConsumerReleaseKHR</name></proto>
2411++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2412++ <param><ptype>EGLStreamKHR</ptype> <name>stream</name></param>
2413++ </command>
2414++ <command>
2415++ <proto><ptype>EGLBoolean</ptype> <name>eglSurfaceAttrib</name></proto>
2416++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2417++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
2418++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
2419++ <param><ptype>EGLint</ptype> <name>value</name></param>
2420++ </command>
2421++ <command>
2422++ <proto><ptype>EGLBoolean</ptype> <name>eglSwapBuffers</name></proto>
2423++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2424++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
2425++ </command>
2426++ <command>
2427++ <proto><ptype>EGLBoolean</ptype> <name>eglSwapBuffersWithDamageEXT</name></proto>
2428++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2429++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
2430++ <param><ptype>EGLint</ptype> *<name>rects</name></param>
2431++ <param><ptype>EGLint</ptype> <name>n_rects</name></param>
2432++ </command>
2433++ <command>
2434++ <proto><ptype>EGLBoolean</ptype> <name>eglSwapBuffersWithDamageKHR</name></proto>
2435++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2436++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
2437++ <param><ptype>EGLint</ptype> *<name>rects</name></param>
2438++ <param><ptype>EGLint</ptype> <name>n_rects</name></param>
2439++ </command>
2440++ <command>
2441++ <proto><ptype>EGLBoolean</ptype> <name>eglSwapBuffersRegionNOK</name></proto>
2442++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2443++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
2444++ <param><ptype>EGLint</ptype> <name>numRects</name></param>
2445++ <param>const <ptype>EGLint</ptype> *<name>rects</name></param>
2446++ </command>
2447++ <command>
2448++ <proto><ptype>EGLBoolean</ptype> <name>eglSwapBuffersRegion2NOK</name></proto>
2449++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2450++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
2451++ <param><ptype>EGLint</ptype> <name>numRects</name></param>
2452++ <param>const <ptype>EGLint</ptype> *<name>rects</name></param>
2453++ </command>
2454++ <command>
2455++ <proto><ptype>EGLBoolean</ptype> <name>eglSwapInterval</name></proto>
2456++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2457++ <param><ptype>EGLint</ptype> <name>interval</name></param>
2458++ </command>
2459++ <command>
2460++ <proto><ptype>EGLBoolean</ptype> <name>eglTerminate</name></proto>
2461++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2462++ </command>
2463++ <command>
2464++ <proto><ptype>EGLBoolean</ptype> <name>eglUnlockSurfaceKHR</name></proto>
2465++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2466++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
2467++ </command>
2468++ <command>
2469++ <proto><ptype>EGLBoolean</ptype> <name>eglWaitClient</name></proto>
2470++ </command>
2471++ <command>
2472++ <proto><ptype>EGLBoolean</ptype> <name>eglWaitGL</name></proto>
2473++ </command>
2474++ <command>
2475++ <proto><ptype>EGLBoolean</ptype> <name>eglWaitNative</name></proto>
2476++ <param><ptype>EGLint</ptype> <name>engine</name></param>
2477++ </command>
2478++ <command>
2479++ <proto><ptype>EGLBoolean</ptype> <name>eglWaitSync</name></proto>
2480++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2481++ <param><ptype>EGLSync</ptype> <name>sync</name></param>
2482++ <param><ptype>EGLint</ptype> <name>flags</name></param>
2483++ </command>
2484++ <command>
2485++ <proto><ptype>EGLint</ptype> <name>eglWaitSyncKHR</name></proto>
2486++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
2487++ <param><ptype>EGLSyncKHR</ptype> <name>sync</name></param>
2488++ <param><ptype>EGLint</ptype> <name>flags</name></param>
2489++ </command>
2490++ </commands>
2491++
2492++ <!-- SECTION: EGL API interface definitions. -->
2493++ <feature api="egl" name="EGL_VERSION_1_0" number="1.0">
2494++ <require>
2495++ <enum name="EGL_ALPHA_SIZE"/>
2496++ <enum name="EGL_BAD_ACCESS"/>
2497++ <enum name="EGL_BAD_ALLOC"/>
2498++ <enum name="EGL_BAD_ATTRIBUTE"/>
2499++ <enum name="EGL_BAD_CONFIG"/>
2500++ <enum name="EGL_BAD_CONTEXT"/>
2501++ <enum name="EGL_BAD_CURRENT_SURFACE"/>
2502++ <enum name="EGL_BAD_DISPLAY"/>
2503++ <enum name="EGL_BAD_MATCH"/>
2504++ <enum name="EGL_BAD_NATIVE_PIXMAP"/>
2505++ <enum name="EGL_BAD_NATIVE_WINDOW"/>
2506++ <enum name="EGL_BAD_PARAMETER"/>
2507++ <enum name="EGL_BAD_SURFACE"/>
2508++ <enum name="EGL_BLUE_SIZE"/>
2509++ <enum name="EGL_BUFFER_SIZE"/>
2510++ <enum name="EGL_CONFIG_CAVEAT"/>
2511++ <enum name="EGL_CONFIG_ID"/>
2512++ <enum name="EGL_CORE_NATIVE_ENGINE"/>
2513++ <enum name="EGL_DEPTH_SIZE"/>
2514++ <enum name="EGL_DONT_CARE"/>
2515++ <enum name="EGL_DRAW"/>
2516++ <enum name="EGL_EXTENSIONS"/>
2517++ <enum name="EGL_FALSE"/>
2518++ <enum name="EGL_GREEN_SIZE"/>
2519++ <enum name="EGL_HEIGHT"/>
2520++ <enum name="EGL_LARGEST_PBUFFER"/>
2521++ <enum name="EGL_LEVEL"/>
2522++ <enum name="EGL_MAX_PBUFFER_HEIGHT"/>
2523++ <enum name="EGL_MAX_PBUFFER_PIXELS"/>
2524++ <enum name="EGL_MAX_PBUFFER_WIDTH"/>
2525++ <enum name="EGL_NATIVE_RENDERABLE"/>
2526++ <enum name="EGL_NATIVE_VISUAL_ID"/>
2527++ <enum name="EGL_NATIVE_VISUAL_TYPE"/>
2528++ <enum name="EGL_NONE"/>
2529++ <enum name="EGL_NON_CONFORMANT_CONFIG"/>
2530++ <enum name="EGL_NOT_INITIALIZED"/>
2531++ <enum name="EGL_NO_CONTEXT"/>
2532++ <enum name="EGL_NO_DISPLAY"/>
2533++ <enum name="EGL_NO_SURFACE"/>
2534++ <enum name="EGL_PBUFFER_BIT"/>
2535++ <enum name="EGL_PIXMAP_BIT"/>
2536++ <enum name="EGL_READ"/>
2537++ <enum name="EGL_RED_SIZE"/>
2538++ <enum name="EGL_SAMPLES"/>
2539++ <enum name="EGL_SAMPLE_BUFFERS"/>
2540++ <enum name="EGL_SLOW_CONFIG"/>
2541++ <enum name="EGL_STENCIL_SIZE"/>
2542++ <enum name="EGL_SUCCESS"/>
2543++ <enum name="EGL_SURFACE_TYPE"/>
2544++ <enum name="EGL_TRANSPARENT_BLUE_VALUE"/>
2545++ <enum name="EGL_TRANSPARENT_GREEN_VALUE"/>
2546++ <enum name="EGL_TRANSPARENT_RED_VALUE"/>
2547++ <enum name="EGL_TRANSPARENT_RGB"/>
2548++ <enum name="EGL_TRANSPARENT_TYPE"/>
2549++ <enum name="EGL_TRUE"/>
2550++ <enum name="EGL_VENDOR"/>
2551++ <enum name="EGL_VERSION"/>
2552++ <enum name="EGL_WIDTH"/>
2553++ <enum name="EGL_WINDOW_BIT"/>
2554++ <command name="eglChooseConfig"/>
2555++ <command name="eglCopyBuffers"/>
2556++ <command name="eglCreateContext"/>
2557++ <command name="eglCreatePbufferSurface"/>
2558++ <command name="eglCreatePixmapSurface"/>
2559++ <command name="eglCreateWindowSurface"/>
2560++ <command name="eglDestroyContext"/>
2561++ <command name="eglDestroySurface"/>
2562++ <command name="eglGetConfigAttrib"/>
2563++ <command name="eglGetConfigs"/>
2564++ <command name="eglGetCurrentDisplay"/>
2565++ <command name="eglGetCurrentSurface"/>
2566++ <command name="eglGetDisplay"/>
2567++ <command name="eglGetError"/>
2568++ <command name="eglGetProcAddress"/>
2569++ <command name="eglInitialize"/>
2570++ <command name="eglMakeCurrent"/>
2571++ <command name="eglQueryContext"/>
2572++ <command name="eglQueryString"/>
2573++ <command name="eglQuerySurface"/>
2574++ <command name="eglSwapBuffers"/>
2575++ <command name="eglTerminate"/>
2576++ <command name="eglWaitGL"/>
2577++ <command name="eglWaitNative"/>
2578++ </require>
2579++ </feature>
2580++ <feature api="egl" name="EGL_VERSION_1_1" number="1.1">
2581++ <require>
2582++ <enum name="EGL_BACK_BUFFER"/>
2583++ <enum name="EGL_BIND_TO_TEXTURE_RGB"/>
2584++ <enum name="EGL_BIND_TO_TEXTURE_RGBA"/>
2585++ <enum name="EGL_CONTEXT_LOST"/>
2586++ <enum name="EGL_MIN_SWAP_INTERVAL"/>
2587++ <enum name="EGL_MAX_SWAP_INTERVAL"/>
2588++ <enum name="EGL_MIPMAP_TEXTURE"/>
2589++ <enum name="EGL_MIPMAP_LEVEL"/>
2590++ <enum name="EGL_NO_TEXTURE"/>
2591++ <enum name="EGL_TEXTURE_2D"/>
2592++ <enum name="EGL_TEXTURE_FORMAT"/>
2593++ <enum name="EGL_TEXTURE_RGB"/>
2594++ <enum name="EGL_TEXTURE_RGBA"/>
2595++ <enum name="EGL_TEXTURE_TARGET"/>
2596++ <command name="eglBindTexImage"/>
2597++ <command name="eglReleaseTexImage"/>
2598++ <command name="eglSurfaceAttrib"/>
2599++ <command name="eglSwapInterval"/>
2600++ </require>
2601++ </feature>
2602++ <feature api="egl" name="EGL_VERSION_1_2" number="1.2">
2603++ <require>
2604++ <enum name="EGL_ALPHA_FORMAT"/>
2605++ <enum name="EGL_ALPHA_FORMAT_NONPRE"/>
2606++ <enum name="EGL_ALPHA_FORMAT_PRE"/>
2607++ <enum name="EGL_ALPHA_MASK_SIZE"/>
2608++ <enum name="EGL_BUFFER_PRESERVED"/>
2609++ <enum name="EGL_BUFFER_DESTROYED"/>
2610++ <enum name="EGL_CLIENT_APIS"/>
2611++ <enum name="EGL_COLORSPACE"/>
2612++ <enum name="EGL_COLORSPACE_sRGB"/>
2613++ <enum name="EGL_COLORSPACE_LINEAR"/>
2614++ <enum name="EGL_COLOR_BUFFER_TYPE"/>
2615++ <enum name="EGL_CONTEXT_CLIENT_TYPE"/>
2616++ <enum name="EGL_DISPLAY_SCALING"/>
2617++ <enum name="EGL_HORIZONTAL_RESOLUTION"/>
2618++ <enum name="EGL_LUMINANCE_BUFFER"/>
2619++ <enum name="EGL_LUMINANCE_SIZE"/>
2620++ <enum name="EGL_OPENGL_ES_BIT"/>
2621++ <enum name="EGL_OPENVG_BIT"/>
2622++ <enum name="EGL_OPENGL_ES_API"/>
2623++ <enum name="EGL_OPENVG_API"/>
2624++ <enum name="EGL_OPENVG_IMAGE"/>
2625++ <enum name="EGL_PIXEL_ASPECT_RATIO"/>
2626++ <enum name="EGL_RENDERABLE_TYPE"/>
2627++ <enum name="EGL_RENDER_BUFFER"/>
2628++ <enum name="EGL_RGB_BUFFER"/>
2629++ <enum name="EGL_SINGLE_BUFFER"/>
2630++ <enum name="EGL_SWAP_BEHAVIOR"/>
2631++ <enum name="EGL_UNKNOWN"/>
2632++ <enum name="EGL_VERTICAL_RESOLUTION"/>
2633++ <command name="eglBindAPI"/>
2634++ <command name="eglQueryAPI"/>
2635++ <command name="eglCreatePbufferFromClientBuffer"/>
2636++ <command name="eglReleaseThread"/>
2637++ <command name="eglWaitClient"/>
2638++ </require>
2639++ </feature>
2640++ <feature api="egl" name="EGL_VERSION_1_3" number="1.3">
2641++ <require>
2642++ <enum name="EGL_CONFORMANT"/>
2643++ <enum name="EGL_CONTEXT_CLIENT_VERSION"/>
2644++ <enum name="EGL_MATCH_NATIVE_PIXMAP"/>
2645++ <enum name="EGL_OPENGL_ES2_BIT"/>
2646++ <enum name="EGL_VG_ALPHA_FORMAT"/>
2647++ <enum name="EGL_VG_ALPHA_FORMAT_NONPRE"/>
2648++ <enum name="EGL_VG_ALPHA_FORMAT_PRE"/>
2649++ <enum name="EGL_VG_ALPHA_FORMAT_PRE_BIT"/>
2650++ <enum name="EGL_VG_COLORSPACE"/>
2651++ <enum name="EGL_VG_COLORSPACE_sRGB"/>
2652++ <enum name="EGL_VG_COLORSPACE_LINEAR"/>
2653++ <enum name="EGL_VG_COLORSPACE_LINEAR_BIT"/>
2654++ </require>
2655++ </feature>
2656++ <feature api="egl" name="EGL_VERSION_1_4" number="1.4">
2657++ <require>
2658++ <enum name="EGL_DEFAULT_DISPLAY"/>
2659++ <enum name="EGL_MULTISAMPLE_RESOLVE_BOX_BIT"/>
2660++ <enum name="EGL_MULTISAMPLE_RESOLVE"/>
2661++ <enum name="EGL_MULTISAMPLE_RESOLVE_DEFAULT"/>
2662++ <enum name="EGL_MULTISAMPLE_RESOLVE_BOX"/>
2663++ <enum name="EGL_OPENGL_API"/>
2664++ <enum name="EGL_OPENGL_BIT"/>
2665++ <enum name="EGL_SWAP_BEHAVIOR_PRESERVED_BIT"/>
2666++ <command name="eglGetCurrentContext"/>
2667++ </require>
2668++ </feature>
2669++ <feature api="egl" name="EGL_VERSION_1_5" number="1.5">
2670++ <require comment="EGL_KHR_create_context features">
2671++ <enum name="EGL_CONTEXT_MAJOR_VERSION"/>
2672++ <enum name="EGL_CONTEXT_MINOR_VERSION"/>
2673++ <enum name="EGL_CONTEXT_OPENGL_PROFILE_MASK"/>
2674++ <enum name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY"/>
2675++ <enum name="EGL_NO_RESET_NOTIFICATION"/>
2676++ <enum name="EGL_LOSE_CONTEXT_ON_RESET"/>
2677++ <enum name="EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT"/>
2678++ <enum name="EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT"/>
2679++ <enum name="EGL_CONTEXT_OPENGL_DEBUG"/>
2680++ <enum name="EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE"/>
2681++ <enum name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS"/>
2682++ <enum name="EGL_OPENGL_ES3_BIT"/>
2683++ </require>
2684++ <require comment="EGL_EXT_create_context_robustness">
2685++ <enum name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS"/>
2686++ <enum name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY"/>
2687++ </require>
2688++ <require comment="EGL_EXT_client_extensions"/>
2689++ <require comment="EGL_KHR_cl_event2">
2690++ <enum name="EGL_CL_EVENT_HANDLE"/>
2691++ <enum name="EGL_SYNC_CL_EVENT"/>
2692++ <enum name="EGL_SYNC_CL_EVENT_COMPLETE"/>
2693++ </require>
2694++ <require comment="EGL_KHR_fence_sync">
2695++ <enum name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE"/>
2696++ <enum name="EGL_SYNC_TYPE"/>
2697++ <enum name="EGL_SYNC_STATUS"/>
2698++ <enum name="EGL_SYNC_CONDITION"/>
2699++ <enum name="EGL_SIGNALED"/>
2700++ <enum name="EGL_UNSIGNALED"/>
2701++ <enum name="EGL_SYNC_FLUSH_COMMANDS_BIT"/>
2702++ <enum name="EGL_FOREVER"/>
2703++ <enum name="EGL_TIMEOUT_EXPIRED"/>
2704++ <enum name="EGL_CONDITION_SATISFIED"/>
2705++ <enum name="EGL_NO_SYNC"/>
2706++ <enum name="EGL_SYNC_FENCE"/>
2707++ <command name="eglCreateSync"/>
2708++ <command name="eglDestroySync"/>
2709++ <command name="eglClientWaitSync"/>
2710++ <command name="eglGetSyncAttrib"/>
2711++ </require>
2712++ <require comment="EGL_KHR_get_all_proc_addresses"/>
2713++ <require comment="EGL_KHR_client_get_all_proc_addresses"/>
2714++ <require comment="EGL_KHR_gl_colorspace">
2715++ <enum name="EGL_GL_COLORSPACE"/>
2716++ <enum name="EGL_GL_COLORSPACE_SRGB"/>
2717++ <enum name="EGL_GL_COLORSPACE_LINEAR"/>
2718++ </require>
2719++ <require comment="EGL_KHR_gl_renderbuffer_image">
2720++ <enum name="EGL_GL_RENDERBUFFER"/>
2721++ </require>
2722++ <require comment="EGL_KHR_gl_texture_2D_image">
2723++ <enum name="EGL_GL_TEXTURE_2D"/>
2724++ <enum name="EGL_GL_TEXTURE_LEVEL"/>
2725++ </require>
2726++ <require comment="EGL_KHR_gl_texture_3D_image">
2727++ <enum name="EGL_GL_TEXTURE_3D"/>
2728++ <enum name="EGL_GL_TEXTURE_ZOFFSET"/>
2729++ </require>
2730++ <require comment="EGL_KHR_gl_texture_cubemap_image">
2731++ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X"/>
2732++ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X"/>
2733++ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y"/>
2734++ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y"/>
2735++ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z"/>
2736++ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"/>
2737++ </require>
2738++ <require comment="EGL_KHR_image_base">
2739++ <enum name="EGL_IMAGE_PRESERVED"/>
2740++ <enum name="EGL_NO_IMAGE"/>
2741++ <command name="eglCreateImage"/>
2742++ <command name="eglDestroyImage"/>
2743++ </require>
2744++ <require comment="EGL_EXT_platform_base">
2745++ <command name="eglGetPlatformDisplay"/>
2746++ <command name="eglCreatePlatformWindowSurface"/>
2747++ <command name="eglCreatePlatformPixmapSurface"/>
2748++ </require>
2749++ <require comment="EGL_KHR_surfaceless_context - just relaxes an error condition"/>
2750++ <require comment="EGL_KHR_wait_sync">
2751++ <command name="eglWaitSync"/>
2752++ </require>
2753++ </feature>
2754++
2755++ <!-- SECTION: EGL extension interface definitions -->
2756++ <extensions>
2757++ <extension name="EGL_ANDROID_blob_cache" supported="egl">
2758++ <require>
2759++ <command name="eglSetBlobCacheFuncsANDROID"/>
2760++ </require>
2761++ </extension>
2762++ <extension name="EGL_ANDROID_framebuffer_target" supported="egl">
2763++ <require>
2764++ <enum name="EGL_FRAMEBUFFER_TARGET_ANDROID"/>
2765++ </require>
2766++ </extension>
2767++ <extension name="EGL_ANDROID_image_native_buffer" supported="egl">
2768++ <require>
2769++ <enum name="EGL_NATIVE_BUFFER_ANDROID"/>
2770++ </require>
2771++ </extension>
2772++ <extension name="EGL_ANDROID_native_fence_sync" supported="egl">
2773++ <require>
2774++ <enum name="EGL_SYNC_NATIVE_FENCE_ANDROID"/>
2775++ <enum name="EGL_SYNC_NATIVE_FENCE_FD_ANDROID"/>
2776++ <enum name="EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID"/>
2777++ <enum name="EGL_NO_NATIVE_FENCE_FD_ANDROID"/>
2778++ <command name="eglDupNativeFenceFDANDROID"/>
2779++ </require>
2780++ </extension>
2781++ <extension name="EGL_ANDROID_recordable" supported="egl">
2782++ <require>
2783++ <enum name="EGL_RECORDABLE_ANDROID"/>
2784++ </require>
2785++ </extension>
2786++ <extension name="EGL_ANGLE_d3d_share_handle_client_buffer" supported="egl">
2787++ <require>
2788++ <enum name="EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE"/>
2789++ </require>
2790++ </extension>
2791++ <extension name="EGL_ANGLE_device_d3d" supported="egl">
2792++ <require>
2793++ <enum name="EGL_D3D9_DEVICE_ANGLE"/>
2794++ <enum name="EGL_D3D11_DEVICE_ANGLE"/>
2795++ </require>
2796++ </extension>
2797++ <extension name="EGL_ANGLE_query_surface_pointer" supported="egl">
2798++ <require>
2799++ <command name="eglQuerySurfacePointerANGLE"/>
2800++ </require>
2801++ </extension>
2802++ <extension name="EGL_ANGLE_surface_d3d_texture_2d_share_handle" supported="egl">
2803++ <require>
2804++ <enum name="EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE"/>
2805++ </require>
2806++ </extension>
2807++ <extension name="EGL_ANGLE_window_fixed_size" supported="egl">
2808++ <require>
2809++ <enum name="EGL_FIXED_SIZE_ANGLE"/>
2810++ </require>
2811++ </extension>
2812++ <extension name="EGL_ARM_pixmap_multisample_discard" supported="egl">
2813++ <require>
2814++ <enum name="EGL_DISCARD_SAMPLES_ARM"/>
2815++ </require>
2816++ </extension>
2817++ <extension name="EGL_EXT_buffer_age" supported="egl">
2818++ <require>
2819++ <enum name="EGL_BUFFER_AGE_EXT"/>
2820++ </require>
2821++ </extension>
2822++ <extension name="EGL_EXT_client_extensions" supported="egl"/>
2823++ <extension name="EGL_EXT_create_context_robustness" supported="egl">
2824++ <require>
2825++ <enum name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT"/>
2826++ <enum name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT"/>
2827++ <enum name="EGL_NO_RESET_NOTIFICATION_EXT"/>
2828++ <enum name="EGL_LOSE_CONTEXT_ON_RESET_EXT"/>
2829++ </require>
2830++ </extension>
2831++ <extension name="EGL_EXT_device_base" supported="egl">
2832++ <require>
2833++ <enum name="EGL_NO_DEVICE_EXT"/>
2834++ <enum name="EGL_BAD_DEVICE_EXT"/>
2835++ <enum name="EGL_DEVICE_EXT"/>
2836++ <command name="eglQueryDeviceAttribEXT"/>
2837++ <command name="eglQueryDeviceStringEXT"/>
2838++ <command name="eglQueryDevicesEXT"/>
2839++ <command name="eglQueryDisplayAttribEXT"/>
2840++ </require>
2841++ </extension>
2842++ <extension name="EGL_EXT_device_drm" supported="egl">
2843++ <require>
2844++ <enum name="EGL_DRM_DEVICE_FILE_EXT"/>
2845++ </require>
2846++ </extension>
2847++ <extension name="EGL_EXT_device_enumeration" supported="egl">
2848++ <require>
2849++ <command name="eglQueryDevicesEXT"/>
2850++ </require>
2851++ </extension>
2852++ <extension name="EGL_EXT_device_openwf" supported="egl">
2853++ <require>
2854++ <enum name="EGL_OPENWF_DEVICE_ID_EXT"/>
2855++ </require>
2856++ </extension>
2857++ <extension name="EGL_EXT_device_query" supported="egl">
2858++ <require>
2859++ <enum name="EGL_NO_DEVICE_EXT"/>
2860++ <enum name="EGL_BAD_DEVICE_EXT"/>
2861++ <enum name="EGL_DEVICE_EXT"/>
2862++ <command name="eglQueryDeviceAttribEXT"/>
2863++ <command name="eglQueryDeviceStringEXT"/>
2864++ <command name="eglQueryDisplayAttribEXT"/>
2865++ </require>
2866++ </extension>
2867++ <extension name="EGL_EXT_image_dma_buf_import" supported="egl">
2868++ <require>
2869++ <enum name="EGL_LINUX_DMA_BUF_EXT"/>
2870++ <enum name="EGL_LINUX_DRM_FOURCC_EXT"/>
2871++ <enum name="EGL_DMA_BUF_PLANE0_FD_EXT"/>
2872++ <enum name="EGL_DMA_BUF_PLANE0_OFFSET_EXT"/>
2873++ <enum name="EGL_DMA_BUF_PLANE0_PITCH_EXT"/>
2874++ <enum name="EGL_DMA_BUF_PLANE1_FD_EXT"/>
2875++ <enum name="EGL_DMA_BUF_PLANE1_OFFSET_EXT"/>
2876++ <enum name="EGL_DMA_BUF_PLANE1_PITCH_EXT"/>
2877++ <enum name="EGL_DMA_BUF_PLANE2_FD_EXT"/>
2878++ <enum name="EGL_DMA_BUF_PLANE2_OFFSET_EXT"/>
2879++ <enum name="EGL_DMA_BUF_PLANE2_PITCH_EXT"/>
2880++ <enum name="EGL_YUV_COLOR_SPACE_HINT_EXT"/>
2881++ <enum name="EGL_SAMPLE_RANGE_HINT_EXT"/>
2882++ <enum name="EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT"/>
2883++ <enum name="EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT"/>
2884++ <enum name="EGL_ITU_REC601_EXT"/>
2885++ <enum name="EGL_ITU_REC709_EXT"/>
2886++ <enum name="EGL_ITU_REC2020_EXT"/>
2887++ <enum name="EGL_YUV_FULL_RANGE_EXT"/>
2888++ <enum name="EGL_YUV_NARROW_RANGE_EXT"/>
2889++ <enum name="EGL_YUV_CHROMA_SITING_0_EXT"/>
2890++ <enum name="EGL_YUV_CHROMA_SITING_0_5_EXT"/>
2891++ </require>
2892++ </extension>
2893++ <extension name="EGL_EXT_multiview_window" supported="egl">
2894++ <require>
2895++ <enum name="EGL_MULTIVIEW_VIEW_COUNT_EXT"/>
2896++ </require>
2897++ </extension>
2898++ <extension name="EGL_EXT_output_base" supported="egl">
2899++ <require>
2900++ <type name="EGLOutputLayerEXT"/>
2901++ <type name="EGLOutputPortEXT"/>
2902++ <enum name="EGL_NO_OUTPUT_LAYER_EXT"/>
2903++ <enum name="EGL_NO_OUTPUT_PORT_EXT"/>
2904++ <enum name="EGL_BAD_OUTPUT_LAYER_EXT"/>
2905++ <enum name="EGL_BAD_OUTPUT_PORT_EXT"/>
2906++ <enum name="EGL_SWAP_INTERVAL_EXT"/>
2907++ <command name="eglGetOutputLayersEXT"/>
2908++ <command name="eglGetOutputPortsEXT"/>
2909++ <command name="eglOutputLayerAttribEXT"/>
2910++ <command name="eglQueryOutputLayerAttribEXT"/>
2911++ <command name="eglQueryOutputLayerStringEXT"/>
2912++ <command name="eglOutputPortAttribEXT"/>
2913++ <command name="eglQueryOutputPortAttribEXT"/>
2914++ <command name="eglQueryOutputPortStringEXT"/>
2915++ </require>
2916++ </extension>
2917++ <extension name="EGL_EXT_output_drm" supported="egl">
2918++ <require>
2919++ <enum name="EGL_DRM_CRTC_EXT"/>
2920++ <enum name="EGL_DRM_PLANE_EXT"/>
2921++ <enum name="EGL_DRM_CONNECTOR_EXT"/>
2922++ </require>
2923++ </extension>
2924++ <extension name="EGL_EXT_output_openwf" supported="egl">
2925++ <require>
2926++ <enum name="EGL_OPENWF_PIPELINE_ID_EXT"/>
2927++ <enum name="EGL_OPENWF_PORT_ID_EXT"/>
2928++ </require>
2929++ </extension>
2930++ <extension name="EGL_EXT_platform_base" supported="egl">
2931++ <require>
2932++ <command name="eglGetPlatformDisplayEXT"/>
2933++ <command name="eglCreatePlatformWindowSurfaceEXT"/>
2934++ <command name="eglCreatePlatformPixmapSurfaceEXT"/>
2935++ </require>
2936++ </extension>
2937++ <extension name="EGL_EXT_platform_device" supported="egl">
2938++ <require>
2939++ <enum name="EGL_PLATFORM_DEVICE_EXT"/>
2940++ </require>
2941++ </extension>
2942++ <extension name="EGL_EXT_platform_wayland" supported="egl">
2943++ <require>
2944++ <enum name="EGL_PLATFORM_WAYLAND_EXT"/>
2945++ </require>
2946++ </extension>
2947++ <extension name="EGL_EXT_platform_x11" supported="egl">
2948++ <require>
2949++ <enum name="EGL_PLATFORM_X11_EXT"/>
2950++ <enum name="EGL_PLATFORM_X11_SCREEN_EXT"/>
2951++ </require>
2952++ </extension>
2953++ <extension name="EGL_EXT_protected_surface" supported="egl">
2954++ <require>
2955++ <enum name="EGL_PROTECTED_CONTENT_EXT"/>
2956++ </require>
2957++ </extension>
2958++ <extension name="EGL_EXT_stream_consumer_egloutput" supported="egl">
2959++ <require>
2960++ <command name="eglStreamConsumerOutputEXT"/>
2961++ </require>
2962++ </extension>
2963++ <extension name="EGL_EXT_swap_buffers_with_damage" supported="egl">
2964++ <require>
2965++ <command name="eglSwapBuffersWithDamageEXT"/>
2966++ </require>
2967++ </extension>
2968++ <extension name="EGL_EXT_yuv_surface" supported="egl">
2969++ <require>
2970++ <enum name="EGL_YUV_ORDER_EXT"/>
2971++ <enum name="EGL_YUV_NUMBER_OF_PLANES_EXT"/>
2972++ <enum name="EGL_YUV_SUBSAMPLE_EXT"/>
2973++ <enum name="EGL_YUV_DEPTH_RANGE_EXT"/>
2974++ <enum name="EGL_YUV_CSC_STANDARD_EXT"/>
2975++ <enum name="EGL_YUV_PLANE_BPP_EXT"/>
2976++ <enum name="EGL_YUV_BUFFER_EXT"/>
2977++ <enum name="EGL_YUV_ORDER_YUV_EXT"/>
2978++ <enum name="EGL_YUV_ORDER_YVU_EXT"/>
2979++ <enum name="EGL_YUV_ORDER_YUYV_EXT"/>
2980++ <enum name="EGL_YUV_ORDER_UYVY_EXT"/>
2981++ <enum name="EGL_YUV_ORDER_YVYU_EXT"/>
2982++ <enum name="EGL_YUV_ORDER_VYUY_EXT"/>
2983++ <enum name="EGL_YUV_ORDER_AYUV_EXT"/>
2984++ <enum name="EGL_YUV_SUBSAMPLE_4_2_0_EXT"/>
2985++ <enum name="EGL_YUV_SUBSAMPLE_4_2_2_EXT"/>
2986++ <enum name="EGL_YUV_SUBSAMPLE_4_4_4_EXT"/>
2987++ <enum name="EGL_YUV_DEPTH_RANGE_LIMITED_EXT"/>
2988++ <enum name="EGL_YUV_DEPTH_RANGE_FULL_EXT"/>
2989++ <enum name="EGL_YUV_CSC_STANDARD_601_EXT"/>
2990++ <enum name="EGL_YUV_CSC_STANDARD_709_EXT"/>
2991++ <enum name="EGL_YUV_CSC_STANDARD_2020_EXT"/>
2992++ <enum name="EGL_YUV_PLANE_BPP_0_EXT"/>
2993++ <enum name="EGL_YUV_PLANE_BPP_8_EXT"/>
2994++ <enum name="EGL_YUV_PLANE_BPP_10_EXT"/>
2995++ </require>
2996++ </extension>
2997++ <extension name="EGL_HI_clientpixmap" supported="egl">
2998++ <require>
2999++ <enum name="EGL_CLIENT_PIXMAP_POINTER_HI"/>
3000++ <command name="eglCreatePixmapSurfaceHI"/>
3001++ </require>
3002++ </extension>
3003++ <extension name="EGL_HI_colorformats" supported="egl">
3004++ <require>
3005++ <enum name="EGL_COLOR_FORMAT_HI"/>
3006++ <enum name="EGL_COLOR_RGB_HI"/>
3007++ <enum name="EGL_COLOR_RGBA_HI"/>
3008++ <enum name="EGL_COLOR_ARGB_HI"/>
3009++ </require>
3010++ </extension>
3011++ <extension name="EGL_IMG_context_priority" supported="egl">
3012++ <require>
3013++ <enum name="EGL_CONTEXT_PRIORITY_LEVEL_IMG"/>
3014++ <enum name="EGL_CONTEXT_PRIORITY_HIGH_IMG"/>
3015++ <enum name="EGL_CONTEXT_PRIORITY_MEDIUM_IMG"/>
3016++ <enum name="EGL_CONTEXT_PRIORITY_LOW_IMG"/>
3017++ </require>
3018++ </extension>
3019++ <extension name="EGL_KHR_cl_event" supported="egl">
3020++ <require>
3021++ <enum name="EGL_CL_EVENT_HANDLE_KHR"/>
3022++ <enum name="EGL_SYNC_CL_EVENT_KHR"/>
3023++ <enum name="EGL_SYNC_CL_EVENT_COMPLETE_KHR"/>
3024++ </require>
3025++ </extension>
3026++ <extension name="EGL_KHR_cl_event2" supported="egl">
3027++ <require>
3028++ <enum name="EGL_CL_EVENT_HANDLE_KHR"/>
3029++ <enum name="EGL_SYNC_CL_EVENT_KHR"/>
3030++ <enum name="EGL_SYNC_CL_EVENT_COMPLETE_KHR"/>
3031++ <command name="eglCreateSync64KHR"/>
3032++ </require>
3033++ </extension>
3034++ <extension name="EGL_KHR_config_attribs" supported="egl">
3035++ <require>
3036++ <enum name="EGL_CONFORMANT_KHR"/>
3037++ <enum name="EGL_VG_COLORSPACE_LINEAR_BIT_KHR"/>
3038++ <enum name="EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR"/>
3039++ </require>
3040++ </extension>
3041++ <extension name="EGL_KHR_client_get_all_proc_addresses" supported="egl" comment="Alias of EGL_KHR_get_all_proc_addresses"/>
3042++ <extension name="EGL_KHR_create_context" supported="egl">
3043++ <require>
3044++ <enum name="EGL_CONTEXT_MAJOR_VERSION_KHR"/>
3045++ <enum name="EGL_CONTEXT_MINOR_VERSION_KHR"/>
3046++ <enum name="EGL_CONTEXT_FLAGS_KHR"/>
3047++ <enum name="EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR"/>
3048++ <enum name="EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR"/>
3049++ <enum name="EGL_NO_RESET_NOTIFICATION_KHR"/>
3050++ <enum name="EGL_LOSE_CONTEXT_ON_RESET_KHR"/>
3051++ <enum name="EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR"/>
3052++ <enum name="EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR"/>
3053++ <enum name="EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR"/>
3054++ <enum name="EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR"/>
3055++ <enum name="EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR"/>
3056++ <enum name="EGL_OPENGL_ES3_BIT"/>
3057++ <enum name="EGL_OPENGL_ES3_BIT_KHR"/>
3058++ </require>
3059++ </extension>
3060++ <extension name="EGL_KHR_create_context_no_error" supported="egl">
3061++ <require>
3062++ <enum name="EGL_CONTEXT_OPENGL_NO_ERROR_KHR"/>
3063++ </require>
3064++ </extension>
3065++ <extension name="EGL_KHR_debug" supported="egl">
3066++ <require>
3067++ <!-- Explicit dependencies require to get EGLDEBUGPROCKHR dependencies correct -->
3068++ <type name="EGLLabelKHR"/>
3069++ <type name="EGLObjectKHR"/>
3070++ <enum name="EGL_OBJECT_THREAD_KHR"/>
3071++ <enum name="EGL_OBJECT_DISPLAY_KHR"/>
3072++ <enum name="EGL_OBJECT_CONTEXT_KHR"/>
3073++ <enum name="EGL_OBJECT_SURFACE_KHR"/>
3074++ <enum name="EGL_OBJECT_IMAGE_KHR"/>
3075++ <enum name="EGL_OBJECT_SYNC_KHR"/>
3076++ <enum name="EGL_OBJECT_STREAM_KHR"/>
3077++ <enum name="EGL_DEBUG_MSG_CRITICAL_KHR"/>
3078++ <enum name="EGL_DEBUG_MSG_ERROR_KHR"/>
3079++ <enum name="EGL_DEBUG_MSG_WARN_KHR"/>
3080++ <enum name="EGL_DEBUG_MSG_INFO_KHR"/>
3081++ <enum name="EGL_DEBUG_CALLBACK_KHR"/>
3082++ <command name="eglDebugMessageControlKHR"/>
3083++ <command name="eglQueryDebugKHR"/>
3084++ <command name="eglLabelObjectKHR"/>
3085++ </require>
3086++ </extension>
3087++ <extension name="EGL_KHR_fence_sync" protect="KHRONOS_SUPPORT_INT64" supported="egl">
3088++ <require>
3089++ <!-- Most interfaces also defined by EGL_KHR_reusable sync -->
3090++ <enum name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR"/>
3091++ <enum name="EGL_SYNC_CONDITION_KHR"/>
3092++ <enum name="EGL_SYNC_FENCE_KHR"/>
3093++ <command name="eglCreateSyncKHR"/>
3094++ <command name="eglDestroySyncKHR"/>
3095++ <command name="eglClientWaitSyncKHR"/>
3096++ <command name="eglGetSyncAttribKHR"/>
3097++ </require>
3098++ </extension>
3099++ <extension name="EGL_KHR_get_all_proc_addresses" supported="egl"/>
3100++ <extension name="EGL_KHR_gl_colorspace" supported="egl">
3101++ <require>
3102++ <enum name="EGL_GL_COLORSPACE_KHR"/>
3103++ <enum name="EGL_GL_COLORSPACE_SRGB_KHR"/>
3104++ <enum name="EGL_GL_COLORSPACE_LINEAR_KHR"/>
3105++ </require>
3106++ </extension>
3107++ <extension name="EGL_KHR_gl_renderbuffer_image" supported="egl">
3108++ <require>
3109++ <enum name="EGL_GL_RENDERBUFFER_KHR"/>
3110++ </require>
3111++ </extension>
3112++ <extension name="EGL_KHR_gl_texture_2D_image" supported="egl">
3113++ <require>
3114++ <enum name="EGL_GL_TEXTURE_2D_KHR"/>
3115++ <enum name="EGL_GL_TEXTURE_LEVEL_KHR"/>
3116++ </require>
3117++ </extension>
3118++ <extension name="EGL_KHR_gl_texture_3D_image" supported="egl">
3119++ <require>
3120++ <enum name="EGL_GL_TEXTURE_3D_KHR"/>
3121++ <enum name="EGL_GL_TEXTURE_ZOFFSET_KHR"/>
3122++ </require>
3123++ </extension>
3124++ <extension name="EGL_KHR_gl_texture_cubemap_image" supported="egl">
3125++ <require>
3126++ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR"/>
3127++ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR"/>
3128++ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR"/>
3129++ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR"/>
3130++ <enum name="EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR"/>
3131++ <enum name="EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR"/>
3132++ </require>
3133++ </extension>
3134++ <extension name="EGL_KHR_image" supported="egl">
3135++ <require>
3136++ <enum name="EGL_NATIVE_PIXMAP_KHR"/>
3137++ <enum name="EGL_NO_IMAGE_KHR"/>
3138++ <command name="eglCreateImageKHR"/>
3139++ <command name="eglDestroyImageKHR"/>
3140++ </require>
3141++ </extension>
3142++ <extension name="EGL_KHR_image_base" supported="egl">
3143++ <require>
3144++ <enum name="EGL_IMAGE_PRESERVED_KHR"/>
3145++ <enum name="EGL_NO_IMAGE_KHR"/>
3146++ <command name="eglCreateImageKHR"/>
3147++ <command name="eglDestroyImageKHR"/>
3148++ </require>
3149++ </extension>
3150++ <extension name="EGL_KHR_image_pixmap" supported="egl">
3151++ <require>
3152++ <enum name="EGL_NATIVE_PIXMAP_KHR"/>
3153++ </require>
3154++ </extension>
3155++ <extension name="EGL_KHR_lock_surface" supported="egl">
3156++ <require>
3157++ <enum name="EGL_READ_SURFACE_BIT_KHR"/>
3158++ <enum name="EGL_WRITE_SURFACE_BIT_KHR"/>
3159++ <enum name="EGL_LOCK_SURFACE_BIT_KHR"/>
3160++ <enum name="EGL_OPTIMAL_FORMAT_BIT_KHR"/>
3161++ <enum name="EGL_MATCH_FORMAT_KHR"/>
3162++ <enum name="EGL_FORMAT_RGB_565_EXACT_KHR"/>
3163++ <enum name="EGL_FORMAT_RGB_565_KHR"/>
3164++ <enum name="EGL_FORMAT_RGBA_8888_EXACT_KHR"/>
3165++ <enum name="EGL_FORMAT_RGBA_8888_KHR"/>
3166++ <enum name="EGL_MAP_PRESERVE_PIXELS_KHR"/>
3167++ <enum name="EGL_LOCK_USAGE_HINT_KHR"/>
3168++ <enum name="EGL_BITMAP_POINTER_KHR"/>
3169++ <enum name="EGL_BITMAP_PITCH_KHR"/>
3170++ <enum name="EGL_BITMAP_ORIGIN_KHR"/>
3171++ <enum name="EGL_BITMAP_PIXEL_RED_OFFSET_KHR"/>
3172++ <enum name="EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR"/>
3173++ <enum name="EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR"/>
3174++ <enum name="EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR"/>
3175++ <enum name="EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR"/>
3176++ <enum name="EGL_LOWER_LEFT_KHR"/>
3177++ <enum name="EGL_UPPER_LEFT_KHR"/>
3178++ <command name="eglLockSurfaceKHR"/>
3179++ <command name="eglUnlockSurfaceKHR"/>
3180++ </require>
3181++ </extension>
3182++ <extension name="EGL_KHR_lock_surface2" supported="egl">
3183++ <require>
3184++ <enum name="EGL_BITMAP_PIXEL_SIZE_KHR"/>
3185++ </require>
3186++ </extension>
3187++ <extension name="EGL_KHR_lock_surface3" supported="egl">
3188++ <require>
3189++ <enum name="EGL_READ_SURFACE_BIT_KHR"/>
3190++ <enum name="EGL_WRITE_SURFACE_BIT_KHR"/>
3191++ <enum name="EGL_LOCK_SURFACE_BIT_KHR"/>
3192++ <enum name="EGL_OPTIMAL_FORMAT_BIT_KHR"/>
3193++ <enum name="EGL_MATCH_FORMAT_KHR"/>
3194++ <enum name="EGL_FORMAT_RGB_565_EXACT_KHR"/>
3195++ <enum name="EGL_FORMAT_RGB_565_KHR"/>
3196++ <enum name="EGL_FORMAT_RGBA_8888_EXACT_KHR"/>
3197++ <enum name="EGL_FORMAT_RGBA_8888_KHR"/>
3198++ <enum name="EGL_MAP_PRESERVE_PIXELS_KHR"/>
3199++ <enum name="EGL_LOCK_USAGE_HINT_KHR"/>
3200++ <enum name="EGL_BITMAP_PITCH_KHR"/>
3201++ <enum name="EGL_BITMAP_ORIGIN_KHR"/>
3202++ <enum name="EGL_BITMAP_PIXEL_RED_OFFSET_KHR"/>
3203++ <enum name="EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR"/>
3204++ <enum name="EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR"/>
3205++ <enum name="EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR"/>
3206++ <enum name="EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR"/>
3207++ <enum name="EGL_BITMAP_PIXEL_SIZE_KHR"/>
3208++ <enum name="EGL_BITMAP_POINTER_KHR"/>
3209++ <enum name="EGL_LOWER_LEFT_KHR"/>
3210++ <enum name="EGL_UPPER_LEFT_KHR"/>
3211++ <command name="eglLockSurfaceKHR"/>
3212++ <command name="eglUnlockSurfaceKHR"/>
3213++ <command name="eglQuerySurface64KHR"/>
3214++ </require>
3215++ </extension>
3216++ <extension name="EGL_KHR_partial_update" supported="egl">
3217++ <require>
3218++ <enum name="EGL_BUFFER_AGE_KHR"/>
3219++ <command name="eglSetDamageRegionKHR"/>
3220++ </require>
3221++ </extension>
3222++ <extension name="EGL_KHR_platform_android" supported="egl">
3223++ <require>
3224++ <enum name="EGL_PLATFORM_ANDROID_KHR"/>
3225++ </require>
3226++ </extension>
3227++ <extension name="EGL_KHR_platform_gbm" supported="egl">
3228++ <require>
3229++ <enum name="EGL_PLATFORM_GBM_KHR"/>
3230++ </require>
3231++ </extension>
3232++ <extension name="EGL_KHR_platform_wayland" supported="egl">
3233++ <require>
3234++ <enum name="EGL_PLATFORM_WAYLAND_KHR"/>
3235++ </require>
3236++ </extension>
3237++ <extension name="EGL_KHR_platform_x11" supported="egl">
3238++ <require>
3239++ <enum name="EGL_PLATFORM_X11_KHR"/>
3240++ <enum name="EGL_PLATFORM_X11_SCREEN_KHR"/>
3241++ </require>
3242++ </extension>
3243++ <extension name="EGL_KHR_reusable_sync" protect="KHRONOS_SUPPORT_INT64" supported="egl">
3244++ <require>
3245++ <enum name="EGL_SYNC_STATUS_KHR"/>
3246++ <enum name="EGL_SIGNALED_KHR"/>
3247++ <enum name="EGL_UNSIGNALED_KHR"/>
3248++ <enum name="EGL_TIMEOUT_EXPIRED_KHR"/>
3249++ <enum name="EGL_CONDITION_SATISFIED_KHR"/>
3250++ <enum name="EGL_SYNC_TYPE_KHR"/>
3251++ <enum name="EGL_SYNC_REUSABLE_KHR"/>
3252++ <enum name="EGL_SYNC_FLUSH_COMMANDS_BIT_KHR"/>
3253++ <enum name="EGL_FOREVER_KHR"/>
3254++ <enum name="EGL_NO_SYNC_KHR"/>
3255++ <command name="eglCreateSyncKHR"/>
3256++ <command name="eglDestroySyncKHR"/>
3257++ <command name="eglClientWaitSyncKHR"/>
3258++ <command name="eglSignalSyncKHR"/>
3259++ <command name="eglGetSyncAttribKHR"/>
3260++ </require>
3261++ </extension>
3262++ <extension name="EGL_KHR_stream" protect="KHRONOS_SUPPORT_INT64" supported="egl">
3263++ <require>
3264++ <enum name="EGL_NO_STREAM_KHR"/>
3265++ <enum name="EGL_CONSUMER_LATENCY_USEC_KHR"/>
3266++ <enum name="EGL_PRODUCER_FRAME_KHR"/>
3267++ <enum name="EGL_CONSUMER_FRAME_KHR"/>
3268++ <enum name="EGL_STREAM_STATE_KHR"/>
3269++ <enum name="EGL_STREAM_STATE_CREATED_KHR"/>
3270++ <enum name="EGL_STREAM_STATE_CONNECTING_KHR"/>
3271++ <enum name="EGL_STREAM_STATE_EMPTY_KHR"/>
3272++ <enum name="EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR"/>
3273++ <enum name="EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR"/>
3274++ <enum name="EGL_STREAM_STATE_DISCONNECTED_KHR"/>
3275++ <enum name="EGL_BAD_STREAM_KHR"/>
3276++ <enum name="EGL_BAD_STATE_KHR"/>
3277++ <command name="eglCreateStreamKHR"/>
3278++ <command name="eglDestroyStreamKHR"/>
3279++ <command name="eglStreamAttribKHR"/>
3280++ <command name="eglQueryStreamKHR"/>
3281++ <command name="eglQueryStreamu64KHR"/>
3282++ </require>
3283++ </extension>
3284++ <extension name="EGL_KHR_stream_consumer_gltexture" protect="EGL_KHR_stream" supported="egl">
3285++ <require>
3286++ <enum name="EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR"/>
3287++ <command name="eglStreamConsumerGLTextureExternalKHR"/>
3288++ <command name="eglStreamConsumerAcquireKHR"/>
3289++ <command name="eglStreamConsumerReleaseKHR"/>
3290++ </require>
3291++ </extension>
3292++ <extension name="EGL_KHR_stream_cross_process_fd" protect="EGL_KHR_stream" supported="egl">
3293++ <require>
3294++ <enum name="EGL_NO_FILE_DESCRIPTOR_KHR"/>
3295++ <command name="eglGetStreamFileDescriptorKHR"/>
3296++ <command name="eglCreateStreamFromFileDescriptorKHR"/>
3297++ </require>
3298++ </extension>
3299++ <extension name="EGL_KHR_stream_fifo" protect="EGL_KHR_stream" supported="egl">
3300++ <require>
3301++ <enum name="EGL_STREAM_FIFO_LENGTH_KHR"/>
3302++ <enum name="EGL_STREAM_TIME_NOW_KHR"/>
3303++ <enum name="EGL_STREAM_TIME_CONSUMER_KHR"/>
3304++ <enum name="EGL_STREAM_TIME_PRODUCER_KHR"/>
3305++ <command name="eglQueryStreamTimeKHR"/>
3306++ </require>
3307++ </extension>
3308++ <extension name="EGL_KHR_stream_producer_aldatalocator" protect="EGL_KHR_stream" supported="egl"/>
3309++ <extension name="EGL_KHR_stream_producer_eglsurface" protect="EGL_KHR_stream" supported="egl">
3310++ <require>
3311++ <enum name="EGL_STREAM_BIT_KHR"/>
3312++ <command name="eglCreateStreamProducerSurfaceKHR"/>
3313++ </require>
3314++ </extension>
3315++ <extension name="EGL_KHR_surfaceless_context" supported="egl" comment="Just relaxes an error condition"/>
3316++ <extension name="EGL_KHR_swap_buffers_with_damage" supported="egl">
3317++ <require>
3318++ <command name="eglSwapBuffersWithDamageKHR"/>
3319++ </require>
3320++ </extension>
3321++ <extension name="EGL_KHR_vg_parent_image" supported="egl">
3322++ <require>
3323++ <enum name="EGL_VG_PARENT_IMAGE_KHR"/>
3324++ </require>
3325++ </extension>
3326++ <extension name="EGL_KHR_wait_sync" supported="egl">
3327++ <require>
3328++ <command name="eglWaitSyncKHR"/>
3329++ </require>
3330++ </extension>
3331++ <extension name="EGL_MESA_drm_image" supported="egl">
3332++ <require>
3333++ <enum name="EGL_DRM_BUFFER_FORMAT_MESA"/>
3334++ <enum name="EGL_DRM_BUFFER_USE_MESA"/>
3335++ <enum name="EGL_DRM_BUFFER_FORMAT_ARGB32_MESA"/>
3336++ <enum name="EGL_DRM_BUFFER_MESA"/>
3337++ <enum name="EGL_DRM_BUFFER_STRIDE_MESA"/>
3338++ <enum name="EGL_DRM_BUFFER_USE_SCANOUT_MESA"/>
3339++ <enum name="EGL_DRM_BUFFER_USE_SHARE_MESA"/>
3340++ <command name="eglCreateDRMImageMESA"/>
3341++ <command name="eglExportDRMImageMESA"/>
3342++ </require>
3343++ </extension>
3344++ <extension name="EGL_MESA_image_dma_buf_export" supported="egl">
3345++ <require>
3346++ <type name="EGLuint64KHR"/>
3347++ <command name="eglExportDMABUFImageQueryMESA"/>
3348++ <command name="eglExportDMABUFImageMESA"/>
3349++ </require>
3350++ </extension>
3351++ <extension name="EGL_MESA_platform_gbm" supported="egl">
3352++ <require>
3353++ <enum name="EGL_PLATFORM_GBM_MESA"/>
3354++ </require>
3355++ </extension>
3356++ <extension name="EGL_NOK_swap_region" supported="egl">
3357++ <require>
3358++ <command name="eglSwapBuffersRegionNOK"/>
3359++ </require>
3360++ </extension>
3361++ <extension name="EGL_NOK_swap_region2" supported="egl">
3362++ <require>
3363++ <command name="eglSwapBuffersRegion2NOK"/>
3364++ </require>
3365++ </extension>
3366++ <extension name="EGL_NOK_texture_from_pixmap" supported="egl">
3367++ <require>
3368++ <enum name="EGL_Y_INVERTED_NOK"/>
3369++ </require>
3370++ </extension>
3371++ <extension name="EGL_NV_3dvision_surface" supported="egl">
3372++ <require>
3373++ <enum name="EGL_AUTO_STEREO_NV"/>
3374++ </require>
3375++ </extension>
3376++ <extension name="EGL_NV_coverage_sample" supported="egl">
3377++ <require>
3378++ <enum name="EGL_COVERAGE_BUFFERS_NV"/>
3379++ <enum name="EGL_COVERAGE_SAMPLES_NV"/>
3380++ </require>
3381++ </extension>
3382++ <extension name="EGL_NV_coverage_sample_resolve" supported="egl">
3383++ <require>
3384++ <enum name="EGL_COVERAGE_SAMPLE_RESOLVE_NV"/>
3385++ <enum name="EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV"/>
3386++ <enum name="EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV"/>
3387++ </require>
3388++ </extension>
3389++ <extension name="EGL_NV_cuda_event" supported="egl">
3390++ <require>
3391++ <enum name="EGL_CUDA_EVENT_HANDLE_NV"/>
3392++ <enum name="EGL_SYNC_CUDA_EVENT_NV"/>
3393++ <enum name="EGL_SYNC_CUDA_EVENT_COMPLETE_NV"/>
3394++ </require>
3395++ </extension>
3396++ <extension name="EGL_NV_depth_nonlinear" supported="egl">
3397++ <require>
3398++ <enum name="EGL_DEPTH_ENCODING_NV"/>
3399++ <enum name="EGL_DEPTH_ENCODING_NONE_NV"/>
3400++ <enum name="EGL_DEPTH_ENCODING_NONLINEAR_NV"/>
3401++ </require>
3402++ </extension>
3403++ <extension name="EGL_NV_device_cuda" supported="egl">
3404++ <require>
3405++ <enum name="EGL_CUDA_DEVICE_NV"/>
3406++ </require>
3407++ </extension>
3408++ <extension name="EGL_NV_native_query" supported="egl">
3409++ <require>
3410++ <command name="eglQueryNativeDisplayNV"/>
3411++ <command name="eglQueryNativeWindowNV"/>
3412++ <command name="eglQueryNativePixmapNV"/>
3413++ </require>
3414++ </extension>
3415++ <extension name="EGL_NV_post_convert_rounding" supported="egl">
3416++ <require>
3417++ </require>
3418++ </extension>
3419++ <extension name="EGL_NV_post_sub_buffer" supported="egl">
3420++ <require>
3421++ <enum name="EGL_POST_SUB_BUFFER_SUPPORTED_NV"/>
3422++ <command name="eglPostSubBufferNV"/>
3423++ </require>
3424++ </extension>
3425++ <extension name="EGL_NV_stream_sync" supported="egl">
3426++ <require>
3427++ <enum name="EGL_SYNC_TYPE_KHR"/>
3428++ <enum name="EGL_SYNC_NEW_FRAME_NV"/>
3429++ <command name="eglCreateStreamSyncNV"/>
3430++ </require>
3431++ </extension>
3432++ <extension name="EGL_NV_sync" protect="KHRONOS_SUPPORT_INT64" supported="egl">
3433++ <require>
3434++ <enum name="EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV"/>
3435++ <enum name="EGL_SYNC_STATUS_NV"/>
3436++ <enum name="EGL_SIGNALED_NV"/>
3437++ <enum name="EGL_UNSIGNALED_NV"/>
3438++ <enum name="EGL_SYNC_FLUSH_COMMANDS_BIT_NV"/>
3439++ <enum name="EGL_FOREVER_NV"/>
3440++ <enum name="EGL_ALREADY_SIGNALED_NV"/>
3441++ <enum name="EGL_TIMEOUT_EXPIRED_NV"/>
3442++ <enum name="EGL_CONDITION_SATISFIED_NV"/>
3443++ <enum name="EGL_SYNC_TYPE_NV"/>
3444++ <enum name="EGL_SYNC_CONDITION_NV"/>
3445++ <enum name="EGL_SYNC_FENCE_NV"/>
3446++ <enum name="EGL_NO_SYNC_NV"/>
3447++ <command name="eglCreateFenceSyncNV"/>
3448++ <command name="eglDestroySyncNV"/>
3449++ <command name="eglFenceNV"/>
3450++ <command name="eglClientWaitSyncNV"/>
3451++ <command name="eglSignalSyncNV"/>
3452++ <command name="eglGetSyncAttribNV"/>
3453++ </require>
3454++ </extension>
3455++ <extension name="EGL_NV_system_time" protect="KHRONOS_SUPPORT_INT64" supported="egl">
3456++ <require>
3457++ <command name="eglGetSystemTimeFrequencyNV"/>
3458++ <command name="eglGetSystemTimeNV"/>
3459++ </require>
3460++ </extension>
3461++ <extension name="EGL_TIZEN_image_native_buffer" supported="egl">
3462++ <require>
3463++ <enum name="EGL_NATIVE_BUFFER_TIZEN"/>
3464++ </require>
3465++ </extension>
3466++ <extension name="EGL_TIZEN_image_native_surface" supported="egl">
3467++ <require>
3468++ <enum name="EGL_NATIVE_SURFACE_TIZEN"/>
3469++ </require>
3470++ </extension>
3471++ </extensions>
3472++</registry>
3473+diff --git a/src/egl/generate/eglFunctionList.py b/src/egl/generate/eglFunctionList.py
3474+new file mode 100644
3475+index 0000000000..b19b5f7193
3476+--- /dev/null
3477++++ b/src/egl/generate/eglFunctionList.py
3478+@@ -0,0 +1,197 @@
3479++#!/usr/bin/env python
3480++
3481++"""
3482++Contains a list of EGL functions to generate dispatch functions for.
3483++
3484++This is used from gen_egl_dispatch.py.
3485++
3486++EGL_FUNCTIONS is a sequence of (name, eglData) pairs, where name is the name
3487++of the function, and eglData is a dictionary containing data about that
3488++function.
3489++
3490++The values in the eglData dictionary are:
3491++- method (string):
3492++ How to select a vendor library. See "Method values" below.
3493++
3494++- prefix (string):
3495++ This string is prepended to the name of the dispatch function. If
3496++ unspecified, the default is "" (an empty string).
3497++
3498++- static (boolean)
3499++ If True, this function should be declared static.
3500++
3501++- "public" (boolean)
3502++ If True, the function should be exported from the library. Vendor libraries
3503++ generally should not use this.
3504++
3505++- extension (string):
3506++ If specified, this is the name of a macro to check for before defining a
3507++ function. Used for checking for extension macros and such.
3508++
3509++- retval (string):
3510++ If specified, this is a C expression with the default value to return if we
3511++ can't find a function to call. By default, it will try to guess from the
3512++ return type: EGL_NO_whatever for the various handle types, NULL for
3513++ pointers, and zero for everything else.
3514++
3515++method values:
3516++- "custom"
3517++ The dispatch stub will be hand-written instead of generated.
3518++
3519++- "none"
3520++ No dispatch function exists at all, but the function should still have an
3521++ entry in the index array. This is for other functions that a stub may need
3522++ to call that are implemented in libEGL itself.
3523++
3524++- "display"
3525++ Select a vendor from an EGLDisplay argument.
3526++
3527++- "device"
3528++ Select a vendor from an EGLDeviceEXT argument.
3529++
3530++- "current"
3531++ Select the vendor that owns the current context.
3532++"""
3533++
3534++def _eglFunc(name, method, static=False, public=False, inheader=None, prefix="", extension=None, retval=None):
3535++ """
3536++ A convenience function to define an entry in the EGL function list.
3537++ """
3538++ if inheader is None:
3539++ inheader = (not public)
3540++ values = {
3541++ "method" : method,
3542++ "prefix" : prefix,
3543++ "extension" : extension,
3544++ "retval" : retval,
3545++ "static" : static,
3546++ "public" : public,
3547++ "inheader" : inheader,
3548++ }
3549++ return (name, values)
3550++
3551++EGL_FUNCTIONS = (
3552++ # EGL_VERSION_1_0
3553++ _eglFunc("eglChooseConfig", "none"),
3554++ _eglFunc("eglCopyBuffers", "none"),
3555++ _eglFunc("eglCreateContext", "none"),
3556++ _eglFunc("eglCreatePbufferSurface", "none"),
3557++ _eglFunc("eglCreatePixmapSurface", "none"),
3558++ _eglFunc("eglCreateWindowSurface", "none"),
3559++ _eglFunc("eglDestroyContext", "none"),
3560++ _eglFunc("eglDestroySurface", "none"),
3561++ _eglFunc("eglGetConfigAttrib", "none"),
3562++ _eglFunc("eglGetConfigs", "none"),
3563++ _eglFunc("eglQueryContext", "none"),
3564++ _eglFunc("eglQuerySurface", "none"),
3565++ _eglFunc("eglSwapBuffers", "none"),
3566++ _eglFunc("eglWaitGL", "none"),
3567++ _eglFunc("eglWaitNative", "none"),
3568++ _eglFunc("eglTerminate", "none"),
3569++ _eglFunc("eglInitialize", "none"),
3570++
3571++ _eglFunc("eglGetCurrentDisplay", "none"),
3572++ _eglFunc("eglGetCurrentSurface", "none"),
3573++ _eglFunc("eglGetDisplay", "none"),
3574++ _eglFunc("eglGetError", "none"),
3575++ _eglFunc("eglGetProcAddress", "none"),
3576++ _eglFunc("eglMakeCurrent", "none"),
3577++ _eglFunc("eglQueryString", "none"),
3578++
3579++ # EGL_VERSION_1_1
3580++ _eglFunc("eglBindTexImage", "none"),
3581++ _eglFunc("eglReleaseTexImage", "none"),
3582++ _eglFunc("eglSurfaceAttrib", "none"),
3583++ _eglFunc("eglSwapInterval", "none"),
3584++
3585++ # EGL_VERSION_1_2
3586++ _eglFunc("eglCreatePbufferFromClientBuffer", "none"),
3587++ _eglFunc("eglWaitClient", "none"),
3588++ _eglFunc("eglBindAPI", "none"),
3589++ _eglFunc("eglQueryAPI", "none"),
3590++ _eglFunc("eglReleaseThread", "none"),
3591++
3592++ # EGL_VERSION_1_4
3593++ _eglFunc("eglGetCurrentContext", "none"),
3594++
3595++ # EGL_VERSION_1_5
3596++ _eglFunc("eglCreateSync", "none"),
3597++ _eglFunc("eglDestroySync", "none"),
3598++ _eglFunc("eglClientWaitSync", "none"),
3599++ _eglFunc("eglGetSyncAttrib", "none"),
3600++ _eglFunc("eglCreateImage", "none"),
3601++ _eglFunc("eglDestroyImage", "none"),
3602++ _eglFunc("eglCreatePlatformWindowSurface", "none"),
3603++ _eglFunc("eglCreatePlatformPixmapSurface", "none"),
3604++ _eglFunc("eglWaitSync", "none"),
3605++ _eglFunc("eglGetPlatformDisplay", "none"),
3606++
3607++ # EGL_EXT_platform_base
3608++ _eglFunc("eglCreatePlatformWindowSurfaceEXT", "display"),
3609++ _eglFunc("eglCreatePlatformPixmapSurfaceEXT", "display"),
3610++ _eglFunc("eglGetPlatformDisplayEXT", "none"),
3611++
3612++ # TODO: Most of these extensions should be provided by the vendor
3613++ # libraries, not by libEGL. They're here now to make testing everything
3614++ # else easier.
3615++
3616++ # EGL_EXT_swap_buffers_with_damage
3617++ _eglFunc("eglSwapBuffersWithDamageEXT", "display"),
3618++
3619++ # KHR_EXT_swap_buffers_with_damage
3620++ _eglFunc("eglSwapBuffersWithDamageKHR", "display"),
3621++
3622++ # EGL_KHR_cl_event2
3623++ _eglFunc("eglCreateSync64KHR", "display"),
3624++
3625++ # EGL_KHR_fence_sync
3626++ _eglFunc("eglCreateSyncKHR", "display"),
3627++ _eglFunc("eglDestroySyncKHR", "display"),
3628++ _eglFunc("eglClientWaitSyncKHR", "display"),
3629++ _eglFunc("eglGetSyncAttribKHR", "display"),
3630++
3631++ # EGL_KHR_image
3632++ _eglFunc("eglCreateImageKHR", "display"),
3633++ _eglFunc("eglDestroyImageKHR", "display"),
3634++
3635++ # EGL_KHR_image_base
3636++ # eglCreateImageKHR already defined in EGL_KHR_image
3637++ # eglDestroyImageKHR already defined in EGL_KHR_image
3638++
3639++ # EGL_KHR_reusable_sync
3640++ _eglFunc("eglSignalSyncKHR", "display"),
3641++ # eglCreateSyncKHR already defined in EGL_KHR_fence_sync
3642++ # eglDestroySyncKHR already defined in EGL_KHR_fence_sync
3643++ # eglClientWaitSyncKHR already defined in EGL_KHR_fence_sync
3644++ # eglGetSyncAttribKHR already defined in EGL_KHR_fence_sync
3645++
3646++ # EGL_KHR_wait_sync
3647++ _eglFunc("eglWaitSyncKHR", "display"),
3648++
3649++ # EGL_MESA_drm_image
3650++ _eglFunc("eglCreateDRMImageMESA", "display"),
3651++ _eglFunc("eglExportDRMImageMESA", "display"),
3652++
3653++ # EGL_MESA_image_dma_buf_export
3654++ _eglFunc("eglExportDMABUFImageQueryMESA", "display"),
3655++ _eglFunc("eglExportDMABUFImageMESA", "display"),
3656++
3657++ # EGL_NOK_swap_region
3658++ _eglFunc("eglSwapBuffersRegionNOK", "display"),
3659++
3660++ # EGL_NV_post_sub_buffer
3661++ _eglFunc("eglPostSubBufferNV", "display"),
3662++
3663++ # EGL_WL_bind_wayland_display
3664++ _eglFunc("eglCreateWaylandBufferFromImageWL", "display"),
3665++ _eglFunc("eglUnbindWaylandDisplayWL", "display"),
3666++ _eglFunc("eglQueryWaylandBufferWL", "display"),
3667++ _eglFunc("eglBindWaylandDisplayWL", "display"),
3668++
3669++ # EGL_CHROMIUM_get_sync_values
3670++ _eglFunc("eglGetSyncValuesCHROMIUM", "display"),
3671++
3672++ # EGL_ANDROID_native_fence_sync
3673++ _eglFunc("eglDupNativeFenceFDANDROID", "display"),
3674++)
3675++
3676+diff --git a/src/egl/generate/egl_other.xml b/src/egl/generate/egl_other.xml
3677+new file mode 100644
3678+index 0000000000..7fe3a9e272
3679+--- /dev/null
3680++++ b/src/egl/generate/egl_other.xml
3681+@@ -0,0 +1,47 @@
3682++<?xml version="1.0" encoding="UTF-8"?>
3683++<registry>
3684++ <comment>
3685++ This file contains any EGL extension functions that are missing from
3686++ the normal egl.xml list.
3687++ </comment>
3688++ <commands namespace="EGL">
3689++ <!-- EGL_WL_bind_wayland_display -->
3690++ <command>
3691++ <proto>struct wl_buffer * <name>eglCreateWaylandBufferFromImageWL</name></proto>
3692++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
3693++ <param><ptype>EGLImage</ptype> <name>image</name></param>
3694++ </command>
3695++
3696++ <command>
3697++ <proto>EGLBoolean <name>eglUnbindWaylandDisplayWL</name></proto>
3698++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
3699++ <param><ptype>struct wl_display *</ptype> <name>display</name></param>
3700++ </command>
3701++
3702++ <command>
3703++ <proto>EGLBoolean <name>eglQueryWaylandBufferWL</name></proto>
3704++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
3705++ <param><ptype>struct wl_resource *</ptype> <name>buffer</name></param>
3706++ <param><ptype>EGLint</ptype> <name>attribute</name></param>
3707++ <param><ptype>EGLint *</ptype> <name>value</name></param>
3708++ </command>
3709++
3710++ <command>
3711++ <proto>EGLBoolean <name>eglBindWaylandDisplayWL</name></proto>
3712++ <param><ptype>EGLDisplay</ptype> <name>dpy</name></param>
3713++ <param><ptype>struct wl_display *</ptype> <name>display</name></param>
3714++ </command>
3715++
3716++ <!-- EGL_CHROMIUM_get_sync_values -->
3717++ <command>
3718++ <proto>EGLBoolean <name>eglGetSyncValuesCHROMIUM</name></proto>
3719++ <param><ptype>EGLDisplay</ptype> <name>display</name></param>
3720++ <param><ptype>EGLSurface</ptype> <name>surface</name></param>
3721++ <param><ptype>EGLuint64KHR *</ptype> <name>ust</name></param>
3722++ <param><ptype>EGLuint64KHR *</ptype> <name>msc</name></param>
3723++ <param><ptype>EGLuint64KHR *</ptype> <name>sbc</name></param>
3724++ </command>
3725++ </commands>
3726++</registry>
3727++
3728++
3729+diff --git a/src/egl/generate/genCommon.py b/src/egl/generate/genCommon.py
3730+new file mode 100644
3731+index 0000000000..d493d7bf29
3732+--- /dev/null
3733++++ b/src/egl/generate/genCommon.py
3734+@@ -0,0 +1,223 @@
3735++#!/usr/bin/env python
3736++
3737++# (C) Copyright 2015, NVIDIA CORPORATION.
3738++# All Rights Reserved.
3739++#
3740++# Permission is hereby granted, free of charge, to any person obtaining a
3741++# copy of this software and associated documentation files (the "Software"),
3742++# to deal in the Software without restriction, including without limitation
3743++# on the rights to use, copy, modify, merge, publish, distribute, sub
3744++# license, and/or sell copies of the Software, and to permit persons to whom
3745++# the Software is furnished to do so, subject to the following conditions:
3746++#
3747++# The above copyright notice and this permission notice (including the next
3748++# paragraph) shall be included in all copies or substantial portions of the
3749++# Software.
3750++#
3751++# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3752++# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3753++# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
3754++# IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3755++# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
3756++# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
3757++# IN THE SOFTWARE.
3758++#
3759++# Authors:
3760++# Kyle Brenneman <kbrenneman@nvidia.com>
3761++
3762++import collections
3763++import re
3764++import sys
3765++import xml.etree.cElementTree as etree
3766++
3767++MAPI_TABLE_NUM_DYNAMIC = 4096
3768++
3769++_LIBRARY_FEATURE_NAMES = {
3770++ # libGL and libGLdiapatch both include every function.
3771++ "gl" : None,
3772++ "gldispatch" : None,
3773++ "opengl" : frozenset(( "GL_VERSION_1_0", "GL_VERSION_1_1",
3774++ "GL_VERSION_1_2", "GL_VERSION_1_3", "GL_VERSION_1_4", "GL_VERSION_1_5",
3775++ "GL_VERSION_2_0", "GL_VERSION_2_1", "GL_VERSION_3_0", "GL_VERSION_3_1",
3776++ "GL_VERSION_3_2", "GL_VERSION_3_3", "GL_VERSION_4_0", "GL_VERSION_4_1",
3777++ "GL_VERSION_4_2", "GL_VERSION_4_3", "GL_VERSION_4_4", "GL_VERSION_4_5",
3778++ )),
3779++ "glesv1" : frozenset(("GL_VERSION_ES_CM_1_0", "GL_OES_point_size_array")),
3780++ "glesv2" : frozenset(("GL_ES_VERSION_2_0", "GL_ES_VERSION_3_0",
3781++ "GL_ES_VERSION_3_1" "GL_ES_VERSION_3_2",
3782++ )),
3783++}
3784++
3785++def getFunctions(xmlFiles):
3786++ """
3787++ Reads an XML file and returns all of the functions defined in it.
3788++
3789++ xmlFile should be the path to Khronos's gl.xml file. The return value is a
3790++ sequence of FunctionDesc objects, ordered by slot number.
3791++ """
3792++ roots = [ etree.parse(xmlFile).getroot() for xmlFile in xmlFiles ]
3793++ return getFunctionsFromRoots(roots)
3794++
3795++def getFunctionsFromRoots(roots):
3796++ functions = {}
3797++ for root in roots:
3798++ for func in _getFunctionList(root):
3799++ functions[func.name] = func
3800++ functions = functions.values()
3801++
3802++ # Sort the function list by name.
3803++ functions = sorted(functions, key=lambda f: f.name)
3804++
3805++ # Assign a slot number to each function. This isn't strictly necessary,
3806++ # since you can just look at the index in the list, but it makes it easier
3807++ # to include the slot when formatting output.
3808++ for i in range(len(functions)):
3809++ functions[i] = functions[i]._replace(slot=i)
3810++
3811++ return functions
3812++
3813++def getExportNamesFromRoots(target, roots):
3814++ """
3815++ Goes through the <feature> tags from gl.xml and returns a set of OpenGL
3816++ functions that a library should export.
3817++
3818++ target should be one of "gl", "gldispatch", "opengl", "glesv1", or
3819++ "glesv2".
3820++ """
3821++ featureNames = _LIBRARY_FEATURE_NAMES[target]
3822++ if featureNames is None:
3823++ return set(func.name for func in getFunctionsFromRoots(roots))
3824++
3825++ names = set()
3826++ for root in roots:
3827++ features = []
3828++ for featElem in root.findall("feature"):
3829++ if featElem.get("name") in featureNames:
3830++ features.append(featElem)
3831++ for featElem in root.findall("extensions/extension"):
3832++ if featElem.get("name") in featureNames:
3833++ features.append(featElem)
3834++ for featElem in features:
3835++ for commandElem in featElem.findall("require/command"):
3836++ names.add(commandElem.get("name"))
3837++ return names
3838++
3839++class FunctionArg(collections.namedtuple("FunctionArg", "type name")):
3840++ @property
3841++ def dec(self):
3842++ """
3843++ Returns a "TYPE NAME" string, suitable for a function prototype.
3844++ """
3845++ rv = str(self.type)
3846++ if not rv.endswith("*"):
3847++ rv += " "
3848++ rv += self.name
3849++ return rv
3850++
3851++class FunctionDesc(collections.namedtuple("FunctionDesc", "name rt args slot")):
3852++ def hasReturn(self):
3853++ """
3854++ Returns true if the function returns a value.
3855++ """
3856++ return (self.rt != "void")
3857++
3858++ @property
3859++ def decArgs(self):
3860++ """
3861++ Returns a string with the types and names of the arguments, as you
3862++ would use in a function declaration.
3863++ """
3864++ if not self.args:
3865++ return "void"
3866++ else:
3867++ return ", ".join(arg.dec for arg in self.args)
3868++
3869++ @property
3870++ def callArgs(self):
3871++ """
3872++ Returns a string with the names of the arguments, as you would use in a
3873++ function call.
3874++ """
3875++ return ", ".join(arg.name for arg in self.args)
3876++
3877++ @property
3878++ def basename(self):
3879++ assert self.name.startswith("gl")
3880++ return self.name[2:]
3881++
3882++def _getFunctionList(root):
3883++ for elem in root.findall("commands/command"):
3884++ yield _parseCommandElem(elem)
3885++
3886++def _parseCommandElem(elem):
3887++ protoElem = elem.find("proto")
3888++ (rt, name) = _parseProtoElem(protoElem)
3889++
3890++ args = []
3891++ for ch in elem.findall("param"):
3892++ # <param> tags have the same format as a <proto> tag.
3893++ args.append(FunctionArg(*_parseProtoElem(ch)))
3894++ func = FunctionDesc(name, rt, tuple(args), slot=None)
3895++
3896++ return func
3897++
3898++def _parseProtoElem(elem):
3899++ # If I just remove the tags and string the text together, I'll get valid C code.
3900++ text = _flattenText(elem)
3901++ text = text.strip()
3902++ m = re.match(r"^(.+)\b(\w+)(?:\s*\[\s*(\d*)\s*\])?$", text, re.S)
3903++ if m:
3904++ typename = _fixupTypeName(m.group(1))
3905++ name = m.group(2)
3906++ if m.group(3):
3907++ # HACK: glPathGlyphIndexRangeNV defines an argument like this:
3908++ # GLuint baseAndCount[2]
3909++ # Convert it to a pointer and hope for the best.
3910++ typename += "*"
3911++ return (typename, name)
3912++ else:
3913++ raise ValueError("Can't parse element %r -> %r" % (elem, text))
3914++
3915++def _flattenText(elem):
3916++ """
3917++ Returns the text in an element and all child elements, with the tags
3918++ removed.
3919++ """
3920++ text = ""
3921++ if elem.text is not None:
3922++ text = elem.text
3923++ for ch in elem:
3924++ text += _flattenText(ch)
3925++ if ch.tail is not None:
3926++ text += ch.tail
3927++ return text
3928++
3929++def _fixupTypeName(typeName):
3930++ """
3931++ Converts a typename into a more consistent format.
3932++ """
3933++
3934++ rv = typeName.strip()
3935++
3936++ # Replace "GLvoid" with just plain "void".
3937++ rv = re.sub(r"\bGLvoid\b", "void", rv)
3938++
3939++ # Remove the vendor suffixes from types that have a suffix-less version.
3940++ rv = re.sub(r"\b(GLhalf|GLintptr|GLsizeiptr|GLint64|GLuint64)(?:ARB|EXT|NV|ATI)\b", r"\1", rv)
3941++
3942++ rv = re.sub(r"\bGLvoid\b", "void", rv)
3943++
3944++ # Clear out any leading and trailing whitespace.
3945++ rv = rv.strip()
3946++
3947++ # Remove any whitespace before a '*'
3948++ rv = re.sub(r"\s+\*", r"*", rv)
3949++
3950++ # Change "foo*" to "foo *"
3951++ rv = re.sub(r"([^\*])\*", r"\1 *", rv)
3952++
3953++ # Condense all whitespace into a single space.
3954++ rv = re.sub(r"\s+", " ", rv)
3955++
3956++ return rv
3957++
3958+diff --git a/src/egl/generate/gen_egl_dispatch.py b/src/egl/generate/gen_egl_dispatch.py
3959+new file mode 100755
3960+index 0000000000..eeb3f3f9a5
3961+--- /dev/null
3962++++ b/src/egl/generate/gen_egl_dispatch.py
3963+@@ -0,0 +1,250 @@
3964++#!/usr/bin/env python
3965++
3966++# (C) Copyright 2016, NVIDIA CORPORATION.
3967++# All Rights Reserved.
3968++#
3969++# Permission is hereby granted, free of charge, to any person obtaining a
3970++# copy of this software and associated documentation files (the "Software"),
3971++# to deal in the Software without restriction, including without limitation
3972++# on the rights to use, copy, modify, merge, publish, distribute, sub
3973++# license, and/or sell copies of the Software, and to permit persons to whom
3974++# the Software is furnished to do so, subject to the following conditions:
3975++#
3976++# The above copyright notice and this permission notice (including the next
3977++# paragraph) shall be included in all copies or substantial portions of the
3978++# Software.
3979++#
3980++# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3981++# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3982++# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
3983++# IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3984++# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
3985++# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
3986++# IN THE SOFTWARE.
3987++#
3988++# Authors:
3989++# Kyle Brenneman <kbrenneman@nvidia.com>
3990++
3991++"""
3992++Generates dispatch functions for EGL.
3993++
3994++The list of functions and arguments is read from the Khronos's XML files, with
3995++additional information defined in the module eglFunctionList.
3996++"""
3997++
3998++import argparse
3999++import collections
4000++import imp
4001++import sys
4002++import textwrap
4003++
4004++import genCommon
4005++
4006++def main():
4007++ parser = argparse.ArgumentParser()
4008++ parser.add_argument("target", choices=("header", "source"),
4009++ help="Whether to build the source or header file.")
4010++ parser.add_argument("func_list_file", help="The function list .py file.")
4011++ parser.add_argument("xml_files", nargs="+", help="The XML files with the EGL function lists.")
4012++
4013++ args = parser.parse_args()
4014++
4015++ # The function list is a Python module, but it's specified on the command
4016++ # line.
4017++ eglFunctionList = imp.load_source("eglFunctionList", args.func_list_file)
4018++
4019++ xmlFunctions = genCommon.getFunctions(args.xml_files)
4020++ xmlByName = dict((f.name, f) for f in xmlFunctions)
4021++ functions = []
4022++ for (name, eglFunc) in eglFunctionList.EGL_FUNCTIONS:
4023++ func = xmlByName[name]
4024++ eglFunc = fixupEglFunc(func, eglFunc)
4025++ functions.append((func, eglFunc))
4026++
4027++ # Sort the function list by name.
4028++ functions = sorted(functions, key=lambda f: f[0].name)
4029++
4030++ if args.target == "header":
4031++ text = generateHeader(functions)
4032++ elif args.target == "source":
4033++ text = generateSource(functions)
4034++ sys.stdout.write(text)
4035++
4036++def fixupEglFunc(func, eglFunc):
4037++ result = dict(eglFunc)
4038++ if result.get("prefix") is None:
4039++ result["prefix"] = ""
4040++
4041++ if result.get("extension") is not None:
4042++ text = "defined(" + result["extension"] + ")"
4043++ result["extension"] = text
4044++
4045++ if result["method"] in ("none", "custom"):
4046++ return result
4047++
4048++ if result["method"] not in ("display", "device", "current"):
4049++ raise ValueError("Invalid dispatch method %r for function %r" % (result["method"], func.name))
4050++
4051++ if func.hasReturn():
4052++ if result.get("retval") is None:
4053++ result["retval"] = getDefaultReturnValue(func.rt)
4054++
4055++ return result
4056++
4057++def generateHeader(functions):
4058++ text = textwrap.dedent(r"""
4059++ #ifndef G_EGLDISPATCH_STUBS_H
4060++ #define G_EGLDISPATCH_STUBS_H
4061++
4062++ #ifdef __cplusplus
4063++ extern "C" {
4064++ #endif
4065++
4066++ #include <EGL/egl.h>
4067++ #include <EGL/eglext.h>
4068++ #include "glvnd/libeglabi.h"
4069++
4070++ """.lstrip("\n"))
4071++
4072++ text += "enum {\n"
4073++ for (func, eglFunc) in functions:
4074++ text += generateGuardBegin(func, eglFunc)
4075++ text += " __EGL_DISPATCH_" + func.name + ",\n"
4076++ text += generateGuardEnd(func, eglFunc)
4077++ text += " __EGL_DISPATCH_COUNT\n"
4078++ text += "};\n"
4079++
4080++ for (func, eglFunc) in functions:
4081++ if eglFunc["inheader"]:
4082++ text += generateGuardBegin(func, eglFunc)
4083++ text += "{f.rt} EGLAPIENTRY {ex[prefix]}{f.name}({f.decArgs});\n".format(f=func, ex=eglFunc)
4084++ text += generateGuardEnd(func, eglFunc)
4085++
4086++ text += textwrap.dedent(r"""
4087++ #ifdef __cplusplus
4088++ }
4089++ #endif
4090++ #endif // G_EGLDISPATCH_STUBS_H
4091++ """)
4092++ return text
4093++
4094++def generateSource(functions):
4095++ # First, sort the function list by name.
4096++ text = ""
4097++ text += '#include "egldispatchstubs.h"\n'
4098++ text += '#include "g_egldispatchstubs.h"\n'
4099++ text += "\n"
4100++
4101++ for (func, eglFunc) in functions:
4102++ if eglFunc["method"] not in ("custom", "none"):
4103++ text += generateGuardBegin(func, eglFunc)
4104++ text += generateDispatchFunc(func, eglFunc)
4105++ text += generateGuardEnd(func, eglFunc)
4106++
4107++ text += "\n"
4108++ text += "const char * const __EGL_DISPATCH_FUNC_NAMES[__EGL_DISPATCH_COUNT + 1] = {\n"
4109++ for (func, eglFunc) in functions:
4110++ text += generateGuardBegin(func, eglFunc)
4111++ text += ' "' + func.name + '",\n'
4112++ text += generateGuardEnd(func, eglFunc)
4113++ text += " NULL\n"
4114++ text += "};\n"
4115++
4116++ text += "const __eglMustCastToProperFunctionPointerType __EGL_DISPATCH_FUNCS[__EGL_DISPATCH_COUNT + 1] = {\n"
4117++ for (func, eglFunc) in functions:
4118++ text += generateGuardBegin(func, eglFunc)
4119++ if eglFunc["method"] != "none":
4120++ text += " (__eglMustCastToProperFunctionPointerType) " + eglFunc.get("prefix", "") + func.name + ",\n"
4121++ else:
4122++ text += " NULL, // " + func.name + "\n"
4123++ text += generateGuardEnd(func, eglFunc)
4124++ text += " NULL\n"
4125++ text += "};\n"
4126++
4127++ return text
4128++
4129++def generateGuardBegin(func, eglFunc):
4130++ ext = eglFunc.get("extension")
4131++ if ext is not None:
4132++ return "#if " + ext + "\n"
4133++ else:
4134++ return ""
4135++
4136++def generateGuardEnd(func, eglFunc):
4137++ if eglFunc.get("extension") is not None:
4138++ return "#endif\n"
4139++ else:
4140++ return ""
4141++
4142++def generateDispatchFunc(func, eglFunc):
4143++ text = ""
4144++
4145++ if eglFunc.get("static"):
4146++ text += "static "
4147++ elif eglFunc.get("public"):
4148++ text += "PUBLIC "
4149++ text += textwrap.dedent(
4150++ r"""
4151++ {f.rt} EGLAPIENTRY {ef[prefix]}{f.name}({f.decArgs})
4152++ {{
4153++ typedef {f.rt} EGLAPIENTRY (* _pfn_{f.name})({f.decArgs});
4154++ """).lstrip("\n").format(f=func, ef=eglFunc)
4155++
4156++ if func.hasReturn():
4157++ text += " {f.rt} _ret = {ef[retval]};\n".format(f=func, ef=eglFunc)
4158++
4159++ text += " _pfn_{f.name} _ptr_{f.name} = (_pfn_{f.name}) ".format(f=func)
4160++ if eglFunc["method"] == "current":
4161++ text += "__eglDispatchFetchByCurrent(__EGL_DISPATCH_{f.name});\n".format(f=func)
4162++
4163++ elif eglFunc["method"] in ("display", "device"):
4164++ if eglFunc["method"] == "display":
4165++ lookupFunc = "__eglDispatchFetchByDisplay"
4166++ lookupType = "EGLDisplay"
4167++ else:
4168++ assert eglFunc["method"] == "device"
4169++ lookupFunc = "__eglDispatchFetchByDevice"
4170++ lookupType = "EGLDeviceEXT"
4171++
4172++ lookupArg = None
4173++ for arg in func.args:
4174++ if arg.type == lookupType:
4175++ lookupArg = arg.name
4176++ break
4177++ if lookupArg is None:
4178++ raise ValueError("Can't find %s argument for function %s" % (lookupType, func.name,))
4179++
4180++ text += "{lookupFunc}({lookupArg}, __EGL_DISPATCH_{f.name});\n".format(
4181++ f=func, lookupFunc=lookupFunc, lookupArg=lookupArg)
4182++ else:
4183++ raise ValueError("Unknown dispatch method: %r" % (eglFunc["method"],))
4184++
4185++ text += " if(_ptr_{f.name} != NULL) {{\n".format(f=func)
4186++ text += " "
4187++ if func.hasReturn():
4188++ text += "_ret = "
4189++ text += "_ptr_{f.name}({f.callArgs});\n".format(f=func)
4190++ text += " }\n"
4191++
4192++ if func.hasReturn():
4193++ text += " return _ret;\n"
4194++ text += "}\n"
4195++ return text
4196++
4197++def getDefaultReturnValue(typename):
4198++ if typename.endswith("*"):
4199++ return "NULL"
4200++ elif typename == "EGLDisplay":
4201++ return "EGL_NO_DISPLAY"
4202++ elif typename == "EGLContext":
4203++ return "EGL_NO_CONTEXT"
4204++ elif typename == "EGLSurface":
4205++ return "EGL_NO_SURFACE"
4206++ elif typename == "EGLBoolean":
4207++ return "EGL_FALSE";
4208++
4209++ return "0"
4210++
4211++if __name__ == "__main__":
4212++ main()
4213++
4214+diff --git a/src/egl/main/50_mesa.json b/src/egl/main/50_mesa.json
4215+new file mode 100644
4216+index 0000000000..8aaaa100ff
4217+--- /dev/null
4218++++ b/src/egl/main/50_mesa.json
4219+@@ -0,0 +1,6 @@
4220++{
4221++ "file_format_version" : "1.0.0",
4222++ "ICD" : {
4223++ "library_path" : "libEGL_mesa.so.0"
4224++ }
4225++}
4226+diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
4227+index cab05c2301..5f21f3457d 100644
4228+--- a/src/egl/main/eglapi.c
4229++++ b/src/egl/main/eglapi.c
4230+@@ -651,7 +651,11 @@ eglQueryString(EGLDisplay dpy, EGLint name)
4231+ _EGLDriver *drv;
4232+
4233+ if (dpy == EGL_NO_DISPLAY && name == EGL_EXTENSIONS) {
4234+- RETURN_EGL_SUCCESS(NULL, _eglGlobal.ClientExtensionString);
4235++ const char *ret = _eglGetClientExtensionString();
4236++ if (ret != NULL)
4237++ RETURN_EGL_SUCCESS(NULL, ret);
4238++ else
4239++ RETURN_EGL_ERROR(NULL, EGL_BAD_ALLOC, NULL);
4240+ }
4241+
4242+ disp = _eglLockDisplay(dpy);
4243+diff --git a/src/egl/main/egldispatchstubs.c b/src/egl/main/egldispatchstubs.c
4244+new file mode 100644
4245+index 0000000000..e02abd7a9e
4246+--- /dev/null
4247++++ b/src/egl/main/egldispatchstubs.c
4248+@@ -0,0 +1,110 @@
4249++#include "egldispatchstubs.h"
4250++#include "g_egldispatchstubs.h"
4251++
4252++#include <string.h>
4253++
4254++#include "eglcurrent.h"
4255++
4256++static const __EGLapiExports *exports;
4257++
4258++const int __EGL_DISPATCH_FUNC_COUNT = __EGL_DISPATCH_COUNT;
4259++int __EGL_DISPATCH_FUNC_INDICES[__EGL_DISPATCH_COUNT + 1];
4260++
4261++static int FindProcIndex(const char *name)
4262++{
4263++ unsigned first = 0;
4264++ unsigned last = __EGL_DISPATCH_COUNT - 1;
4265++
4266++ while (first <= last) {
4267++ unsigned middle = (first + last) / 2;
4268++ int comp = strcmp(name,
4269++ __EGL_DISPATCH_FUNC_NAMES[middle]);
4270++
4271++ if (comp > 0)
4272++ first = middle + 1;
4273++ else if (comp < 0)
4274++ last = middle - 1;
4275++ else
4276++ return middle;
4277++ }
4278++
4279++ /* Just point to the dummy entry at the end of the respective table */
4280++ return __EGL_DISPATCH_COUNT;
4281++}
4282++
4283++void __eglInitDispatchStubs(const __EGLapiExports *exportsTable)
4284++{
4285++ int i;
4286++ exports = exportsTable;
4287++ for (i=0; i<__EGL_DISPATCH_FUNC_COUNT; i++) {
4288++ __EGL_DISPATCH_FUNC_INDICES[i] = -1;
4289++ }
4290++}
4291++
4292++void __eglSetDispatchIndex(const char *name, int dispatchIndex)
4293++{
4294++ int index = FindProcIndex(name);
4295++ __EGL_DISPATCH_FUNC_INDICES[index] = dispatchIndex;
4296++}
4297++
4298++void *__eglDispatchFindDispatchFunction(const char *name)
4299++{
4300++ int index = FindProcIndex(name);
4301++ return (void *) __EGL_DISPATCH_FUNCS[index];
4302++}
4303++
4304++static __eglMustCastToProperFunctionPointerType FetchVendorFunc(__EGLvendorInfo *vendor,
4305++ int index, EGLint errorCode)
4306++{
4307++ __eglMustCastToProperFunctionPointerType func = NULL;
4308++
4309++ if (vendor != NULL) {
4310++ func = exports->fetchDispatchEntry(vendor, __EGL_DISPATCH_FUNC_INDICES[index]);
4311++ }
4312++ if (func == NULL) {
4313++ if (errorCode != EGL_SUCCESS) {
4314++ _eglError(errorCode, __EGL_DISPATCH_FUNC_NAMES[index]);
4315++ }
4316++ return NULL;
4317++ }
4318++
4319++ if (!exports->setLastVendor(vendor)) {
4320++ // Don't bother trying to set an error code in libglvnd. If
4321++ // setLastVendor failed, then setEGLError would also fail.
4322++ _eglError(errorCode, __EGL_DISPATCH_FUNC_NAMES[index]);
4323++ return NULL;
4324++ }
4325++
4326++ return func;
4327++}
4328++
4329++__eglMustCastToProperFunctionPointerType __eglDispatchFetchByCurrent(int index)
4330++{
4331++ __EGLvendorInfo *vendor;
4332++
4333++ // Note: This is only used for the eglWait* functions. For those, if
4334++ // there's no current context, then they're supposed to do nothing but
4335++ // return success.
4336++ exports->threadInit();
4337++ vendor = exports->getCurrentVendor();
4338++ return FetchVendorFunc(vendor, index, EGL_SUCCESS);
4339++}
4340++
4341++__eglMustCastToProperFunctionPointerType __eglDispatchFetchByDisplay(EGLDisplay dpy, int index)
4342++{
4343++ __EGLvendorInfo *vendor;
4344++
4345++ exports->threadInit();
4346++ vendor = exports->getVendorFromDisplay(dpy);
4347++ return FetchVendorFunc(vendor, index, EGL_BAD_DISPLAY);
4348++}
4349++
4350++__eglMustCastToProperFunctionPointerType __eglDispatchFetchByDevice(EGLDeviceEXT dev, int index)
4351++{
4352++ __EGLvendorInfo *vendor;
4353++
4354++ exports->threadInit();
4355++ vendor = exports->getVendorFromDevice(dev);
4356++ return FetchVendorFunc(vendor, index, EGL_BAD_DEVICE_EXT);
4357++}
4358++
4359+diff --git a/src/egl/main/egldispatchstubs.h b/src/egl/main/egldispatchstubs.h
4360+new file mode 100644
4361+index 0000000000..7861ea5e61
4362+--- /dev/null
4363++++ b/src/egl/main/egldispatchstubs.h
4364+@@ -0,0 +1,26 @@
4365++#ifndef EGLDISPATCHSTUBS_H
4366++#define EGLDISPATCHSTUBS_H
4367++
4368++#include "glvnd/libeglabi.h"
4369++
4370++// These variables are all generated along with the dispatch stubs.
4371++extern const int __EGL_DISPATCH_FUNC_COUNT;
4372++extern const char * const __EGL_DISPATCH_FUNC_NAMES[];
4373++extern int __EGL_DISPATCH_FUNC_INDICES[];
4374++extern const __eglMustCastToProperFunctionPointerType __EGL_DISPATCH_FUNCS[];
4375++
4376++void __eglInitDispatchStubs(const __EGLapiExports *exportsTable);
4377++void __eglSetDispatchIndex(const char *name, int index);
4378++
4379++/**
4380++ * Returns the dispatch function for the given name, or \c NULL if the function
4381++ * isn't supported.
4382++ */
4383++void *__eglDispatchFindDispatchFunction(const char *name);
4384++
4385++// Helper functions used by the generated stubs.
4386++__eglMustCastToProperFunctionPointerType __eglDispatchFetchByDisplay(EGLDisplay dpy, int index);
4387++__eglMustCastToProperFunctionPointerType __eglDispatchFetchByDevice(EGLDeviceEXT dpy, int index);
4388++__eglMustCastToProperFunctionPointerType __eglDispatchFetchByCurrent(int index);
4389++
4390++#endif // EGLDISPATCHSTUBS_H
4391+diff --git a/src/egl/main/eglglobals.c b/src/egl/main/eglglobals.c
4392+index cb41063e32..baf96bb1ec 100644
4393+--- a/src/egl/main/eglglobals.c
4394++++ b/src/egl/main/eglglobals.c
4395+@@ -29,6 +29,8 @@
4396+
4397+
4398+ #include <stdlib.h>
4399++#include <stdio.h>
4400++#include <string.h>
4401+ #include <assert.h>
4402+ #include "c11/threads.h"
4403+
4404+@@ -50,9 +52,13 @@ struct _egl_global _eglGlobal =
4405+ _eglFiniDisplay
4406+ },
4407+
4408+- /* ClientExtensionString */
4409++ /* ClientOnlyExtensionString */
4410+ "EGL_EXT_client_extensions"
4411+ " EGL_EXT_platform_base"
4412++ " EGL_KHR_client_get_all_proc_addresses"
4413++ " EGL_KHR_debug",
4414++
4415++ /* PlatformExtensionString */
4416+ #ifdef HAVE_WAYLAND_PLATFORM
4417+ " EGL_EXT_platform_wayland"
4418+ #endif
4419+@@ -65,8 +71,9 @@ struct _egl_global _eglGlobal =
4420+ #ifdef HAVE_SURFACELESS_PLATFORM
4421+ " EGL_MESA_platform_surfaceless"
4422+ #endif
4423+- " EGL_KHR_client_get_all_proc_addresses"
4424+- " EGL_KHR_debug",
4425++ "",
4426++
4427++ NULL, /* ClientExtensionsString */
4428+
4429+ NULL, /* debugCallback */
4430+ _EGL_DEBUG_BIT_CRITICAL | _EGL_DEBUG_BIT_ERROR, /* debugTypesEnabled */
4431+@@ -101,3 +108,37 @@ _eglAddAtExitCall(void (*func)(void))
4432+ mtx_unlock(_eglGlobal.Mutex);
4433+ }
4434+ }
4435++
4436++const char *
4437++_eglGetClientExtensionString(void)
4438++{
4439++ const char *ret;
4440++
4441++ mtx_lock(_eglGlobal.Mutex);
4442++
4443++ if (_eglGlobal.ClientExtensionString == NULL) {
4444++ size_t clientLen = strlen(_eglGlobal.ClientOnlyExtensionString);
4445++ size_t platformLen = strlen(_eglGlobal.PlatformExtensionString);
4446++
4447++ _eglGlobal.ClientExtensionString = (char *) malloc(clientLen + platformLen + 1);
4448++ if (_eglGlobal.ClientExtensionString != NULL) {
4449++ char *ptr = _eglGlobal.ClientExtensionString;
4450++
4451++ memcpy(ptr, _eglGlobal.ClientOnlyExtensionString, clientLen);
4452++ ptr += clientLen;
4453++
4454++ if (platformLen > 0) {
4455++ // Note that if PlatformExtensionString is not empty, then it will
4456++ // already have a leading space.
4457++ assert(_eglGlobal.PlatformExtensionString[0] == ' ');
4458++ memcpy(ptr, _eglGlobal.PlatformExtensionString, platformLen);
4459++ ptr += platformLen;
4460++ }
4461++ *ptr = '\0';
4462++ }
4463++ }
4464++ ret = _eglGlobal.ClientExtensionString;
4465++
4466++ mtx_unlock(_eglGlobal.Mutex);
4467++ return ret;
4468++}
4469+diff --git a/src/egl/main/eglglobals.h b/src/egl/main/eglglobals.h
4470+index ec4f3d04a3..c6ef59d482 100644
4471+--- a/src/egl/main/eglglobals.h
4472++++ b/src/egl/main/eglglobals.h
4473+@@ -57,7 +57,15 @@ struct _egl_global
4474+ EGLint NumAtExitCalls;
4475+ void (*AtExitCalls[10])(void);
4476+
4477+- const char *ClientExtensionString;
4478++ /*
4479++ * Under libglvnd, the client extension string has to be split into two
4480++ * strings, one for platform extensions, and one for everything else. So,
4481++ * define separate strings for them. _eglGetClientExtensionString will
4482++ * concatenate them together for a non-libglvnd build.
4483++ */
4484++ const char *ClientOnlyExtensionString;
4485++ const char *PlatformExtensionString;
4486++ char *ClientExtensionString;
4487+
4488+ EGLDEBUGPROCKHR debugCallback;
4489+ unsigned int debugTypesEnabled;
4490+@@ -76,4 +84,7 @@ static inline unsigned int DebugBitFromType(EGLenum type)
4491+ return (1 << (type - EGL_DEBUG_MSG_CRITICAL_KHR));
4492+ }
4493+
4494++extern const char *
4495++_eglGetClientExtensionString(void);
4496++
4497+ #endif /* EGLGLOBALS_INCLUDED */
4498+diff --git a/src/egl/main/eglglvnd.c b/src/egl/main/eglglvnd.c
4499+new file mode 100644
4500+index 0000000000..6b984ed6c2
4501+--- /dev/null
4502++++ b/src/egl/main/eglglvnd.c
4503+@@ -0,0 +1,82 @@
4504++#include <string.h>
4505++#include <assert.h>
4506++
4507++#include <glvnd/libeglabi.h>
4508++
4509++#include "eglcurrent.h"
4510++#include "egldispatchstubs.h"
4511++#include "eglglobals.h"
4512++
4513++static const __EGLapiExports *__eglGLVNDApiExports = NULL;
4514++
4515++static const char * EGLAPIENTRY
4516++__eglGLVNDQueryString(EGLDisplay dpy, EGLenum name)
4517++{
4518++ // For client extensions, return the list of non-platform extensions. The
4519++ // platform extensions are returned by __eglGLVNDGetVendorString.
4520++ if (dpy == EGL_NO_DISPLAY && name == EGL_EXTENSIONS)
4521++ return _eglGlobal.ClientOnlyExtensionString;
4522++
4523++ // For everything else, forward to the normal eglQueryString function.
4524++ return eglQueryString(dpy, name);
4525++}
4526++
4527++static const char *
4528++__eglGLVNDGetVendorString(int name)
4529++{
4530++ if (name == __EGL_VENDOR_STRING_PLATFORM_EXTENSIONS) {
4531++ const char *str = _eglGlobal.PlatformExtensionString;
4532++ // The platform extension string may have a leading space. If it does,
4533++ // then skip over it.
4534++ while (*str == ' ') {
4535++ str++;
4536++ }
4537++ return str;
4538++ }
4539++
4540++ return NULL;
4541++}
4542++
4543++static EGLDisplay
4544++__eglGLVNDGetPlatformDisplay(EGLenum platform, void *native_display,
4545++ const EGLAttrib *attrib_list)
4546++{
4547++ if (platform == EGL_NONE) {
4548++ assert(native_display == (void *) EGL_DEFAULT_DISPLAY);
4549++ assert(attrib_list == NULL);
4550++ return eglGetDisplay((EGLNativeDisplayType) native_display);
4551++ } else {
4552++ return eglGetPlatformDisplay(platform, native_display, attrib_list);
4553++ }
4554++}
4555++
4556++static void *
4557++__eglGLVNDGetProcAddress(const char *procName)
4558++{
4559++ if (strcmp(procName, "eglQueryString") == 0)
4560++ return (void *) __eglGLVNDQueryString;
4561++
4562++ return (void *) eglGetProcAddress(procName);
4563++}
4564++
4565++EGLAPI EGLBoolean
4566++__egl_Main(uint32_t version, const __EGLapiExports *exports,
4567++ __EGLvendorInfo *vendor, __EGLapiImports *imports)
4568++{
4569++ if (EGL_VENDOR_ABI_GET_MAJOR_VERSION(version) !=
4570++ EGL_VENDOR_ABI_MAJOR_VERSION)
4571++ return EGL_FALSE;
4572++
4573++ __eglGLVNDApiExports = exports;
4574++ __eglInitDispatchStubs(exports);
4575++
4576++ imports->getPlatformDisplay = __eglGLVNDGetPlatformDisplay;
4577++ imports->getSupportsAPI = _eglIsApiValid;
4578++ imports->getVendorString = __eglGLVNDGetVendorString;
4579++ imports->getProcAddress = __eglGLVNDGetProcAddress;
4580++ imports->getDispatchAddress = __eglDispatchFindDispatchFunction;
4581++ imports->setDispatchIndex = __eglSetDispatchIndex;
4582++
4583++ return EGL_TRUE;
4584++}
4585++
4586+--
4587+2.11.0
4588+
4589diff --git a/debian/patches/0001-Fix-linkage-against-shared-glapi.patch b/debian/patches/0001-Fix-linkage-against-shared-glapi.patch
4590new file mode 100644
4591index 0000000..7f8f716
4592--- /dev/null
4593+++ b/debian/patches/0001-Fix-linkage-against-shared-glapi.patch
4594@@ -0,0 +1,26 @@
4595+From 1b5a187c3c31513ae39cd2a917a3234c2c5f87fc Mon Sep 17 00:00:00 2001
4596+From: Adam Jackson <ajax@redhat.com>
4597+Date: Wed, 12 Oct 2016 13:41:33 -0400
4598+Subject: [PATCH] Fix linkage against shared glapi
4599+
4600+Signed-off-by: Adam Jackson <ajax@redhat.com>
4601+---
4602+ src/gallium/targets/osmesa/Makefile.am | 2 +-
4603+ 1 files changed, 1 insertions(+), 1 deletions(-)
4604+
4605+diff --git a/src/gallium/targets/osmesa/Makefile.am b/src/gallium/targets/osmesa/Makefile.am
4606+index 5d39486..04add87 100644
4607+--- a/src/gallium/targets/osmesa/Makefile.am
4608++++ b/src/gallium/targets/osmesa/Makefile.am
4609+@@ -63,7 +63,7 @@ lib@OSMESA_LIB@_la_LIBADD = \
4610+ $(top_builddir)/src/gallium/drivers/trace/libtrace.la \
4611+ $(top_builddir)/src/gallium/drivers/softpipe/libsoftpipe.la \
4612+ $(top_builddir)/src/gallium/state_trackers/osmesa/libosmesa.la \
4613+- $(top_builddir)/src/mapi/glapi/libglapi.la \
4614++ $(top_builddir)/src/mapi/shared-glapi/libglapi.la \
4615+ $(SHARED_GLAPI_LIB) \
4616+ $(OSMESA_LIB_DEPS) \
4617+ $(CLOCK_LIB)
4618+--
4619+2.9.3
4620+
4621diff --git a/debian/patches/0001-glapi-Link-with-glapi-when-built-shared.patch b/debian/patches/0001-glapi-Link-with-glapi-when-built-shared.patch
4622new file mode 100644
4623index 0000000..376828e
4624--- /dev/null
4625+++ b/debian/patches/0001-glapi-Link-with-glapi-when-built-shared.patch
4626@@ -0,0 +1,82 @@
4627+From 16875ea5b9170f2213fd486d763f27a9d6dfc1b5 Mon Sep 17 00:00:00 2001
4628+From: Nicolas Chauvet <kwizart@gmail.com>
4629+Date: Tue, 25 Oct 2016 09:35:13 +0200
4630+Subject: [PATCH 1/3] glapi: Link with glapi when built shared
4631+
4632+This patch explicitly links to libglapi when built shared.
4633+This was specially needed to avoid undefined non-weak-symbol as shown
4634+with:
4635+
4636+ldd -r /usr/lib64/dri/i915_dri.so
4637+ linux-vdso.so.1 (0x00007fff821f4000)
4638+ libdrm_intel.so.1 => /lib64/libdrm_intel.so.1 (0x00007f6adf2c7000)
4639+ libdrm_nouveau.so.2 => /lib64/libdrm_nouveau.so.2 (0x00007f6adf0be000)
4640+ libdrm_radeon.so.1 => /lib64/libdrm_radeon.so.1 (0x00007f6adeeb2000)
4641+ libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f6adec8b000)
4642+ libdrm.so.2 => /lib64/libdrm.so.2 (0x00007f6adea7c000)
4643+ libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f6ade84f000)
4644+ libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6ade633000)
4645+ libdl.so.2 => /lib64/libdl.so.2 (0x00007f6ade42f000)
4646+ libm.so.6 => /lib64/libm.so.6 (0x00007f6ade125000)
4647+ libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f6addf0e000)
4648+ libc.so.6 => /lib64/libc.so.6 (0x00007f6addb4c000)
4649+ /lib64/ld-linux-x86-64.so.2 (0x000056274e913000)
4650+ libpciaccess.so.0 => /lib64/libpciaccess.so.0 (0x00007f6add941000)
4651+ libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f6add6ce000)
4652+undefined symbol: _glapi_get_dispatch_table_size (/usr/lib64/dri/i915_dri.so)
4653+undefined symbol: _glapi_get_context (/usr/lib64/dri/i915_dri.so)
4654+undefined symbol: _glapi_add_dispatch (/usr/lib64/dri/i915_dri.so)
4655+undefined symbol: _glapi_check_multithread (/usr/lib64/dri/i915_dri.so)
4656+undefined symbol: _glapi_tls_Context (/usr/lib64/dri/i915_dri.so)
4657+undefined symbol: _glapi_set_context (/usr/lib64/dri/i915_dri.so)
4658+undefined symbol: _glapi_set_dispatch (/usr/lib64/dri/i915_dri.so)
4659+undefined symbol: _glapi_tls_Dispatch (/usr/lib64/dri/i915_dri.so)
4660+
4661+v3: Add gallium counterpart for radeon cases
4662+Reported-by: Jonathan Dieter <jdieter@lesbg.com>
4663+
4664+v2: Add Bugzilla and Signed-off
4665+
4666+Fixes: 0cbc90c57c ("mesa: dri: Add shared glapi to LIBADD on Android")
4667+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98428
4668+Signed-off-by: Nicolas Chauvet <kwizart@gmail.com>
4669+---
4670+ src/gallium/targets/dri/Makefile.am | 2 --
4671+ src/mesa/drivers/dri/Makefile.am | 3 ---
4672+ 2 files changed, 5 deletions(-)
4673+
4674+diff --git a/src/gallium/targets/dri/Makefile.am b/src/gallium/targets/dri/Makefile.am
4675+index bca747f..05f6c8c 100644
4676+--- a/src/gallium/targets/dri/Makefile.am
4677++++ b/src/gallium/targets/dri/Makefile.am
4678+@@ -1,10 +1,8 @@
4679+ include $(top_srcdir)/src/gallium/Automake.inc
4680+
4681+-if HAVE_ANDROID
4682+ if HAVE_SHARED_GLAPI
4683+ SHARED_GLAPI_LIB = $(top_builddir)/src/mapi/shared-glapi/libglapi.la
4684+ endif
4685+-endif
4686+
4687+ AM_CFLAGS = \
4688+ -I$(top_srcdir)/src/mapi \
4689+diff --git a/src/mesa/drivers/dri/Makefile.am b/src/mesa/drivers/dri/Makefile.am
4690+index 1c6dd08..8e68fc0 100644
4691+--- a/src/mesa/drivers/dri/Makefile.am
4692++++ b/src/mesa/drivers/dri/Makefile.am
4693+@@ -6,12 +6,9 @@ MEGADRIVERS_DEPS =
4694+
4695+ SUBDIRS+=common
4696+
4697+-# On Android, we need to explicitly link to libglapi.so.
4698+-if HAVE_ANDROID
4699+ if HAVE_SHARED_GLAPI
4700+ SHARED_GLAPI_LIB = $(top_builddir)/src/mapi/shared-glapi/libglapi.la
4701+ endif
4702+-endif
4703+
4704+ if HAVE_I915_DRI
4705+ SUBDIRS += i915
4706+--
4707+2.7.4
4708+
4709diff --git a/debian/patches/0002-fixup-EGL-Implement-the-libglvnd-interface-for-EGL-v.patch b/debian/patches/0002-fixup-EGL-Implement-the-libglvnd-interface-for-EGL-v.patch
4710new file mode 100644
4711index 0000000..f3b0f99
4712--- /dev/null
4713+++ b/debian/patches/0002-fixup-EGL-Implement-the-libglvnd-interface-for-EGL-v.patch
4714@@ -0,0 +1,33 @@
4715+From 2d4094c2caad6cef2f5544b3966fcc37ceb32036 Mon Sep 17 00:00:00 2001
4716+From: Kyle Brenneman <kbrenneman@nvidia.com>
4717+Date: Thu, 5 Jan 2017 14:29:47 -0700
4718+Subject: [PATCH 2/2] fixup! EGL: Implement the libglvnd interface for EGL (v2)
4719+
4720+---
4721+ src/egl/generate/eglFunctionList.py | 6 ++++--
4722+ 1 file changed, 4 insertions(+), 2 deletions(-)
4723+
4724+diff --git a/src/egl/generate/eglFunctionList.py b/src/egl/generate/eglFunctionList.py
4725+index b19b5f7193..80cb83437c 100644
4726+--- a/src/egl/generate/eglFunctionList.py
4727++++ b/src/egl/generate/eglFunctionList.py
4728+@@ -53,12 +53,14 @@ method values:
4729+ Select the vendor that owns the current context.
4730+ """
4731+
4732+-def _eglFunc(name, method, static=False, public=False, inheader=None, prefix="", extension=None, retval=None):
4733++def _eglFunc(name, method, static=None, public=False, inheader=None, prefix="dispatch_", extension=None, retval=None):
4734+ """
4735+ A convenience function to define an entry in the EGL function list.
4736+ """
4737++ if static is None:
4738++ static = (not public and method != "custom")
4739+ if inheader is None:
4740+- inheader = (not public)
4741++ inheader = (not static)
4742+ values = {
4743+ "method" : method,
4744+ "prefix" : prefix,
4745+--
4746+2.11.0
4747+
4748diff --git a/debian/patches/glvnd-fix-gl-dot-pc.patch b/debian/patches/glvnd-fix-gl-dot-pc.patch
4749new file mode 100644
4750index 0000000..68118f4
4751--- /dev/null
4752+++ b/debian/patches/glvnd-fix-gl-dot-pc.patch
4753@@ -0,0 +1,12 @@
4754+diff -up mesa-12.0.3/src/mesa/gl.pc.in.jx mesa-12.0.3/src/mesa/gl.pc.in
4755+--- mesa-12.0.3/src/mesa/gl.pc.in.jx 2016-01-18 02:39:26.000000000 -0500
4756++++ mesa-12.0.3/src/mesa/gl.pc.in 2016-10-25 13:06:44.013159358 -0400
4757+@@ -7,7 +7,7 @@ Name: gl
4758+ Description: Mesa OpenGL library
4759+ Requires.private: @GL_PC_REQ_PRIV@
4760+ Version: @PACKAGE_VERSION@
4761+-Libs: -L${libdir} -l@GL_LIB@
4762++Libs: -L${libdir} -lGL
4763+ Libs.private: @GL_PC_LIB_PRIV@
4764+ Cflags: -I${includedir} @GL_PC_CFLAGS@
4765+ glx_tls: @GLX_TLS@
4766diff --git a/debian/patches/series b/debian/patches/series
4767index 3ea8e9a..54f0d3f 100644
4768--- a/debian/patches/series
4769+++ b/debian/patches/series
4770@@ -1,2 +1,9 @@
4771 07_gallium-fix-build-failure-on-powerpcspe.diff
4772 configure.ac-Require-LLVM-for-r300-only-on-x86-and-x.patch
4773+
4774+# glvnd support patches
4775+0001-EGL-Implement-the-libglvnd-interface-for-EGL-v2.patch
4776+glvnd-fix-gl-dot-pc.patch
4777+0001-Fix-linkage-against-shared-glapi.patch
4778+0001-glapi-Link-with-glapi-when-built-shared.patch
4779+0002-fixup-EGL-Implement-the-libglvnd-interface-for-EGL-v.patch
4780diff --git a/debian/rules b/debian/rules
4781index 8046c6c..e16d077 100755
4782--- a/debian/rules
4783+++ b/debian/rules
4784@@ -122,6 +122,7 @@ confflags += \
4785 --with-dri-driverdir=/usr/lib/$(DEB_HOST_MULTIARCH)/dri \
4786 --with-dri-searchpath='/usr/lib/$(DEB_HOST_MULTIARCH)/dri:\$$$${ORIGIN}/dri:/usr/lib/dri' \
4787 --with-vulkan-drivers="$(VULKAN_DRIVERS)" \
4788+ --enable-libglvnd \
4789 --enable-osmesa \
4790 --enable-glx-tls \
4791 --enable-shared-glapi \
4792@@ -179,6 +180,9 @@ override_dh_install:
4793 # purge .la files
4794 find debian/tmp/ -name '*.la' -exec rm '{}' ';'
4795
4796+ # GLESv2 libs still get built for some reason
4797+ rm -f debian/tmp/usr/lib/*/libGLESv2*
4798+
4799 # Copy the hardlinked *_dri.so correctly.
4800 install -m755 -d debian/libgl1-mesa-dri/usr/lib/${DEB_HOST_MULTIARCH}/dri/
4801 mv debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/dri/*_dri.so \