[PATCH 2/9] gles: fix lookup for GLESv1 functions

Imre Deak imre.deak at intel.com
Wed Apr 11 08:19:32 PDT 2012


Get the function from the GLESv1 library in case it's not found in
GLESv2.

Signed-off-by: Imre Deak <imre.deak at intel.com>
---
 glproc_egl.cpp |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/glproc_egl.cpp b/glproc_egl.cpp
index 53dd714..f6e976d 100644
--- a/glproc_egl.cpp
+++ b/glproc_egl.cpp
@@ -79,6 +79,8 @@ __getPublicProcAddress(const char *procName)
      * are explicitely loading egltrace.so.
      */
     void *lib = NULL;
+    void *fn = NULL;
+
     if (procName[0] == 'e' && procName[1] == 'g' && procName[2] == 'l') {
         static void *libEGL = NULL;
         if (!libEGL) {
@@ -94,9 +96,18 @@ __getPublicProcAddress(const char *procName)
         lib = libGLESv2;
     }
     if (lib) {
-        return dlsym(lib, procName);
+        fn = dlsym(lib, procName);
+	if (!fn && procName[0] == 'g' && procName[1] == 'l') {
+	    static void *libGLESv1;
+
+	    if (!libGLESv1)
+                libGLESv1 = dlopen("libGLESv1_CM.so", RTLD_LOCAL | RTLD_LAZY);
+	    if (libGLESv1)
+	        fn = dlsym(libGLESv1, procName);
+	}
     }
-    return NULL;
+
+    return fn;
 #else
     return dlsym(RTLD_NEXT, procName);
 #endif
-- 
1.7.5.4



More information about the apitrace mailing list