diff options
author | 2015-09-23 11:35:55 -0700 | |
---|---|---|
committer | 2015-09-23 11:35:55 -0700 | |
commit | 6f0fdac9e7248c4e82ba2c9f6331694db0174bb2 (patch) | |
tree | 439670a2bcad66651bcb37079b9e8d95ee8960c7 /src | |
parent | 10cae83e4bb726610b93276e17815c5d52d73395 (diff) |
skia: Add support for ANGLE on linux
This will allow the ANGLE guys to test the ANGLE gl backend
with nanobench and DM
Review URL: https://codereview.chromium.org/1343193005
Diffstat (limited to 'src')
-rw-r--r-- | src/gpu/gl/angle/GrGLCreateANGLEInterface.cpp | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/src/gpu/gl/angle/GrGLCreateANGLEInterface.cpp b/src/gpu/gl/angle/GrGLCreateANGLEInterface.cpp index 51e461a0d8..9a4dffb4b1 100644 --- a/src/gpu/gl/angle/GrGLCreateANGLEInterface.cpp +++ b/src/gpu/gl/angle/GrGLCreateANGLEInterface.cpp @@ -10,12 +10,21 @@ #include "gl/GrGLInterface.h" #include "gl/GrGLAssembleInterface.h" +#if defined _WIN32 #define WIN32_LEAN_AND_MEAN #include <windows.h> +#else +#include <dlfcn.h> +#endif // defined _WIN32 + #include <EGL/egl.h> static GrGLFuncPtr angle_get_gl_proc(void* ctx, const char name[]) { +#if defined _WIN32 GrGLFuncPtr proc = (GrGLFuncPtr) GetProcAddress((HMODULE)ctx, name); +#else + GrGLFuncPtr proc = (GrGLFuncPtr) dlsym(ctx, name); +#endif // defined _WIN32 if (proc) { return proc; } @@ -23,17 +32,21 @@ static GrGLFuncPtr angle_get_gl_proc(void* ctx, const char name[]) { } const GrGLInterface* GrGLCreateANGLEInterface() { + static void* gANGLELib = nullptr; - static HMODULE ghANGLELib = nullptr; - - if (nullptr == ghANGLELib) { + if (nullptr == gANGLELib) { // We load the ANGLE library and never let it go - ghANGLELib = LoadLibrary("libGLESv2.dll"); +#if defined _WIN32 + gANGLELib = LoadLibrary("libGLESv2.dll"); +#else + gANGLELib = dlopen("libGLESv2.so", RTLD_LAZY); +#endif // defined _WIN32 } - if (nullptr == ghANGLELib) { - // We can't setup the interface correctly w/o the DLL + + if (nullptr == gANGLELib) { + // We can't setup the interface correctly w/o the so return nullptr; } - return GrGLAssembleGLESInterface(ghANGLELib, angle_get_gl_proc); + return GrGLAssembleGLESInterface(gANGLELib, angle_get_gl_proc); } |