aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar hendrikw <hendrikw@chromium.org>2015-09-23 11:35:55 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-09-23 11:35:55 -0700
commit6f0fdac9e7248c4e82ba2c9f6331694db0174bb2 (patch)
tree439670a2bcad66651bcb37079b9e8d95ee8960c7 /src
parent10cae83e4bb726610b93276e17815c5d52d73395 (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.cpp27
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);
}