From dd0eb4d9d89c3b796044c7fac8397c8713c5cdeb Mon Sep 17 00:00:00 2001 From: Martin Stransky Date: Fri, 25 May 2018 12:50:35 +0200 Subject: Enable Wayland backend --- rb244010.patch | 149 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 rb244010.patch (limited to 'rb244010.patch') diff --git a/rb244010.patch b/rb244010.patch new file mode 100644 index 0000000..0df8c3b --- /dev/null +++ b/rb244010.patch @@ -0,0 +1,149 @@ +diff --git a/gfx/gl/GLContextProviderWayland.cpp b/gfx/gl/GLContextProviderWayland.cpp +new file mode 100644 +--- /dev/null ++++ b/gfx/gl/GLContextProviderWayland.cpp +@@ -0,0 +1,99 @@ ++/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this ++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#ifdef MOZ_WIDGET_GTK ++#include ++#include ++#endif ++ ++#include "GLContextProvider.h" ++ ++namespace mozilla { ++namespace gl { ++ ++using namespace mozilla::gfx; ++using namespace mozilla::widget; ++ ++static class GLContextProviderGLX sGLContextProviderGLX; ++static class GLContextProviderEGL sGLContextProviderEGL; ++ ++already_AddRefed ++GLContextProviderWayland::CreateWrappingExisting(void* aContext, void* aSurface) ++{ ++ if (GDK_IS_X11_DISPLAY(gdk_display_get_default())) { ++ return sGLContextProviderGLX.CreateWrappingExisting(aContext, aSurface); ++ } else { ++ return sGLContextProviderEGL.CreateWrappingExisting(aContext, aSurface); ++ } ++} ++ ++already_AddRefed ++GLContextProviderWayland::CreateForCompositorWidget(CompositorWidget* aCompositorWidget, bool aForceAccelerated) ++{ ++ if (GDK_IS_X11_DISPLAY(gdk_display_get_default())) { ++ return sGLContextProviderGLX.CreateForCompositorWidget(aCompositorWidget, aForceAccelerated); ++ } else { ++ return sGLContextProviderEGL.CreateForCompositorWidget(aCompositorWidget, aForceAccelerated); ++ } ++} ++ ++already_AddRefed ++GLContextProviderWayland::CreateForWindow(nsIWidget* aWidget, ++ bool aWebRender, ++ bool aForceAccelerated) ++{ ++ if (GDK_IS_X11_DISPLAY(gdk_display_get_default())) { ++ return sGLContextProviderGLX.CreateForWindow(aWidget, aWebRender, aForceAccelerated); ++ } else { ++ return sGLContextProviderEGL.CreateForWindow(aWidget, aWebRender, aForceAccelerated); ++ } ++} ++ ++/*static*/ already_AddRefed ++GLContextProviderWayland::CreateHeadless(CreateContextFlags flags, ++ nsACString* const out_failureId) ++{ ++ if (GDK_IS_X11_DISPLAY(gdk_display_get_default())) { ++ return sGLContextProviderGLX.CreateHeadless(flags, out_failureId); ++ } else { ++ return sGLContextProviderEGL.CreateHeadless(flags, out_failureId); ++ } ++} ++ ++/*static*/ already_AddRefed ++GLContextProviderWayland::CreateOffscreen(const IntSize& size, ++ const SurfaceCaps& minCaps, ++ CreateContextFlags flags, ++ nsACString* const out_failureId) ++{ ++ if (GDK_IS_X11_DISPLAY(gdk_display_get_default())) { ++ return sGLContextProviderGLX.CreateOffscreen(size, minCaps, flags, out_failureId); ++ } else { ++ return sGLContextProviderEGL.CreateOffscreen(size, minCaps, flags, out_failureId); ++ } ++} ++ ++/*static*/ GLContext* ++GLContextProviderWayland::GetGlobalContext() ++{ ++ if (GDK_IS_X11_DISPLAY(gdk_display_get_default())) { ++ return sGLContextProviderGLX.GetGlobalContext(); ++ } else { ++ return sGLContextProviderEGL.GetGlobalContext(); ++ } ++} ++ ++/*static*/ void ++GLContextProviderWayland::Shutdown() ++{ ++ if (GDK_IS_X11_DISPLAY(gdk_display_get_default())) { ++ sGLContextProviderGLX.Shutdown(); ++ } else { ++ sGLContextProviderEGL.Shutdown(); ++ } ++} ++ ++} /* namespace gl */ ++} /* namespace mozilla */ +diff --git a/gfx/gl/moz.build b/gfx/gl/moz.build +--- a/gfx/gl/moz.build ++++ b/gfx/gl/moz.build +@@ -8,17 +8,17 @@ gl_provider = 'Null' + + if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': + gl_provider = 'WGL' + elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': + gl_provider = 'CGL' + elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit': + gl_provider = 'EAGL' + elif 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: +- if CONFIG['MOZ_EGL_XRENDER_COMPOSITE'] or CONFIG['MOZ_WAYLAND']: ++ if CONFIG['MOZ_EGL_XRENDER_COMPOSITE']: + gl_provider = 'EGL' + else: + gl_provider = 'GLX' + elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android': + gl_provider = 'EGL' + + if CONFIG['MOZ_GL_PROVIDER']: + gl_provider = CONFIG['MOZ_GL_PROVIDER'] +@@ -114,16 +114,21 @@ elif gl_provider == 'GLX': + SOURCES += [ + 'GLContextProviderGLX.cpp', + 'SharedSurfaceGLX.cpp' + ] + EXPORTS += [ + 'SharedSurfaceGLX.h' + ] + ++if CONFIG['MOZ_WAYLAND']: ++ SOURCES += [ ++ 'GLContextProviderWayland.cpp', ++ ] ++ + UNIFIED_SOURCES += [ + 'AndroidSurfaceTexture.cpp', + 'DecomposeIntoNoRepeatTriangles.cpp', + 'EGLUtils.cpp', + 'GfxTexturesReporter.cpp', + 'GLBlitHelper.cpp', + 'GLContext.cpp', + 'GLContextFeatures.cpp', + -- cgit