Commit a9969b2a by Nicolas Capens Committed by Nicolas Capens

Newly load sibling library from the same directory.

Previously we were only attempting to obtain a handle to an already loaded sibling library residing in the same directory. If it wasn't already pre-loaded, we only loaded the library by name without any directory prefix. This could lead to not finding the correct library. Also, it's fine if the directory prefix is empty, so there's no need for duplicate loops. Bug b/110407478 Change-Id: Ia55b426e58b9f4039064bba9253dae80e4fdf5cf Reviewed-on: https://swiftshader-review.googlesource.com/19549Tested-by: 's avatarNicolas Capens <nicolascapens@google.com> Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com>
parent bf8fd5b5
......@@ -31,28 +31,10 @@ void *getProcAddress(void *library, const char *name);
template<int n>
void *loadLibrary(const std::string &libraryDirectory, const char *(&names)[n], const char *mustContainSymbol = nullptr)
{
if(!libraryDirectory.empty())
for(const char *libraryName : names)
{
for(int i = 0; i < n; i++)
{
std::string nameWithPath = libraryDirectory + names[i];
void *library = getLibraryHandle(nameWithPath.c_str());
if(library)
{
if(!mustContainSymbol || getProcAddress(library, mustContainSymbol))
{
return library;
}
freeLibrary(library);
}
}
}
for(int i = 0; i < n; i++)
{
void *library = getLibraryHandle(names[i]);
std::string libraryPath = libraryDirectory + libraryName;
void *library = getLibraryHandle(libraryPath.c_str());
if(library)
{
......@@ -65,9 +47,10 @@ void *loadLibrary(const std::string &libraryDirectory, const char *(&names)[n],
}
}
for(int i = 0; i < n; i++)
for(const char *libraryName : names)
{
void *library = loadLibrary(names[i]);
std::string libraryPath = libraryDirectory + libraryName;
void *library = loadLibrary(libraryPath.c_str());
if(library)
{
......
......@@ -15,7 +15,7 @@
#define MAJOR_VERSION 4
#define MINOR_VERSION 0
#define BUILD_VERSION 0
#define BUILD_REVISION 6
#define BUILD_REVISION 7
#define STRINGIFY(x) #x
#define MACRO_STRINGIFY(x) STRINGIFY(x)
......
......@@ -99,11 +99,7 @@ private:
const char *libEGL_lib[] = {"libEGL.dll", "libEGL_translator.dll"};
#endif
#elif defined(__ANDROID__)
#if defined(__LP64__)
const char *libEGL_lib[] = {"/vendor/lib64/egl/libEGL_swiftshader.so", "/system/lib64/egl/libEGL_swiftshader.so"};
#else
const char *libEGL_lib[] = {"/vendor/lib/egl/libEGL_swiftshader.so", "/system/lib/egl/libEGL_swiftshader.so"};
#endif
const char *libEGL_lib[] = {"libEGL_swiftshader.so", "libEGL_swiftshader.so"};
#elif defined(__linux__)
#if defined(__LP64__)
const char *libEGL_lib[] = {"lib64EGL_translator.so", "libEGL.so.1", "libEGL.so"};
......
......@@ -260,11 +260,7 @@ private:
const char *libGLES_CM_lib[] = {"libGLES_CM.dll", "libGLES_CM_translator.dll"};
#endif
#elif defined(__ANDROID__)
#if defined(__LP64__)
const char *libGLES_CM_lib[] = {"/vendor/lib64/egl/libGLESv1_CM_swiftshader.so", "/system/lib64/egl/libGLESv1_CM_swiftshader.so"};
#else
const char *libGLES_CM_lib[] = {"/vendor/lib/egl/libGLESv1_CM_swiftshader.so", "/system/lib/egl/libGLESv1_CM_swiftshader.so"};
#endif
const char *libGLES_CM_lib[] = {"libGLESv1_CM_swiftshader.so", "libGLESv1_CM_swiftshader.so"};
#elif defined(__linux__)
#if defined(__LP64__)
const char *libGLES_CM_lib[] = {"lib64GLES_CM_translator.so", "libGLES_CM.so.1", "libGLES_CM.so"};
......
......@@ -285,11 +285,7 @@ private:
const char *libGLESv2_lib[] = {"libGLESv2.dll", "libGLES_V2_translator.dll"};
#endif
#elif defined(__ANDROID__)
#if defined(__LP64__)
const char *libGLESv2_lib[] = {"/vendor/lib64/egl/libGLESv2_swiftshader.so", "/system/lib64/egl/libGLESv2_swiftshader.so"};
#else
const char *libGLESv2_lib[] = {"/vendor/lib/egl/libGLESv2_swiftshader.so", "/system/lib/egl/libGLESv2_swiftshader.so"};
#endif
const char *libGLESv2_lib[] = {"libGLESv2_swiftshader.so", "libGLESv2_swiftshader.so"};
#elif defined(__linux__)
#if defined(__LP64__)
const char *libGLESv2_lib[] = {"lib64GLES_V2_translator.so", "libGLESv2.so.2", "libGLESv2.so"};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment