1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by generate_entry_points.py using data from egl.xml and egl_angle_ext.xml.
3 //
4 // Copyright 2020 The ANGLE Project Authors. All rights reserved.
5 // Use of this source code is governed by a BSD-style license that can be
6 // found in the LICENSE file.
7 //
8 // libEGL_autogen.cpp: Implements the exported EGL functions.
9
10 #include "anglebase/no_destructor.h"
11 #include "common/system_utils.h"
12
13 #include <memory>
14
15 #if defined(ANGLE_USE_EGL_LOADER)
16 # include "libEGL/egl_loader_autogen.h"
17 #else
18 # include "libGLESv2/entry_points_egl_autogen.h"
19 # include "libGLESv2/entry_points_egl_ext_autogen.h"
20 #endif // defined(ANGLE_USE_EGL_LOADER)
21
22 namespace
23 {
24 #if defined(ANGLE_USE_EGL_LOADER)
25 bool gLoaded = false;
26
EntryPointsLib()27 std::unique_ptr<angle::Library> &EntryPointsLib()
28 {
29 static angle::base::NoDestructor<std::unique_ptr<angle::Library>> sEntryPointsLib;
30 return *sEntryPointsLib;
31 }
32
GlobalLoad(const char * symbol)33 angle::GenericProc KHRONOS_APIENTRY GlobalLoad(const char *symbol)
34 {
35 return reinterpret_cast<angle::GenericProc>(EntryPointsLib()->getSymbol(symbol));
36 }
37
EnsureEGLLoaded()38 void EnsureEGLLoaded()
39 {
40 if (gLoaded)
41 {
42 return;
43 }
44
45 EntryPointsLib().reset(
46 angle::OpenSharedLibrary(ANGLE_GLESV2_LIBRARY_NAME, angle::SearchType::ModuleDir));
47 angle::LoadEGL_EGL(GlobalLoad);
48 if (!EGL_GetPlatformDisplay)
49 {
50 fprintf(stderr, "Error loading EGL entry points.\n");
51 }
52 else
53 {
54 gLoaded = true;
55 }
56 }
57 #else
58 void EnsureEGLLoaded() {}
59 #endif // defined(ANGLE_USE_EGL_LOADER)
60 } // anonymous namespace
61
62 extern "C" {
63
64 // EGL 1.0
eglChooseConfig(EGLDisplay dpy,const EGLint * attrib_list,EGLConfig * configs,EGLint config_size,EGLint * num_config)65 EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy,
66 const EGLint *attrib_list,
67 EGLConfig *configs,
68 EGLint config_size,
69 EGLint *num_config)
70 {
71 EnsureEGLLoaded();
72 return EGL_ChooseConfig(dpy, attrib_list, configs, config_size, num_config);
73 }
74
eglCopyBuffers(EGLDisplay dpy,EGLSurface surface,EGLNativePixmapType target)75 EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy,
76 EGLSurface surface,
77 EGLNativePixmapType target)
78 {
79 EnsureEGLLoaded();
80 return EGL_CopyBuffers(dpy, surface, target);
81 }
82
eglCreateContext(EGLDisplay dpy,EGLConfig config,EGLContext share_context,const EGLint * attrib_list)83 EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy,
84 EGLConfig config,
85 EGLContext share_context,
86 const EGLint *attrib_list)
87 {
88 EnsureEGLLoaded();
89 return EGL_CreateContext(dpy, config, share_context, attrib_list);
90 }
91
eglCreatePbufferSurface(EGLDisplay dpy,EGLConfig config,const EGLint * attrib_list)92 EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy,
93 EGLConfig config,
94 const EGLint *attrib_list)
95 {
96 EnsureEGLLoaded();
97 return EGL_CreatePbufferSurface(dpy, config, attrib_list);
98 }
99
eglCreatePixmapSurface(EGLDisplay dpy,EGLConfig config,EGLNativePixmapType pixmap,const EGLint * attrib_list)100 EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy,
101 EGLConfig config,
102 EGLNativePixmapType pixmap,
103 const EGLint *attrib_list)
104 {
105 EnsureEGLLoaded();
106 return EGL_CreatePixmapSurface(dpy, config, pixmap, attrib_list);
107 }
108
eglCreateWindowSurface(EGLDisplay dpy,EGLConfig config,EGLNativeWindowType win,const EGLint * attrib_list)109 EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy,
110 EGLConfig config,
111 EGLNativeWindowType win,
112 const EGLint *attrib_list)
113 {
114 EnsureEGLLoaded();
115 return EGL_CreateWindowSurface(dpy, config, win, attrib_list);
116 }
117
eglDestroyContext(EGLDisplay dpy,EGLContext ctx)118 EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx)
119 {
120 EnsureEGLLoaded();
121 return EGL_DestroyContext(dpy, ctx);
122 }
123
eglDestroySurface(EGLDisplay dpy,EGLSurface surface)124 EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface)
125 {
126 EnsureEGLLoaded();
127 return EGL_DestroySurface(dpy, surface);
128 }
129
eglGetConfigAttrib(EGLDisplay dpy,EGLConfig config,EGLint attribute,EGLint * value)130 EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy,
131 EGLConfig config,
132 EGLint attribute,
133 EGLint *value)
134 {
135 EnsureEGLLoaded();
136 return EGL_GetConfigAttrib(dpy, config, attribute, value);
137 }
138
eglGetConfigs(EGLDisplay dpy,EGLConfig * configs,EGLint config_size,EGLint * num_config)139 EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy,
140 EGLConfig *configs,
141 EGLint config_size,
142 EGLint *num_config)
143 {
144 EnsureEGLLoaded();
145 return EGL_GetConfigs(dpy, configs, config_size, num_config);
146 }
147
eglGetCurrentDisplay()148 EGLDisplay EGLAPIENTRY eglGetCurrentDisplay()
149 {
150 EnsureEGLLoaded();
151 return EGL_GetCurrentDisplay();
152 }
153
eglGetCurrentSurface(EGLint readdraw)154 EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw)
155 {
156 EnsureEGLLoaded();
157 return EGL_GetCurrentSurface(readdraw);
158 }
159
eglGetDisplay(EGLNativeDisplayType display_id)160 EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id)
161 {
162 EnsureEGLLoaded();
163 return EGL_GetDisplay(display_id);
164 }
165
eglGetError()166 EGLint EGLAPIENTRY eglGetError()
167 {
168 EnsureEGLLoaded();
169 return EGL_GetError();
170 }
171
eglGetProcAddress(const char * procname)172 __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress(const char *procname)
173 {
174 EnsureEGLLoaded();
175 return EGL_GetProcAddress(procname);
176 }
177
eglInitialize(EGLDisplay dpy,EGLint * major,EGLint * minor)178 EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
179 {
180 EnsureEGLLoaded();
181 return EGL_Initialize(dpy, major, minor);
182 }
183
eglMakeCurrent(EGLDisplay dpy,EGLSurface draw,EGLSurface read,EGLContext ctx)184 EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy,
185 EGLSurface draw,
186 EGLSurface read,
187 EGLContext ctx)
188 {
189 EnsureEGLLoaded();
190 return EGL_MakeCurrent(dpy, draw, read, ctx);
191 }
192
eglQueryContext(EGLDisplay dpy,EGLContext ctx,EGLint attribute,EGLint * value)193 EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy,
194 EGLContext ctx,
195 EGLint attribute,
196 EGLint *value)
197 {
198 EnsureEGLLoaded();
199 return EGL_QueryContext(dpy, ctx, attribute, value);
200 }
201
eglQueryString(EGLDisplay dpy,EGLint name)202 const char *EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name)
203 {
204 EnsureEGLLoaded();
205 return EGL_QueryString(dpy, name);
206 }
207
eglQuerySurface(EGLDisplay dpy,EGLSurface surface,EGLint attribute,EGLint * value)208 EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy,
209 EGLSurface surface,
210 EGLint attribute,
211 EGLint *value)
212 {
213 EnsureEGLLoaded();
214 return EGL_QuerySurface(dpy, surface, attribute, value);
215 }
216
eglSwapBuffers(EGLDisplay dpy,EGLSurface surface)217 EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface)
218 {
219 EnsureEGLLoaded();
220 return EGL_SwapBuffers(dpy, surface);
221 }
222
eglTerminate(EGLDisplay dpy)223 EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy)
224 {
225 EnsureEGLLoaded();
226 return EGL_Terminate(dpy);
227 }
228
eglWaitGL()229 EGLBoolean EGLAPIENTRY eglWaitGL()
230 {
231 EnsureEGLLoaded();
232 return EGL_WaitGL();
233 }
234
eglWaitNative(EGLint engine)235 EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine)
236 {
237 EnsureEGLLoaded();
238 return EGL_WaitNative(engine);
239 }
240
241 // EGL 1.1
eglBindTexImage(EGLDisplay dpy,EGLSurface surface,EGLint buffer)242 EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
243 {
244 EnsureEGLLoaded();
245 return EGL_BindTexImage(dpy, surface, buffer);
246 }
247
eglReleaseTexImage(EGLDisplay dpy,EGLSurface surface,EGLint buffer)248 EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
249 {
250 EnsureEGLLoaded();
251 return EGL_ReleaseTexImage(dpy, surface, buffer);
252 }
253
eglSurfaceAttrib(EGLDisplay dpy,EGLSurface surface,EGLint attribute,EGLint value)254 EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy,
255 EGLSurface surface,
256 EGLint attribute,
257 EGLint value)
258 {
259 EnsureEGLLoaded();
260 return EGL_SurfaceAttrib(dpy, surface, attribute, value);
261 }
262
eglSwapInterval(EGLDisplay dpy,EGLint interval)263 EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval)
264 {
265 EnsureEGLLoaded();
266 return EGL_SwapInterval(dpy, interval);
267 }
268
269 // EGL 1.2
eglBindAPI(EGLenum api)270 EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api)
271 {
272 EnsureEGLLoaded();
273 return EGL_BindAPI(api);
274 }
275
eglCreatePbufferFromClientBuffer(EGLDisplay dpy,EGLenum buftype,EGLClientBuffer buffer,EGLConfig config,const EGLint * attrib_list)276 EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(EGLDisplay dpy,
277 EGLenum buftype,
278 EGLClientBuffer buffer,
279 EGLConfig config,
280 const EGLint *attrib_list)
281 {
282 EnsureEGLLoaded();
283 return EGL_CreatePbufferFromClientBuffer(dpy, buftype, buffer, config, attrib_list);
284 }
285
eglQueryAPI()286 EGLenum EGLAPIENTRY eglQueryAPI()
287 {
288 EnsureEGLLoaded();
289 return EGL_QueryAPI();
290 }
291
eglReleaseThread()292 EGLBoolean EGLAPIENTRY eglReleaseThread()
293 {
294 EnsureEGLLoaded();
295 return EGL_ReleaseThread();
296 }
297
eglWaitClient()298 EGLBoolean EGLAPIENTRY eglWaitClient()
299 {
300 EnsureEGLLoaded();
301 return EGL_WaitClient();
302 }
303
304 // EGL 1.4
eglGetCurrentContext()305 EGLContext EGLAPIENTRY eglGetCurrentContext()
306 {
307 EnsureEGLLoaded();
308 return EGL_GetCurrentContext();
309 }
310
311 // EGL 1.5
eglClientWaitSync(EGLDisplay dpy,EGLSync sync,EGLint flags,EGLTime timeout)312 EGLint EGLAPIENTRY eglClientWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout)
313 {
314 EnsureEGLLoaded();
315 return EGL_ClientWaitSync(dpy, sync, flags, timeout);
316 }
317
eglCreateImage(EGLDisplay dpy,EGLContext ctx,EGLenum target,EGLClientBuffer buffer,const EGLAttrib * attrib_list)318 EGLImage EGLAPIENTRY eglCreateImage(EGLDisplay dpy,
319 EGLContext ctx,
320 EGLenum target,
321 EGLClientBuffer buffer,
322 const EGLAttrib *attrib_list)
323 {
324 EnsureEGLLoaded();
325 return EGL_CreateImage(dpy, ctx, target, buffer, attrib_list);
326 }
327
eglCreatePlatformPixmapSurface(EGLDisplay dpy,EGLConfig config,void * native_pixmap,const EGLAttrib * attrib_list)328 EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface(EGLDisplay dpy,
329 EGLConfig config,
330 void *native_pixmap,
331 const EGLAttrib *attrib_list)
332 {
333 EnsureEGLLoaded();
334 return EGL_CreatePlatformPixmapSurface(dpy, config, native_pixmap, attrib_list);
335 }
336
eglCreatePlatformWindowSurface(EGLDisplay dpy,EGLConfig config,void * native_window,const EGLAttrib * attrib_list)337 EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface(EGLDisplay dpy,
338 EGLConfig config,
339 void *native_window,
340 const EGLAttrib *attrib_list)
341 {
342 EnsureEGLLoaded();
343 return EGL_CreatePlatformWindowSurface(dpy, config, native_window, attrib_list);
344 }
345
eglCreateSync(EGLDisplay dpy,EGLenum type,const EGLAttrib * attrib_list)346 EGLSync EGLAPIENTRY eglCreateSync(EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list)
347 {
348 EnsureEGLLoaded();
349 return EGL_CreateSync(dpy, type, attrib_list);
350 }
351
eglDestroyImage(EGLDisplay dpy,EGLImage image)352 EGLBoolean EGLAPIENTRY eglDestroyImage(EGLDisplay dpy, EGLImage image)
353 {
354 EnsureEGLLoaded();
355 return EGL_DestroyImage(dpy, image);
356 }
357
eglDestroySync(EGLDisplay dpy,EGLSync sync)358 EGLBoolean EGLAPIENTRY eglDestroySync(EGLDisplay dpy, EGLSync sync)
359 {
360 EnsureEGLLoaded();
361 return EGL_DestroySync(dpy, sync);
362 }
363
eglGetPlatformDisplay(EGLenum platform,void * native_display,const EGLAttrib * attrib_list)364 EGLDisplay EGLAPIENTRY eglGetPlatformDisplay(EGLenum platform,
365 void *native_display,
366 const EGLAttrib *attrib_list)
367 {
368 EnsureEGLLoaded();
369 return EGL_GetPlatformDisplay(platform, native_display, attrib_list);
370 }
371
eglGetSyncAttrib(EGLDisplay dpy,EGLSync sync,EGLint attribute,EGLAttrib * value)372 EGLBoolean EGLAPIENTRY eglGetSyncAttrib(EGLDisplay dpy,
373 EGLSync sync,
374 EGLint attribute,
375 EGLAttrib *value)
376 {
377 EnsureEGLLoaded();
378 return EGL_GetSyncAttrib(dpy, sync, attribute, value);
379 }
380
eglWaitSync(EGLDisplay dpy,EGLSync sync,EGLint flags)381 EGLBoolean EGLAPIENTRY eglWaitSync(EGLDisplay dpy, EGLSync sync, EGLint flags)
382 {
383 EnsureEGLLoaded();
384 return EGL_WaitSync(dpy, sync, flags);
385 }
386
387 // EGL_ANDROID_blob_cache
eglSetBlobCacheFuncsANDROID(EGLDisplay dpy,EGLSetBlobFuncANDROID set,EGLGetBlobFuncANDROID get)388 void EGLAPIENTRY eglSetBlobCacheFuncsANDROID(EGLDisplay dpy,
389 EGLSetBlobFuncANDROID set,
390 EGLGetBlobFuncANDROID get)
391 {
392 EnsureEGLLoaded();
393 return EGL_SetBlobCacheFuncsANDROID(dpy, set, get);
394 }
395
396 // EGL_ANDROID_create_native_client_buffer
eglCreateNativeClientBufferANDROID(const EGLint * attrib_list)397 EGLClientBuffer EGLAPIENTRY eglCreateNativeClientBufferANDROID(const EGLint *attrib_list)
398 {
399 EnsureEGLLoaded();
400 return EGL_CreateNativeClientBufferANDROID(attrib_list);
401 }
402
403 // EGL_ANDROID_get_frame_timestamps
eglGetCompositorTimingSupportedANDROID(EGLDisplay dpy,EGLSurface surface,EGLint name)404 EGLBoolean EGLAPIENTRY eglGetCompositorTimingSupportedANDROID(EGLDisplay dpy,
405 EGLSurface surface,
406 EGLint name)
407 {
408 EnsureEGLLoaded();
409 return EGL_GetCompositorTimingSupportedANDROID(dpy, surface, name);
410 }
411
eglGetCompositorTimingANDROID(EGLDisplay dpy,EGLSurface surface,EGLint numTimestamps,const EGLint * names,EGLnsecsANDROID * values)412 EGLBoolean EGLAPIENTRY eglGetCompositorTimingANDROID(EGLDisplay dpy,
413 EGLSurface surface,
414 EGLint numTimestamps,
415 const EGLint *names,
416 EGLnsecsANDROID *values)
417 {
418 EnsureEGLLoaded();
419 return EGL_GetCompositorTimingANDROID(dpy, surface, numTimestamps, names, values);
420 }
421
eglGetNextFrameIdANDROID(EGLDisplay dpy,EGLSurface surface,EGLuint64KHR * frameId)422 EGLBoolean EGLAPIENTRY eglGetNextFrameIdANDROID(EGLDisplay dpy,
423 EGLSurface surface,
424 EGLuint64KHR *frameId)
425 {
426 EnsureEGLLoaded();
427 return EGL_GetNextFrameIdANDROID(dpy, surface, frameId);
428 }
429
eglGetFrameTimestampSupportedANDROID(EGLDisplay dpy,EGLSurface surface,EGLint timestamp)430 EGLBoolean EGLAPIENTRY eglGetFrameTimestampSupportedANDROID(EGLDisplay dpy,
431 EGLSurface surface,
432 EGLint timestamp)
433 {
434 EnsureEGLLoaded();
435 return EGL_GetFrameTimestampSupportedANDROID(dpy, surface, timestamp);
436 }
437
eglGetFrameTimestampsANDROID(EGLDisplay dpy,EGLSurface surface,EGLuint64KHR frameId,EGLint numTimestamps,const EGLint * timestamps,EGLnsecsANDROID * values)438 EGLBoolean EGLAPIENTRY eglGetFrameTimestampsANDROID(EGLDisplay dpy,
439 EGLSurface surface,
440 EGLuint64KHR frameId,
441 EGLint numTimestamps,
442 const EGLint *timestamps,
443 EGLnsecsANDROID *values)
444 {
445 EnsureEGLLoaded();
446 return EGL_GetFrameTimestampsANDROID(dpy, surface, frameId, numTimestamps, timestamps, values);
447 }
448
449 // EGL_ANDROID_get_native_client_buffer
eglGetNativeClientBufferANDROID(const struct AHardwareBuffer * buffer)450 EGLClientBuffer EGLAPIENTRY eglGetNativeClientBufferANDROID(const struct AHardwareBuffer *buffer)
451 {
452 EnsureEGLLoaded();
453 return EGL_GetNativeClientBufferANDROID(buffer);
454 }
455
456 // EGL_ANDROID_native_fence_sync
eglDupNativeFenceFDANDROID(EGLDisplay dpy,EGLSyncKHR sync)457 EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID(EGLDisplay dpy, EGLSyncKHR sync)
458 {
459 EnsureEGLLoaded();
460 return EGL_DupNativeFenceFDANDROID(dpy, sync);
461 }
462
463 // EGL_ANDROID_presentation_time
eglPresentationTimeANDROID(EGLDisplay dpy,EGLSurface surface,EGLnsecsANDROID time)464 EGLBoolean EGLAPIENTRY eglPresentationTimeANDROID(EGLDisplay dpy,
465 EGLSurface surface,
466 EGLnsecsANDROID time)
467 {
468 EnsureEGLLoaded();
469 return EGL_PresentationTimeANDROID(dpy, surface, time);
470 }
471
472 // EGL_ANGLE_device_creation
eglCreateDeviceANGLE(EGLint device_type,void * native_device,const EGLAttrib * attrib_list)473 EGLDeviceEXT EGLAPIENTRY eglCreateDeviceANGLE(EGLint device_type,
474 void *native_device,
475 const EGLAttrib *attrib_list)
476 {
477 EnsureEGLLoaded();
478 return EGL_CreateDeviceANGLE(device_type, native_device, attrib_list);
479 }
480
eglReleaseDeviceANGLE(EGLDeviceEXT device)481 EGLBoolean EGLAPIENTRY eglReleaseDeviceANGLE(EGLDeviceEXT device)
482 {
483 EnsureEGLLoaded();
484 return EGL_ReleaseDeviceANGLE(device);
485 }
486
487 // EGL_ANGLE_feature_control
eglQueryStringiANGLE(EGLDisplay dpy,EGLint name,EGLint index)488 const char *EGLAPIENTRY eglQueryStringiANGLE(EGLDisplay dpy, EGLint name, EGLint index)
489 {
490 EnsureEGLLoaded();
491 return EGL_QueryStringiANGLE(dpy, name, index);
492 }
493
eglQueryDisplayAttribANGLE(EGLDisplay dpy,EGLint attribute,EGLAttrib * value)494 EGLBoolean EGLAPIENTRY eglQueryDisplayAttribANGLE(EGLDisplay dpy,
495 EGLint attribute,
496 EGLAttrib *value)
497 {
498 EnsureEGLLoaded();
499 return EGL_QueryDisplayAttribANGLE(dpy, attribute, value);
500 }
501
502 // EGL_ANGLE_power_preference
eglReleaseHighPowerGPUANGLE(EGLDisplay dpy,EGLContext ctx)503 void EGLAPIENTRY eglReleaseHighPowerGPUANGLE(EGLDisplay dpy, EGLContext ctx)
504 {
505 EnsureEGLLoaded();
506 return EGL_ReleaseHighPowerGPUANGLE(dpy, ctx);
507 }
508
eglReacquireHighPowerGPUANGLE(EGLDisplay dpy,EGLContext ctx)509 void EGLAPIENTRY eglReacquireHighPowerGPUANGLE(EGLDisplay dpy, EGLContext ctx)
510 {
511 EnsureEGLLoaded();
512 return EGL_ReacquireHighPowerGPUANGLE(dpy, ctx);
513 }
514
eglHandleGPUSwitchANGLE(EGLDisplay dpy)515 void EGLAPIENTRY eglHandleGPUSwitchANGLE(EGLDisplay dpy)
516 {
517 EnsureEGLLoaded();
518 return EGL_HandleGPUSwitchANGLE(dpy);
519 }
520
521 // EGL_ANGLE_program_cache_control
eglProgramCacheGetAttribANGLE(EGLDisplay dpy,EGLenum attrib)522 EGLint EGLAPIENTRY eglProgramCacheGetAttribANGLE(EGLDisplay dpy, EGLenum attrib)
523 {
524 EnsureEGLLoaded();
525 return EGL_ProgramCacheGetAttribANGLE(dpy, attrib);
526 }
527
eglProgramCacheQueryANGLE(EGLDisplay dpy,EGLint index,void * key,EGLint * keysize,void * binary,EGLint * binarysize)528 void EGLAPIENTRY eglProgramCacheQueryANGLE(EGLDisplay dpy,
529 EGLint index,
530 void *key,
531 EGLint *keysize,
532 void *binary,
533 EGLint *binarysize)
534 {
535 EnsureEGLLoaded();
536 return EGL_ProgramCacheQueryANGLE(dpy, index, key, keysize, binary, binarysize);
537 }
538
eglProgramCachePopulateANGLE(EGLDisplay dpy,const void * key,EGLint keysize,const void * binary,EGLint binarysize)539 void EGLAPIENTRY eglProgramCachePopulateANGLE(EGLDisplay dpy,
540 const void *key,
541 EGLint keysize,
542 const void *binary,
543 EGLint binarysize)
544 {
545 EnsureEGLLoaded();
546 return EGL_ProgramCachePopulateANGLE(dpy, key, keysize, binary, binarysize);
547 }
548
eglProgramCacheResizeANGLE(EGLDisplay dpy,EGLint limit,EGLint mode)549 EGLint EGLAPIENTRY eglProgramCacheResizeANGLE(EGLDisplay dpy, EGLint limit, EGLint mode)
550 {
551 EnsureEGLLoaded();
552 return EGL_ProgramCacheResizeANGLE(dpy, limit, mode);
553 }
554
555 // EGL_ANGLE_query_surface_pointer
eglQuerySurfacePointerANGLE(EGLDisplay dpy,EGLSurface surface,EGLint attribute,void ** value)556 EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE(EGLDisplay dpy,
557 EGLSurface surface,
558 EGLint attribute,
559 void **value)
560 {
561 EnsureEGLLoaded();
562 return EGL_QuerySurfacePointerANGLE(dpy, surface, attribute, value);
563 }
564
565 // EGL_ANGLE_stream_producer_d3d_texture
eglCreateStreamProducerD3DTextureANGLE(EGLDisplay dpy,EGLStreamKHR stream,const EGLAttrib * attrib_list)566 EGLBoolean EGLAPIENTRY eglCreateStreamProducerD3DTextureANGLE(EGLDisplay dpy,
567 EGLStreamKHR stream,
568 const EGLAttrib *attrib_list)
569 {
570 EnsureEGLLoaded();
571 return EGL_CreateStreamProducerD3DTextureANGLE(dpy, stream, attrib_list);
572 }
573
eglStreamPostD3DTextureANGLE(EGLDisplay dpy,EGLStreamKHR stream,void * texture,const EGLAttrib * attrib_list)574 EGLBoolean EGLAPIENTRY eglStreamPostD3DTextureANGLE(EGLDisplay dpy,
575 EGLStreamKHR stream,
576 void *texture,
577 const EGLAttrib *attrib_list)
578 {
579 EnsureEGLLoaded();
580 return EGL_StreamPostD3DTextureANGLE(dpy, stream, texture, attrib_list);
581 }
582
583 // EGL_ANGLE_swap_with_frame_token
eglSwapBuffersWithFrameTokenANGLE(EGLDisplay dpy,EGLSurface surface,EGLFrameTokenANGLE frametoken)584 EGLBoolean EGLAPIENTRY eglSwapBuffersWithFrameTokenANGLE(EGLDisplay dpy,
585 EGLSurface surface,
586 EGLFrameTokenANGLE frametoken)
587 {
588 EnsureEGLLoaded();
589 return EGL_SwapBuffersWithFrameTokenANGLE(dpy, surface, frametoken);
590 }
591
592 // EGL_ANGLE_sync_control_rate
eglGetMscRateANGLE(EGLDisplay dpy,EGLSurface surface,EGLint * numerator,EGLint * denominator)593 EGLBoolean EGLAPIENTRY eglGetMscRateANGLE(EGLDisplay dpy,
594 EGLSurface surface,
595 EGLint *numerator,
596 EGLint *denominator)
597 {
598 EnsureEGLLoaded();
599 return EGL_GetMscRateANGLE(dpy, surface, numerator, denominator);
600 }
601
602 // EGL_CHROMIUM_sync_control
eglGetSyncValuesCHROMIUM(EGLDisplay dpy,EGLSurface surface,EGLuint64KHR * ust,EGLuint64KHR * msc,EGLuint64KHR * sbc)603 EGLBoolean EGLAPIENTRY eglGetSyncValuesCHROMIUM(EGLDisplay dpy,
604 EGLSurface surface,
605 EGLuint64KHR *ust,
606 EGLuint64KHR *msc,
607 EGLuint64KHR *sbc)
608 {
609 EnsureEGLLoaded();
610 return EGL_GetSyncValuesCHROMIUM(dpy, surface, ust, msc, sbc);
611 }
612
613 // EGL_EXT_device_query
eglQueryDeviceAttribEXT(EGLDeviceEXT device,EGLint attribute,EGLAttrib * value)614 EGLBoolean EGLAPIENTRY eglQueryDeviceAttribEXT(EGLDeviceEXT device,
615 EGLint attribute,
616 EGLAttrib *value)
617 {
618 EnsureEGLLoaded();
619 return EGL_QueryDeviceAttribEXT(device, attribute, value);
620 }
621
eglQueryDeviceStringEXT(EGLDeviceEXT device,EGLint name)622 const char *EGLAPIENTRY eglQueryDeviceStringEXT(EGLDeviceEXT device, EGLint name)
623 {
624 EnsureEGLLoaded();
625 return EGL_QueryDeviceStringEXT(device, name);
626 }
627
eglQueryDisplayAttribEXT(EGLDisplay dpy,EGLint attribute,EGLAttrib * value)628 EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT(EGLDisplay dpy, EGLint attribute, EGLAttrib *value)
629 {
630 EnsureEGLLoaded();
631 return EGL_QueryDisplayAttribEXT(dpy, attribute, value);
632 }
633
634 // EGL_EXT_platform_base
eglCreatePlatformPixmapSurfaceEXT(EGLDisplay dpy,EGLConfig config,void * native_pixmap,const EGLint * attrib_list)635 EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT(EGLDisplay dpy,
636 EGLConfig config,
637 void *native_pixmap,
638 const EGLint *attrib_list)
639 {
640 EnsureEGLLoaded();
641 return EGL_CreatePlatformPixmapSurfaceEXT(dpy, config, native_pixmap, attrib_list);
642 }
643
eglCreatePlatformWindowSurfaceEXT(EGLDisplay dpy,EGLConfig config,void * native_window,const EGLint * attrib_list)644 EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT(EGLDisplay dpy,
645 EGLConfig config,
646 void *native_window,
647 const EGLint *attrib_list)
648 {
649 EnsureEGLLoaded();
650 return EGL_CreatePlatformWindowSurfaceEXT(dpy, config, native_window, attrib_list);
651 }
652
eglGetPlatformDisplayEXT(EGLenum platform,void * native_display,const EGLint * attrib_list)653 EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT(EGLenum platform,
654 void *native_display,
655 const EGLint *attrib_list)
656 {
657 EnsureEGLLoaded();
658 return EGL_GetPlatformDisplayEXT(platform, native_display, attrib_list);
659 }
660
661 // EGL_KHR_debug
eglDebugMessageControlKHR(EGLDEBUGPROCKHR callback,const EGLAttrib * attrib_list)662 EGLint EGLAPIENTRY eglDebugMessageControlKHR(EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list)
663 {
664 EnsureEGLLoaded();
665 return EGL_DebugMessageControlKHR(callback, attrib_list);
666 }
667
eglLabelObjectKHR(EGLDisplay display,EGLenum objectType,EGLObjectKHR object,EGLLabelKHR label)668 EGLint EGLAPIENTRY eglLabelObjectKHR(EGLDisplay display,
669 EGLenum objectType,
670 EGLObjectKHR object,
671 EGLLabelKHR label)
672 {
673 EnsureEGLLoaded();
674 return EGL_LabelObjectKHR(display, objectType, object, label);
675 }
676
eglQueryDebugKHR(EGLint attribute,EGLAttrib * value)677 EGLBoolean EGLAPIENTRY eglQueryDebugKHR(EGLint attribute, EGLAttrib *value)
678 {
679 EnsureEGLLoaded();
680 return EGL_QueryDebugKHR(attribute, value);
681 }
682
683 // EGL_KHR_fence_sync
eglClientWaitSyncKHR(EGLDisplay dpy,EGLSyncKHR sync,EGLint flags,EGLTimeKHR timeout)684 EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy,
685 EGLSyncKHR sync,
686 EGLint flags,
687 EGLTimeKHR timeout)
688 {
689 EnsureEGLLoaded();
690 return EGL_ClientWaitSyncKHR(dpy, sync, flags, timeout);
691 }
692
eglCreateSyncKHR(EGLDisplay dpy,EGLenum type,const EGLint * attrib_list)693 EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
694 {
695 EnsureEGLLoaded();
696 return EGL_CreateSyncKHR(dpy, type, attrib_list);
697 }
698
eglDestroySyncKHR(EGLDisplay dpy,EGLSyncKHR sync)699 EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync)
700 {
701 EnsureEGLLoaded();
702 return EGL_DestroySyncKHR(dpy, sync);
703 }
704
eglGetSyncAttribKHR(EGLDisplay dpy,EGLSyncKHR sync,EGLint attribute,EGLint * value)705 EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy,
706 EGLSyncKHR sync,
707 EGLint attribute,
708 EGLint *value)
709 {
710 EnsureEGLLoaded();
711 return EGL_GetSyncAttribKHR(dpy, sync, attribute, value);
712 }
713
714 // EGL_KHR_image
eglCreateImageKHR(EGLDisplay dpy,EGLContext ctx,EGLenum target,EGLClientBuffer buffer,const EGLint * attrib_list)715 EGLImageKHR EGLAPIENTRY eglCreateImageKHR(EGLDisplay dpy,
716 EGLContext ctx,
717 EGLenum target,
718 EGLClientBuffer buffer,
719 const EGLint *attrib_list)
720 {
721 EnsureEGLLoaded();
722 return EGL_CreateImageKHR(dpy, ctx, target, buffer, attrib_list);
723 }
724
eglDestroyImageKHR(EGLDisplay dpy,EGLImageKHR image)725 EGLBoolean EGLAPIENTRY eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image)
726 {
727 EnsureEGLLoaded();
728 return EGL_DestroyImageKHR(dpy, image);
729 }
730
731 // EGL_KHR_reusable_sync
eglSignalSyncKHR(EGLDisplay dpy,EGLSyncKHR sync,EGLenum mode)732 EGLBoolean EGLAPIENTRY eglSignalSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode)
733 {
734 EnsureEGLLoaded();
735 return EGL_SignalSyncKHR(dpy, sync, mode);
736 }
737
738 // EGL_KHR_stream
eglCreateStreamKHR(EGLDisplay dpy,const EGLint * attrib_list)739 EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR(EGLDisplay dpy, const EGLint *attrib_list)
740 {
741 EnsureEGLLoaded();
742 return EGL_CreateStreamKHR(dpy, attrib_list);
743 }
744
eglDestroyStreamKHR(EGLDisplay dpy,EGLStreamKHR stream)745 EGLBoolean EGLAPIENTRY eglDestroyStreamKHR(EGLDisplay dpy, EGLStreamKHR stream)
746 {
747 EnsureEGLLoaded();
748 return EGL_DestroyStreamKHR(dpy, stream);
749 }
750
eglQueryStreamKHR(EGLDisplay dpy,EGLStreamKHR stream,EGLenum attribute,EGLint * value)751 EGLBoolean EGLAPIENTRY eglQueryStreamKHR(EGLDisplay dpy,
752 EGLStreamKHR stream,
753 EGLenum attribute,
754 EGLint *value)
755 {
756 EnsureEGLLoaded();
757 return EGL_QueryStreamKHR(dpy, stream, attribute, value);
758 }
759
eglQueryStreamu64KHR(EGLDisplay dpy,EGLStreamKHR stream,EGLenum attribute,EGLuint64KHR * value)760 EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR(EGLDisplay dpy,
761 EGLStreamKHR stream,
762 EGLenum attribute,
763 EGLuint64KHR *value)
764 {
765 EnsureEGLLoaded();
766 return EGL_QueryStreamu64KHR(dpy, stream, attribute, value);
767 }
768
eglStreamAttribKHR(EGLDisplay dpy,EGLStreamKHR stream,EGLenum attribute,EGLint value)769 EGLBoolean EGLAPIENTRY eglStreamAttribKHR(EGLDisplay dpy,
770 EGLStreamKHR stream,
771 EGLenum attribute,
772 EGLint value)
773 {
774 EnsureEGLLoaded();
775 return EGL_StreamAttribKHR(dpy, stream, attribute, value);
776 }
777
778 // EGL_KHR_stream_consumer_gltexture
eglStreamConsumerAcquireKHR(EGLDisplay dpy,EGLStreamKHR stream)779 EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR(EGLDisplay dpy, EGLStreamKHR stream)
780 {
781 EnsureEGLLoaded();
782 return EGL_StreamConsumerAcquireKHR(dpy, stream);
783 }
784
eglStreamConsumerGLTextureExternalKHR(EGLDisplay dpy,EGLStreamKHR stream)785 EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR(EGLDisplay dpy, EGLStreamKHR stream)
786 {
787 EnsureEGLLoaded();
788 return EGL_StreamConsumerGLTextureExternalKHR(dpy, stream);
789 }
790
eglStreamConsumerReleaseKHR(EGLDisplay dpy,EGLStreamKHR stream)791 EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR(EGLDisplay dpy, EGLStreamKHR stream)
792 {
793 EnsureEGLLoaded();
794 return EGL_StreamConsumerReleaseKHR(dpy, stream);
795 }
796
797 // EGL_KHR_swap_buffers_with_damage
eglSwapBuffersWithDamageKHR(EGLDisplay dpy,EGLSurface surface,const EGLint * rects,EGLint n_rects)798 EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageKHR(EGLDisplay dpy,
799 EGLSurface surface,
800 const EGLint *rects,
801 EGLint n_rects)
802 {
803 EnsureEGLLoaded();
804 return EGL_SwapBuffersWithDamageKHR(dpy, surface, rects, n_rects);
805 }
806
807 // EGL_KHR_wait_sync
eglWaitSyncKHR(EGLDisplay dpy,EGLSyncKHR sync,EGLint flags)808 EGLint EGLAPIENTRY eglWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags)
809 {
810 EnsureEGLLoaded();
811 return EGL_WaitSyncKHR(dpy, sync, flags);
812 }
813
814 // EGL_NV_post_sub_buffer
eglPostSubBufferNV(EGLDisplay dpy,EGLSurface surface,EGLint x,EGLint y,EGLint width,EGLint height)815 EGLBoolean EGLAPIENTRY eglPostSubBufferNV(EGLDisplay dpy,
816 EGLSurface surface,
817 EGLint x,
818 EGLint y,
819 EGLint width,
820 EGLint height)
821 {
822 EnsureEGLLoaded();
823 return EGL_PostSubBufferNV(dpy, surface, x, y, width, height);
824 }
825
826 // EGL_NV_stream_consumer_gltexture_yuv
eglStreamConsumerGLTextureExternalAttribsNV(EGLDisplay dpy,EGLStreamKHR stream,const EGLAttrib * attrib_list)827 EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalAttribsNV(EGLDisplay dpy,
828 EGLStreamKHR stream,
829 const EGLAttrib *attrib_list)
830 {
831 EnsureEGLLoaded();
832 return EGL_StreamConsumerGLTextureExternalAttribsNV(dpy, stream, attrib_list);
833 }
834
835 } // extern "C"
836