diff options
Diffstat (limited to 'opengl/libs/EGL/egl.cpp')
-rw-r--r-- | opengl/libs/EGL/egl.cpp | 54 |
1 files changed, 36 insertions, 18 deletions
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 |