summaryrefslogtreecommitdiffstats
path: root/opengl/libs
diff options
context:
space:
mode:
authorJesse Hall <jessehall@google.com>2014-04-21 18:57:12 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-04-21 18:57:12 +0000
commit43b3e600c1a477697408b1cac4cbd40b0ad97d56 (patch)
treeeca4870be0d34a6615f94f187bf2dcb421ceb572 /opengl/libs
parentb8ceeb8f6cc3eea53d4b471747c401b9ae54d931 (diff)
parent3f0d5669eb437ce1f9ce599e196d045534ec3d4f (diff)
downloadframeworks_native-43b3e600c1a477697408b1cac4cbd40b0ad97d56.zip
frameworks_native-43b3e600c1a477697408b1cac4cbd40b0ad97d56.tar.gz
frameworks_native-43b3e600c1a477697408b1cac4cbd40b0ad97d56.tar.bz2
am 3f0d5669: Merge "Expose core EGL entry points to eglGetProcAddress"
* commit '3f0d5669eb437ce1f9ce599e196d045534ec3d4f': Expose core EGL entry points to eglGetProcAddress
Diffstat (limited to 'opengl/libs')
-rw-r--r--opengl/libs/EGL/Loader.cpp5
-rw-r--r--opengl/libs/EGL/eglApi.cpp7
-rw-r--r--opengl/libs/EGL/egldefs.h1
3 files changed, 11 insertions, 2 deletions
diff --git a/opengl/libs/EGL/Loader.cpp b/opengl/libs/EGL/Loader.cpp
index e528831..1fcc048 100644
--- a/opengl/libs/EGL/Loader.cpp
+++ b/opengl/libs/EGL/Loader.cpp
@@ -188,12 +188,17 @@ void* Loader::open(egl_connection_t* cnx)
LOG_ALWAYS_FATAL_IF(!hnd, "couldn't find an OpenGL ES implementation");
#if defined(__LP64__)
+ cnx->libEgl = load_wrapper("/system/lib64/libEGL.so");
cnx->libGles2 = load_wrapper("/system/lib64/libGLESv2.so");
cnx->libGles1 = load_wrapper("/system/lib64/libGLESv1_CM.so");
#else
+ cnx->libEgl = load_wrapper("/system/lib/libEGL.so");
cnx->libGles2 = load_wrapper("/system/lib/libGLESv2.so");
cnx->libGles1 = load_wrapper("/system/lib/libGLESv1_CM.so");
#endif
+ LOG_ALWAYS_FATAL_IF(!cnx->libEgl,
+ "couldn't load system EGL wrapper libraries");
+
LOG_ALWAYS_FATAL_IF(!cnx->libGles2 || !cnx->libGles1,
"couldn't load system OpenGL ES wrapper libraries");
diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp
index d96b54f..22990f3 100644
--- a/opengl/libs/EGL/eglApi.cpp
+++ b/opengl/libs/EGL/eglApi.cpp
@@ -877,11 +877,14 @@ EGLint eglGetError(void)
return err;
}
-static __eglMustCastToProperFunctionPointerType findBuiltinGLWrapper(
+static __eglMustCastToProperFunctionPointerType findBuiltinWrapper(
const char* procname) {
const egl_connection_t* cnx = &gEGLImpl;
void* proc = NULL;
+ proc = dlsym(cnx->libEgl, procname);
+ if (proc) return (__eglMustCastToProperFunctionPointerType)proc;
+
proc = dlsym(cnx->libGles2, procname);
if (proc) return (__eglMustCastToProperFunctionPointerType)proc;
@@ -912,7 +915,7 @@ __eglMustCastToProperFunctionPointerType eglGetProcAddress(const char *procname)
addr = findProcAddress(procname, sExtensionMap, NELEM(sExtensionMap));
if (addr) return addr;
- addr = findBuiltinGLWrapper(procname);
+ addr = findBuiltinWrapper(procname);
if (addr) return addr;
// this protects accesses to sGLExtentionMap and sGLExtentionSlot
diff --git a/opengl/libs/EGL/egldefs.h b/opengl/libs/EGL/egldefs.h
index b905ea0..9858276 100644
--- a/opengl/libs/EGL/egldefs.h
+++ b/opengl/libs/EGL/egldefs.h
@@ -44,6 +44,7 @@ struct egl_connection_t {
EGLint minor;
egl_t egl;
+ void* libEgl;
void* libGles1;
void* libGles2;
};