diff options
Diffstat (limited to 'opengl/libs/EGL')
-rw-r--r-- | opengl/libs/EGL/Loader.cpp | 17 | ||||
-rw-r--r-- | opengl/libs/EGL/egl.cpp | 54 | ||||
-rw-r--r-- | opengl/libs/EGL/eglApi.cpp | 96 | ||||
-rw-r--r-- | opengl/libs/EGL/egl_display.cpp | 72 | ||||
-rw-r--r-- | opengl/libs/EGL/egl_display.h | 8 | ||||
-rw-r--r-- | opengl/libs/EGL/egl_object.cpp | 36 | ||||
-rw-r--r-- | opengl/libs/EGL/egl_object.h | 12 | ||||
-rw-r--r-- | opengl/libs/EGL/egl_tls.cpp | 2 | ||||
-rw-r--r-- | opengl/libs/EGL/egl_tls.h | 1 | ||||
-rw-r--r-- | opengl/libs/EGL/egldefs.h | 1 | ||||
-rw-r--r-- | opengl/libs/EGL/getProcAddress.cpp | 50 | ||||
-rw-r--r-- | opengl/libs/EGL/trace.cpp | 16 |
12 files changed, 258 insertions, 107 deletions
diff --git a/opengl/libs/EGL/Loader.cpp b/opengl/libs/EGL/Loader.cpp index 160abc2..06be2ef 100644 --- a/opengl/libs/EGL/Loader.cpp +++ b/opengl/libs/EGL/Loader.cpp @@ -28,7 +28,7 @@ #include <EGL/egl.h> #include "egldefs.h" -#include "glesv2dbg.h" +#include "glestrace.h" #include "hooks.h" #include "Loader.h" @@ -157,7 +157,7 @@ Loader::Loader() Loader::~Loader() { - StopDebugServer(); + GLTrace_stop(); } const char* Loader::getTag(int dpy, int impl) @@ -253,6 +253,19 @@ void Loader::init_api(void* dso, if (f == NULL) { //ALOGD("%s", name); f = (__eglMustCastToProperFunctionPointerType)gl_unimplemented; + + /* + * GL_EXT_debug_label is special, we always report it as + * supported, it's handled by GLES_trace. If GLES_trace is not + * enabled, then these are no-ops. + */ + if (!strcmp(name, "glInsertEventMarkerEXT")) { + f = (__eglMustCastToProperFunctionPointerType)gl_noop; + } else if (!strcmp(name, "glPushGroupMarkerEXT")) { + f = (__eglMustCastToProperFunctionPointerType)gl_noop; + } else if (!strcmp(name, "glPopGroupMarkerEXT")) { + f = (__eglMustCastToProperFunctionPointerType)gl_noop; + } } *curr++ = f; api++; diff --git a/opengl/libs/EGL/egl.cpp b/opengl/libs/EGL/egl.cpp index 60baeaa..83933e5 100644 --- a/opengl/libs/EGL/egl.cpp +++ b/opengl/libs/EGL/egl.cpp @@ -37,7 +37,7 @@ #include "egldefs.h" #include "egl_impl.h" #include "egl_tls.h" -#include "glesv2dbg.h" +#include "glestrace.h" #include "hooks.h" #include "Loader.h" @@ -67,7 +67,6 @@ static int sEGLTraceLevel; static int sEGLApplicationTraceLevel; extern gl_hooks_t gHooksTrace; -extern gl_hooks_t gHooksDebug; static inline void setGlTraceThreadSpecific(gl_hooks_t const *value) { pthread_setspecific(gGLTraceKey, value); @@ -85,31 +84,27 @@ void initEglTraceLevel() { sEGLTraceLevel = propertyLevel > applicationLevel ? propertyLevel : applicationLevel; property_get("debug.egl.debug_proc", value, ""); + if (strlen(value) == 0) + return; + long pid = getpid(); char procPath[128] = {}; sprintf(procPath, "/proc/%ld/cmdline", pid); FILE * file = fopen(procPath, "r"); - if (file) - { + if (file) { char cmdline[256] = {}; - if (fgets(cmdline, sizeof(cmdline) - 1, file)) - { - if (!strcmp(value, cmdline)) + if (fgets(cmdline, sizeof(cmdline) - 1, file)) { + if (!strncmp(value, cmdline, strlen(value))) { + // set EGL debug if the "debug.egl.debug_proc" property + // matches the prefix of this application's command line gEGLDebugLevel = 1; + } } fclose(file); } - if (gEGLDebugLevel > 0) - { - property_get("debug.egl.debug_port", value, "5039"); - const unsigned short port = (unsigned short)atoi(value); - property_get("debug.egl.debug_forceUseFile", value, "0"); - const bool forceUseFile = (bool)atoi(value); - property_get("debug.egl.debug_maxFileSize", value, "8"); - const unsigned int maxFileSize = atoi(value) << 20; - property_get("debug.egl.debug_filePath", value, "/data/local/tmp/dump.gles2dbg"); - StartDebugServer(port, forceUseFile, maxFileSize, value); + if (gEGLDebugLevel > 0) { + GLTrace_start(); } } @@ -119,7 +114,7 @@ void setGLHooksThreadSpecific(gl_hooks_t const *value) { setGlThreadSpecific(&gHooksTrace); } else if (gEGLDebugLevel > 0 && value != &gHooksNoContext) { setGlTraceThreadSpecific(value); - setGlThreadSpecific(&gHooksDebug); + setGlThreadSpecific(GLTrace_getGLHooks()); } else { setGlThreadSpecific(value); } @@ -238,6 +233,26 @@ EGLImageKHR egl_get_image_for_current_context(EGLImageKHR image) // ---------------------------------------------------------------------------- +const GLubyte * egl_get_string_for_current_context(GLenum name) { + // NOTE: returning NULL here will fall-back to the default + // implementation. + + EGLContext context = egl_tls_t::getContext(); + if (context == EGL_NO_CONTEXT) + return NULL; + + egl_context_t const * const c = get_context(context); + if (c == NULL) // this should never happen, by construction + return NULL; + + if (name != GL_EXTENSIONS) + return NULL; + + return (const GLubyte *)c->gl_extensions.string(); +} + +// ---------------------------------------------------------------------------- + // this mutex protects: // d->disp[] // egl_init_drivers_locked() @@ -295,6 +310,9 @@ void gl_unimplemented() { ALOGE("called unimplemented OpenGL ES API"); } +void gl_noop() { +} + // ---------------------------------------------------------------------------- #if USE_FAST_TLS_KEY diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp index d5e9cb8..73aab26 100644 --- a/opengl/libs/EGL/eglApi.cpp +++ b/opengl/libs/EGL/eglApi.cpp @@ -37,7 +37,7 @@ #include "egl_impl.h" #include "egl_tls.h" -#include "glesv2dbg.h" +#include "glestrace.h" #include "hooks.h" #include "egl_display.h" @@ -112,7 +112,6 @@ extern EGLBoolean egl_init_drivers(); extern const __eglMustCastToProperFunctionPointerType gExtensionForwarders[MAX_NUMBER_OF_GL_EXTENSIONS]; extern int gEGLDebugLevel; extern gl_hooks_t gHooksTrace; -extern gl_hooks_t gHooksDebug; } // namespace android; // ---------------------------------------------------------------------------- @@ -478,6 +477,26 @@ EGLBoolean eglQuerySurface( EGLDisplay dpy, EGLSurface surface, return result; } +void EGLAPI eglBeginFrame(EGLDisplay dpy, EGLSurface surface) { + clearError(); + + egl_display_t const * const dp = validate_display(dpy); + if (!dp) { + return; + } + + SurfaceRef _s(dp, surface); + if (!_s.get()) { + setError(EGL_BAD_SURFACE, EGL_FALSE); + return; + } + + int64_t timestamp = systemTime(SYSTEM_TIME_MONOTONIC); + + egl_surface_t const * const s = get_surface(surface); + native_window_set_buffers_timestamp(s->win.get(), timestamp); +} + // ---------------------------------------------------------------------------- // Contexts // ---------------------------------------------------------------------------- @@ -516,6 +535,10 @@ EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config, } egl_context_t* c = new egl_context_t(dpy, context, config, dp->configs[intptr_t(config)].impl, cnx, version); +#if EGL_TRACE + if (gEGLDebugLevel > 0) + GLTrace_eglCreateContext(version, c); +#endif return c; } } @@ -543,27 +566,6 @@ EGLBoolean eglDestroyContext(EGLDisplay dpy, EGLContext ctx) return result; } -static void loseCurrent(egl_context_t * cur_c) -{ - if (cur_c) { - egl_surface_t * cur_r = get_surface(cur_c->read); - egl_surface_t * cur_d = get_surface(cur_c->draw); - - // by construction, these are either 0 or valid (possibly terminated) - // it should be impossible for these to be invalid - ContextRef _cur_c(cur_c); - SurfaceRef _cur_r(cur_r); - SurfaceRef _cur_d(cur_d); - - cur_c->read = NULL; - cur_c->draw = NULL; - - _cur_c.release(); - _cur_r.release(); - _cur_d.release(); - } -} - EGLBoolean eglMakeCurrent( EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx) { @@ -640,31 +642,22 @@ EGLBoolean eglMakeCurrent( EGLDisplay dpy, EGLSurface draw, impl_read = r->surface; } - EGLBoolean result; - if (c) { - result = c->cnx->egl.eglMakeCurrent( - dp->disp[c->impl].dpy, impl_draw, impl_read, impl_ctx); - } else { - result = cur_c->cnx->egl.eglMakeCurrent( - dp->disp[cur_c->impl].dpy, impl_draw, impl_read, impl_ctx); - } + EGLBoolean result = const_cast<egl_display_t*>(dp)->makeCurrent(c, cur_c, + draw, read, ctx, + impl_draw, impl_read, impl_ctx); if (result == EGL_TRUE) { - - loseCurrent(cur_c); - - if (ctx != EGL_NO_CONTEXT) { + if (c) { setGLHooksThreadSpecific(c->cnx->hooks[c->version]); egl_tls_t::setContext(ctx); - if (gEGLDebugLevel > 0) { - CreateDbgContext(c->version, c->cnx->hooks[c->version]); - } +#if EGL_TRACE + if (gEGLDebugLevel > 0) + GLTrace_eglMakeCurrent(c->version, c->cnx->hooks[c->version], ctx); +#endif _c.acquire(); _r.acquire(); _d.acquire(); - c->read = read; - c->draw = draw; } else { setGLHooksThreadSpecific(&gHooksNoContext); egl_tls_t::setContext(EGL_NO_CONTEXT); @@ -886,6 +879,10 @@ __eglMustCastToProperFunctionPointerType eglGetProcAddress(const char *procname) "no more slots for eglGetProcAddress(\"%s\")", procname); +#if EGL_TRACE + gl_hooks_t *debugHooks = GLTrace_getGLHooks(); +#endif + if (!addr && (slot < MAX_NUMBER_OF_GL_EXTENSIONS)) { bool found = false; for (int i=0 ; i<IMPL_NUM_IMPLEMENTATIONS ; i++) { @@ -896,7 +893,8 @@ __eglMustCastToProperFunctionPointerType eglGetProcAddress(const char *procname) cnx->hooks[GLESv1_INDEX]->ext.extensions[slot] = cnx->hooks[GLESv2_INDEX]->ext.extensions[slot] = #if EGL_TRACE - gHooksDebug.ext.extensions[slot] = gHooksTrace.ext.extensions[slot] = + debugHooks->ext.extensions[slot] = + gHooksTrace.ext.extensions[slot] = #endif cnx->egl.eglGetProcAddress(procname); } @@ -924,10 +922,6 @@ __eglMustCastToProperFunctionPointerType eglGetProcAddress(const char *procname) EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface draw) { - EGLBoolean Debug_eglSwapBuffers(EGLDisplay dpy, EGLSurface draw); - if (gEGLDebugLevel > 0) - Debug_eglSwapBuffers(dpy, draw); - clearError(); egl_display_t const * const dp = validate_display(dpy); @@ -937,6 +931,11 @@ EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface draw) if (!_s.get()) return setError(EGL_BAD_SURFACE, EGL_FALSE); +#if EGL_TRACE + if (gEGLDebugLevel > 0) + GLTrace_eglSwapBuffers(dpy, draw); +#endif + egl_surface_t const * const s = get_surface(draw); return s->cnx->egl.eglSwapBuffers(dp->disp[s->impl].dpy, s->surface); } @@ -1151,7 +1150,7 @@ EGLBoolean eglReleaseThread(void) clearError(); // If there is context bound to the thread, release it - loseCurrent(get_context(getContext())); + egl_display_t::loseCurrent(get_context(getContext())); for (int i=0 ; i<IMPL_NUM_IMPLEMENTATIONS ; i++) { egl_connection_t* const cnx = &gEGLImpl[i]; @@ -1162,7 +1161,10 @@ EGLBoolean eglReleaseThread(void) } } egl_tls_t::clearTLS(); - dbgReleaseThread(); +#if EGL_TRACE + if (gEGLDebugLevel > 0) + GLTrace_eglReleaseThread(); +#endif return EGL_TRUE; } diff --git a/opengl/libs/EGL/egl_display.cpp b/opengl/libs/EGL/egl_display.cpp index 53eaf9a..6b2ae51 100644 --- a/opengl/libs/EGL/egl_display.cpp +++ b/opengl/libs/EGL/egl_display.cpp @@ -342,6 +342,78 @@ EGLBoolean egl_display_t::terminate() { return res; } +void egl_display_t::loseCurrent(egl_context_t * cur_c) +{ + if (cur_c) { + egl_display_t* display = cur_c->getDisplay(); + if (display) { + display->loseCurrentImpl(cur_c); + } + } +} + +void egl_display_t::loseCurrentImpl(egl_context_t * cur_c) +{ + // by construction, these are either 0 or valid (possibly terminated) + // it should be impossible for these to be invalid + ContextRef _cur_c(cur_c); + SurfaceRef _cur_r(cur_c ? get_surface(cur_c->read) : NULL); + SurfaceRef _cur_d(cur_c ? get_surface(cur_c->draw) : NULL); + + { // scope for the lock + Mutex::Autolock _l(lock); + cur_c->onLooseCurrent(); + + } + + // This cannot be called with the lock held because it might end-up + // calling back into EGL (in particular when a surface is destroyed + // it calls ANativeWindow::disconnect + _cur_c.release(); + _cur_r.release(); + _cur_d.release(); +} + +EGLBoolean egl_display_t::makeCurrent(egl_context_t* c, egl_context_t* cur_c, + EGLSurface draw, EGLSurface read, EGLContext ctx, + EGLSurface impl_draw, EGLSurface impl_read, EGLContext impl_ctx) +{ + EGLBoolean result; + + // by construction, these are either 0 or valid (possibly terminated) + // it should be impossible for these to be invalid + ContextRef _cur_c(cur_c); + SurfaceRef _cur_r(cur_c ? get_surface(cur_c->read) : NULL); + SurfaceRef _cur_d(cur_c ? get_surface(cur_c->draw) : NULL); + + { // scope for the lock + Mutex::Autolock _l(lock); + if (c) { + result = c->cnx->egl.eglMakeCurrent( + disp[c->impl].dpy, impl_draw, impl_read, impl_ctx); + if (result == EGL_TRUE) { + c->onMakeCurrent(draw, read); + } + } else { + result = cur_c->cnx->egl.eglMakeCurrent( + disp[cur_c->impl].dpy, impl_draw, impl_read, impl_ctx); + if (result == EGL_TRUE) { + cur_c->onLooseCurrent(); + } + } + } + + if (result == EGL_TRUE) { + // This cannot be called with the lock held because it might end-up + // calling back into EGL (in particular when a surface is destroyed + // it calls ANativeWindow::disconnect + _cur_c.release(); + _cur_r.release(); + _cur_d.release(); + } + + return result; +} // ---------------------------------------------------------------------------- }; // namespace android diff --git a/opengl/libs/EGL/egl_display.h b/opengl/libs/EGL/egl_display.h index 042ae07..f3c4ddf 100644 --- a/opengl/libs/EGL/egl_display.h +++ b/opengl/libs/EGL/egl_display.h @@ -39,6 +39,7 @@ namespace android { // ---------------------------------------------------------------------------- class egl_object_t; +class egl_context_t; class egl_connection_t; // ---------------------------------------------------------------------------- @@ -63,6 +64,7 @@ struct egl_config_t { class EGLAPI egl_display_t { // marked as EGLAPI for testing purposes static egl_display_t sDisplay[NUM_DISPLAYS]; EGLDisplay getDisplay(EGLNativeDisplayType display); + void loseCurrentImpl(egl_context_t * cur_c); public: enum { @@ -84,10 +86,14 @@ public: // add reference to this object. returns true if this is a valid object. bool getObject(egl_object_t* object) const; - static egl_display_t* get(EGLDisplay dpy); static EGLDisplay getFromNativeDisplay(EGLNativeDisplayType disp); + EGLBoolean makeCurrent(egl_context_t* c, egl_context_t* cur_c, + EGLSurface draw, EGLSurface read, EGLContext ctx, + EGLSurface impl_draw, EGLSurface impl_read, EGLContext impl_ctx); + static void loseCurrent(egl_context_t * cur_c); + inline bool isReady() const { return (refs > 0); } inline bool isValid() const { return magic == '_dpy'; } inline bool isAlive() const { return isValid(); } diff --git a/opengl/libs/EGL/egl_object.cpp b/opengl/libs/EGL/egl_object.cpp index 26e8c3e..b660c53 100644 --- a/opengl/libs/EGL/egl_object.cpp +++ b/opengl/libs/EGL/egl_object.cpp @@ -62,5 +62,41 @@ bool egl_object_t::get(egl_display_t const* display, egl_object_t* object) { } // ---------------------------------------------------------------------------- + +egl_context_t::egl_context_t(EGLDisplay dpy, EGLContext context, EGLConfig config, + int impl, egl_connection_t const* cnx, int version) : + egl_object_t(get_display(dpy)), dpy(dpy), context(context), + config(config), read(0), draw(0), impl(impl), cnx(cnx), + version(version) +{ +} + +void egl_context_t::onLooseCurrent() { + read = NULL; + draw = NULL; +} + +void egl_context_t::onMakeCurrent(EGLSurface draw, EGLSurface read) { + this->read = read; + this->draw = draw; + + /* + * Here we cache the GL_EXTENSIONS string for this context and we + * add the extensions always handled by the wrapper + */ + + if (gl_extensions.isEmpty()) { + // call the implementation's glGetString(GL_EXTENSIONS) + const char* exts = (const char *)gEGLImpl[impl].hooks[version]->gl.glGetString(GL_EXTENSIONS); + gl_extensions.setTo(exts); + if (gl_extensions.find("GL_EXT_debug_marker") < 0) { + String8 temp("GL_EXT_debug_marker "); + temp.append(gl_extensions); + gl_extensions.setTo(temp); + } + } +} + +// ---------------------------------------------------------------------------- }; // namespace android // ---------------------------------------------------------------------------- diff --git a/opengl/libs/EGL/egl_object.h b/opengl/libs/EGL/egl_object.h index 7106fa5..abd4cbb 100644 --- a/opengl/libs/EGL/egl_object.h +++ b/opengl/libs/EGL/egl_object.h @@ -28,6 +28,7 @@ #include <GLES/glext.h> #include <utils/threads.h> +#include <utils/String8.h> #include <system/window.h> @@ -158,11 +159,11 @@ public: typedef egl_object_t::LocalRef<egl_context_t, EGLContext> Ref; egl_context_t(EGLDisplay dpy, EGLContext context, EGLConfig config, - int impl, egl_connection_t const* cnx, int version) : - egl_object_t(get_display(dpy)), dpy(dpy), context(context), - config(config), read(0), draw(0), impl(impl), cnx(cnx), - version(version) { - } + int impl, egl_connection_t const* cnx, int version); + + void onLooseCurrent(); + void onMakeCurrent(EGLSurface draw, EGLSurface read); + EGLDisplay dpy; EGLContext context; EGLConfig config; @@ -171,6 +172,7 @@ public: int impl; egl_connection_t const* cnx; int version; + String8 gl_extensions; }; class egl_image_t: public egl_object_t { diff --git a/opengl/libs/EGL/egl_tls.cpp b/opengl/libs/EGL/egl_tls.cpp index cf144ce..41cfae1 100644 --- a/opengl/libs/EGL/egl_tls.cpp +++ b/opengl/libs/EGL/egl_tls.cpp @@ -33,7 +33,7 @@ pthread_key_t egl_tls_t::sKey = -1; pthread_mutex_t egl_tls_t::sLockKey = PTHREAD_MUTEX_INITIALIZER; egl_tls_t::egl_tls_t() - : error(EGL_SUCCESS), ctx(0), logCallWithNoContext(EGL_TRUE), dbg(0) { + : error(EGL_SUCCESS), ctx(0), logCallWithNoContext(EGL_TRUE) { } const char *egl_tls_t::egl_strerror(EGLint err) { diff --git a/opengl/libs/EGL/egl_tls.h b/opengl/libs/EGL/egl_tls.h index 78b0b2f..2442ca0 100644 --- a/opengl/libs/EGL/egl_tls.h +++ b/opengl/libs/EGL/egl_tls.h @@ -37,7 +37,6 @@ class egl_tls_t { EGLint error; EGLContext ctx; EGLBoolean logCallWithNoContext; - DbgContext* dbg; egl_tls_t(); static void validateTLSKey(); diff --git a/opengl/libs/EGL/egldefs.h b/opengl/libs/EGL/egldefs.h index 107acd9..ff20957 100644 --- a/opengl/libs/EGL/egldefs.h +++ b/opengl/libs/EGL/egldefs.h @@ -58,6 +58,7 @@ extern gl_hooks_t gHooks[2][IMPL_NUM_IMPLEMENTATIONS]; extern gl_hooks_t gHooksNoContext; extern pthread_key_t gGLWrapperKey; extern "C" void gl_unimplemented(); +extern "C" void gl_noop(); extern char const * const gl_names[]; extern char const * const egl_names[]; diff --git a/opengl/libs/EGL/getProcAddress.cpp b/opengl/libs/EGL/getProcAddress.cpp index f89c865..8dcf38d 100644 --- a/opengl/libs/EGL/getProcAddress.cpp +++ b/opengl/libs/EGL/getProcAddress.cpp @@ -82,23 +82,41 @@ namespace android { #endif + #define GL_EXTENSION_LIST(name) \ - name(0) name(1) name(2) name(3) \ - name(4) name(5) name(6) name(7) \ - name(8) name(9) name(10) name(11) \ - name(12) name(13) name(14) name(15) \ - name(16) name(17) name(18) name(19) \ - name(20) name(21) name(22) name(23) \ - name(24) name(25) name(26) name(27) \ - name(28) name(29) name(30) name(31) \ - name(32) name(33) name(34) name(35) \ - name(36) name(37) name(38) name(39) \ - name(40) name(41) name(42) name(43) \ - name(44) name(45) name(46) name(47) \ - name(48) name(49) name(50) name(51) \ - name(52) name(53) name(54) name(55) \ - name(56) name(57) name(58) name(59) \ - name(60) name(61) name(62) name(63) + name(0) name(1) name(2) name(3) name(4) name(5) name(6) name(7) \ + name(8) name(9) name(10) name(11) name(12) name(13) name(14) name(15) \ + name(16) name(17) name(18) name(19) name(20) name(21) name(22) name(23) \ + name(24) name(25) name(26) name(27) name(28) name(29) name(30) name(31) \ + name(32) name(33) name(34) name(35) name(36) name(37) name(38) name(39) \ + name(40) name(41) name(42) name(43) name(44) name(45) name(46) name(47) \ + name(48) name(49) name(50) name(51) name(52) name(53) name(54) name(55) \ + name(56) name(57) name(58) name(59) name(60) name(61) name(62) name(63) \ + name(64) name(65) name(66) name(67) name(68) name(69) name(70) name(71) \ + name(72) name(73) name(74) name(75) name(76) name(77) name(78) name(79) \ + name(80) name(81) name(82) name(83) name(84) name(85) name(86) name(87) \ + name(88) name(89) name(90) name(91) name(92) name(93) name(94) name(95) \ + name(96) name(97) name(98) name(99) \ + name(100) name(101) name(102) name(103) name(104) name(105) name(106) name(107) \ + name(108) name(109) name(110) name(111) name(112) name(113) name(114) name(115) \ + name(116) name(117) name(118) name(119) name(120) name(121) name(122) name(123) \ + name(124) name(125) name(126) name(127) name(128) name(129) name(130) name(131) \ + name(132) name(133) name(134) name(135) name(136) name(137) name(138) name(139) \ + name(140) name(141) name(142) name(143) name(144) name(145) name(146) name(147) \ + name(148) name(149) name(150) name(151) name(152) name(153) name(154) name(155) \ + name(156) name(157) name(158) name(159) name(160) name(161) name(162) name(163) \ + name(164) name(165) name(166) name(167) name(168) name(169) name(170) name(171) \ + name(172) name(173) name(174) name(175) name(176) name(177) name(178) name(179) \ + name(180) name(181) name(182) name(183) name(184) name(185) name(186) name(187) \ + name(188) name(189) name(190) name(191) name(192) name(193) name(194) name(195) \ + name(196) name(197) name(198) name(199) \ + name(200) name(201) name(202) name(203) name(204) name(205) name(206) name(207) \ + name(208) name(209) name(210) name(211) name(212) name(213) name(214) name(215) \ + name(216) name(217) name(218) name(219) name(220) name(221) name(222) name(223) \ + name(224) name(225) name(226) name(227) name(228) name(229) name(230) name(231) \ + name(232) name(233) name(234) name(235) name(236) name(237) name(238) name(239) \ + name(240) name(241) name(242) name(243) name(244) name(245) name(246) name(247) \ + name(248) name(249) name(250) name(251) name(252) name(253) name(254) name(255) GL_EXTENSION_LIST( GL_EXTENSION ) diff --git a/opengl/libs/EGL/trace.cpp b/opengl/libs/EGL/trace.cpp index d04ef10..52907c1 100644 --- a/opengl/libs/EGL/trace.cpp +++ b/opengl/libs/EGL/trace.cpp @@ -375,22 +375,6 @@ extern "C" { #undef TRACE_GL_VOID #undef TRACE_GL -// declare all Debug_gl* functions -#define GL_ENTRY(_r, _api, ...) _r Debug_##_api ( __VA_ARGS__ ); -#include "glesv2dbg_functions.h" -#undef GL_ENTRY - -#define GL_ENTRY(_r, _api, ...) Debug_ ## _api, -EGLAPI gl_hooks_t gHooksDebug = { - { - #include "entries.in" - }, - { - {0} - } -}; -#undef GL_ENTRY - // ---------------------------------------------------------------------------- }; // namespace android // ---------------------------------------------------------------------------- |