Merge "Expose core EGL entry points to eglGetProcAddress"

This commit is contained in:
Jesse Hall 2014-04-21 18:51:18 +00:00 committed by Gerrit Code Review
commit 3f0d5669eb
3 changed files with 11 additions and 2 deletions

View File

@ -188,12 +188,17 @@ void* Loader::open(egl_connection_t* cnx)
LOG_ALWAYS_FATAL_IF(!hnd, "couldn't find an OpenGL ES implementation"); LOG_ALWAYS_FATAL_IF(!hnd, "couldn't find an OpenGL ES implementation");
#if defined(__LP64__) #if defined(__LP64__)
cnx->libEgl = load_wrapper("/system/lib64/libEGL.so");
cnx->libGles2 = load_wrapper("/system/lib64/libGLESv2.so"); cnx->libGles2 = load_wrapper("/system/lib64/libGLESv2.so");
cnx->libGles1 = load_wrapper("/system/lib64/libGLESv1_CM.so"); cnx->libGles1 = load_wrapper("/system/lib64/libGLESv1_CM.so");
#else #else
cnx->libEgl = load_wrapper("/system/lib/libEGL.so");
cnx->libGles2 = load_wrapper("/system/lib/libGLESv2.so"); cnx->libGles2 = load_wrapper("/system/lib/libGLESv2.so");
cnx->libGles1 = load_wrapper("/system/lib/libGLESv1_CM.so"); cnx->libGles1 = load_wrapper("/system/lib/libGLESv1_CM.so");
#endif #endif
LOG_ALWAYS_FATAL_IF(!cnx->libEgl,
"couldn't load system EGL wrapper libraries");
LOG_ALWAYS_FATAL_IF(!cnx->libGles2 || !cnx->libGles1, LOG_ALWAYS_FATAL_IF(!cnx->libGles2 || !cnx->libGles1,
"couldn't load system OpenGL ES wrapper libraries"); "couldn't load system OpenGL ES wrapper libraries");

View File

@ -877,11 +877,14 @@ EGLint eglGetError(void)
return err; return err;
} }
static __eglMustCastToProperFunctionPointerType findBuiltinGLWrapper( static __eglMustCastToProperFunctionPointerType findBuiltinWrapper(
const char* procname) { const char* procname) {
const egl_connection_t* cnx = &gEGLImpl; const egl_connection_t* cnx = &gEGLImpl;
void* proc = NULL; void* proc = NULL;
proc = dlsym(cnx->libEgl, procname);
if (proc) return (__eglMustCastToProperFunctionPointerType)proc;
proc = dlsym(cnx->libGles2, procname); proc = dlsym(cnx->libGles2, procname);
if (proc) return (__eglMustCastToProperFunctionPointerType)proc; if (proc) return (__eglMustCastToProperFunctionPointerType)proc;
@ -912,7 +915,7 @@ __eglMustCastToProperFunctionPointerType eglGetProcAddress(const char *procname)
addr = findProcAddress(procname, sExtensionMap, NELEM(sExtensionMap)); addr = findProcAddress(procname, sExtensionMap, NELEM(sExtensionMap));
if (addr) return addr; if (addr) return addr;
addr = findBuiltinGLWrapper(procname); addr = findBuiltinWrapper(procname);
if (addr) return addr; if (addr) return addr;
// this protects accesses to sGLExtentionMap and sGLExtentionSlot // this protects accesses to sGLExtentionMap and sGLExtentionSlot

View File

@ -44,6 +44,7 @@ struct egl_connection_t {
EGLint minor; EGLint minor;
egl_t egl; egl_t egl;
void* libEgl;
void* libGles1; void* libGles1;
void* libGles2; void* libGles2;
}; };