Merge "Expose core EGL entry points to eglGetProcAddress"
This commit is contained in:
commit
3f0d5669eb
@ -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");
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user