Loading opengl/libs/EGL/egl_angle_platform.cpp +20 −5 Original line number Diff line number Diff line Loading @@ -29,9 +29,13 @@ #include <graphicsenv/GraphicsEnv.h> #include <time.h> #include <log/log.h> #include <vndksupport/linker.h> namespace angle { constexpr char kAngleEs2Lib[] = "libGLESv2_angle.so"; constexpr int kAngleDlFlags = RTLD_LOCAL | RTLD_NOW; static GetDisplayPlatformFunc angleGetDisplayPlatform = nullptr; static ResetDisplayPlatformFunc angleResetDisplayPlatform = nullptr; Loading Loading @@ -101,11 +105,22 @@ static void assignAnglePlatformMethods(PlatformMethods* platformMethods) { bool initializeAnglePlatform(EGLDisplay dpy) { // Since we're inside libEGL, use dlsym to lookup fptr for ANGLEGetDisplayPlatform android_namespace_t* ns = android::GraphicsEnv::getInstance().getAngleNamespace(); void* so = nullptr; if (ns) { const android_dlextinfo dlextinfo = { .flags = ANDROID_DLEXT_USE_NAMESPACE, .library_namespace = ns, }; void* so = android_dlopen_ext("libGLESv2_angle.so", RTLD_LOCAL | RTLD_NOW, &dlextinfo); so = android_dlopen_ext(kAngleEs2Lib, kAngleDlFlags, &dlextinfo); } else { // If we are here, ANGLE is loaded as built-in gl driver in the sphal. so = android_load_sphal_library(kAngleEs2Lib, kAngleDlFlags); } if (!so) { ALOGE("%s failed to dlopen %s!", __FUNCTION__, kAngleEs2Lib); return false; } angleGetDisplayPlatform = reinterpret_cast<GetDisplayPlatformFunc>(dlsym(so, "ANGLEGetDisplayPlatform")); Loading Loading
opengl/libs/EGL/egl_angle_platform.cpp +20 −5 Original line number Diff line number Diff line Loading @@ -29,9 +29,13 @@ #include <graphicsenv/GraphicsEnv.h> #include <time.h> #include <log/log.h> #include <vndksupport/linker.h> namespace angle { constexpr char kAngleEs2Lib[] = "libGLESv2_angle.so"; constexpr int kAngleDlFlags = RTLD_LOCAL | RTLD_NOW; static GetDisplayPlatformFunc angleGetDisplayPlatform = nullptr; static ResetDisplayPlatformFunc angleResetDisplayPlatform = nullptr; Loading Loading @@ -101,11 +105,22 @@ static void assignAnglePlatformMethods(PlatformMethods* platformMethods) { bool initializeAnglePlatform(EGLDisplay dpy) { // Since we're inside libEGL, use dlsym to lookup fptr for ANGLEGetDisplayPlatform android_namespace_t* ns = android::GraphicsEnv::getInstance().getAngleNamespace(); void* so = nullptr; if (ns) { const android_dlextinfo dlextinfo = { .flags = ANDROID_DLEXT_USE_NAMESPACE, .library_namespace = ns, }; void* so = android_dlopen_ext("libGLESv2_angle.so", RTLD_LOCAL | RTLD_NOW, &dlextinfo); so = android_dlopen_ext(kAngleEs2Lib, kAngleDlFlags, &dlextinfo); } else { // If we are here, ANGLE is loaded as built-in gl driver in the sphal. so = android_load_sphal_library(kAngleEs2Lib, kAngleDlFlags); } if (!so) { ALOGE("%s failed to dlopen %s!", __FUNCTION__, kAngleEs2Lib); return false; } angleGetDisplayPlatform = reinterpret_cast<GetDisplayPlatformFunc>(dlsym(so, "ANGLEGetDisplayPlatform")); Loading