1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // This file is auto-generated from
6 // ui/gl/generate_bindings.py
7 // It's formatted by clang-format using chromium coding style:
8 // clang-format -i -style=chromium filename
13 #include "base/trace_event/trace_event.h"
14 #include "ui/gl/gl_bindings.h"
15 #include "ui/gl/gl_context.h"
16 #include "ui/gl/gl_egl_api_implementation.h"
17 #include "ui/gl/gl_enums.h"
18 #include "ui/gl/gl_implementation.h"
19 #include "ui/gl/gl_version_info.h"
23 static bool g_debugBindingsInitialized
;
24 DriverEGL g_driver_egl
;
26 void DriverEGL::InitializeStaticBindings() {
28 reinterpret_cast<eglBindAPIProc
>(GetGLProcAddress("eglBindAPI"));
29 fn
.eglBindTexImageFn
= reinterpret_cast<eglBindTexImageProc
>(
30 GetGLProcAddress("eglBindTexImage"));
31 fn
.eglChooseConfigFn
= reinterpret_cast<eglChooseConfigProc
>(
32 GetGLProcAddress("eglChooseConfig"));
33 fn
.eglClientWaitSyncKHRFn
= reinterpret_cast<eglClientWaitSyncKHRProc
>(
34 GetGLProcAddress("eglClientWaitSyncKHR"));
36 reinterpret_cast<eglCopyBuffersProc
>(GetGLProcAddress("eglCopyBuffers"));
37 fn
.eglCreateContextFn
= reinterpret_cast<eglCreateContextProc
>(
38 GetGLProcAddress("eglCreateContext"));
39 fn
.eglCreateImageKHRFn
= 0;
40 fn
.eglCreatePbufferFromClientBufferFn
=
41 reinterpret_cast<eglCreatePbufferFromClientBufferProc
>(
42 GetGLProcAddress("eglCreatePbufferFromClientBuffer"));
43 fn
.eglCreatePbufferSurfaceFn
= reinterpret_cast<eglCreatePbufferSurfaceProc
>(
44 GetGLProcAddress("eglCreatePbufferSurface"));
45 fn
.eglCreatePixmapSurfaceFn
= reinterpret_cast<eglCreatePixmapSurfaceProc
>(
46 GetGLProcAddress("eglCreatePixmapSurface"));
47 fn
.eglCreateSyncKHRFn
= reinterpret_cast<eglCreateSyncKHRProc
>(
48 GetGLProcAddress("eglCreateSyncKHR"));
49 fn
.eglCreateWindowSurfaceFn
= reinterpret_cast<eglCreateWindowSurfaceProc
>(
50 GetGLProcAddress("eglCreateWindowSurface"));
51 fn
.eglDestroyContextFn
= reinterpret_cast<eglDestroyContextProc
>(
52 GetGLProcAddress("eglDestroyContext"));
53 fn
.eglDestroyImageKHRFn
= 0;
54 fn
.eglDestroySurfaceFn
= reinterpret_cast<eglDestroySurfaceProc
>(
55 GetGLProcAddress("eglDestroySurface"));
56 fn
.eglDestroySyncKHRFn
= reinterpret_cast<eglDestroySyncKHRProc
>(
57 GetGLProcAddress("eglDestroySyncKHR"));
58 fn
.eglGetConfigAttribFn
= reinterpret_cast<eglGetConfigAttribProc
>(
59 GetGLProcAddress("eglGetConfigAttrib"));
61 reinterpret_cast<eglGetConfigsProc
>(GetGLProcAddress("eglGetConfigs"));
62 fn
.eglGetCurrentContextFn
= reinterpret_cast<eglGetCurrentContextProc
>(
63 GetGLProcAddress("eglGetCurrentContext"));
64 fn
.eglGetCurrentDisplayFn
= reinterpret_cast<eglGetCurrentDisplayProc
>(
65 GetGLProcAddress("eglGetCurrentDisplay"));
66 fn
.eglGetCurrentSurfaceFn
= reinterpret_cast<eglGetCurrentSurfaceProc
>(
67 GetGLProcAddress("eglGetCurrentSurface"));
69 reinterpret_cast<eglGetDisplayProc
>(GetGLProcAddress("eglGetDisplay"));
71 reinterpret_cast<eglGetErrorProc
>(GetGLProcAddress("eglGetError"));
72 fn
.eglGetPlatformDisplayEXTFn
= 0;
73 fn
.eglGetProcAddressFn
= reinterpret_cast<eglGetProcAddressProc
>(
74 GetGLProcAddress("eglGetProcAddress"));
75 fn
.eglGetSyncAttribKHRFn
= reinterpret_cast<eglGetSyncAttribKHRProc
>(
76 GetGLProcAddress("eglGetSyncAttribKHR"));
77 fn
.eglGetSyncValuesCHROMIUMFn
= 0;
79 reinterpret_cast<eglInitializeProc
>(GetGLProcAddress("eglInitialize"));
81 reinterpret_cast<eglMakeCurrentProc
>(GetGLProcAddress("eglMakeCurrent"));
82 fn
.eglPostSubBufferNVFn
= 0;
84 reinterpret_cast<eglQueryAPIProc
>(GetGLProcAddress("eglQueryAPI"));
85 fn
.eglQueryContextFn
= reinterpret_cast<eglQueryContextProc
>(
86 GetGLProcAddress("eglQueryContext"));
88 reinterpret_cast<eglQueryStringProc
>(GetGLProcAddress("eglQueryString"));
89 fn
.eglQuerySurfaceFn
= reinterpret_cast<eglQuerySurfaceProc
>(
90 GetGLProcAddress("eglQuerySurface"));
91 fn
.eglQuerySurfacePointerANGLEFn
= 0;
92 fn
.eglReleaseTexImageFn
= reinterpret_cast<eglReleaseTexImageProc
>(
93 GetGLProcAddress("eglReleaseTexImage"));
94 fn
.eglReleaseThreadFn
= reinterpret_cast<eglReleaseThreadProc
>(
95 GetGLProcAddress("eglReleaseThread"));
96 fn
.eglSurfaceAttribFn
= reinterpret_cast<eglSurfaceAttribProc
>(
97 GetGLProcAddress("eglSurfaceAttrib"));
99 reinterpret_cast<eglSwapBuffersProc
>(GetGLProcAddress("eglSwapBuffers"));
100 fn
.eglSwapIntervalFn
= reinterpret_cast<eglSwapIntervalProc
>(
101 GetGLProcAddress("eglSwapInterval"));
103 reinterpret_cast<eglTerminateProc
>(GetGLProcAddress("eglTerminate"));
105 reinterpret_cast<eglWaitClientProc
>(GetGLProcAddress("eglWaitClient"));
107 reinterpret_cast<eglWaitGLProc
>(GetGLProcAddress("eglWaitGL"));
109 reinterpret_cast<eglWaitNativeProc
>(GetGLProcAddress("eglWaitNative"));
110 fn
.eglWaitSyncKHRFn
= 0;
113 void DriverEGL::InitializeExtensionBindings() {
114 std::string
client_extensions(GetClientExtensions());
115 client_extensions
+= " ";
116 ALLOW_UNUSED_LOCAL(client_extensions
);
118 ext
.b_EGL_EXT_platform_base
=
119 client_extensions
.find("EGL_EXT_platform_base ") != std::string::npos
;
121 debug_fn
.eglGetPlatformDisplayEXTFn
= 0;
122 if (ext
.b_EGL_EXT_platform_base
) {
123 fn
.eglGetPlatformDisplayEXTFn
=
124 reinterpret_cast<eglGetPlatformDisplayEXTProc
>(
125 GetGLProcAddress("eglGetPlatformDisplayEXT"));
126 DCHECK(fn
.eglGetPlatformDisplayEXTFn
);
128 std::string
extensions(GetPlatformExtensions());
130 ALLOW_UNUSED_LOCAL(extensions
);
132 ext
.b_EGL_ANGLE_d3d_share_handle_client_buffer
=
133 extensions
.find("EGL_ANGLE_d3d_share_handle_client_buffer ") !=
135 ext
.b_EGL_ANGLE_query_surface_pointer
=
136 extensions
.find("EGL_ANGLE_query_surface_pointer ") != std::string::npos
;
137 ext
.b_EGL_ANGLE_surface_d3d_texture_2d_share_handle
=
138 extensions
.find("EGL_ANGLE_surface_d3d_texture_2d_share_handle ") !=
140 ext
.b_EGL_CHROMIUM_sync_control
=
141 extensions
.find("EGL_CHROMIUM_sync_control ") != std::string::npos
;
142 ext
.b_EGL_KHR_fence_sync
=
143 extensions
.find("EGL_KHR_fence_sync ") != std::string::npos
;
144 ext
.b_EGL_KHR_gl_texture_2D_image
=
145 extensions
.find("EGL_KHR_gl_texture_2D_image ") != std::string::npos
;
146 ext
.b_EGL_KHR_image
= extensions
.find("EGL_KHR_image ") != std::string::npos
;
147 ext
.b_EGL_KHR_image_base
=
148 extensions
.find("EGL_KHR_image_base ") != std::string::npos
;
149 ext
.b_EGL_KHR_reusable_sync
=
150 extensions
.find("EGL_KHR_reusable_sync ") != std::string::npos
;
151 ext
.b_EGL_KHR_wait_sync
=
152 extensions
.find("EGL_KHR_wait_sync ") != std::string::npos
;
153 ext
.b_EGL_NV_post_sub_buffer
=
154 extensions
.find("EGL_NV_post_sub_buffer ") != std::string::npos
;
155 ext
.b_GL_CHROMIUM_egl_khr_fence_sync_hack
=
156 extensions
.find("GL_CHROMIUM_egl_khr_fence_sync_hack ") !=
159 debug_fn
.eglCreateImageKHRFn
= 0;
160 if (ext
.b_EGL_KHR_image
|| ext
.b_EGL_KHR_image_base
||
161 ext
.b_EGL_KHR_gl_texture_2D_image
) {
162 fn
.eglCreateImageKHRFn
= reinterpret_cast<eglCreateImageKHRProc
>(
163 GetGLProcAddress("eglCreateImageKHR"));
164 DCHECK(fn
.eglCreateImageKHRFn
);
167 debug_fn
.eglDestroyImageKHRFn
= 0;
168 if (ext
.b_EGL_KHR_image
|| ext
.b_EGL_KHR_image_base
) {
169 fn
.eglDestroyImageKHRFn
= reinterpret_cast<eglDestroyImageKHRProc
>(
170 GetGLProcAddress("eglDestroyImageKHR"));
171 DCHECK(fn
.eglDestroyImageKHRFn
);
174 debug_fn
.eglGetSyncValuesCHROMIUMFn
= 0;
175 if (ext
.b_EGL_CHROMIUM_sync_control
) {
176 fn
.eglGetSyncValuesCHROMIUMFn
=
177 reinterpret_cast<eglGetSyncValuesCHROMIUMProc
>(
178 GetGLProcAddress("eglGetSyncValuesCHROMIUM"));
179 DCHECK(fn
.eglGetSyncValuesCHROMIUMFn
);
182 debug_fn
.eglPostSubBufferNVFn
= 0;
183 if (ext
.b_EGL_NV_post_sub_buffer
) {
184 fn
.eglPostSubBufferNVFn
= reinterpret_cast<eglPostSubBufferNVProc
>(
185 GetGLProcAddress("eglPostSubBufferNV"));
186 DCHECK(fn
.eglPostSubBufferNVFn
);
189 debug_fn
.eglQuerySurfacePointerANGLEFn
= 0;
190 if (ext
.b_EGL_ANGLE_query_surface_pointer
) {
191 fn
.eglQuerySurfacePointerANGLEFn
=
192 reinterpret_cast<eglQuerySurfacePointerANGLEProc
>(
193 GetGLProcAddress("eglQuerySurfacePointerANGLE"));
194 DCHECK(fn
.eglQuerySurfacePointerANGLEFn
);
197 debug_fn
.eglWaitSyncKHRFn
= 0;
198 if (ext
.b_EGL_KHR_wait_sync
) {
199 fn
.eglWaitSyncKHRFn
= reinterpret_cast<eglWaitSyncKHRProc
>(
200 GetGLProcAddress("eglWaitSyncKHR"));
201 DCHECK(fn
.eglWaitSyncKHRFn
);
204 if (g_debugBindingsInitialized
)
205 InitializeDebugBindings();
210 static EGLBoolean GL_BINDING_CALL
Debug_eglBindAPI(EGLenum api
) {
211 GL_SERVICE_LOG("eglBindAPI"
212 << "(" << api
<< ")");
213 EGLBoolean result
= g_driver_egl
.debug_fn
.eglBindAPIFn(api
);
214 GL_SERVICE_LOG("GL_RESULT: " << result
);
218 static EGLBoolean GL_BINDING_CALL
219 Debug_eglBindTexImage(EGLDisplay dpy
, EGLSurface surface
, EGLint buffer
) {
220 GL_SERVICE_LOG("eglBindTexImage"
221 << "(" << dpy
<< ", " << surface
<< ", " << buffer
<< ")");
223 g_driver_egl
.debug_fn
.eglBindTexImageFn(dpy
, surface
, buffer
);
224 GL_SERVICE_LOG("GL_RESULT: " << result
);
228 static EGLBoolean GL_BINDING_CALL
229 Debug_eglChooseConfig(EGLDisplay dpy
,
230 const EGLint
* attrib_list
,
233 EGLint
* num_config
) {
234 GL_SERVICE_LOG("eglChooseConfig"
235 << "(" << dpy
<< ", " << static_cast<const void*>(attrib_list
)
236 << ", " << static_cast<const void*>(configs
) << ", "
237 << config_size
<< ", " << static_cast<const void*>(num_config
)
239 EGLBoolean result
= g_driver_egl
.debug_fn
.eglChooseConfigFn(
240 dpy
, attrib_list
, configs
, config_size
, num_config
);
241 GL_SERVICE_LOG("GL_RESULT: " << result
);
245 static EGLint GL_BINDING_CALL
Debug_eglClientWaitSyncKHR(EGLDisplay dpy
,
248 EGLTimeKHR timeout
) {
249 GL_SERVICE_LOG("eglClientWaitSyncKHR"
250 << "(" << dpy
<< ", " << sync
<< ", " << flags
<< ", "
253 g_driver_egl
.debug_fn
.eglClientWaitSyncKHRFn(dpy
, sync
, flags
, timeout
);
254 GL_SERVICE_LOG("GL_RESULT: " << result
);
258 static EGLBoolean GL_BINDING_CALL
259 Debug_eglCopyBuffers(EGLDisplay dpy
,
261 EGLNativePixmapType target
) {
262 GL_SERVICE_LOG("eglCopyBuffers"
263 << "(" << dpy
<< ", " << surface
<< ", " << target
<< ")");
265 g_driver_egl
.debug_fn
.eglCopyBuffersFn(dpy
, surface
, target
);
266 GL_SERVICE_LOG("GL_RESULT: " << result
);
270 static EGLContext GL_BINDING_CALL
271 Debug_eglCreateContext(EGLDisplay dpy
,
273 EGLContext share_context
,
274 const EGLint
* attrib_list
) {
275 GL_SERVICE_LOG("eglCreateContext"
276 << "(" << dpy
<< ", " << config
<< ", " << share_context
277 << ", " << static_cast<const void*>(attrib_list
) << ")");
278 EGLContext result
= g_driver_egl
.debug_fn
.eglCreateContextFn(
279 dpy
, config
, share_context
, attrib_list
);
280 GL_SERVICE_LOG("GL_RESULT: " << result
);
284 static EGLImageKHR GL_BINDING_CALL
285 Debug_eglCreateImageKHR(EGLDisplay dpy
,
288 EGLClientBuffer buffer
,
289 const EGLint
* attrib_list
) {
290 GL_SERVICE_LOG("eglCreateImageKHR"
291 << "(" << dpy
<< ", " << ctx
<< ", " << target
<< ", "
292 << buffer
<< ", " << static_cast<const void*>(attrib_list
)
294 EGLImageKHR result
= g_driver_egl
.debug_fn
.eglCreateImageKHRFn(
295 dpy
, ctx
, target
, buffer
, attrib_list
);
296 GL_SERVICE_LOG("GL_RESULT: " << result
);
300 static EGLSurface GL_BINDING_CALL
301 Debug_eglCreatePbufferFromClientBuffer(EGLDisplay dpy
,
305 const EGLint
* attrib_list
) {
306 GL_SERVICE_LOG("eglCreatePbufferFromClientBuffer"
307 << "(" << dpy
<< ", " << buftype
<< ", "
308 << static_cast<const void*>(buffer
) << ", " << config
<< ", "
309 << static_cast<const void*>(attrib_list
) << ")");
310 EGLSurface result
= g_driver_egl
.debug_fn
.eglCreatePbufferFromClientBufferFn(
311 dpy
, buftype
, buffer
, config
, attrib_list
);
312 GL_SERVICE_LOG("GL_RESULT: " << result
);
316 static EGLSurface GL_BINDING_CALL
317 Debug_eglCreatePbufferSurface(EGLDisplay dpy
,
319 const EGLint
* attrib_list
) {
320 GL_SERVICE_LOG("eglCreatePbufferSurface"
321 << "(" << dpy
<< ", " << config
<< ", "
322 << static_cast<const void*>(attrib_list
) << ")");
324 g_driver_egl
.debug_fn
.eglCreatePbufferSurfaceFn(dpy
, config
, attrib_list
);
325 GL_SERVICE_LOG("GL_RESULT: " << result
);
329 static EGLSurface GL_BINDING_CALL
330 Debug_eglCreatePixmapSurface(EGLDisplay dpy
,
332 EGLNativePixmapType pixmap
,
333 const EGLint
* attrib_list
) {
334 GL_SERVICE_LOG("eglCreatePixmapSurface"
335 << "(" << dpy
<< ", " << config
<< ", " << pixmap
<< ", "
336 << static_cast<const void*>(attrib_list
) << ")");
337 EGLSurface result
= g_driver_egl
.debug_fn
.eglCreatePixmapSurfaceFn(
338 dpy
, config
, pixmap
, attrib_list
);
339 GL_SERVICE_LOG("GL_RESULT: " << result
);
343 static EGLSyncKHR GL_BINDING_CALL
344 Debug_eglCreateSyncKHR(EGLDisplay dpy
,
346 const EGLint
* attrib_list
) {
347 GL_SERVICE_LOG("eglCreateSyncKHR"
348 << "(" << dpy
<< ", " << type
<< ", "
349 << static_cast<const void*>(attrib_list
) << ")");
351 g_driver_egl
.debug_fn
.eglCreateSyncKHRFn(dpy
, type
, attrib_list
);
352 GL_SERVICE_LOG("GL_RESULT: " << result
);
356 static EGLSurface GL_BINDING_CALL
357 Debug_eglCreateWindowSurface(EGLDisplay dpy
,
359 EGLNativeWindowType win
,
360 const EGLint
* attrib_list
) {
361 GL_SERVICE_LOG("eglCreateWindowSurface"
362 << "(" << dpy
<< ", " << config
<< ", " << win
<< ", "
363 << static_cast<const void*>(attrib_list
) << ")");
364 EGLSurface result
= g_driver_egl
.debug_fn
.eglCreateWindowSurfaceFn(
365 dpy
, config
, win
, attrib_list
);
366 GL_SERVICE_LOG("GL_RESULT: " << result
);
370 static EGLBoolean GL_BINDING_CALL
371 Debug_eglDestroyContext(EGLDisplay dpy
, EGLContext ctx
) {
372 GL_SERVICE_LOG("eglDestroyContext"
373 << "(" << dpy
<< ", " << ctx
<< ")");
374 EGLBoolean result
= g_driver_egl
.debug_fn
.eglDestroyContextFn(dpy
, ctx
);
375 GL_SERVICE_LOG("GL_RESULT: " << result
);
379 static EGLBoolean GL_BINDING_CALL
380 Debug_eglDestroyImageKHR(EGLDisplay dpy
, EGLImageKHR image
) {
381 GL_SERVICE_LOG("eglDestroyImageKHR"
382 << "(" << dpy
<< ", " << image
<< ")");
383 EGLBoolean result
= g_driver_egl
.debug_fn
.eglDestroyImageKHRFn(dpy
, image
);
384 GL_SERVICE_LOG("GL_RESULT: " << result
);
388 static EGLBoolean GL_BINDING_CALL
389 Debug_eglDestroySurface(EGLDisplay dpy
, EGLSurface surface
) {
390 GL_SERVICE_LOG("eglDestroySurface"
391 << "(" << dpy
<< ", " << surface
<< ")");
392 EGLBoolean result
= g_driver_egl
.debug_fn
.eglDestroySurfaceFn(dpy
, surface
);
393 GL_SERVICE_LOG("GL_RESULT: " << result
);
397 static EGLBoolean GL_BINDING_CALL
398 Debug_eglDestroySyncKHR(EGLDisplay dpy
, EGLSyncKHR sync
) {
399 GL_SERVICE_LOG("eglDestroySyncKHR"
400 << "(" << dpy
<< ", " << sync
<< ")");
401 EGLBoolean result
= g_driver_egl
.debug_fn
.eglDestroySyncKHRFn(dpy
, sync
);
402 GL_SERVICE_LOG("GL_RESULT: " << result
);
406 static EGLBoolean GL_BINDING_CALL
Debug_eglGetConfigAttrib(EGLDisplay dpy
,
410 GL_SERVICE_LOG("eglGetConfigAttrib"
411 << "(" << dpy
<< ", " << config
<< ", " << attribute
<< ", "
412 << static_cast<const void*>(value
) << ")");
414 g_driver_egl
.debug_fn
.eglGetConfigAttribFn(dpy
, config
, attribute
, value
);
415 GL_SERVICE_LOG("GL_RESULT: " << result
);
419 static EGLBoolean GL_BINDING_CALL
Debug_eglGetConfigs(EGLDisplay dpy
,
422 EGLint
* num_config
) {
423 GL_SERVICE_LOG("eglGetConfigs"
424 << "(" << dpy
<< ", " << static_cast<const void*>(configs
)
425 << ", " << config_size
<< ", "
426 << static_cast<const void*>(num_config
) << ")");
427 EGLBoolean result
= g_driver_egl
.debug_fn
.eglGetConfigsFn(
428 dpy
, configs
, config_size
, num_config
);
429 GL_SERVICE_LOG("GL_RESULT: " << result
);
433 static EGLContext GL_BINDING_CALL
Debug_eglGetCurrentContext(void) {
434 GL_SERVICE_LOG("eglGetCurrentContext"
437 EGLContext result
= g_driver_egl
.debug_fn
.eglGetCurrentContextFn();
438 GL_SERVICE_LOG("GL_RESULT: " << result
);
442 static EGLDisplay GL_BINDING_CALL
Debug_eglGetCurrentDisplay(void) {
443 GL_SERVICE_LOG("eglGetCurrentDisplay"
446 EGLDisplay result
= g_driver_egl
.debug_fn
.eglGetCurrentDisplayFn();
447 GL_SERVICE_LOG("GL_RESULT: " << result
);
451 static EGLSurface GL_BINDING_CALL
Debug_eglGetCurrentSurface(EGLint readdraw
) {
452 GL_SERVICE_LOG("eglGetCurrentSurface"
453 << "(" << readdraw
<< ")");
454 EGLSurface result
= g_driver_egl
.debug_fn
.eglGetCurrentSurfaceFn(readdraw
);
455 GL_SERVICE_LOG("GL_RESULT: " << result
);
459 static EGLDisplay GL_BINDING_CALL
460 Debug_eglGetDisplay(EGLNativeDisplayType display_id
) {
461 GL_SERVICE_LOG("eglGetDisplay"
462 << "(" << display_id
<< ")");
463 EGLDisplay result
= g_driver_egl
.debug_fn
.eglGetDisplayFn(display_id
);
464 GL_SERVICE_LOG("GL_RESULT: " << result
);
468 static EGLint GL_BINDING_CALL
Debug_eglGetError(void) {
469 GL_SERVICE_LOG("eglGetError"
472 EGLint result
= g_driver_egl
.debug_fn
.eglGetErrorFn();
473 GL_SERVICE_LOG("GL_RESULT: " << result
);
477 static EGLDisplay GL_BINDING_CALL
478 Debug_eglGetPlatformDisplayEXT(EGLenum platform
,
479 void* native_display
,
480 const EGLint
* attrib_list
) {
481 GL_SERVICE_LOG("eglGetPlatformDisplayEXT"
482 << "(" << platform
<< ", "
483 << static_cast<const void*>(native_display
) << ", "
484 << static_cast<const void*>(attrib_list
) << ")");
485 EGLDisplay result
= g_driver_egl
.debug_fn
.eglGetPlatformDisplayEXTFn(
486 platform
, native_display
, attrib_list
);
487 GL_SERVICE_LOG("GL_RESULT: " << result
);
491 static __eglMustCastToProperFunctionPointerType GL_BINDING_CALL
492 Debug_eglGetProcAddress(const char* procname
) {
493 GL_SERVICE_LOG("eglGetProcAddress"
494 << "(" << procname
<< ")");
495 __eglMustCastToProperFunctionPointerType result
=
496 g_driver_egl
.debug_fn
.eglGetProcAddressFn(procname
);
497 GL_SERVICE_LOG("GL_RESULT: " << result
);
501 static EGLBoolean GL_BINDING_CALL
Debug_eglGetSyncAttribKHR(EGLDisplay dpy
,
505 GL_SERVICE_LOG("eglGetSyncAttribKHR"
506 << "(" << dpy
<< ", " << sync
<< ", " << attribute
<< ", "
507 << static_cast<const void*>(value
) << ")");
509 g_driver_egl
.debug_fn
.eglGetSyncAttribKHRFn(dpy
, sync
, attribute
, value
);
510 GL_SERVICE_LOG("GL_RESULT: " << result
);
514 static EGLBoolean GL_BINDING_CALL
515 Debug_eglGetSyncValuesCHROMIUM(EGLDisplay dpy
,
517 EGLuint64CHROMIUM
* ust
,
518 EGLuint64CHROMIUM
* msc
,
519 EGLuint64CHROMIUM
* sbc
) {
520 GL_SERVICE_LOG("eglGetSyncValuesCHROMIUM"
521 << "(" << dpy
<< ", " << surface
<< ", "
522 << static_cast<const void*>(ust
) << ", "
523 << static_cast<const void*>(msc
) << ", "
524 << static_cast<const void*>(sbc
) << ")");
525 EGLBoolean result
= g_driver_egl
.debug_fn
.eglGetSyncValuesCHROMIUMFn(
526 dpy
, surface
, ust
, msc
, sbc
);
527 GL_SERVICE_LOG("GL_RESULT: " << result
);
531 static EGLBoolean GL_BINDING_CALL
532 Debug_eglInitialize(EGLDisplay dpy
, EGLint
* major
, EGLint
* minor
) {
533 GL_SERVICE_LOG("eglInitialize"
534 << "(" << dpy
<< ", " << static_cast<const void*>(major
)
535 << ", " << static_cast<const void*>(minor
) << ")");
536 EGLBoolean result
= g_driver_egl
.debug_fn
.eglInitializeFn(dpy
, major
, minor
);
537 GL_SERVICE_LOG("GL_RESULT: " << result
);
541 static EGLBoolean GL_BINDING_CALL
Debug_eglMakeCurrent(EGLDisplay dpy
,
545 GL_SERVICE_LOG("eglMakeCurrent"
546 << "(" << dpy
<< ", " << draw
<< ", " << read
<< ", " << ctx
549 g_driver_egl
.debug_fn
.eglMakeCurrentFn(dpy
, draw
, read
, ctx
);
550 GL_SERVICE_LOG("GL_RESULT: " << result
);
554 static EGLBoolean GL_BINDING_CALL
Debug_eglPostSubBufferNV(EGLDisplay dpy
,
560 GL_SERVICE_LOG("eglPostSubBufferNV"
561 << "(" << dpy
<< ", " << surface
<< ", " << x
<< ", " << y
562 << ", " << width
<< ", " << height
<< ")");
563 EGLBoolean result
= g_driver_egl
.debug_fn
.eglPostSubBufferNVFn(
564 dpy
, surface
, x
, y
, width
, height
);
565 GL_SERVICE_LOG("GL_RESULT: " << result
);
569 static EGLenum GL_BINDING_CALL
Debug_eglQueryAPI(void) {
570 GL_SERVICE_LOG("eglQueryAPI"
573 EGLenum result
= g_driver_egl
.debug_fn
.eglQueryAPIFn();
574 GL_SERVICE_LOG("GL_RESULT: " << result
);
578 static EGLBoolean GL_BINDING_CALL
Debug_eglQueryContext(EGLDisplay dpy
,
582 GL_SERVICE_LOG("eglQueryContext"
583 << "(" << dpy
<< ", " << ctx
<< ", " << attribute
<< ", "
584 << static_cast<const void*>(value
) << ")");
586 g_driver_egl
.debug_fn
.eglQueryContextFn(dpy
, ctx
, attribute
, value
);
587 GL_SERVICE_LOG("GL_RESULT: " << result
);
591 static const char* GL_BINDING_CALL
592 Debug_eglQueryString(EGLDisplay dpy
, EGLint name
) {
593 GL_SERVICE_LOG("eglQueryString"
594 << "(" << dpy
<< ", " << name
<< ")");
595 const char* result
= g_driver_egl
.debug_fn
.eglQueryStringFn(dpy
, name
);
596 GL_SERVICE_LOG("GL_RESULT: " << result
);
600 static EGLBoolean GL_BINDING_CALL
Debug_eglQuerySurface(EGLDisplay dpy
,
604 GL_SERVICE_LOG("eglQuerySurface"
605 << "(" << dpy
<< ", " << surface
<< ", " << attribute
<< ", "
606 << static_cast<const void*>(value
) << ")");
608 g_driver_egl
.debug_fn
.eglQuerySurfaceFn(dpy
, surface
, attribute
, value
);
609 GL_SERVICE_LOG("GL_RESULT: " << result
);
613 static EGLBoolean GL_BINDING_CALL
614 Debug_eglQuerySurfacePointerANGLE(EGLDisplay dpy
,
618 GL_SERVICE_LOG("eglQuerySurfacePointerANGLE"
619 << "(" << dpy
<< ", " << surface
<< ", " << attribute
<< ", "
621 EGLBoolean result
= g_driver_egl
.debug_fn
.eglQuerySurfacePointerANGLEFn(
622 dpy
, surface
, attribute
, value
);
623 GL_SERVICE_LOG("GL_RESULT: " << result
);
627 static EGLBoolean GL_BINDING_CALL
628 Debug_eglReleaseTexImage(EGLDisplay dpy
, EGLSurface surface
, EGLint buffer
) {
629 GL_SERVICE_LOG("eglReleaseTexImage"
630 << "(" << dpy
<< ", " << surface
<< ", " << buffer
<< ")");
632 g_driver_egl
.debug_fn
.eglReleaseTexImageFn(dpy
, surface
, buffer
);
633 GL_SERVICE_LOG("GL_RESULT: " << result
);
637 static EGLBoolean GL_BINDING_CALL
Debug_eglReleaseThread(void) {
638 GL_SERVICE_LOG("eglReleaseThread"
641 EGLBoolean result
= g_driver_egl
.debug_fn
.eglReleaseThreadFn();
642 GL_SERVICE_LOG("GL_RESULT: " << result
);
646 static EGLBoolean GL_BINDING_CALL
Debug_eglSurfaceAttrib(EGLDisplay dpy
,
650 GL_SERVICE_LOG("eglSurfaceAttrib"
651 << "(" << dpy
<< ", " << surface
<< ", " << attribute
<< ", "
654 g_driver_egl
.debug_fn
.eglSurfaceAttribFn(dpy
, surface
, attribute
, value
);
655 GL_SERVICE_LOG("GL_RESULT: " << result
);
659 static EGLBoolean GL_BINDING_CALL
660 Debug_eglSwapBuffers(EGLDisplay dpy
, EGLSurface surface
) {
661 GL_SERVICE_LOG("eglSwapBuffers"
662 << "(" << dpy
<< ", " << surface
<< ")");
663 EGLBoolean result
= g_driver_egl
.debug_fn
.eglSwapBuffersFn(dpy
, surface
);
664 GL_SERVICE_LOG("GL_RESULT: " << result
);
668 static EGLBoolean GL_BINDING_CALL
669 Debug_eglSwapInterval(EGLDisplay dpy
, EGLint interval
) {
670 GL_SERVICE_LOG("eglSwapInterval"
671 << "(" << dpy
<< ", " << interval
<< ")");
672 EGLBoolean result
= g_driver_egl
.debug_fn
.eglSwapIntervalFn(dpy
, interval
);
673 GL_SERVICE_LOG("GL_RESULT: " << result
);
677 static EGLBoolean GL_BINDING_CALL
Debug_eglTerminate(EGLDisplay dpy
) {
678 GL_SERVICE_LOG("eglTerminate"
679 << "(" << dpy
<< ")");
680 EGLBoolean result
= g_driver_egl
.debug_fn
.eglTerminateFn(dpy
);
681 GL_SERVICE_LOG("GL_RESULT: " << result
);
685 static EGLBoolean GL_BINDING_CALL
Debug_eglWaitClient(void) {
686 GL_SERVICE_LOG("eglWaitClient"
689 EGLBoolean result
= g_driver_egl
.debug_fn
.eglWaitClientFn();
690 GL_SERVICE_LOG("GL_RESULT: " << result
);
694 static EGLBoolean GL_BINDING_CALL
Debug_eglWaitGL(void) {
695 GL_SERVICE_LOG("eglWaitGL"
698 EGLBoolean result
= g_driver_egl
.debug_fn
.eglWaitGLFn();
699 GL_SERVICE_LOG("GL_RESULT: " << result
);
703 static EGLBoolean GL_BINDING_CALL
Debug_eglWaitNative(EGLint engine
) {
704 GL_SERVICE_LOG("eglWaitNative"
705 << "(" << engine
<< ")");
706 EGLBoolean result
= g_driver_egl
.debug_fn
.eglWaitNativeFn(engine
);
707 GL_SERVICE_LOG("GL_RESULT: " << result
);
711 static EGLint GL_BINDING_CALL
712 Debug_eglWaitSyncKHR(EGLDisplay dpy
, EGLSyncKHR sync
, EGLint flags
) {
713 GL_SERVICE_LOG("eglWaitSyncKHR"
714 << "(" << dpy
<< ", " << sync
<< ", " << flags
<< ")");
715 EGLint result
= g_driver_egl
.debug_fn
.eglWaitSyncKHRFn(dpy
, sync
, flags
);
716 GL_SERVICE_LOG("GL_RESULT: " << result
);
721 void DriverEGL::InitializeDebugBindings() {
722 if (!debug_fn
.eglBindAPIFn
) {
723 debug_fn
.eglBindAPIFn
= fn
.eglBindAPIFn
;
724 fn
.eglBindAPIFn
= Debug_eglBindAPI
;
726 if (!debug_fn
.eglBindTexImageFn
) {
727 debug_fn
.eglBindTexImageFn
= fn
.eglBindTexImageFn
;
728 fn
.eglBindTexImageFn
= Debug_eglBindTexImage
;
730 if (!debug_fn
.eglChooseConfigFn
) {
731 debug_fn
.eglChooseConfigFn
= fn
.eglChooseConfigFn
;
732 fn
.eglChooseConfigFn
= Debug_eglChooseConfig
;
734 if (!debug_fn
.eglClientWaitSyncKHRFn
) {
735 debug_fn
.eglClientWaitSyncKHRFn
= fn
.eglClientWaitSyncKHRFn
;
736 fn
.eglClientWaitSyncKHRFn
= Debug_eglClientWaitSyncKHR
;
738 if (!debug_fn
.eglCopyBuffersFn
) {
739 debug_fn
.eglCopyBuffersFn
= fn
.eglCopyBuffersFn
;
740 fn
.eglCopyBuffersFn
= Debug_eglCopyBuffers
;
742 if (!debug_fn
.eglCreateContextFn
) {
743 debug_fn
.eglCreateContextFn
= fn
.eglCreateContextFn
;
744 fn
.eglCreateContextFn
= Debug_eglCreateContext
;
746 if (!debug_fn
.eglCreateImageKHRFn
) {
747 debug_fn
.eglCreateImageKHRFn
= fn
.eglCreateImageKHRFn
;
748 fn
.eglCreateImageKHRFn
= Debug_eglCreateImageKHR
;
750 if (!debug_fn
.eglCreatePbufferFromClientBufferFn
) {
751 debug_fn
.eglCreatePbufferFromClientBufferFn
=
752 fn
.eglCreatePbufferFromClientBufferFn
;
753 fn
.eglCreatePbufferFromClientBufferFn
=
754 Debug_eglCreatePbufferFromClientBuffer
;
756 if (!debug_fn
.eglCreatePbufferSurfaceFn
) {
757 debug_fn
.eglCreatePbufferSurfaceFn
= fn
.eglCreatePbufferSurfaceFn
;
758 fn
.eglCreatePbufferSurfaceFn
= Debug_eglCreatePbufferSurface
;
760 if (!debug_fn
.eglCreatePixmapSurfaceFn
) {
761 debug_fn
.eglCreatePixmapSurfaceFn
= fn
.eglCreatePixmapSurfaceFn
;
762 fn
.eglCreatePixmapSurfaceFn
= Debug_eglCreatePixmapSurface
;
764 if (!debug_fn
.eglCreateSyncKHRFn
) {
765 debug_fn
.eglCreateSyncKHRFn
= fn
.eglCreateSyncKHRFn
;
766 fn
.eglCreateSyncKHRFn
= Debug_eglCreateSyncKHR
;
768 if (!debug_fn
.eglCreateWindowSurfaceFn
) {
769 debug_fn
.eglCreateWindowSurfaceFn
= fn
.eglCreateWindowSurfaceFn
;
770 fn
.eglCreateWindowSurfaceFn
= Debug_eglCreateWindowSurface
;
772 if (!debug_fn
.eglDestroyContextFn
) {
773 debug_fn
.eglDestroyContextFn
= fn
.eglDestroyContextFn
;
774 fn
.eglDestroyContextFn
= Debug_eglDestroyContext
;
776 if (!debug_fn
.eglDestroyImageKHRFn
) {
777 debug_fn
.eglDestroyImageKHRFn
= fn
.eglDestroyImageKHRFn
;
778 fn
.eglDestroyImageKHRFn
= Debug_eglDestroyImageKHR
;
780 if (!debug_fn
.eglDestroySurfaceFn
) {
781 debug_fn
.eglDestroySurfaceFn
= fn
.eglDestroySurfaceFn
;
782 fn
.eglDestroySurfaceFn
= Debug_eglDestroySurface
;
784 if (!debug_fn
.eglDestroySyncKHRFn
) {
785 debug_fn
.eglDestroySyncKHRFn
= fn
.eglDestroySyncKHRFn
;
786 fn
.eglDestroySyncKHRFn
= Debug_eglDestroySyncKHR
;
788 if (!debug_fn
.eglGetConfigAttribFn
) {
789 debug_fn
.eglGetConfigAttribFn
= fn
.eglGetConfigAttribFn
;
790 fn
.eglGetConfigAttribFn
= Debug_eglGetConfigAttrib
;
792 if (!debug_fn
.eglGetConfigsFn
) {
793 debug_fn
.eglGetConfigsFn
= fn
.eglGetConfigsFn
;
794 fn
.eglGetConfigsFn
= Debug_eglGetConfigs
;
796 if (!debug_fn
.eglGetCurrentContextFn
) {
797 debug_fn
.eglGetCurrentContextFn
= fn
.eglGetCurrentContextFn
;
798 fn
.eglGetCurrentContextFn
= Debug_eglGetCurrentContext
;
800 if (!debug_fn
.eglGetCurrentDisplayFn
) {
801 debug_fn
.eglGetCurrentDisplayFn
= fn
.eglGetCurrentDisplayFn
;
802 fn
.eglGetCurrentDisplayFn
= Debug_eglGetCurrentDisplay
;
804 if (!debug_fn
.eglGetCurrentSurfaceFn
) {
805 debug_fn
.eglGetCurrentSurfaceFn
= fn
.eglGetCurrentSurfaceFn
;
806 fn
.eglGetCurrentSurfaceFn
= Debug_eglGetCurrentSurface
;
808 if (!debug_fn
.eglGetDisplayFn
) {
809 debug_fn
.eglGetDisplayFn
= fn
.eglGetDisplayFn
;
810 fn
.eglGetDisplayFn
= Debug_eglGetDisplay
;
812 if (!debug_fn
.eglGetErrorFn
) {
813 debug_fn
.eglGetErrorFn
= fn
.eglGetErrorFn
;
814 fn
.eglGetErrorFn
= Debug_eglGetError
;
816 if (!debug_fn
.eglGetPlatformDisplayEXTFn
) {
817 debug_fn
.eglGetPlatformDisplayEXTFn
= fn
.eglGetPlatformDisplayEXTFn
;
818 fn
.eglGetPlatformDisplayEXTFn
= Debug_eglGetPlatformDisplayEXT
;
820 if (!debug_fn
.eglGetProcAddressFn
) {
821 debug_fn
.eglGetProcAddressFn
= fn
.eglGetProcAddressFn
;
822 fn
.eglGetProcAddressFn
= Debug_eglGetProcAddress
;
824 if (!debug_fn
.eglGetSyncAttribKHRFn
) {
825 debug_fn
.eglGetSyncAttribKHRFn
= fn
.eglGetSyncAttribKHRFn
;
826 fn
.eglGetSyncAttribKHRFn
= Debug_eglGetSyncAttribKHR
;
828 if (!debug_fn
.eglGetSyncValuesCHROMIUMFn
) {
829 debug_fn
.eglGetSyncValuesCHROMIUMFn
= fn
.eglGetSyncValuesCHROMIUMFn
;
830 fn
.eglGetSyncValuesCHROMIUMFn
= Debug_eglGetSyncValuesCHROMIUM
;
832 if (!debug_fn
.eglInitializeFn
) {
833 debug_fn
.eglInitializeFn
= fn
.eglInitializeFn
;
834 fn
.eglInitializeFn
= Debug_eglInitialize
;
836 if (!debug_fn
.eglMakeCurrentFn
) {
837 debug_fn
.eglMakeCurrentFn
= fn
.eglMakeCurrentFn
;
838 fn
.eglMakeCurrentFn
= Debug_eglMakeCurrent
;
840 if (!debug_fn
.eglPostSubBufferNVFn
) {
841 debug_fn
.eglPostSubBufferNVFn
= fn
.eglPostSubBufferNVFn
;
842 fn
.eglPostSubBufferNVFn
= Debug_eglPostSubBufferNV
;
844 if (!debug_fn
.eglQueryAPIFn
) {
845 debug_fn
.eglQueryAPIFn
= fn
.eglQueryAPIFn
;
846 fn
.eglQueryAPIFn
= Debug_eglQueryAPI
;
848 if (!debug_fn
.eglQueryContextFn
) {
849 debug_fn
.eglQueryContextFn
= fn
.eglQueryContextFn
;
850 fn
.eglQueryContextFn
= Debug_eglQueryContext
;
852 if (!debug_fn
.eglQueryStringFn
) {
853 debug_fn
.eglQueryStringFn
= fn
.eglQueryStringFn
;
854 fn
.eglQueryStringFn
= Debug_eglQueryString
;
856 if (!debug_fn
.eglQuerySurfaceFn
) {
857 debug_fn
.eglQuerySurfaceFn
= fn
.eglQuerySurfaceFn
;
858 fn
.eglQuerySurfaceFn
= Debug_eglQuerySurface
;
860 if (!debug_fn
.eglQuerySurfacePointerANGLEFn
) {
861 debug_fn
.eglQuerySurfacePointerANGLEFn
= fn
.eglQuerySurfacePointerANGLEFn
;
862 fn
.eglQuerySurfacePointerANGLEFn
= Debug_eglQuerySurfacePointerANGLE
;
864 if (!debug_fn
.eglReleaseTexImageFn
) {
865 debug_fn
.eglReleaseTexImageFn
= fn
.eglReleaseTexImageFn
;
866 fn
.eglReleaseTexImageFn
= Debug_eglReleaseTexImage
;
868 if (!debug_fn
.eglReleaseThreadFn
) {
869 debug_fn
.eglReleaseThreadFn
= fn
.eglReleaseThreadFn
;
870 fn
.eglReleaseThreadFn
= Debug_eglReleaseThread
;
872 if (!debug_fn
.eglSurfaceAttribFn
) {
873 debug_fn
.eglSurfaceAttribFn
= fn
.eglSurfaceAttribFn
;
874 fn
.eglSurfaceAttribFn
= Debug_eglSurfaceAttrib
;
876 if (!debug_fn
.eglSwapBuffersFn
) {
877 debug_fn
.eglSwapBuffersFn
= fn
.eglSwapBuffersFn
;
878 fn
.eglSwapBuffersFn
= Debug_eglSwapBuffers
;
880 if (!debug_fn
.eglSwapIntervalFn
) {
881 debug_fn
.eglSwapIntervalFn
= fn
.eglSwapIntervalFn
;
882 fn
.eglSwapIntervalFn
= Debug_eglSwapInterval
;
884 if (!debug_fn
.eglTerminateFn
) {
885 debug_fn
.eglTerminateFn
= fn
.eglTerminateFn
;
886 fn
.eglTerminateFn
= Debug_eglTerminate
;
888 if (!debug_fn
.eglWaitClientFn
) {
889 debug_fn
.eglWaitClientFn
= fn
.eglWaitClientFn
;
890 fn
.eglWaitClientFn
= Debug_eglWaitClient
;
892 if (!debug_fn
.eglWaitGLFn
) {
893 debug_fn
.eglWaitGLFn
= fn
.eglWaitGLFn
;
894 fn
.eglWaitGLFn
= Debug_eglWaitGL
;
896 if (!debug_fn
.eglWaitNativeFn
) {
897 debug_fn
.eglWaitNativeFn
= fn
.eglWaitNativeFn
;
898 fn
.eglWaitNativeFn
= Debug_eglWaitNative
;
900 if (!debug_fn
.eglWaitSyncKHRFn
) {
901 debug_fn
.eglWaitSyncKHRFn
= fn
.eglWaitSyncKHRFn
;
902 fn
.eglWaitSyncKHRFn
= Debug_eglWaitSyncKHR
;
904 g_debugBindingsInitialized
= true;
907 void DriverEGL::ClearBindings() {
908 memset(this, 0, sizeof(*this));
911 EGLBoolean
EGLApiBase::eglBindAPIFn(EGLenum api
) {
912 return driver_
->fn
.eglBindAPIFn(api
);
915 EGLBoolean
EGLApiBase::eglBindTexImageFn(EGLDisplay dpy
,
918 return driver_
->fn
.eglBindTexImageFn(dpy
, surface
, buffer
);
921 EGLBoolean
EGLApiBase::eglChooseConfigFn(EGLDisplay dpy
,
922 const EGLint
* attrib_list
,
925 EGLint
* num_config
) {
926 return driver_
->fn
.eglChooseConfigFn(dpy
, attrib_list
, configs
, config_size
,
930 EGLint
EGLApiBase::eglClientWaitSyncKHRFn(EGLDisplay dpy
,
933 EGLTimeKHR timeout
) {
934 return driver_
->fn
.eglClientWaitSyncKHRFn(dpy
, sync
, flags
, timeout
);
937 EGLBoolean
EGLApiBase::eglCopyBuffersFn(EGLDisplay dpy
,
939 EGLNativePixmapType target
) {
940 return driver_
->fn
.eglCopyBuffersFn(dpy
, surface
, target
);
943 EGLContext
EGLApiBase::eglCreateContextFn(EGLDisplay dpy
,
945 EGLContext share_context
,
946 const EGLint
* attrib_list
) {
947 return driver_
->fn
.eglCreateContextFn(dpy
, config
, share_context
,
951 EGLImageKHR
EGLApiBase::eglCreateImageKHRFn(EGLDisplay dpy
,
954 EGLClientBuffer buffer
,
955 const EGLint
* attrib_list
) {
956 return driver_
->fn
.eglCreateImageKHRFn(dpy
, ctx
, target
, buffer
, attrib_list
);
959 EGLSurface
EGLApiBase::eglCreatePbufferFromClientBufferFn(
964 const EGLint
* attrib_list
) {
965 return driver_
->fn
.eglCreatePbufferFromClientBufferFn(dpy
, buftype
, buffer
,
966 config
, attrib_list
);
969 EGLSurface
EGLApiBase::eglCreatePbufferSurfaceFn(EGLDisplay dpy
,
971 const EGLint
* attrib_list
) {
972 return driver_
->fn
.eglCreatePbufferSurfaceFn(dpy
, config
, attrib_list
);
975 EGLSurface
EGLApiBase::eglCreatePixmapSurfaceFn(EGLDisplay dpy
,
977 EGLNativePixmapType pixmap
,
978 const EGLint
* attrib_list
) {
979 return driver_
->fn
.eglCreatePixmapSurfaceFn(dpy
, config
, pixmap
, attrib_list
);
982 EGLSyncKHR
EGLApiBase::eglCreateSyncKHRFn(EGLDisplay dpy
,
984 const EGLint
* attrib_list
) {
985 return driver_
->fn
.eglCreateSyncKHRFn(dpy
, type
, attrib_list
);
988 EGLSurface
EGLApiBase::eglCreateWindowSurfaceFn(EGLDisplay dpy
,
990 EGLNativeWindowType win
,
991 const EGLint
* attrib_list
) {
992 return driver_
->fn
.eglCreateWindowSurfaceFn(dpy
, config
, win
, attrib_list
);
995 EGLBoolean
EGLApiBase::eglDestroyContextFn(EGLDisplay dpy
, EGLContext ctx
) {
996 return driver_
->fn
.eglDestroyContextFn(dpy
, ctx
);
999 EGLBoolean
EGLApiBase::eglDestroyImageKHRFn(EGLDisplay dpy
, EGLImageKHR image
) {
1000 return driver_
->fn
.eglDestroyImageKHRFn(dpy
, image
);
1003 EGLBoolean
EGLApiBase::eglDestroySurfaceFn(EGLDisplay dpy
, EGLSurface surface
) {
1004 return driver_
->fn
.eglDestroySurfaceFn(dpy
, surface
);
1007 EGLBoolean
EGLApiBase::eglDestroySyncKHRFn(EGLDisplay dpy
, EGLSyncKHR sync
) {
1008 return driver_
->fn
.eglDestroySyncKHRFn(dpy
, sync
);
1011 EGLBoolean
EGLApiBase::eglGetConfigAttribFn(EGLDisplay dpy
,
1015 return driver_
->fn
.eglGetConfigAttribFn(dpy
, config
, attribute
, value
);
1018 EGLBoolean
EGLApiBase::eglGetConfigsFn(EGLDisplay dpy
,
1021 EGLint
* num_config
) {
1022 return driver_
->fn
.eglGetConfigsFn(dpy
, configs
, config_size
, num_config
);
1025 EGLContext
EGLApiBase::eglGetCurrentContextFn(void) {
1026 return driver_
->fn
.eglGetCurrentContextFn();
1029 EGLDisplay
EGLApiBase::eglGetCurrentDisplayFn(void) {
1030 return driver_
->fn
.eglGetCurrentDisplayFn();
1033 EGLSurface
EGLApiBase::eglGetCurrentSurfaceFn(EGLint readdraw
) {
1034 return driver_
->fn
.eglGetCurrentSurfaceFn(readdraw
);
1037 EGLDisplay
EGLApiBase::eglGetDisplayFn(EGLNativeDisplayType display_id
) {
1038 return driver_
->fn
.eglGetDisplayFn(display_id
);
1041 EGLint
EGLApiBase::eglGetErrorFn(void) {
1042 return driver_
->fn
.eglGetErrorFn();
1045 EGLDisplay
EGLApiBase::eglGetPlatformDisplayEXTFn(EGLenum platform
,
1046 void* native_display
,
1047 const EGLint
* attrib_list
) {
1048 return driver_
->fn
.eglGetPlatformDisplayEXTFn(platform
, native_display
,
1052 __eglMustCastToProperFunctionPointerType
EGLApiBase::eglGetProcAddressFn(
1053 const char* procname
) {
1054 return driver_
->fn
.eglGetProcAddressFn(procname
);
1057 EGLBoolean
EGLApiBase::eglGetSyncAttribKHRFn(EGLDisplay dpy
,
1061 return driver_
->fn
.eglGetSyncAttribKHRFn(dpy
, sync
, attribute
, value
);
1064 EGLBoolean
EGLApiBase::eglGetSyncValuesCHROMIUMFn(EGLDisplay dpy
,
1066 EGLuint64CHROMIUM
* ust
,
1067 EGLuint64CHROMIUM
* msc
,
1068 EGLuint64CHROMIUM
* sbc
) {
1069 return driver_
->fn
.eglGetSyncValuesCHROMIUMFn(dpy
, surface
, ust
, msc
, sbc
);
1072 EGLBoolean
EGLApiBase::eglInitializeFn(EGLDisplay dpy
,
1075 return driver_
->fn
.eglInitializeFn(dpy
, major
, minor
);
1078 EGLBoolean
EGLApiBase::eglMakeCurrentFn(EGLDisplay dpy
,
1082 return driver_
->fn
.eglMakeCurrentFn(dpy
, draw
, read
, ctx
);
1085 EGLBoolean
EGLApiBase::eglPostSubBufferNVFn(EGLDisplay dpy
,
1091 return driver_
->fn
.eglPostSubBufferNVFn(dpy
, surface
, x
, y
, width
, height
);
1094 EGLenum
EGLApiBase::eglQueryAPIFn(void) {
1095 return driver_
->fn
.eglQueryAPIFn();
1098 EGLBoolean
EGLApiBase::eglQueryContextFn(EGLDisplay dpy
,
1102 return driver_
->fn
.eglQueryContextFn(dpy
, ctx
, attribute
, value
);
1105 const char* EGLApiBase::eglQueryStringFn(EGLDisplay dpy
, EGLint name
) {
1106 return driver_
->fn
.eglQueryStringFn(dpy
, name
);
1109 EGLBoolean
EGLApiBase::eglQuerySurfaceFn(EGLDisplay dpy
,
1113 return driver_
->fn
.eglQuerySurfaceFn(dpy
, surface
, attribute
, value
);
1116 EGLBoolean
EGLApiBase::eglQuerySurfacePointerANGLEFn(EGLDisplay dpy
,
1120 return driver_
->fn
.eglQuerySurfacePointerANGLEFn(dpy
, surface
, attribute
,
1124 EGLBoolean
EGLApiBase::eglReleaseTexImageFn(EGLDisplay dpy
,
1127 return driver_
->fn
.eglReleaseTexImageFn(dpy
, surface
, buffer
);
1130 EGLBoolean
EGLApiBase::eglReleaseThreadFn(void) {
1131 return driver_
->fn
.eglReleaseThreadFn();
1134 EGLBoolean
EGLApiBase::eglSurfaceAttribFn(EGLDisplay dpy
,
1138 return driver_
->fn
.eglSurfaceAttribFn(dpy
, surface
, attribute
, value
);
1141 EGLBoolean
EGLApiBase::eglSwapBuffersFn(EGLDisplay dpy
, EGLSurface surface
) {
1142 return driver_
->fn
.eglSwapBuffersFn(dpy
, surface
);
1145 EGLBoolean
EGLApiBase::eglSwapIntervalFn(EGLDisplay dpy
, EGLint interval
) {
1146 return driver_
->fn
.eglSwapIntervalFn(dpy
, interval
);
1149 EGLBoolean
EGLApiBase::eglTerminateFn(EGLDisplay dpy
) {
1150 return driver_
->fn
.eglTerminateFn(dpy
);
1153 EGLBoolean
EGLApiBase::eglWaitClientFn(void) {
1154 return driver_
->fn
.eglWaitClientFn();
1157 EGLBoolean
EGLApiBase::eglWaitGLFn(void) {
1158 return driver_
->fn
.eglWaitGLFn();
1161 EGLBoolean
EGLApiBase::eglWaitNativeFn(EGLint engine
) {
1162 return driver_
->fn
.eglWaitNativeFn(engine
);
1165 EGLint
EGLApiBase::eglWaitSyncKHRFn(EGLDisplay dpy
,
1168 return driver_
->fn
.eglWaitSyncKHRFn(dpy
, sync
, flags
);
1171 EGLBoolean
TraceEGLApi::eglBindAPIFn(EGLenum api
) {
1172 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglBindAPI")
1173 return egl_api_
->eglBindAPIFn(api
);
1176 EGLBoolean
TraceEGLApi::eglBindTexImageFn(EGLDisplay dpy
,
1179 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglBindTexImage")
1180 return egl_api_
->eglBindTexImageFn(dpy
, surface
, buffer
);
1183 EGLBoolean
TraceEGLApi::eglChooseConfigFn(EGLDisplay dpy
,
1184 const EGLint
* attrib_list
,
1187 EGLint
* num_config
) {
1188 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglChooseConfig")
1189 return egl_api_
->eglChooseConfigFn(dpy
, attrib_list
, configs
, config_size
,
1193 EGLint
TraceEGLApi::eglClientWaitSyncKHRFn(EGLDisplay dpy
,
1196 EGLTimeKHR timeout
) {
1197 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglClientWaitSyncKHR")
1198 return egl_api_
->eglClientWaitSyncKHRFn(dpy
, sync
, flags
, timeout
);
1201 EGLBoolean
TraceEGLApi::eglCopyBuffersFn(EGLDisplay dpy
,
1203 EGLNativePixmapType target
) {
1204 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglCopyBuffers")
1205 return egl_api_
->eglCopyBuffersFn(dpy
, surface
, target
);
1208 EGLContext
TraceEGLApi::eglCreateContextFn(EGLDisplay dpy
,
1210 EGLContext share_context
,
1211 const EGLint
* attrib_list
) {
1212 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglCreateContext")
1213 return egl_api_
->eglCreateContextFn(dpy
, config
, share_context
, attrib_list
);
1216 EGLImageKHR
TraceEGLApi::eglCreateImageKHRFn(EGLDisplay dpy
,
1219 EGLClientBuffer buffer
,
1220 const EGLint
* attrib_list
) {
1221 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglCreateImageKHR")
1222 return egl_api_
->eglCreateImageKHRFn(dpy
, ctx
, target
, buffer
, attrib_list
);
1225 EGLSurface
TraceEGLApi::eglCreatePbufferFromClientBufferFn(
1230 const EGLint
* attrib_list
) {
1231 TRACE_EVENT_BINARY_EFFICIENT0("gpu",
1232 "TraceGLAPI::eglCreatePbufferFromClientBuffer")
1233 return egl_api_
->eglCreatePbufferFromClientBufferFn(dpy
, buftype
, buffer
,
1234 config
, attrib_list
);
1237 EGLSurface
TraceEGLApi::eglCreatePbufferSurfaceFn(EGLDisplay dpy
,
1239 const EGLint
* attrib_list
) {
1240 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglCreatePbufferSurface")
1241 return egl_api_
->eglCreatePbufferSurfaceFn(dpy
, config
, attrib_list
);
1244 EGLSurface
TraceEGLApi::eglCreatePixmapSurfaceFn(EGLDisplay dpy
,
1246 EGLNativePixmapType pixmap
,
1247 const EGLint
* attrib_list
) {
1248 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglCreatePixmapSurface")
1249 return egl_api_
->eglCreatePixmapSurfaceFn(dpy
, config
, pixmap
, attrib_list
);
1252 EGLSyncKHR
TraceEGLApi::eglCreateSyncKHRFn(EGLDisplay dpy
,
1254 const EGLint
* attrib_list
) {
1255 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglCreateSyncKHR")
1256 return egl_api_
->eglCreateSyncKHRFn(dpy
, type
, attrib_list
);
1259 EGLSurface
TraceEGLApi::eglCreateWindowSurfaceFn(EGLDisplay dpy
,
1261 EGLNativeWindowType win
,
1262 const EGLint
* attrib_list
) {
1263 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglCreateWindowSurface")
1264 return egl_api_
->eglCreateWindowSurfaceFn(dpy
, config
, win
, attrib_list
);
1267 EGLBoolean
TraceEGLApi::eglDestroyContextFn(EGLDisplay dpy
, EGLContext ctx
) {
1268 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglDestroyContext")
1269 return egl_api_
->eglDestroyContextFn(dpy
, ctx
);
1272 EGLBoolean
TraceEGLApi::eglDestroyImageKHRFn(EGLDisplay dpy
,
1273 EGLImageKHR image
) {
1274 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglDestroyImageKHR")
1275 return egl_api_
->eglDestroyImageKHRFn(dpy
, image
);
1278 EGLBoolean
TraceEGLApi::eglDestroySurfaceFn(EGLDisplay dpy
,
1279 EGLSurface surface
) {
1280 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglDestroySurface")
1281 return egl_api_
->eglDestroySurfaceFn(dpy
, surface
);
1284 EGLBoolean
TraceEGLApi::eglDestroySyncKHRFn(EGLDisplay dpy
, EGLSyncKHR sync
) {
1285 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglDestroySyncKHR")
1286 return egl_api_
->eglDestroySyncKHRFn(dpy
, sync
);
1289 EGLBoolean
TraceEGLApi::eglGetConfigAttribFn(EGLDisplay dpy
,
1293 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetConfigAttrib")
1294 return egl_api_
->eglGetConfigAttribFn(dpy
, config
, attribute
, value
);
1297 EGLBoolean
TraceEGLApi::eglGetConfigsFn(EGLDisplay dpy
,
1300 EGLint
* num_config
) {
1301 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetConfigs")
1302 return egl_api_
->eglGetConfigsFn(dpy
, configs
, config_size
, num_config
);
1305 EGLContext
TraceEGLApi::eglGetCurrentContextFn(void) {
1306 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetCurrentContext")
1307 return egl_api_
->eglGetCurrentContextFn();
1310 EGLDisplay
TraceEGLApi::eglGetCurrentDisplayFn(void) {
1311 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetCurrentDisplay")
1312 return egl_api_
->eglGetCurrentDisplayFn();
1315 EGLSurface
TraceEGLApi::eglGetCurrentSurfaceFn(EGLint readdraw
) {
1316 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetCurrentSurface")
1317 return egl_api_
->eglGetCurrentSurfaceFn(readdraw
);
1320 EGLDisplay
TraceEGLApi::eglGetDisplayFn(EGLNativeDisplayType display_id
) {
1321 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetDisplay")
1322 return egl_api_
->eglGetDisplayFn(display_id
);
1325 EGLint
TraceEGLApi::eglGetErrorFn(void) {
1326 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetError")
1327 return egl_api_
->eglGetErrorFn();
1330 EGLDisplay
TraceEGLApi::eglGetPlatformDisplayEXTFn(EGLenum platform
,
1331 void* native_display
,
1332 const EGLint
* attrib_list
) {
1333 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetPlatformDisplayEXT")
1334 return egl_api_
->eglGetPlatformDisplayEXTFn(platform
, native_display
,
1338 __eglMustCastToProperFunctionPointerType
TraceEGLApi::eglGetProcAddressFn(
1339 const char* procname
) {
1340 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetProcAddress")
1341 return egl_api_
->eglGetProcAddressFn(procname
);
1344 EGLBoolean
TraceEGLApi::eglGetSyncAttribKHRFn(EGLDisplay dpy
,
1348 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetSyncAttribKHR")
1349 return egl_api_
->eglGetSyncAttribKHRFn(dpy
, sync
, attribute
, value
);
1352 EGLBoolean
TraceEGLApi::eglGetSyncValuesCHROMIUMFn(EGLDisplay dpy
,
1354 EGLuint64CHROMIUM
* ust
,
1355 EGLuint64CHROMIUM
* msc
,
1356 EGLuint64CHROMIUM
* sbc
) {
1357 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglGetSyncValuesCHROMIUM")
1358 return egl_api_
->eglGetSyncValuesCHROMIUMFn(dpy
, surface
, ust
, msc
, sbc
);
1361 EGLBoolean
TraceEGLApi::eglInitializeFn(EGLDisplay dpy
,
1364 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglInitialize")
1365 return egl_api_
->eglInitializeFn(dpy
, major
, minor
);
1368 EGLBoolean
TraceEGLApi::eglMakeCurrentFn(EGLDisplay dpy
,
1372 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglMakeCurrent")
1373 return egl_api_
->eglMakeCurrentFn(dpy
, draw
, read
, ctx
);
1376 EGLBoolean
TraceEGLApi::eglPostSubBufferNVFn(EGLDisplay dpy
,
1382 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglPostSubBufferNV")
1383 return egl_api_
->eglPostSubBufferNVFn(dpy
, surface
, x
, y
, width
, height
);
1386 EGLenum
TraceEGLApi::eglQueryAPIFn(void) {
1387 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglQueryAPI")
1388 return egl_api_
->eglQueryAPIFn();
1391 EGLBoolean
TraceEGLApi::eglQueryContextFn(EGLDisplay dpy
,
1395 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglQueryContext")
1396 return egl_api_
->eglQueryContextFn(dpy
, ctx
, attribute
, value
);
1399 const char* TraceEGLApi::eglQueryStringFn(EGLDisplay dpy
, EGLint name
) {
1400 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglQueryString")
1401 return egl_api_
->eglQueryStringFn(dpy
, name
);
1404 EGLBoolean
TraceEGLApi::eglQuerySurfaceFn(EGLDisplay dpy
,
1408 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglQuerySurface")
1409 return egl_api_
->eglQuerySurfaceFn(dpy
, surface
, attribute
, value
);
1412 EGLBoolean
TraceEGLApi::eglQuerySurfacePointerANGLEFn(EGLDisplay dpy
,
1416 TRACE_EVENT_BINARY_EFFICIENT0("gpu",
1417 "TraceGLAPI::eglQuerySurfacePointerANGLE")
1418 return egl_api_
->eglQuerySurfacePointerANGLEFn(dpy
, surface
, attribute
,
1422 EGLBoolean
TraceEGLApi::eglReleaseTexImageFn(EGLDisplay dpy
,
1425 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglReleaseTexImage")
1426 return egl_api_
->eglReleaseTexImageFn(dpy
, surface
, buffer
);
1429 EGLBoolean
TraceEGLApi::eglReleaseThreadFn(void) {
1430 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglReleaseThread")
1431 return egl_api_
->eglReleaseThreadFn();
1434 EGLBoolean
TraceEGLApi::eglSurfaceAttribFn(EGLDisplay dpy
,
1438 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglSurfaceAttrib")
1439 return egl_api_
->eglSurfaceAttribFn(dpy
, surface
, attribute
, value
);
1442 EGLBoolean
TraceEGLApi::eglSwapBuffersFn(EGLDisplay dpy
, EGLSurface surface
) {
1443 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglSwapBuffers")
1444 return egl_api_
->eglSwapBuffersFn(dpy
, surface
);
1447 EGLBoolean
TraceEGLApi::eglSwapIntervalFn(EGLDisplay dpy
, EGLint interval
) {
1448 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglSwapInterval")
1449 return egl_api_
->eglSwapIntervalFn(dpy
, interval
);
1452 EGLBoolean
TraceEGLApi::eglTerminateFn(EGLDisplay dpy
) {
1453 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglTerminate")
1454 return egl_api_
->eglTerminateFn(dpy
);
1457 EGLBoolean
TraceEGLApi::eglWaitClientFn(void) {
1458 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglWaitClient")
1459 return egl_api_
->eglWaitClientFn();
1462 EGLBoolean
TraceEGLApi::eglWaitGLFn(void) {
1463 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglWaitGL")
1464 return egl_api_
->eglWaitGLFn();
1467 EGLBoolean
TraceEGLApi::eglWaitNativeFn(EGLint engine
) {
1468 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglWaitNative")
1469 return egl_api_
->eglWaitNativeFn(engine
);
1472 EGLint
TraceEGLApi::eglWaitSyncKHRFn(EGLDisplay dpy
,
1475 TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::eglWaitSyncKHR")
1476 return egl_api_
->eglWaitSyncKHRFn(dpy
, sync
, flags
);