WebKit Bugzilla
Attachment 370036 Details for
Bug 197944
: [GTK] Use WPEBackend-fdo for accelerating compositing in Wayland instead of the nested compositor
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
wk-gtk-wpe.diff (text/plain), 56.39 KB, created by
Carlos Garcia Campos
on 2019-05-16 03:54:39 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Carlos Garcia Campos
Created:
2019-05-16 03:54:39 PDT
Size:
56.39 KB
patch
obsolete
>diff --git a/ChangeLog b/ChangeLog >index 0d5cfe4a42b..e40f8a2660e 100644 >--- a/ChangeLog >+++ b/ChangeLog >@@ -1,3 +1,16 @@ >+2019-05-16 Carlos Garcia Campos <cgarcia@igalia.com> >+ >+ [GTK] Use WPEBackend-fdo for accelerating compositing in Wayland instead of the nested compositor >+ https://bugs.webkit.org/show_bug.cgi?id=197944 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add USE_WPE_RENDERER option to use WPEBackend-fdo. >+ >+ * Source/cmake/OptionsGTK.cmake: >+ * Source/cmake/OptionsPlayStation.cmake: >+ * Source/cmake/OptionsWPE.cmake: >+ > 2019-05-09 Xan López <xan@igalia.com> > > [CMake] Detect SSE2 at compile time >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 1757f4fe17b..f6033d3ac78 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,30 @@ >+2019-05-16 Carlos Garcia Campos <cgarcia@igalia.com> >+ >+ [GTK] Use WPEBackend-fdo for accelerating compositing in Wayland instead of the nested compositor >+ https://bugs.webkit.org/show_bug.cgi?id=197944 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * PlatformGTK.cmake: >+ * SourcesGTK.txt: >+ * platform/graphics/GLContext.cpp: >+ (WebCore::GLContext::createContextForWindow): Check current display is X11 before trying to create a GLX context. >+ * platform/graphics/PlatformDisplay.cpp: >+ (WebCore::PlatformDisplay::createPlatformDisplay): Use USE(WPE_RENDERER) instead of USE(LIBWPE). >+ * platform/graphics/PlatformDisplay.h: >+ * platform/graphics/egl/GLContextEGL.cpp: >+ (WebCore::GLContextEGL::createWindowContext): Use USE(WPE_RENDERER) instead of PLATFORM(WPE). >+ (WebCore::GLContextEGL::createContext): Ditto. >+ (WebCore::GLContextEGL::createSharingContext): Ditto. >+ (WebCore::GLContextEGL::~GLContextEGL): Ditto. >+ * platform/graphics/egl/GLContextEGL.h: >+ * platform/graphics/egl/GLContextEGLLibWPE.cpp: >+ * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: >+ (WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext): Ditto. >+ * platform/graphics/libwpe/PlatformDisplayLibWPE.cpp: >+ (WebCore::PlatformDisplayLibWPE::PlatformDisplayLibWPE): In GTK port set the display as the shared one for compositing. >+ * platform/graphics/libwpe/PlatformDisplayLibWPE.h: >+ > 2019-05-16 Carlos Garcia Campos <cgarcia@igalia.com> > > [FreeType] Some character sequences with a variation selector are not rendered >diff --git a/Source/WebCore/PlatformGTK.cmake b/Source/WebCore/PlatformGTK.cmake >index 9f82b4fcc34..d9edf019d15 100644 >--- a/Source/WebCore/PlatformGTK.cmake >+++ b/Source/WebCore/PlatformGTK.cmake >@@ -36,6 +36,12 @@ list(APPEND WebCore_PRIVATE_INCLUDE_DIRECTORIES > "${WEBCORE_DIR}/platform/text/gtk" > ) > >+if (USE_WPE_RENDERER) >+ list(APPEND WebCore_INCLUDE_DIRECTORIES >+ "${WEBCORE_DIR}/platform/graphics/libwpe" >+ ) >+endif () >+ > list(APPEND WebCorePlatformGTK_SOURCES > editing/gtk/EditorGtk.cpp > >@@ -120,6 +126,12 @@ list(APPEND WebCore_LIBRARIES > ${ZLIB_LIBRARIES} > ) > >+if (USE_WPE_RENDERER) >+ list(APPEND WebCore_LIBRARIES >+ ${WPE_LIBRARIES} >+ ) >+endif () >+ > list(APPEND WebCore_SYSTEM_INCLUDE_DIRECTORIES > ${ATK_INCLUDE_DIRS} > ${ENCHANT_INCLUDE_DIRS} >@@ -132,6 +144,12 @@ list(APPEND WebCore_SYSTEM_INCLUDE_DIRECTORIES > ${ZLIB_INCLUDE_DIRS} > ) > >+if (USE_WPE_RENDERER) >+ list(APPEND WebCore_SYSTEM_INCLUDE_DIRECTORIES >+ ${WPE_INCLUDE_DIRS} >+ ) >+endif () >+ > if (USE_OPENGL_ES) > list(APPEND WebCore_SOURCES > platform/graphics/opengl/Extensions3DOpenGLES.cpp >diff --git a/Source/WebCore/SourcesGTK.txt b/Source/WebCore/SourcesGTK.txt >index 17e7b4c0272..75fc0a5d3d8 100644 >--- a/Source/WebCore/SourcesGTK.txt >+++ b/Source/WebCore/SourcesGTK.txt >@@ -67,6 +67,7 @@ platform/graphics/GraphicsContext3DPrivate.cpp > platform/graphics/cairo/BackingStoreBackendCairoX11.cpp @no-unify > > platform/graphics/egl/GLContextEGL.cpp >+platform/graphics/egl/GLContextEGLLibWPE.cpp > platform/graphics/egl/GLContextEGLWayland.cpp @no-unify > platform/graphics/egl/GLContextEGLX11.cpp @no-unify > >@@ -74,6 +75,8 @@ platform/graphics/glx/GLContextGLX.cpp > > platform/graphics/gstreamer/ImageGStreamerCairo.cpp > >+platform/graphics/libwpe/PlatformDisplayLibWPE.cpp >+ > platform/graphics/opengl/Extensions3DOpenGLCommon.cpp > platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp > platform/graphics/opengl/TemporaryOpenGLSetting.cpp >diff --git a/Source/WebCore/platform/graphics/GLContext.cpp b/Source/WebCore/platform/graphics/GLContext.cpp >index 5d0b5ed428f..dc3ab9273bb 100644 >--- a/Source/WebCore/platform/graphics/GLContext.cpp >+++ b/Source/WebCore/platform/graphics/GLContext.cpp >@@ -90,8 +90,10 @@ std::unique_ptr<GLContext> GLContext::createContextForWindow(GLNativeWindowType > #endif > > #if USE(GLX) >- if (auto glxContext = GLContextGLX::createContext(windowHandle, display)) >- return glxContext; >+ if (display.type() == PlatformDisplay::Type::X11) { >+ if (auto glxContext = GLContextGLX::createContext(windowHandle, display)) >+ return glxContext; >+ } > #endif > #if USE(EGL) > if (auto eglContext = GLContextEGL::createContext(windowHandle, display)) >diff --git a/Source/WebCore/platform/graphics/PlatformDisplay.cpp b/Source/WebCore/platform/graphics/PlatformDisplay.cpp >index d23c60792ea..6f9a039f334 100644 >--- a/Source/WebCore/platform/graphics/PlatformDisplay.cpp >+++ b/Source/WebCore/platform/graphics/PlatformDisplay.cpp >@@ -42,7 +42,7 @@ > #include "PlatformDisplayWin.h" > #endif > >-#if USE(LIBWPE) >+#if USE(WPE_RENDERER) > #include "PlatformDisplayLibWPE.h" > #endif > >@@ -91,7 +91,7 @@ std::unique_ptr<PlatformDisplay> PlatformDisplay::createPlatformDisplay() > #endif > #endif // PLATFORM(GTK) > >-#if USE(LIBWPE) >+#if USE(WPE_RENDERER) > return PlatformDisplayLibWPE::create(); > #elif PLATFORM(WIN) > return PlatformDisplayWin::create(); >diff --git a/Source/WebCore/platform/graphics/PlatformDisplay.h b/Source/WebCore/platform/graphics/PlatformDisplay.h >index 4f2929a6488..5d6ab5afe5d 100644 >--- a/Source/WebCore/platform/graphics/PlatformDisplay.h >+++ b/Source/WebCore/platform/graphics/PlatformDisplay.h >@@ -54,7 +54,7 @@ public: > #if PLATFORM(WIN) > Windows, > #endif >-#if USE(LIBWPE) >+#if USE(WPE_RENDERER) > WPE, > #endif > }; >diff --git a/Source/WebCore/platform/graphics/egl/GLContextEGL.cpp b/Source/WebCore/platform/graphics/egl/GLContextEGL.cpp >index d6ff3790a37..14a7b4c97f6 100644 >--- a/Source/WebCore/platform/graphics/egl/GLContextEGL.cpp >+++ b/Source/WebCore/platform/graphics/egl/GLContextEGL.cpp >@@ -182,7 +182,9 @@ std::unique_ptr<GLContextEGL> GLContextEGL::createWindowContext(GLNativeWindowTy > if (platformDisplay.type() == PlatformDisplay::Type::Wayland) > surface = createWindowSurfaceWayland(display, config, window); > #endif >-#elif PLATFORM(WPE) >+#endif >+ >+#if USE(WPE_RENDERER) > if (platformDisplay.type() == PlatformDisplay::Type::WPE) > surface = createWindowSurfaceWPE(display, config, window); > #else >@@ -279,7 +281,7 @@ std::unique_ptr<GLContextEGL> GLContextEGL::createContext(GLNativeWindowType win > if (platformDisplay.type() == PlatformDisplay::Type::Wayland) > context = createWaylandContext(platformDisplay, eglSharingContext); > #endif >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > if (platformDisplay.type() == PlatformDisplay::Type::WPE) > context = createWPEContext(platformDisplay, eglSharingContext); > #endif >@@ -316,7 +318,7 @@ std::unique_ptr<GLContextEGL> GLContextEGL::createSharingContext(PlatformDisplay > if (platformDisplay.type() == PlatformDisplay::Type::Wayland) > context = createWaylandContext(platformDisplay); > #endif >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > if (platformDisplay.type() == PlatformDisplay::Type::WPE) > context = createWPEContext(platformDisplay); > #endif >@@ -359,7 +361,7 @@ GLContextEGL::~GLContextEGL() > #if PLATFORM(WAYLAND) > destroyWaylandWindow(); > #endif >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > destroyWPETarget(); > #endif > } >diff --git a/Source/WebCore/platform/graphics/egl/GLContextEGL.h b/Source/WebCore/platform/graphics/egl/GLContextEGL.h >index cbd6341fe5d..0c7a848e862 100644 >--- a/Source/WebCore/platform/graphics/egl/GLContextEGL.h >+++ b/Source/WebCore/platform/graphics/egl/GLContextEGL.h >@@ -32,7 +32,7 @@ > struct wl_egl_window; > #endif > >-#if USE(LIBWPE) >+#if USE(WPE_RENDERER) > struct wpe_renderer_backend_egl_offscreen_target; > #endif > >@@ -82,7 +82,7 @@ private: > GLContextEGL(PlatformDisplay&, EGLContext, EGLSurface, WlUniquePtr<struct wl_surface>&&, struct wl_egl_window*); > void destroyWaylandWindow(); > #endif >-#if USE(LIBWPE) >+#if USE(WPE_RENDERER) > GLContextEGL(PlatformDisplay&, EGLContext, EGLSurface, struct wpe_renderer_backend_egl_offscreen_target*); > void destroyWPETarget(); > #endif >@@ -98,7 +98,7 @@ private: > static std::unique_ptr<GLContextEGL> createWaylandContext(PlatformDisplay&, EGLContext sharingContext = nullptr); > static EGLSurface createWindowSurfaceWayland(EGLDisplay, EGLConfig, GLNativeWindowType); > #endif >-#if USE(LIBWPE) >+#if USE(WPE_RENDERER) > static std::unique_ptr<GLContextEGL> createWPEContext(PlatformDisplay&, EGLContext sharingContext = nullptr); > static EGLSurface createWindowSurfaceWPE(EGLDisplay, EGLConfig, GLNativeWindowType); > #endif >@@ -115,7 +115,7 @@ private: > WlUniquePtr<struct wl_surface> m_wlSurface; > struct wl_egl_window* m_wlWindow { nullptr }; > #endif >-#if USE(LIBWPE) >+#if USE(WPE_RENDERER) > struct wpe_renderer_backend_egl_offscreen_target* m_wpeTarget { nullptr }; > #endif > #if USE(CAIRO) >diff --git a/Source/WebCore/platform/graphics/egl/GLContextEGLLibWPE.cpp b/Source/WebCore/platform/graphics/egl/GLContextEGLLibWPE.cpp >index 1edb5fadd79..408df3b398d 100644 >--- a/Source/WebCore/platform/graphics/egl/GLContextEGLLibWPE.cpp >+++ b/Source/WebCore/platform/graphics/egl/GLContextEGLLibWPE.cpp >@@ -19,8 +19,7 @@ > #include "config.h" > #include "GLContextEGL.h" > >-#if USE(EGL) && USE(LIBWPE) >- >+#if USE(EGL) && USE(WPE_RENDERER) > #include "PlatformDisplayLibWPE.h" > > #if USE(LIBEPOXY) >@@ -29,6 +28,11 @@ > #define __GBM__ 1 > #include "EpoxyEGL.h" > #else >+#if PLATFORM(WAYLAND) >+// These includes need to be in this order because wayland-egl.h defines WL_EGL_PLATFORM >+// and eglplatform.h, included by egl.h, checks that to decide whether it's Wayland platform. >+#include <wayland-egl.h> >+#endif > #include <EGL/egl.h> > #endif > >@@ -96,4 +100,4 @@ void GLContextEGL::destroyWPETarget() > > } // namespace WebCore > >-#endif // USE(EGL) && USE(LIBWPE) >+#endif // USE(EGL) && USE(WPE_RENDERER) >diff --git a/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp b/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp >index 5cb5f7536ac..f0b7a43dd8a 100644 >--- a/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp >+++ b/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp >@@ -102,7 +102,9 @@ > > #if PLATFORM(WAYLAND) > #include "PlatformDisplayWayland.h" >-#elif PLATFORM(WPE) >+#endif >+ >+#if USE(WPE_RENDERER) > #include "PlatformDisplayLibWPE.h" > #endif > >@@ -448,7 +450,7 @@ bool MediaPlayerPrivateGStreamerBase::ensureGstGLContext() > } > #endif > >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > ASSERT(is<PlatformDisplayLibWPE>(sharedDisplay)); > GST_DEBUG_OBJECT(pipeline(), "Creating WPE shared EGL display"); > if (shouldAdoptRef) >diff --git a/Source/WebCore/platform/graphics/libwpe/PlatformDisplayLibWPE.cpp b/Source/WebCore/platform/graphics/libwpe/PlatformDisplayLibWPE.cpp >index d6d8f6c4fdc..ab10b30d126 100644 >--- a/Source/WebCore/platform/graphics/libwpe/PlatformDisplayLibWPE.cpp >+++ b/Source/WebCore/platform/graphics/libwpe/PlatformDisplayLibWPE.cpp >@@ -26,7 +26,7 @@ > #include "config.h" > #include "PlatformDisplayLibWPE.h" > >-#if USE(LIBWPE) >+#if USE(WPE_RENDERER) > > #include "GLContextEGL.h" > >@@ -36,6 +36,11 @@ > #define __GBM__ 1 > #include "EpoxyEGL.h" > #else >+#if PLATFORM(WAYLAND) >+// These includes need to be in this order because wayland-egl.h defines WL_EGL_PLATFORM >+// and eglplatform.h, included by egl.h, checks that to decide whether it's Wayland platform. >+#include <wayland-egl.h> >+#endif > #include <EGL/egl.h> > #endif > >@@ -51,6 +56,9 @@ std::unique_ptr<PlatformDisplayLibWPE> PlatformDisplayLibWPE::create() > PlatformDisplayLibWPE::PlatformDisplayLibWPE() > : PlatformDisplay(NativeDisplayOwned::No) > { >+#if PLATFORM(GTK) >+ PlatformDisplay::setSharedDisplayForCompositing(*this); >+#endif > } > > PlatformDisplayLibWPE::~PlatformDisplayLibWPE() >@@ -73,4 +81,4 @@ void PlatformDisplayLibWPE::initialize(int hostFd) > > } // namespace WebCore > >-#endif // USE(LIBWPE) >+#endif // USE(WPE_RENDERER) >diff --git a/Source/WebCore/platform/graphics/libwpe/PlatformDisplayLibWPE.h b/Source/WebCore/platform/graphics/libwpe/PlatformDisplayLibWPE.h >index 058036bd189..bde26e67ce8 100644 >--- a/Source/WebCore/platform/graphics/libwpe/PlatformDisplayLibWPE.h >+++ b/Source/WebCore/platform/graphics/libwpe/PlatformDisplayLibWPE.h >@@ -25,7 +25,7 @@ > > #pragma once > >-#if USE(LIBWPE) >+#if USE(WPE_RENDERER) > > #include "PlatformDisplay.h" > >@@ -55,4 +55,4 @@ private: > > SPECIALIZE_TYPE_TRAITS_PLATFORM_DISPLAY(PlatformDisplayLibWPE, WPE) > >-#endif // USE(LIBWPE) >+#endif // USE(WPE_RENDERER) >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index f9ab477b64c..6ae4c8e85cc 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,75 @@ >+2019-05-16 Carlos Garcia Campos <cgarcia@igalia.com> >+ >+ [GTK] Use WPEBackend-fdo for accelerating compositing in Wayland instead of the nested compositor >+ https://bugs.webkit.org/show_bug.cgi?id=197944 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ The WPEBackend-fdo implementation is quite similar to our Wayland nested compositor, but more efficient (using >+ linux dmabuf, resource caching, etc.). This allows us to share even more code with WPE port too. >+ >+ * PlatformGTK.cmake: >+ * Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp: >+ (WebKit::ThreadedCompositor::forceRepaint): WPE doesn't support force repaint yet. >+ * Shared/WebPageCreationParameters.cpp: >+ (WebKit::WebPageCreationParameters::encode const): Use USE(WPE_RENDERER) instead of PLATFORM(WPE). >+ (WebKit::WebPageCreationParameters::decode): Ditto. >+ * Shared/WebPageCreationParameters.h: >+ * Shared/WebProcessCreationParameters.cpp: >+ (WebKit::WebProcessCreationParameters::encode const): Ditto. >+ (WebKit::WebProcessCreationParameters::decode): Ditto. >+ * Shared/WebProcessCreationParameters.h: >+ * SourcesGTK.txt: >+ * UIProcess/API/gtk/PageClientImpl.cpp: >+ (WebKit::PageClientImpl::hostFileDescriptor): Implement it when using WPE just calling webkitWebViewBaseRenderHostFileDescriptor(). >+ * UIProcess/API/gtk/PageClientImpl.h: >+ * UIProcess/API/gtk/WebKitWebViewBase.cpp: >+ (webkitWebViewBaseCreateWebPage): Initialize the web page after the accelerated backing store is created, since >+ it's used now during intialization. >+ (webkitWebViewBaseRenderHostFileDescriptor): Return AcceleratedBackingStore::renderHostFileDescriptor() >+ * UIProcess/API/gtk/WebKitWebViewBasePrivate.h: >+ * UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: >+ * UIProcess/PageClient.h: >+ * UIProcess/WebPageProxy.cpp: >+ (WebKit::WebPageProxy::creationParameters): Use USE(WPE_RENDERER) instead of PLATFORM(WPE). >+ * UIProcess/WebProcessPool.cpp: >+ (WebKit::WebProcessPool::initializeNewWebProcess): Remove wayland display name initialization. >+ * UIProcess/glib/WebProcessPoolGLib.cpp: >+ (WebKit::WebProcessPool::platformInitializeWebProcess): Initialize wayland display name when not using WPE here >+ now. In case of using WPE, initialize hostClientFileDescriptor and implementationLibraryName. >+ * UIProcess/glib/WebProcessProxyGLib.cpp: >+ (WebKit::WebProcessProxy::platformGetLaunchOptions): Remove unused wayland socket command line process parameter. >+ * UIProcess/gtk/AcceleratedBackingStore.h: >+ (WebKit::AcceleratedBackingStore::renderHostFileDescriptor): Return -1 by default. >+ * UIProcess/gtk/AcceleratedBackingStoreWayland.cpp: >+ (WebKit::AcceleratedBackingStoreWayland::create): When using WPE call wpe_fdo_initialize_for_egl_display() and >+ check we have the required extensions. >+ (WebKit::AcceleratedBackingStoreWayland::AcceleratedBackingStoreWayland): When using WPE initialize the view backend. >+ (WebKit::AcceleratedBackingStoreWayland::~AcceleratedBackingStoreWayland): When using WPE release the EGL images >+ still in use and the view texture. >+ (WebKit::AcceleratedBackingStoreWayland::renderHostFileDescriptor): Call wpe_view_backend_get_renderer_host_fd(). >+ (WebKit::AcceleratedBackingStoreWayland::displayBuffer): Create the view texture if needed, save the pending >+ image and schedule a redraw. >+ (WebKit::AcceleratedBackingStoreWayland::paint): When using WPE commit the pending image and use it as target of >+ the view texture. >+ * UIProcess/gtk/AcceleratedBackingStoreWayland.h: >+ * UIProcess/gtk/HardwareAccelerationManager.cpp: >+ (WebKit::HardwareAccelerationManager::HardwareAccelerationManager): When using WPE disable hardware acceleration >+ if wpe_fdo_initialize_for_egl_display() fails. >+ * UIProcess/gtk/WaylandCompositor.cpp: >+ * UIProcess/gtk/WaylandCompositor.h: >+ * WebProcess/WebPage/AcceleratedSurface.cpp: >+ (WebKit::AcceleratedSurface::create): Create an AcceleratedSurfaceLibWPE for GTK port when using WPE and shared >+ display is Wayland. >+ * WebProcess/WebPage/WebPage.cpp: >+ * WebProcess/WebPage/WebPage.h: >+ * WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.cpp: >+ (WebKit::AcceleratedSurfaceLibWPE::initialize): Use the shared display for compositing instead of shared display. >+ * WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.h: >+ * WebProcess/WebProcess.h: >+ * WebProcess/glib/WebProcessGLib.cpp: >+ (WebKit::WebProcess::platformInitializeWebProcess): Initialize the wpe display when using WPE. >+ > 2019-05-15 Devin Rousso <drousso@apple.com> > > Web Inspector: user gesture toggle should also force user interaction flag >diff --git a/Source/WebKit/PlatformGTK.cmake b/Source/WebKit/PlatformGTK.cmake >index 8e06c0ad6b3..d1cd104b8d3 100644 >--- a/Source/WebKit/PlatformGTK.cmake >+++ b/Source/WebKit/PlatformGTK.cmake >@@ -428,6 +428,16 @@ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES > ${LIBSOUP_INCLUDE_DIRS} > ) > >+if (USE_WPE_RENDERER) >+ list(APPEND WebKit_INCLUDE_DIRECTORIES >+ "${WEBKIT_DIR}/WebProcess/WebPage/libwpe" >+ ) >+ list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES >+ ${WPE_INCLUDE_DIRS} >+ ${WPEBACKEND_FDO_INCLUDE_DIRS} >+ ) >+endif () >+ > if (USE_LIBNOTIFY) > list(APPEND WebKit_SYSTEM_INCLUDE_DIRECTORIES > ${LIBNOTIFY_INCLUDE_DIRS} >@@ -464,6 +474,14 @@ list(APPEND WebKit_LIBRARIES > # WebCore should be specifed before and after WebCorePlatformGTK > list(APPEND WebKit_LIBRARIES PRIVATE WebCore) > >+if (USE_WPE_RENDERER) >+ list(APPEND WebKit_LIBRARIES >+ PRIVATE >+ ${WPE_LIBRARIES} >+ ${WPEBACKEND_FDO_LIBRARIES} >+ ) >+endif () >+ > if (LIBNOTIFY_FOUND) > list(APPEND WebKit_LIBRARIES > PRIVATE ${LIBNOTIFY_LIBRARIES} >diff --git a/Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp b/Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp >index e0cdeedfc21..530da864898 100644 >--- a/Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp >+++ b/Source/WebKit/Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp >@@ -188,7 +188,7 @@ void ThreadedCompositor::forceRepaint() > { > // FIXME: Enable this for WPE once it's possible to do these forced updates > // in a way that doesn't starve out the underlying graphics buffers. >-#if PLATFORM(GTK) >+#if PLATFORM(GTK) && !USE(WPE_RENDERER) > m_compositingRunLoop->performTaskSync([this, protectedThis = makeRef(*this)] { > SetForScope<bool> change(m_inForceRepaint, true); > renderLayerTree(); >diff --git a/Source/WebKit/Shared/WebPageCreationParameters.cpp b/Source/WebKit/Shared/WebPageCreationParameters.cpp >index 89f535d4e29..6c9c508ea97 100644 >--- a/Source/WebKit/Shared/WebPageCreationParameters.cpp >+++ b/Source/WebKit/Shared/WebPageCreationParameters.cpp >@@ -103,7 +103,7 @@ void WebPageCreationParameters::encode(IPC::Encoder& encoder) const > encoder << smartInsertDeleteEnabled; > encoder << additionalSupportedImageTypes; > #endif >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > encoder << hostFileDescriptor; > #endif > encoder << appleMailPaginationQuirkEnabled; >@@ -301,7 +301,7 @@ Optional<WebPageCreationParameters> WebPageCreationParameters::decode(IPC::Decod > return WTF::nullopt; > #endif > >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > if (!decoder.decode(parameters.hostFileDescriptor)) > return WTF::nullopt; > #endif >diff --git a/Source/WebKit/Shared/WebPageCreationParameters.h b/Source/WebKit/Shared/WebPageCreationParameters.h >index 43af461a730..3f8fa2133dc 100644 >--- a/Source/WebKit/Shared/WebPageCreationParameters.h >+++ b/Source/WebKit/Shared/WebPageCreationParameters.h >@@ -162,7 +162,7 @@ struct WebPageCreationParameters { > bool smartInsertDeleteEnabled; > Vector<String> additionalSupportedImageTypes; > #endif >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > IPC::Attachment hostFileDescriptor; > #endif > bool appleMailPaginationQuirkEnabled; >diff --git a/Source/WebKit/Shared/WebProcessCreationParameters.cpp b/Source/WebKit/Shared/WebProcessCreationParameters.cpp >index 9582e6b6bb8..4170d6c3893 100644 >--- a/Source/WebKit/Shared/WebProcessCreationParameters.cpp >+++ b/Source/WebKit/Shared/WebProcessCreationParameters.cpp >@@ -151,7 +151,7 @@ void WebProcessCreationParameters::encode(IPC::Encoder& encoder) const > encoder << useOverlayScrollbars; > #endif > >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > encoder << isServiceWorkerProcess; > encoder << hostClientFileDescriptor; > encoder << implementationLibraryName; >@@ -371,7 +371,7 @@ bool WebProcessCreationParameters::decode(IPC::Decoder& decoder, WebProcessCreat > return false; > #endif > >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > if (!decoder.decode(parameters.isServiceWorkerProcess)) > return false; > if (!decoder.decode(parameters.hostClientFileDescriptor)) >diff --git a/Source/WebKit/Shared/WebProcessCreationParameters.h b/Source/WebKit/Shared/WebProcessCreationParameters.h >index 8450dcec6fa..491b91db919 100644 >--- a/Source/WebKit/Shared/WebProcessCreationParameters.h >+++ b/Source/WebKit/Shared/WebProcessCreationParameters.h >@@ -189,7 +189,7 @@ struct WebProcessCreationParameters { > bool useOverlayScrollbars { true }; > #endif > >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > bool isServiceWorkerProcess { false }; > IPC::Attachment hostClientFileDescriptor; > CString implementationLibraryName; >diff --git a/Source/WebKit/SourcesGTK.txt b/Source/WebKit/SourcesGTK.txt >index 7c3d86ffb5d..f1cd253e42c 100644 >--- a/Source/WebKit/SourcesGTK.txt >+++ b/Source/WebKit/SourcesGTK.txt >@@ -241,7 +241,7 @@ UIProcess/gtk/AcceleratedBackingStoreWayland.cpp @no-unify > UIProcess/gtk/AcceleratedBackingStoreX11.cpp @no-unify > UIProcess/gtk/DragAndDropHandler.cpp > UIProcess/gtk/GestureController.cpp >-UIProcess/gtk/HardwareAccelerationManager.cpp >+UIProcess/gtk/HardwareAccelerationManager.cpp @no-unify > UIProcess/gtk/InputMethodFilter.cpp @no-unify > UIProcess/gtk/KeyBindingTranslator.cpp > UIProcess/gtk/RemoteWebInspectorProxyGtk.cpp @no-unify >@@ -419,6 +419,8 @@ WebProcess/WebPage/gtk/WebInspectorUIGtk.cpp > WebProcess/WebPage/gtk/WebPageGtk.cpp > WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp > >+WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.cpp @no-unify >+ > WebProcess/glib/WebProcessGLib.cpp > > WebProcess/gtk/WaylandCompositorDisplay.cpp >diff --git a/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp b/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp >index 2c98f20c2f8..4979df315b3 100644 >--- a/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp >+++ b/Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp >@@ -552,4 +552,11 @@ bool PageClientImpl::effectiveAppearanceIsDark() const > return false; > } > >+#if USE(WPE_RENDERER) >+IPC::Attachment PageClientImpl::hostFileDescriptor() >+{ >+ return webkitWebViewBaseRenderHostFileDescriptor(WEBKIT_WEB_VIEW_BASE(m_viewWidget)); >+} >+#endif >+ > } // namespace WebKit >diff --git a/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h b/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h >index a690c8256d1..6abb2d5f036 100644 >--- a/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h >+++ b/Source/WebKit/UIProcess/API/gtk/PageClientImpl.h >@@ -164,6 +164,10 @@ private: > > bool effectiveAppearanceIsDark() const override; > >+#if USE(WPE_RENDERER) >+ IPC::Attachment hostFileDescriptor() override; >+#endif >+ > // Members of PageClientImpl class > GtkWidget* m_viewWidget; > DefaultUndoController m_undoController; >diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp >index 18b60979661..a6034fde25c 100644 >--- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp >+++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp >@@ -1422,9 +1422,8 @@ void webkitWebViewBaseCreateWebPage(WebKitWebViewBase* webkitWebViewBase, Ref<AP > WebKitWebViewBasePrivate* priv = webkitWebViewBase->priv; > WebProcessPool* processPool = configuration->processPool(); > priv->pageProxy = processPool->createWebPage(*priv->pageClient, WTFMove(configuration)); >- priv->pageProxy->initializeWebPage(); >- > priv->acceleratedBackingStore = AcceleratedBackingStore::create(*priv->pageProxy); >+ priv->pageProxy->initializeWebPage(); > > priv->inputMethodFilter.setPage(priv->pageProxy.get()); > >@@ -1754,3 +1753,12 @@ void webkitWebViewBaseDidRestoreScrollPosition(WebKitWebViewBase* webkitWebViewB > if (controller && controller->isSwipeGestureEnabled()) > webkitWebViewBase->priv->viewGestureController->didRestoreScrollPosition(); > } >+ >+#if USE(WPE_RENDERER) >+int webkitWebViewBaseRenderHostFileDescriptor(WebKitWebViewBase* webkitWebViewBase) >+{ >+ if (webkitWebViewBase->priv->acceleratedBackingStore) >+ return webkitWebViewBase->priv->acceleratedBackingStore->renderHostFileDescriptor(); >+ return -1; >+} >+#endif >diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h >index 54fe01e5c30..41dc6b23c55 100644 >--- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h >+++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBasePrivate.h >@@ -93,3 +93,7 @@ void webkitWebViewBaseDidFinishLoadForMainFrame(WebKitWebViewBase*); > void webkitWebViewBaseDidFailLoadForMainFrame(WebKitWebViewBase*); > void webkitWebViewBaseDidSameDocumentNavigationForMainFrame(WebKitWebViewBase*, WebKit::SameDocumentNavigationType); > void webkitWebViewBaseDidRestoreScrollPosition(WebKitWebViewBase*); >+ >+#if USE(WPE_RENDERER) >+int webkitWebViewBaseRenderHostFileDescriptor(WebKitWebViewBase*); >+#endif >diff --git a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp >index afea38188ec..066e110a7c4 100644 >--- a/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp >+++ b/Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp >@@ -35,17 +35,13 @@ > #include "WebPageProxy.h" > #include "WebPreferences.h" > #include "WebProcessProxy.h" >+#include <WebCore/PlatformDisplay.h> > #include <WebCore/Region.h> > > #if PLATFORM(GTK) > #include <gtk/gtk.h> > #endif > >-#if PLATFORM(WAYLAND) >-#include "WaylandCompositor.h" >-#include <WebCore/PlatformDisplay.h> >-#endif >- > #if USE(GLIB_EVENT_LOOP) > #include <wtf/glib/RunLoopSourcePriority.h> > #endif >diff --git a/Source/WebKit/UIProcess/PageClient.h b/Source/WebKit/UIProcess/PageClient.h >index afc94ce902d..99c46a809d1 100644 >--- a/Source/WebKit/UIProcess/PageClient.h >+++ b/Source/WebKit/UIProcess/PageClient.h >@@ -504,7 +504,7 @@ public: > virtual WTF::Optional<unsigned> activeTouchIdentifierForGestureRecognizer(UIGestureRecognizer*) { return WTF::nullopt; } > #endif > >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > virtual IPC::Attachment hostFileDescriptor() = 0; > #endif > }; >diff --git a/Source/WebKit/UIProcess/WebPageProxy.cpp b/Source/WebKit/UIProcess/WebPageProxy.cpp >index 9f96f9a152f..bb6239e265d 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.cpp >+++ b/Source/WebKit/UIProcess/WebPageProxy.cpp >@@ -7160,7 +7160,7 @@ WebPageCreationParameters WebPageProxy::creationParameters(WebProcessProxy& proc > parameters.overrideContentSecurityPolicy = m_overrideContentSecurityPolicy; > parameters.cpuLimit = m_cpuLimit; > >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > parameters.hostFileDescriptor = pageClient().hostFileDescriptor(); > #endif > >diff --git a/Source/WebKit/UIProcess/WebProcessPool.cpp b/Source/WebKit/UIProcess/WebProcessPool.cpp >index 13ecc485db6..37a08470a71 100644 >--- a/Source/WebKit/UIProcess/WebProcessPool.cpp >+++ b/Source/WebKit/UIProcess/WebProcessPool.cpp >@@ -117,11 +117,6 @@ > #include "MemoryPressureMonitor.h" > #endif > >-#if PLATFORM(WAYLAND) >-#include "WaylandCompositor.h" >-#include <WebCore/PlatformDisplay.h> >-#endif >- > #if PLATFORM(COCOA) > #include "VersionChecks.h" > #endif >@@ -973,11 +968,6 @@ void WebProcessPool::initializeNewWebProcess(WebProcessProxy& process, WebsiteDa > parameters.shouldEnableMemoryPressureReliefLogging = true; > #endif > >-#if PLATFORM(WAYLAND) && USE(EGL) >- if (PlatformDisplay::sharedDisplay().type() == PlatformDisplay::Type::Wayland) >- parameters.waylandCompositorDisplayName = WaylandCompositor::singleton().displayName(); >-#endif >- > #if ENABLE(MEDIA_STREAM) > parameters.shouldCaptureAudioInUIProcess = m_configuration->shouldCaptureAudioInUIProcess(); > parameters.shouldCaptureVideoInUIProcess = m_configuration->shouldCaptureVideoInUIProcess(); >diff --git a/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp b/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp >index b1e09650b03..29b4d3a7bb6 100644 >--- a/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp >+++ b/Source/WebKit/UIProcess/glib/WebProcessPoolGLib.cpp >@@ -32,10 +32,19 @@ > #include "WebProcessCreationParameters.h" > #include <JavaScriptCore/RemoteInspectorServer.h> > #include <WebCore/GStreamerCommon.h> >+#include <WebCore/PlatformDisplay.h> > #include <wtf/FileSystem.h> > #include <wtf/glib/GUniquePtr.h> > >-#if PLATFORM(WPE) >+#if PLATFORM(WAYLAND) >+#if USE(WPE_RENDERER) >+#include <wpe/fdo-egl.h> >+#else >+#include "WaylandCompositor.h" >+#endif >+#endif >+ >+#if USE(WPE_RENDERER) > #include <wpe/wpe.h> > #endif > >@@ -104,6 +113,20 @@ void WebProcessPool::platformInitializeWebProcess(WebProcessCreationParameters& > } > #endif > >+#if PLATFORM(WAYLAND) >+ if (WebCore::PlatformDisplay::sharedDisplay().type() == WebCore::PlatformDisplay::Type::Wayland) { >+#if USE(WPE_RENDERER) >+ wpe_loader_init("libWPEBackend-fdo-1.0.so"); >+ if (wpe_fdo_initialize_for_egl_display(WebCore::PlatformDisplay::sharedDisplay().eglDisplay())) { >+ parameters.hostClientFileDescriptor = wpe_renderer_host_create_client(); >+ parameters.implementationLibraryName = FileSystem::fileSystemRepresentation(wpe_loader_get_loaded_implementation_library_name()); >+ } >+#else >+ parameters.waylandCompositorDisplayName = WaylandCompositor::singleton().displayName(); >+#endif >+ } >+#endif >+ > parameters.memoryCacheDisabled = m_memoryCacheDisabled || cacheModel() == CacheModel::DocumentViewer; > parameters.proxySettings = m_networkProxySettings; > >diff --git a/Source/WebKit/UIProcess/glib/WebProcessProxyGLib.cpp b/Source/WebKit/UIProcess/glib/WebProcessProxyGLib.cpp >index 64365055e94..3c42baebe56 100644 >--- a/Source/WebKit/UIProcess/glib/WebProcessProxyGLib.cpp >+++ b/Source/WebKit/UIProcess/glib/WebProcessProxyGLib.cpp >@@ -26,9 +26,6 @@ > #include "config.h" > #include "WebProcessProxy.h" > >-#if PLATFORM(WAYLAND) && USE(EGL) >-#include "WaylandCompositor.h" >-#endif > #include "WebProcessPool.h" > #include "WebsiteDataStore.h" > #include <WebCore/PlatformDisplay.h> >@@ -47,15 +44,6 @@ void WebProcessProxy::platformGetLaunchOptions(ProcessLauncher::LaunchOptions& l > launchOptions.extraInitializationData.set("applicationCacheDirectory", websiteDataStore().resolvedApplicationCacheDirectory()); > > launchOptions.extraWebProcessSandboxPaths = m_processPool->sandboxPaths(); >- >-#if PLATFORM(WAYLAND) && USE(EGL) >- if (PlatformDisplay::sharedDisplay().type() == PlatformDisplay::Type::Wayland) { >- String displayName = WaylandCompositor::singleton().displayName(); >- String runtimeDir(g_get_user_runtime_dir()); >- String waylandSocket = FileSystem::pathByAppendingComponent(runtimeDir, displayName); >- launchOptions.extraInitializationData.set("waylandSocket", waylandSocket); >- } >-#endif > } > > }; >diff --git a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStore.h b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStore.h >index 48db53344fb..3a03b611ea3 100644 >--- a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStore.h >+++ b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStore.h >@@ -47,6 +47,7 @@ public: > virtual void update(const LayerTreeContext&) { } > virtual bool paint(cairo_t*, const WebCore::IntRect&) = 0; > virtual bool makeContextCurrent() { return false; } >+ virtual int renderHostFileDescriptor() { return -1; } > > protected: > AcceleratedBackingStore(WebPageProxy&); >diff --git a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp >index 60f5ca71569..e643daebfc0 100644 >--- a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp >+++ b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp >@@ -1,5 +1,5 @@ > /* >- * Copyright (C) 2016 Igalia S.L. >+ * Copyright (C) 2016, 2019 Igalia S.L. > * > * Redistribution and use in source and binary forms, with or without > * modification, are permitted provided that the following conditions >@@ -28,36 +28,113 @@ > > #if PLATFORM(WAYLAND) && USE(EGL) > >-#include "WaylandCompositor.h" > #include "WebPageProxy.h" >+// These includes need to be in this order because wayland-egl.h defines WL_EGL_PLATFORM >+// and eglplatform.h, included by egl.h, checks that to decide whether it's Wayland platform. >+#include <gdk/gdkwayland.h> >+#include <EGL/egl.h> >+#include <EGL/eglext.h> > #include <WebCore/CairoUtilities.h> > #include <WebCore/GLContext.h> > > #if USE(OPENGL_ES) > #include <GLES2/gl2.h> >+#include <GLES2/gl2ext.h> >+#include <WebCore/Extensions3DOpenGLES.h> > #else >+#include <WebCore/Extensions3DOpenGL.h> > #include <WebCore/OpenGLShims.h> > #endif > >+#if USE(WPE_RENDERER) >+#include <wpe/fdo-egl.h> >+#else >+#include "WaylandCompositor.h" >+#endif >+ >+#if USE(WPE_RENDERER) >+#if !defined(PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) >+typedef void (*PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES); >+#endif >+ >+static PFNGLEGLIMAGETARGETTEXTURE2DOESPROC glImageTargetTexture2D; >+#endif >+ > namespace WebKit { > using namespace WebCore; > > std::unique_ptr<AcceleratedBackingStoreWayland> AcceleratedBackingStoreWayland::create(WebPageProxy& webPage) > { >+#if USE(WPE_RENDERER) >+ if (!glImageTargetTexture2D) { >+ if (!wpe_fdo_initialize_for_egl_display(PlatformDisplay::sharedDisplay().eglDisplay())) >+ return nullptr; >+ >+ std::unique_ptr<WebCore::GLContext> eglContext = GLContext::createOffscreenContext(); >+ if (!eglContext) >+ return nullptr; >+ >+ if (!eglContext->makeContextCurrent()) >+ return nullptr; >+ >+#if USE(OPENGL_ES) >+ std::unique_ptr<Extensions3DOpenGLES> glExtensions = std::make_unique<Extensions3DOpenGLES>(nullptr, false); >+#else >+ std::unique_ptr<Extensions3DOpenGL> glExtensions = std::make_unique<Extensions3DOpenGL>(nullptr, GLContext::current()->version() >= 320); >+#endif >+ if (glExtensions->supports("GL_OES_EGL_image") || glExtensions->supports("GL_OES_EGL_image_external")) >+ glImageTargetTexture2D = reinterpret_cast<PFNGLEGLIMAGETARGETTEXTURE2DOESPROC>(eglGetProcAddress("glEGLImageTargetTexture2DOES")); >+ } >+ >+ if (!glImageTargetTexture2D) { >+ WTFLogAlways("AcceleratedBackingStoreWPE requires glEGLImageTargetTexture2D."); >+ return nullptr; >+ } >+#else > if (!WaylandCompositor::singleton().isRunning()) > return nullptr; >+#endif > return std::unique_ptr<AcceleratedBackingStoreWayland>(new AcceleratedBackingStoreWayland(webPage)); > } > > AcceleratedBackingStoreWayland::AcceleratedBackingStoreWayland(WebPageProxy& webPage) > : AcceleratedBackingStore(webPage) > { >+#if USE(WPE_RENDERER) >+ static struct wpe_view_backend_exportable_fdo_egl_client exportableClient = { >+ // export_egl_image >+ nullptr, >+ // export_fdo_egl_image >+ [](void* data, struct wpe_fdo_egl_exported_image* image) >+ { >+ static_cast<AcceleratedBackingStoreWayland*>(data)->displayBuffer(image); >+ }, >+ // padding >+ nullptr, nullptr, nullptr >+ }; >+ >+ auto viewSize = webPage.viewSize(); >+ m_exportable = wpe_view_backend_exportable_fdo_egl_create(&exportableClient, this, viewSize.width(), viewSize.height()); >+ wpe_view_backend_initialize(wpe_view_backend_exportable_fdo_get_view_backend(m_exportable)); >+#else > WaylandCompositor::singleton().registerWebPage(m_webPage); >+#endif > } > > AcceleratedBackingStoreWayland::~AcceleratedBackingStoreWayland() > { >+#if USE(WPE_RENDERER) >+ if (m_pendingImage) >+ wpe_view_backend_exportable_fdo_egl_dispatch_release_exported_image(m_exportable, m_pendingImage); >+ if (m_committedImage) >+ wpe_view_backend_exportable_fdo_egl_dispatch_release_exported_image(m_exportable, m_committedImage); >+ if (m_viewTexture) { >+ if (makeContextCurrent()) >+ glDeleteTextures(1, &m_viewTexture); >+ } >+#else > WaylandCompositor::singleton().unregisterWebPage(m_webPage); >+#endif > > #if GTK_CHECK_VERSION(3, 16, 0) > if (m_gdkGLContext && m_gdkGLContext.get() == gdk_gl_context_get_current()) >@@ -102,12 +179,64 @@ bool AcceleratedBackingStoreWayland::makeContextCurrent() > return m_glContext ? m_glContext->makeContextCurrent() : false; > } > >+#if USE(WPE_RENDERER) >+int AcceleratedBackingStoreWayland::renderHostFileDescriptor() >+{ >+ return wpe_view_backend_get_renderer_host_fd(wpe_view_backend_exportable_fdo_get_view_backend(m_exportable)); >+} >+ >+void AcceleratedBackingStoreWayland::displayBuffer(struct wpe_fdo_egl_exported_image* image) >+{ >+ if (!m_viewTexture) { >+ if (!makeContextCurrent()) >+ return; >+ >+ glGenTextures(1, &m_viewTexture); >+ glBindTexture(GL_TEXTURE_2D, m_viewTexture); >+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); >+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); >+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); >+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); >+ } >+ >+ if (m_pendingImage) >+ wpe_view_backend_exportable_fdo_egl_dispatch_release_image(m_exportable, m_pendingImage); >+ m_pendingImage = image; >+ >+ m_webPage.setViewNeedsDisplay(IntRect(IntPoint::zero(), m_webPage.viewSize())); >+} >+#endif >+ > bool AcceleratedBackingStoreWayland::paint(cairo_t* cr, const IntRect& clipRect) > { > GLuint texture; > IntSize textureSize; >+ >+#if USE(WPE_RENDERER) >+ if (!makeContextCurrent()) >+ return false; >+ >+ if (m_pendingImage) { >+ wpe_view_backend_exportable_fdo_dispatch_frame_complete(m_exportable); >+ >+ if (m_committedImage) >+ wpe_view_backend_exportable_fdo_egl_dispatch_release_exported_image(m_exportable, m_committedImage); >+ m_committedImage = m_pendingImage; >+ m_pendingImage = nullptr; >+ } >+ >+ if (!m_committedImage) >+ return true; >+ >+ glBindTexture(GL_TEXTURE_2D, m_viewTexture); >+ glImageTargetTexture2D(GL_TEXTURE_2D, wpe_fdo_egl_exported_image_get_egl_image(m_committedImage)); >+ >+ texture = m_viewTexture; >+ textureSize = { static_cast<int>(wpe_fdo_egl_exported_image_get_width(m_committedImage)), static_cast<int>(wpe_fdo_egl_exported_image_get_height(m_committedImage)) }; >+#else > if (!WaylandCompositor::singleton().getTexture(m_webPage, texture, textureSize)) > return false; >+#endif > > cairo_save(cr); > >diff --git a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.h b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.h >index 9202045bcca..b44349f3423 100644 >--- a/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.h >+++ b/Source/WebKit/UIProcess/gtk/AcceleratedBackingStoreWayland.h >@@ -33,7 +33,13 @@ > #include <gtk/gtk.h> > #include <wtf/glib/GRefPtr.h> > >+#if USE(WPE_RENDERER) >+#include <wpe/fdo.h> >+#endif >+ >+typedef void* EGLImageKHR; > typedef struct _GdkGLContext GdkGLContext; >+struct wpe_fdo_egl_exported_image; > > namespace WebCore { > class GLContext; >@@ -53,9 +59,15 @@ private: > AcceleratedBackingStoreWayland(WebPageProxy&); > > void tryEnsureGLContext(); >+#if USE(WPE_RENDERER) >+ void displayBuffer(struct wpe_fdo_egl_exported_image*); >+#endif > > bool paint(cairo_t*, const WebCore::IntRect&) override; > bool makeContextCurrent() override; >+#if USE(WPE_RENDERER) >+ int renderHostFileDescriptor() override; >+#endif > > RefPtr<cairo_surface_t> m_surface; > bool m_glContextInitialized { false }; >@@ -63,6 +75,13 @@ private: > GRefPtr<GdkGLContext> m_gdkGLContext; > #endif > std::unique_ptr<WebCore::GLContext> m_glContext; >+ >+#if USE(WPE_RENDERER) >+ struct wpe_view_backend_exportable_fdo* m_exportable { nullptr }; >+ unsigned m_viewTexture { 0 }; >+ struct wpe_fdo_egl_exported_image* m_committedImage { nullptr }; >+ struct wpe_fdo_egl_exported_image* m_pendingImage { nullptr }; >+#endif > }; > > } // namespace WebKit >diff --git a/Source/WebKit/UIProcess/gtk/HardwareAccelerationManager.cpp b/Source/WebKit/UIProcess/gtk/HardwareAccelerationManager.cpp >index 45760eeeed9..c9998275649 100644 >--- a/Source/WebKit/UIProcess/gtk/HardwareAccelerationManager.cpp >+++ b/Source/WebKit/UIProcess/gtk/HardwareAccelerationManager.cpp >@@ -26,7 +26,6 @@ > #include "config.h" > #include "HardwareAccelerationManager.h" > >-#include "WaylandCompositor.h" > #include <WebCore/NotImplemented.h> > #include <WebCore/PlatformDisplay.h> > >@@ -34,6 +33,14 @@ > #include <WebCore/PlatformDisplayX11.h> > #endif > >+#if PLATFORM(WAYLAND) >+#if USE(WPE_RENDERER) >+#include <wpe/fdo-egl.h> >+#else >+#include "WaylandCompositor.h" >+#endif >+#endif >+ > namespace WebKit { > using namespace WebCore; > >@@ -71,10 +78,17 @@ HardwareAccelerationManager::HardwareAccelerationManager() > > #if PLATFORM(WAYLAND) && USE(EGL) > if (PlatformDisplay::sharedDisplay().type() == PlatformDisplay::Type::Wayland) { >+#if USE(WPE_RENDERER) >+ if (!wpe_fdo_initialize_for_egl_display(PlatformDisplay::sharedDisplay().eglDisplay())) { >+ m_canUseHardwareAcceleration = false; >+ return; >+ } >+#else > if (!WaylandCompositor::singleton().isRunning()) { > m_canUseHardwareAcceleration = false; > return; > } >+#endif > } > #endif > >diff --git a/Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp b/Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp >index dc8d53cafbb..dd2851c707b 100644 >--- a/Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp >+++ b/Source/WebKit/UIProcess/gtk/WaylandCompositor.cpp >@@ -26,7 +26,7 @@ > #include "config.h" > #include "WaylandCompositor.h" > >-#if PLATFORM(WAYLAND) && USE(EGL) >+#if PLATFORM(WAYLAND) && USE(EGL) && !USE(WPE_RENDERER) > > #include "WebKitWaylandServerProtocol.h" > #include <EGL/egl.h> >@@ -576,4 +576,4 @@ void WaylandCompositor::unregisterWebPage(WebPageProxy& webPage) > > } // namespace WebKit > >-#endif // PLATFORM(WAYLAND) && USE(EGL) >+#endif // PLATFORM(WAYLAND) && USE(EGL) && !USE(WPE_RENDERER) >diff --git a/Source/WebKit/UIProcess/gtk/WaylandCompositor.h b/Source/WebKit/UIProcess/gtk/WaylandCompositor.h >index 14819f8fac4..5f0f5435673 100644 >--- a/Source/WebKit/UIProcess/gtk/WaylandCompositor.h >+++ b/Source/WebKit/UIProcess/gtk/WaylandCompositor.h >@@ -25,7 +25,7 @@ > > #pragma once > >-#if PLATFORM(WAYLAND) && USE(EGL) >+#if PLATFORM(WAYLAND) && USE(EGL) && !USE(WPE_RENDERER) > > #include "WebPageProxy.h" > #include <WebCore/RefPtrCairo.h> >@@ -129,4 +129,4 @@ private: > > } // namespace WebKit > >-#endif // PLATFORM(WAYLAND) && USE(EGL) >+#endif // PLATFORM(WAYLAND) && USE(EGL) && !USE(WPE_RENDERER) >diff --git a/Source/WebKit/WebProcess/WebPage/AcceleratedSurface.cpp b/Source/WebKit/WebProcess/WebPage/AcceleratedSurface.cpp >index ef0d1fc5b6f..2bbddd7c238 100644 >--- a/Source/WebKit/WebProcess/WebPage/AcceleratedSurface.cpp >+++ b/Source/WebKit/WebProcess/WebPage/AcceleratedSurface.cpp >@@ -37,7 +37,7 @@ > #include "AcceleratedSurfaceX11.h" > #endif > >-#if USE(LIBWPE) >+#if USE(WPE_RENDERER) > #include "AcceleratedSurfaceLibWPE.h" > #endif > >@@ -48,8 +48,12 @@ std::unique_ptr<AcceleratedSurface> AcceleratedSurface::create(WebPage& webPage, > { > #if PLATFORM(WAYLAND) > if (PlatformDisplay::sharedDisplay().type() == PlatformDisplay::Type::Wayland) >+#if USE(WPE_RENDERER) >+ return AcceleratedSurfaceLibWPE::create(webPage, client); >+#else > return AcceleratedSurfaceWayland::create(webPage, client); > #endif >+#endif > #if USE(REDIRECTED_XCOMPOSITE_WINDOW) > if (PlatformDisplay::sharedDisplay().type() == PlatformDisplay::Type::X11) > return AcceleratedSurfaceX11::create(webPage, client); >diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.cpp b/Source/WebKit/WebProcess/WebPage/WebPage.cpp >index 93301cc50ca..a301a7f79f2 100644 >--- a/Source/WebKit/WebProcess/WebPage/WebPage.cpp >+++ b/Source/WebKit/WebProcess/WebPage/WebPage.cpp >@@ -423,7 +423,7 @@ WebPage::WebPage(uint64_t pageID, WebPageCreationParameters&& parameters) > , m_userInterfaceLayoutDirection(parameters.userInterfaceLayoutDirection) > , m_overrideContentSecurityPolicy { parameters.overrideContentSecurityPolicy } > , m_cpuLimit(parameters.cpuLimit) >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > , m_hostFileDescriptor(WTFMove(parameters.hostFileDescriptor)) > #endif > #if ENABLE(VIEWPORT_RESIZING) >diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.h b/Source/WebKit/WebProcess/WebPage/WebPage.h >index 732890c7c57..a736e9d138e 100644 >--- a/Source/WebKit/WebProcess/WebPage/WebPage.h >+++ b/Source/WebKit/WebProcess/WebPage/WebPage.h >@@ -1146,7 +1146,7 @@ public: > void didFinishLoadingApplicationManifest(uint64_t, const Optional<WebCore::ApplicationManifest>&); > #endif > >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > int releaseHostFileDescriptor() { return m_hostFileDescriptor.releaseFileDescriptor(); } > #endif > >@@ -1898,7 +1898,7 @@ private: > const String m_overrideContentSecurityPolicy; > const Optional<double> m_cpuLimit; > >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > IPC::Attachment m_hostFileDescriptor; > #endif > >diff --git a/Source/WebKit/WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.cpp b/Source/WebKit/WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.cpp >index 983b9319b28..d048e075353 100644 >--- a/Source/WebKit/WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.cpp >+++ b/Source/WebKit/WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.cpp >@@ -26,6 +26,8 @@ > #include "config.h" > #include "AcceleratedSurfaceLibWPE.h" > >+#if USE(WPE_RENDERER) >+ > #include "WebPage.h" > #include <WebCore/PlatformDisplayLibWPE.h> > #include <wpe/wpe-egl.h> >@@ -65,7 +67,7 @@ void AcceleratedSurfaceLibWPE::initialize() > nullptr > }; > wpe_renderer_backend_egl_target_set_client(m_backend, &s_client, this); >- wpe_renderer_backend_egl_target_initialize(m_backend, downcast<PlatformDisplayLibWPE>(PlatformDisplay::sharedDisplay()).backend(), >+ wpe_renderer_backend_egl_target_initialize(m_backend, downcast<PlatformDisplayLibWPE>(PlatformDisplay::sharedDisplayForCompositing()).backend(), > std::max(1, m_size.width()), std::max(1, m_size.height())); > } > >@@ -111,3 +113,4 @@ void AcceleratedSurfaceLibWPE::didRenderFrame() > > } // namespace WebKit > >+#endif // USE(WPE_RENDERER) >diff --git a/Source/WebKit/WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.h b/Source/WebKit/WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.h >index a586f163822..e17d1e00f3d 100644 >--- a/Source/WebKit/WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.h >+++ b/Source/WebKit/WebProcess/WebPage/libwpe/AcceleratedSurfaceLibWPE.h >@@ -25,7 +25,7 @@ > > #pragma once > >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > > #include "AcceleratedSurface.h" > >@@ -44,7 +44,14 @@ public: > uint64_t window() const override; > uint64_t surfaceID() const override; > void clientResize(const WebCore::IntSize&) override; >- bool shouldPaintMirrored() const override { return false; } >+ bool shouldPaintMirrored() const override >+ { >+#if PLATFORM(GTK) >+ return true; >+#else >+ return false; >+#endif >+ } > > void initialize() override; > void finalize() override; >@@ -59,4 +66,4 @@ private: > > } // namespace WebKit > >-#endif // PLATFORM(WPE) >+#endif // USE(WPE_RENDERER) >diff --git a/Source/WebKit/WebProcess/WebProcess.h b/Source/WebKit/WebProcess/WebProcess.h >index 96d3ce953d3..09017948cbe 100644 >--- a/Source/WebKit/WebProcess/WebProcess.h >+++ b/Source/WebKit/WebProcess/WebProcess.h >@@ -62,6 +62,10 @@ > #include "ProcessTaskStateObserver.h" > #endif > >+#if PLATFORM(WAYLAND) && USE(WPE_RENDERER) >+#include <WebCore/PlatformDisplayLibWPE.h> >+#endif >+ > namespace API { > class Object; > } >@@ -544,6 +548,11 @@ private: > #if PLATFORM(WAYLAND) > std::unique_ptr<WaylandCompositorDisplay> m_waylandCompositorDisplay; > #endif >+ >+#if PLATFORM(WAYLAND) && USE(WPE_RENDERER) >+ std::unique_ptr<WebCore::PlatformDisplayLibWPE> m_wpeDisplay; >+#endif >+ > bool m_hasSuspendedPageProxy { false }; > bool m_isSuspending { false }; > >diff --git a/Source/WebKit/WebProcess/glib/WebProcessGLib.cpp b/Source/WebKit/WebProcess/glib/WebProcessGLib.cpp >index ea0f1028082..c1f168003ba 100644 >--- a/Source/WebKit/WebProcess/glib/WebProcessGLib.cpp >+++ b/Source/WebKit/WebProcess/glib/WebProcessGLib.cpp >@@ -35,7 +35,7 @@ > #include "WaylandCompositorDisplay.h" > #endif > >-#if PLATFORM(WPE) >+#if USE(WPE_RENDERER) > #include <WebCore/PlatformDisplayLibWPE.h> > #include <wpe/wpe.h> > #endif >@@ -61,9 +61,24 @@ void WebProcess::platformInitializeWebProcess(WebProcessCreationParameters& para > downcast<PlatformDisplayLibWPE>(PlatformDisplay::sharedDisplay()).initialize(parameters.hostClientFileDescriptor.releaseFileDescriptor()); > } > #endif >+ > #if PLATFORM(WAYLAND) >- m_waylandCompositorDisplay = WaylandCompositorDisplay::create(parameters.waylandCompositorDisplayName); >+ if (PlatformDisplay::sharedDisplay().type() == PlatformDisplay::Type::Wayland) { >+#if USE(WPE_RENDERER) >+ if (!parameters.isServiceWorkerProcess) { >+ auto hostClientFileDescriptor = parameters.hostClientFileDescriptor.releaseFileDescriptor(); >+ if (hostClientFileDescriptor != -1) { >+ wpe_loader_init(parameters.implementationLibraryName.data()); >+ m_wpeDisplay = WebCore::PlatformDisplayLibWPE::create(); >+ m_wpeDisplay->initialize(hostClientFileDescriptor); >+ } >+ } >+#else >+ m_waylandCompositorDisplay = WaylandCompositorDisplay::create(parameters.waylandCompositorDisplayName); > #endif >+ } >+#endif >+ > #if USE(GSTREAMER) > WebCore::initializeGStreamer(WTFMove(parameters.gstreamerOptions)); > #endif >diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake >index d290beffdd9..cb8efb09210 100644 >--- a/Source/cmake/OptionsGTK.cmake >+++ b/Source/cmake/OptionsGTK.cmake >@@ -85,6 +85,7 @@ WEBKIT_OPTION_DEFINE(USE_LIBHYPHEN "Whether to enable the default automatic hyph > WEBKIT_OPTION_DEFINE(USE_LIBSECRET "Whether to enable the persistent credential storage using libsecret." PUBLIC ON) > WEBKIT_OPTION_DEFINE(USE_OPENJPEG "Whether to enable support for JPEG2000 images." PUBLIC ON) > WEBKIT_OPTION_DEFINE(USE_WOFF2 "Whether to enable support for WOFF2 Web Fonts." PUBLIC ON) >+WEBKIT_OPTION_DEFINE(USE_WPE_RENDERER "Whether to enable WPE rendering" PUBLIC ON) > > # Private options specific to the GTK+ port. Changing these options is > # completely unsupported. They are intended for use only by WebKit developers. >@@ -102,6 +103,8 @@ WEBKIT_OPTION_DEPEND(ENABLE_PLUGIN_PROCESS_GTK2 ENABLE_X11_TARGET) > WEBKIT_OPTION_DEPEND(ENABLE_WEBGL ENABLE_OPENGL) > WEBKIT_OPTION_DEPEND(USE_REDIRECTED_XCOMPOSITE_WINDOW ENABLE_OPENGL) > WEBKIT_OPTION_DEPEND(USE_REDIRECTED_XCOMPOSITE_WINDOW ENABLE_X11_TARGET) >+WEBKIT_OPTION_DEPEND(USE_WPE_RENDERER ENABLE_OPENGL) >+WEBKIT_OPTION_DEPEND(USE_WPE_RENDERER ENABLE_WAYLAND_TARGET) > > SET_AND_EXPOSE_TO_BUILD(ENABLE_DEVELOPER_MODE ${DEVELOPER_MODE}) > if (DEVELOPER_MODE) >@@ -198,6 +201,18 @@ SET_AND_EXPOSE_TO_BUILD(HAVE_OS_DARK_MODE_SUPPORT 1) > set(glib_components gio gio-unix gobject gthread gmodule) > find_package(GLIB 2.36 REQUIRED COMPONENTS ${glib_components}) > >+if (USE_WPE_RENDERER) >+ find_package(WPE 1.3.0) >+ if (NOT WPE_FOUND) >+ message(FATAL_ERROR "libwpe is required for USE_WPE_RENDERER") >+ endif () >+ >+ find_package(WPEBackend-fdo 1.3.0) >+ if (NOT WPEBACKEND_FDO_FOUND) >+ message(FATAL_ERROR "WPEBackend-fdo is required for USE_WPE_RENDERER") >+ endif () >+endif () >+ > if (ENABLE_XSLT) > find_package(LibXslt 1.1.7 REQUIRED) > endif () >diff --git a/Source/cmake/OptionsPlayStation.cmake b/Source/cmake/OptionsPlayStation.cmake >index a4e879339ac..fb076ee5873 100644 >--- a/Source/cmake/OptionsPlayStation.cmake >+++ b/Source/cmake/OptionsPlayStation.cmake >@@ -111,6 +111,7 @@ SET_AND_EXPOSE_TO_BUILD(USE_CURL ON) > SET_AND_EXPOSE_TO_BUILD(USE_FREETYPE ON) > SET_AND_EXPOSE_TO_BUILD(USE_HARFBUZZ ON) > SET_AND_EXPOSE_TO_BUILD(USE_LIBWPE ON) >+SET_AND_EXPOSE_TO_BUILD(USE_WPE_RENDERER ON) > > SET_AND_EXPOSE_TO_BUILD(USE_INSPECTOR_SOCKET_SERVER ${ENABLE_REMOTE_INSPECTOR}) > SET_AND_EXPOSE_TO_BUILD(USE_UNIX_DOMAIN_SOCKETS ON) >diff --git a/Source/cmake/OptionsWPE.cmake b/Source/cmake/OptionsWPE.cmake >index 5f7f2f62dce..5cedfe7c409 100644 >--- a/Source/cmake/OptionsWPE.cmake >+++ b/Source/cmake/OptionsWPE.cmake >@@ -158,6 +158,7 @@ SET_AND_EXPOSE_TO_BUILD(USE_GCRYPT TRUE) > SET_AND_EXPOSE_TO_BUILD(USE_LIBEPOXY TRUE) > SET_AND_EXPOSE_TO_BUILD(USE_LIBWPE TRUE) > SET_AND_EXPOSE_TO_BUILD(USE_OPENGL_ES TRUE) >+SET_AND_EXPOSE_TO_BUILD(USE_WPE_RENDERER TRUE) > SET_AND_EXPOSE_TO_BUILD(USE_XDGMIME TRUE) > > if (WTF_CPU_ARM OR WTF_CPU_MIPS) >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 912093f0ffe..b9dc403816c 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,14 @@ >+2019-05-16 Carlos Garcia Campos <cgarcia@igalia.com> >+ >+ [GTK] Use WPEBackend-fdo for accelerating compositing in Wayland instead of the nested compositor >+ https://bugs.webkit.org/show_bug.cgi?id=197944 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add WPEBackend-fdo to jhbuild moduleset. >+ >+ * gtk/jhbuild.modules: >+ > 2019-05-15 Aakash Jain <aakash_jain@apple.com> > > Replace double-quotes with single quotes in steps.py >diff --git a/Tools/gtk/jhbuild.modules b/Tools/gtk/jhbuild.modules >index 7b006f7e307..378a85cbd00 100644 >--- a/Tools/gtk/jhbuild.modules >+++ b/Tools/gtk/jhbuild.modules >@@ -32,6 +32,7 @@ > <dep package="libgpg-error"/> > <dep package="libgcrypt"/> > <dep package="openjpeg"/> >+ <dep package="wpebackend-fdo"/> > <if condition-set="linux"> > <dep package="xdg-dbus-proxy"/> > <dep package="xserver"/> >@@ -81,6 +82,8 @@ > href="http://webkitgtk.org/jhbuild_mirror/"/> > <repository type="tarball" name="gnupg.org" > href="https://www.gnupg.org/ftp/gcrypt/"/> >+ <repository type="tarball" name="wpewebkit" >+ href="https://wpewebkit.org/releases/"/> > > <cmake id="brotli"> > <branch repo="github.com" module="google/brotli.git" checkoutdir="brotli" tag="v1.0.5"/> >@@ -464,6 +467,20 @@ > hash="sha256:3dc787c1bb6023ba846c2a0d9b1f6e179f1cd255172bde9eb75b01f1e6c7d71a"/> > </cmake> > >+ <cmake id="libwpe"> >+ <branch repo="wpewebkit" module="libwpe-1.3.0.tar.xz" version="1.3.0" >+ hash="sha256:68986647af2433e74f830a06a497ed536dbc8721b04026ed82611a584be71148"/> >+ </cmake> >+ >+ <cmake id="wpebackend-fdo"> >+ <dependencies> >+ <dep package="libwpe"/> >+ <dep package="glib"/> >+ </dependencies> >+ <branch repo="wpewebkit" module="wpebackend-fdo-1.3.0.tar.xz" version="1.3.0" >+ hash="sha256:fed9ab29f5d53cf465188da80d014f3aa067c77704f8508c6bd17971fded359d"/> >+ </cmake> >+ > <!-- Dependencies listed below this point are not thought to affect test results, and are only > included because they themselves depend on other dependencies built by jhbuild. --> >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 197944
:
370036
|
370687