Add support for EGL on linux
Allow setting skia_egl=1 to build skia against EGL instead of GLX on unix R=bsalomon@google.com, djsollen@google.com Author: derekf@osg.samsung.com Review URL: https://codereview.chromium.org/543363004
This commit is contained in:
parent
432789972c
commit
1cea736c32
@ -50,6 +50,7 @@
|
||||
'skia_arch_type%': 'x86',
|
||||
'arm_version%': 0,
|
||||
'arm_neon%': 0,
|
||||
'skia_egl%': 0,
|
||||
},
|
||||
|
||||
# Re-define all variables defined within the level-3 'variables' dict,
|
||||
@ -59,6 +60,7 @@
|
||||
'skia_arch_type%': '<(skia_arch_type)',
|
||||
'arm_version%': '<(arm_version)',
|
||||
'arm_neon%': '<(arm_neon)',
|
||||
'skia_egl%': '<(skia_egl)',
|
||||
|
||||
'conditions': [
|
||||
[ 'skia_android_framework == 1', {
|
||||
@ -87,6 +89,7 @@
|
||||
}],
|
||||
[ 'skia_os == "android"', {
|
||||
'skia_static_initializers%': 0,
|
||||
'skia_egl%': 1,
|
||||
}, {
|
||||
'skia_static_initializers%': 1,
|
||||
}],
|
||||
@ -95,6 +98,9 @@
|
||||
'arm_version%': 7,
|
||||
'arm_neon%': 0, # neon asm files known not to work with the ios build
|
||||
}],
|
||||
[ 'skia_os in "nacl"', {
|
||||
'skia_egl%': 1,
|
||||
}],
|
||||
[ 'skia_os in ["android", "nacl"] and not skia_android_framework',
|
||||
# skia_freetype_static - on OS variants that normally would
|
||||
# dynamically link the system FreeType library, don't do
|
||||
@ -233,6 +239,7 @@
|
||||
'skia_disable_inlining%': 0,
|
||||
'skia_moz2d%': 0,
|
||||
'skia_is_bot%': '<!(python -c "import os; print os.environ.get(\'CHROME_HEADLESS\', 0)")',
|
||||
'skia_egl%': '<(skia_egl)',
|
||||
|
||||
# These are referenced by our .gypi files that list files (e.g. core.gypi)
|
||||
#
|
||||
|
24
gyp/gpu.gyp
24
gyp/gpu.gyp
@ -12,6 +12,7 @@
|
||||
}],
|
||||
['skia_os != "linux" and skia_os != "chromeos"', {
|
||||
'sources/': [ ['exclude', '_unix.(h|cpp)$'],
|
||||
['exclude', 'GrGLCreateNativeInterface_egl.cpp'],
|
||||
],
|
||||
}],
|
||||
['skia_os != "ios"', {
|
||||
@ -26,6 +27,14 @@
|
||||
'sources/': [ ['exclude', '_nacl.(h|cpp)$'],
|
||||
],
|
||||
}],
|
||||
['skia_os == "nacl" or skia_egl == 0', {
|
||||
'sources/': [ ['exclude', '_egl.(h|cpp)$'],
|
||||
],
|
||||
}],
|
||||
['skia_egl == 1', {
|
||||
'sources/': [ ['exclude', '_unix.(h|cpp)$'],
|
||||
],
|
||||
}],
|
||||
# nullify the targets in this gyp file if skia_gpu is 0
|
||||
[ 'skia_gpu == 0', {
|
||||
'sources/': [
|
||||
@ -140,6 +149,16 @@
|
||||
'../src/gpu/gl/GrGLDefaultInterface_none.cpp',
|
||||
'../src/gpu/gl/GrGLCreateNativeInterface_none.cpp',
|
||||
],
|
||||
}],
|
||||
[ '(skia_os == "linux" or skia_os == "chromeos") and skia_egl == 1', {
|
||||
'link_settings': {
|
||||
'libraries': [
|
||||
'-lEGL',
|
||||
'-lGLESv2',
|
||||
],
|
||||
},
|
||||
}],
|
||||
[ '(skia_os == "linux" or skia_os == "chromeos") and skia_egl == 0', {
|
||||
'link_settings': {
|
||||
'libraries': [
|
||||
'-lGL',
|
||||
@ -155,6 +174,11 @@
|
||||
],
|
||||
},
|
||||
}],
|
||||
[ 'skia_egl==1', {
|
||||
'defines': [
|
||||
'SK_EGL',
|
||||
],
|
||||
}],
|
||||
[ 'skia_mesa and skia_os == "linux"', {
|
||||
'link_settings': {
|
||||
'libraries': [
|
||||
|
@ -297,6 +297,7 @@
|
||||
'<(skia_src_path)/gpu/gl/mac/GrGLCreateNativeInterface_mac.cpp',
|
||||
'<(skia_src_path)/gpu/gl/win/GrGLCreateNativeInterface_win.cpp',
|
||||
'<(skia_src_path)/gpu/gl/unix/GrGLCreateNativeInterface_unix.cpp',
|
||||
'<(skia_src_path)/gpu/gl/egl/GrGLCreateNativeInterface_egl.cpp',
|
||||
'<(skia_src_path)/gpu/gl/iOS/GrGLCreateNativeInterface_iOS.cpp',
|
||||
'<(skia_src_path)/gpu/gl/android/GrGLCreateNativeInterface_android.cpp',
|
||||
|
||||
@ -306,7 +307,7 @@
|
||||
'<(skia_src_path)/gpu/gl/nacl/SkNativeGLContext_nacl.cpp',
|
||||
'<(skia_src_path)/gpu/gl/win/SkNativeGLContext_win.cpp',
|
||||
'<(skia_src_path)/gpu/gl/unix/SkNativeGLContext_unix.cpp',
|
||||
'<(skia_src_path)/gpu/gl/android/SkNativeGLContext_android.cpp',
|
||||
'<(skia_src_path)/gpu/gl/egl/SkNativeGLContext_egl.cpp',
|
||||
'<(skia_src_path)/gpu/gl/iOS/SkNativeGLContext_iOS.mm',
|
||||
],
|
||||
'skgpu_mesa_gl_sources': [
|
||||
|
@ -35,7 +35,7 @@ static const struct { int major, minor; } gl_versions[] = {
|
||||
|
||||
#if defined(SK_BUILD_FOR_MAC)
|
||||
#include <OpenGL/OpenGL.h>
|
||||
#elif defined(SK_BUILD_FOR_ANDROID) || defined(SK_BUILD_FOR_NACL)
|
||||
#elif defined(SK_EGL)
|
||||
#include <GLES2/gl2.h>
|
||||
#include <EGL/egl.h>
|
||||
#elif defined(SK_BUILD_FOR_UNIX)
|
||||
@ -64,7 +64,7 @@ public:
|
||||
private:
|
||||
#if defined(SK_BUILD_FOR_MAC)
|
||||
CGLContextObj fOldCGLContext;
|
||||
#elif defined(SK_BUILD_FOR_ANDROID) || defined(SK_BUILD_FOR_NACL)
|
||||
#elif defined(SK_EGL)
|
||||
EGLContext fOldEGLContext;
|
||||
EGLDisplay fOldDisplay;
|
||||
EGLSurface fOldSurface;
|
||||
@ -88,7 +88,7 @@ protected:
|
||||
private:
|
||||
#if defined(SK_BUILD_FOR_MAC)
|
||||
CGLContextObj fContext;
|
||||
#elif defined(SK_BUILD_FOR_ANDROID) || defined(SK_BUILD_FOR_NACL)
|
||||
#elif defined(SK_EGL)
|
||||
EGLContext fContext;
|
||||
EGLDisplay fDisplay;
|
||||
EGLSurface fSurface;
|
||||
|
22
src/gpu/gl/egl/GrGLCreateNativeInterface_egl.cpp
Normal file
22
src/gpu/gl/egl/GrGLCreateNativeInterface_egl.cpp
Normal file
@ -0,0 +1,22 @@
|
||||
|
||||
/*
|
||||
* Copyright 2014 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
#include "gl/GrGLInterface.h"
|
||||
#include "gl/GrGLAssembleInterface.h"
|
||||
#include "gl/GrGLUtil.h"
|
||||
|
||||
#include <EGL/egl.h>
|
||||
#include <GLES2/gl2.h>
|
||||
|
||||
static GrGLFuncPtr egl_get_gl_proc(void* ctx, const char name[]) {
|
||||
SkASSERT(NULL == ctx);
|
||||
return eglGetProcAddress(name);
|
||||
}
|
||||
|
||||
const GrGLInterface* GrGLCreateNativeInterface() {
|
||||
return GrGLAssembleInterface(NULL, egl_get_gl_proc);
|
||||
}
|
Loading…
Reference in New Issue
Block a user