diff --git a/config/autoconf.mk.in b/config/autoconf.mk.in index 1a7c2c6538e..fb9540b98b2 100644 --- a/config/autoconf.mk.in +++ b/config/autoconf.mk.in @@ -203,6 +203,7 @@ MOZ_D3DX9_CAB = @MOZ_D3DX9_CAB@ MOZ_D3DCOMPILER_CAB = @MOZ_D3DCOMPILER_CAB@ MOZ_D3DX9_DLL = @MOZ_D3DX9_DLL@ MOZ_D3DCOMPILER_DLL = @MOZ_D3DCOMPILER_DLL@ +MOZ_GL_PROVIDER = @MOZ_GL_PROVIDER@ JAVA="@JAVA@" diff --git a/configure.in b/configure.in index 3f52566a6b7..95e0aa88c12 100644 --- a/configure.in +++ b/configure.in @@ -4782,7 +4782,7 @@ cairo-gtk2|cairo-gtk2-x11) MOZ_ENABLE_GTK2=1 MOZ_ENABLE_XREMOTE=1 MOZ_WEBGL=1 - MOZ_WEBGL_GLX=1 + MOZ_GL_DEFAULT_PROVIDER=GLX AC_DEFINE(MOZ_X11) MOZ_X11=1 @@ -4800,7 +4800,7 @@ cairo-qt) MOZ_ENABLE_QT=1 if test -z "$WITHOUT_X11"; then MOZ_ENABLE_XREMOTE=1 - MOZ_WEBGL_GLX=1 + MOZ_GL_DEFAULT_PROVIDER=GLX MOZ_X11=1 AC_DEFINE(MOZ_X11) XT_LIBS= @@ -6737,7 +6737,7 @@ if test $MOZ_PLATFORM_MAEMO; then fi MOZ_GFX_OPTIMIZE_MOBILE=1 - MOZ_WEBGL_GLX= + MOZ_GL_DEFAULT_PROVIDER=EGL MOZ_MAEMO_LIBLOCATION= if test $MOZ_PLATFORM_MAEMO = 5; then @@ -6864,6 +6864,22 @@ fi AC_SUBST(MOZ_EGL_XRENDER_COMPOSITE) +dnl ======================================================== +dnl GL provider +dnl ======================================================== +MOZ_GL_PROVIDER= +MOZ_ARG_WITH_STRING(gl-provider, +[ --with-gl-provider=ID + Set GL provider backend type], +[ val=`echo $withval` + MOZ_GL_PROVIDER="$val"]) + +if test -n "$MOZ_GL_PROVIDER"; then +MOZ_GL_DEFAULT_PROVIDER=$MOZ_GL_PROVIDER +AC_SUBST(MOZ_GL_PROVIDER) +AC_DEFINE_UNQUOTED(MOZ_GL_PROVIDER, GLContextProvider$MOZ_GL_PROVIDER) +fi + dnl ======================================================== dnl = faststripe theme dnl ======================================================== @@ -8718,12 +8734,12 @@ if test "$MOZ_X11"; then fi # MOZ_X11 dnl Check for headers, etc. needed by WebGL. -if test -n "$MOZ_WEBGL_GLX"; then +if test "$MOZ_GL_DEFAULT_PROVIDER" = "GLX"; then MOZ_CHECK_HEADER(GL/glx.h) if test "$ac_cv_header_GL_glx_h" != "yes"; then AC_MSG_ERROR([Can't find header GL/glx.h for WebGL (install mesa-common-dev (Ubuntu), mesa-libGL-devel (Fedora), or Mesa-devel (openSUSE))]) fi -fi # MOZ_WEBGL_GLX +fi # MOZ_GL_DEFAULT_PROVIDER=GLX fi # COMPILE_ENVIRONMENT if test "$USE_FC_FREETYPE"; then diff --git a/gfx/gl/GLContextProvider.h b/gfx/gl/GLContextProvider.h index 8fa4db45284..1166d58f32e 100644 --- a/gfx/gl/GLContextProvider.h +++ b/gfx/gl/GLContextProvider.h @@ -100,6 +100,13 @@ namespace gl { #define GL_CONTEXT_PROVIDER_DEFAULT GLContextProviderGLX #endif +#ifdef MOZ_GL_PROVIDER +#define GL_CONTEXT_PROVIDER_NAME MOZ_GL_PROVIDER +#include "GLContextProviderImpl.h" +#undef GL_CONTEXT_PROVIDER_NAME +#define GL_CONTEXT_PROVIDER_DEFAULT MOZ_GL_PROVIDER +#endif + #ifdef GL_CONTEXT_PROVIDER_DEFAULT typedef GL_CONTEXT_PROVIDER_DEFAULT GLContextProvider; #else diff --git a/gfx/gl/Makefile.in b/gfx/gl/Makefile.in index 049f0099eff..1ac02472d8a 100644 --- a/gfx/gl/Makefile.in +++ b/gfx/gl/Makefile.in @@ -113,6 +113,10 @@ ifeq ($(MOZ_WIDGET_TOOLKIT),gonk) GL_PROVIDER = EGL endif +ifdef MOZ_GL_PROVIDER +GL_PROVIDER = $(MOZ_GL_PROVIDER) +endif + # Mac is a special snowflake ifeq ($(GL_PROVIDER),CGL) CMMSRCS += GLContextProvider$(GL_PROVIDER).mm diff --git a/widget/xpwidgets/nsBaseWidget.cpp b/widget/xpwidgets/nsBaseWidget.cpp index 47c4a8255fe..94efe95846f 100644 --- a/widget/xpwidgets/nsBaseWidget.cpp +++ b/widget/xpwidgets/nsBaseWidget.cpp @@ -760,7 +760,7 @@ nsBaseWidget::AutoUseBasicLayerManager::~AutoUseBasicLayerManager() bool nsBaseWidget::GetShouldAccelerate() { -#if defined(XP_WIN) || defined(ANDROID) || (MOZ_PLATFORM_MAEMO > 5) +#if defined(XP_WIN) || defined(ANDROID) || (MOZ_PLATFORM_MAEMO > 5) || defined(MOZ_GL_PROVIDER) bool accelerateByDefault = true; #elif defined(XP_MACOSX) /* quickdraw plugins don't work with OpenGL so we need to avoid OpenGL when we want to support