X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=eglwrap.c;h=497779ce3fd2048f03f518a98f51c70575c37d07;hb=2926b5a9207c28986f449a322761e4103f4c28e7;hp=913fd488d74a23dc0d7a9277dfe37525e3db776f;hpb=5569357a9fc7189c2bae43773f44ba576583ec2b;p=fips diff --git a/eglwrap.c b/eglwrap.c index 913fd48..497779c 100644 --- a/eglwrap.c +++ b/eglwrap.c @@ -48,6 +48,11 @@ } while (0); +/* Note: We only need to perform a lookup in libEGL.so.1, (not + * libGLESv2.so.2). This is because the functions we wrap, (currently + * eglSwapBufers, eglGetProcAddress, and eglMakeCurrent), exist only + * in libEGL.so.1. + */ static void * eglwrap_lookup (char *name) { @@ -72,8 +77,28 @@ eglSwapBuffers (EGLDisplay dpy, EGLSurface surface) EGLBoolean ret; EGLWRAP_DEFER_WITH_RETURN (ret, eglSwapBuffers, dpy, surface); + + metrics_counter_stop (); + metrics_end_frame (); + metrics_counter_start (); + + return ret; +} + +void (*eglGetProcAddress (char const *func))(void) +{ + void *ret; + + /* If our library has this symbol, that's what we want to give. */ + ret = dlwrap_real_dlsym (NULL, (const char *) func); + if (ret) + return ret; + + /* Otherwise, just defer to the real eglGetProcAddress */ + EGLWRAP_DEFER_WITH_RETURN (ret, eglGetProcAddress, func); + return ret; } @@ -87,5 +112,10 @@ eglMakeCurrent (EGLDisplay display, EGLSurface draw, EGLSurface read, EGLWRAP_DEFER_WITH_RETURN (ret, eglMakeCurrent, display, draw, read, context); + metrics_info_init (); + + metrics_set_current_op (METRICS_OP_SHADER + 0); + metrics_counter_start (); + return ret; }