#endif\r
\r
void *getLibraryHandle(const char *path);\r
-void *loadLibrary(const char *path);\r
+void *loadLibrary(const char *path);
+void freeLibrary(void *library);
+void *getProcAddress(void *library, const char *name);\r
\r
template<int n>\r
-void *loadLibrary(const char *(&names)[n])\r
+void *loadLibrary(const char *(&names)[n], const char *mustContainSymbol = nullptr)\r
{\r
for(int i = 0; i < n; i++)\r
{\r
\r
if(library)\r
{\r
- return library;\r
+ if(!mustContainSymbol || getProcAddress(library, mustContainSymbol))\r
+ {\r
+ return library;\r
+ }\r
+\r
+ freeLibrary(library);\r
}\r
}\r
\r
\r
if(library)\r
{\r
- return library;\r
+ if(!mustContainSymbol || getProcAddress(library, mustContainSymbol))\r
+ {\r
+ return library;\r
+ }\r
+\r
+ freeLibrary(library);\r
}\r
}\r
\r
#LOCAL_CFLAGS += -DANGLE_DISABLE_TRACE
LOCAL_CFLAGS += -std=c++11
+LOCAL_CFLAGS += -fvisibility=protected
# These changes tie the build to Cloud Android. Do something else
# for other Android builds.
eglCreatePlatformWindowSurfaceEXT;\r
eglCreatePlatformPixmapSurfaceEXT;\r
\r
- libEGLexports;\r
+ libEGL_swiftshader;\r
\r
local:\r
*;\r
<Add option="-Wall" />
<Add option="-std=c++11" />
<Add option="-fexceptions" />
+ <Add option="-fvisibility=protected" />
<Add directory="./../include/" />
<Add directory="./../" />
<Add directory="./../../" />
eglCreatePlatformWindowSurfaceEXT\r
eglCreatePlatformPixmapSurfaceEXT\r
\r
- libEGLexports
\ No newline at end of file
+ libEGL_swiftshader
\ No newline at end of file
const char *libEGL_lib[] = {"libEGL_translator.so", "libEGL.so.1", "libEGL.so"};
#endif
- libEGL = loadLibrary(libEGL_lib);
+ libEGL = loadLibrary(libEGL_lib, "libEGL_swiftshader");
if(libEGL)
{
- auto libEGLexportsProc = (LibEGLexports *(*)())getProcAddress(libEGL, "libEGLexports");
- libEGLexports = libEGLexportsProc();
+ auto libEGL_swiftshader = (LibEGLexports *(*)())getProcAddress(libEGL, "libEGL_swiftshader");
+ libEGLexports = libEGL_swiftshader();
}
}
this->clientGetCurrentDisplay = egl::getCurrentDisplay;\r
}\r
\r
-extern "C" LibEGLexports *libEGLexports()\r
+extern "C" LibEGLexports *libEGL_swiftshader()\r
{\r
static LibEGLexports libEGL;\r
return &libEGL;\r
LOCAL_CFLAGS += -DLOG_TAG=\"libGLES_CM_swiftshader\"
LOCAL_CFLAGS += -fno-operator-names -msse2 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS
LOCAL_CFLAGS += -std=c++11
+LOCAL_CFLAGS += -fvisibility=protected
# Android's make system also uses NDEBUG, so we need to set/unset it forcefully
# Uncomment for ON:
{
global:
+ eglBindAPI;
eglBindTexImage;
eglChooseConfig;
eglCopyBuffers;
glDrawTexfOES;
glDrawTexfvOES;
- libGLES_CMexports;
+ libGLES_CM_swiftshader;
Register;
<Add option="-fexceptions" />
<Add option="-fno-operator-names" />
<Add option="-msse2" />
+ <Add option="-fvisibility=protected" />
<Add option="-D__STDC_LIMIT_MACROS" />
<Add option="-D__STDC_CONSTANT_MACROS" />
<Add directory="./../" />
glDrawTexfOES
glDrawTexfvOES
- libGLES_CMexports
+ libGLES_CM_swiftshader
Register
\ No newline at end of file
const char *libGLES_CM_lib[] = {"libGLES_CM_translator.so", "libGLES_CM.so.1", "libGLES_CM.so"};
#endif
- libGLES_CM = loadLibrary(libGLES_CM_lib);
+ libGLES_CM = loadLibrary(libGLES_CM_lib, "libGLES_CM_swiftshader");
if(libGLES_CM)
{
- auto libGLES_CMexportsProc = (LibGLES_CMexports *(*)())getProcAddress(libGLES_CM, "libGLES_CMexports");
- libGLES_CMexports = libGLES_CMexportsProc();
+ auto libGLES_CM_swiftshader = (LibGLES_CMexports *(*)())getProcAddress(libGLES_CM, "libGLES_CM_swiftshader");
+ libGLES_CMexports = libGLES_CM_swiftshader();
}
}
this->glEGLImageTargetTexture2DOES = ::glEGLImageTargetTexture2DOES;\r
}\r
\r
-extern "C" LibGLES_CMexports *libGLES_CMexports()\r
+extern "C" LibGLES_CMexports *libGLES_CM_swiftshader()\r
{\r
static LibGLES_CMexports libGLES_CM;\r
return &libGLES_CM;\r
LOCAL_CFLAGS += -fno-operator-names -msse2 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS
LOCAL_CFLAGS += -std=c++11
+LOCAL_CFLAGS += -fvisibility=protected
LOCAL_SHARED_LIBRARIES += libdl liblog libcutils libhardware libui libutils \
$(GCE_STLPORT_LIBS)
glEGLImageTargetTexture2DOES;
glEGLImageTargetRenderbufferStorageOES;
- libGLESv2exports;
+ libGLESv2_swiftshader;
Register;
<Add option="-fexceptions" />
<Add option="-fno-operator-names" />
<Add option="-msse2" />
+ <Add option="-fvisibility=protected" />
<Add option="-D__STDC_LIMIT_MACROS" />
<Add option="-D__STDC_CONSTANT_MACROS" />
<Add directory="./../" />
glTexStorage3D @304
glGetInternalformativ @308
- libGLESv2exports
+ libGLESv2_swiftshader
Register
\ No newline at end of file
const char *libGLESv2_lib[] = {"libGLES_V2_translator.so", "libGLESv2.so.2", "libGLESv2.so"};
#endif
- libGLESv2 = loadLibrary(libGLESv2_lib);
+ libGLESv2 = loadLibrary(libGLESv2_lib, "libGLESv2_swiftshader");
if(libGLESv2)
{
- auto libGLESv2exportsProc = (LibGLESv2exports *(*)())getProcAddress(libGLESv2, "libGLESv2exports");
- libGLESv2exports = libGLESv2exportsProc();
+ auto libGLESv2_swiftshader = (LibGLESv2exports *(*)())getProcAddress(libGLESv2, "libGLESv2_swiftshader");
+ libGLESv2exports = libGLESv2_swiftshader();
}
}
this->createFrameBuffer = ::createFrameBuffer;\r
}\r
\r
-extern "C" LibGLESv2exports *libGLESv2exports()\r
+extern "C" LibGLESv2exports *libGLESv2_swiftshader()\r
{\r
static LibGLESv2exports libGLESv2;\r
return &libGLESv2;\r