Changeset 178095 in webkit


Ignore:
Timestamp:
Jan 7, 2015 8:29:24 PM (9 years ago)
Author:
yoon@igalia.com
Message:

[GTK][ThreadedCompositor] Add support for threaded compositor.
https://bugs.webkit.org/show_bug.cgi?id=118265

Reviewed by Martin Robinson.

.:

Added the ENABLE_THREADED_COMPOSITOR feature flag to the cmake and
autotools build systems. The feature is disabled by default.
And remove deprecated the WTF_USE_TILED_BACKING_STORE feature flag
from the feature flags.

  • Source/cmake/OptionsEfl.cmake:
  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/WebKitFeatures.cmake:
  • Source/cmakeconfig.h.cmake:

Source/WebCore:

  • PlatformGTK.cmake:

Adds CoodinatedGraphics and threaded compositor related classes to
support threaded compositor

  • platform/graphics/texmap/coordinated/CoordinatedTile.cpp:
  • platform/graphics/texmap/coordinated/CoordinatedTile.h:

This class should be guarded by COORDINATED_GRAPHICS instead of
TILED_BACKING_STORE

Source/WebKit2:

This patch introduces a threaded compositor for WebKitGTK+.
It is disabled as a default because it is a initial implementation.
The threaded compositor can be enabled using --threaded-compositor
option at compile time.

No new tests, this is an experimental feature.

  • PlatformGTK.cmake:

Adds CoodinatedGraphics and threaded compositor related classes to
support threaded compositor

  • Shared/DrawingAreaInfo.h:

Use DrawingAreaImpl for threaded compositor

  • UIProcess/API/gtk/WebKitSettings.cpp:

(_WebKitSettingsPrivate::_WebKitSettingsPrivate):
Modified to use forceCompositingMode when the threaded compositor used.
If we does not set this mode here, it cannot draw the root content layer.

  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp: Added.
  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h: Added.

(WebKit::ThreadedCoordinatedLayerTreeHost::rootLayer):
Implements ThreadedCoordinatedLayerTreeHost to use the threaded
compositor. It is basically similar with CoordinatedLayerTreeHost but it uses ThreadedCompositor instead of IPC.

  • UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::contentsSizeChanged):

  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp:
  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h:
  • WebProcess/WebPage/DrawingArea.cpp:

(WebKit::DrawingArea::create):
(WebKit::DrawingArea::DrawingArea):

  • WebProcess/WebPage/DrawingArea.h:

COORDINATED_GRAPHICS_MULTIPROCESS is introduced to classify IPC specific codes
from Coordinated Graphics.
And COORDINATED_GRAPHICS_THREADED is used to guard the threaded
compositor specific codes.

  • WebProcess/WebPage/DrawingAreaImpl.cpp:

(WebKit::DrawingAreaImpl::DrawingAreaImpl):
Modified to use forceCompositingMode when the threaded compositor used.
If we does not set this mode here, it will crash because of PageOverlay.
(WebKit::DrawingAreaImpl::mainFrameContentSizeChanged):
(WebKit::DrawingAreaImpl::updateBackingStoreState):
Modified to handle contents / viewport size changes for threaded compositor.
(WebKit::DrawingAreaImpl::attachViewOverlayGraphicsLayer):
Added to support Overlay layer in the threaded compositor.
(WebKit::DrawingAreaImpl::setNativeSurfaceHandleForCompositing):
Push the surface handle for compositing to the threaded compositor.

  • WebProcess/WebPage/DrawingAreaImpl.h: Use COORDINATED_GRAPIHCS_THREADED to guard the threaded compositor related codes.
  • WebProcess/WebPage/LayerTreeHost.cpp: Ditto.
  • WebProcess/WebPage/LayerTreeHost.h: Ditto.
  • WebProcess/WebPage/WebPage.cpp: Ditto.
  • WebProcess/WebPage/WebPage.h: Ditto.
  • WebProcess/WebPage/WebPage.messages.in: Ditto.
  • WebProcess/gtk/WebProcessMainGtk.cpp:

Modified to call XInitThreads to use thread-safe xlib.

Tools:

Added the ENABLE_THREADED_COMPOSITOR feature flag to the cmake and
autotools build systems. The feature is disabled by default.
And remove deprecated the WTF_USE_TILED_BACKING_STORE feature flag
from the feature flags.

  • Scripts/webkitperl/FeatureList.pm:
Location:
trunk
Files:
2 added
33 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r177703 r178095  
     12015-01-07  Gwang Yoon Hwang  <yoon@igalia.com>
     2
     3        [GTK][ThreadedCompositor] Add support for threaded compositor.
     4        https://bugs.webkit.org/show_bug.cgi?id=118265
     5
     6        Reviewed by Martin Robinson.
     7
     8        Added the ENABLE_THREADED_COMPOSITOR feature flag to the cmake and
     9        autotools build systems. The feature is disabled by default.
     10        And remove deprecated the WTF_USE_TILED_BACKING_STORE feature flag
     11        from the feature flags.
     12
     13        * Source/cmake/OptionsEfl.cmake:
     14        * Source/cmake/OptionsGTK.cmake:
     15        * Source/cmake/WebKitFeatures.cmake:
     16        * Source/cmakeconfig.h.cmake:
     17
    1182014-12-23  Alexey Proskuryakov  <ap@apple.com>
    219
  • trunk/Source/WebCore/ChangeLog

    r178080 r178095  
     12015-01-07  Gwang Yoon Hwang  <yoon@igalia.com>
     2
     3        [GTK][ThreadedCompositor] Add support for threaded compositor.
     4        https://bugs.webkit.org/show_bug.cgi?id=118265
     5
     6        Reviewed by Martin Robinson.
     7
     8        * PlatformGTK.cmake:
     9        Adds CoodinatedGraphics and threaded compositor related classes to
     10        support threaded compositor
     11
     12        * platform/graphics/texmap/coordinated/CoordinatedTile.cpp:
     13        * platform/graphics/texmap/coordinated/CoordinatedTile.h:
     14        This class should be guarded by COORDINATED_GRAPHICS instead of
     15        TILED_BACKING_STORE
     16
    1172015-01-07  Daniel Bates  <dabates@apple.com>
    218
  • trunk/Source/WebCore/PlatformGTK.cmake

    r177942 r178095  
    372372        platform/graphics/texmap/TextureMapperGL.cpp
    373373        platform/graphics/texmap/TextureMapperShaderProgram.cpp
     374    )
     375endif ()
     376
     377if (ENABLE_THREADED_COMPOSITOR)
     378    list(APPEND WebCore_INCLUDE_DIRECTORIES
     379        "${WEBCORE_DIR}/page/scrolling/coordinatedgraphics"
     380        "${WEBCORE_DIR}/platform/graphics/texmap/coordinated"
     381        "${WEBCORE_DIR}/platform/graphics/texmap/threadedcompositor"
     382    )
     383    list(APPEND WebCore_SOURCES
     384        page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp
     385        page/scrolling/coordinatedgraphics/ScrollingStateNodeCoordinatedGraphics.cpp
     386        page/scrolling/coordinatedgraphics/ScrollingStateScrollingNodeCoordinatedGraphics.cpp
     387        page/scrolling/ScrollingStateStickyNode.cpp
     388        page/scrolling/ScrollingThread.cpp
     389        page/scrolling/ScrollingTreeNode.cpp
     390        page/scrolling/ScrollingTreeScrollingNode.cpp
     391        platform/graphics/TiledBackingStore.cpp
     392        platform/graphics/texmap/coordinated/AreaAllocator.cpp
     393        platform/graphics/texmap/coordinated/CompositingCoordinator.cpp
     394        platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp
     395        platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp
     396        platform/graphics/texmap/coordinated/CoordinatedSurface.cpp
     397        platform/graphics/texmap/coordinated/CoordinatedTile.cpp
     398        platform/graphics/texmap/coordinated/UpdateAtlas.cpp
    374399    )
    375400endif ()
  • trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.cpp

    r151262 r178095  
    2727#include "CoordinatedTile.h"
    2828
    29 #if USE(TILED_BACKING_STORE)
     29#if USE(COORDINATED_GRAPHICS)
    3030
    3131#include "GraphicsContext.h"
     
    142142} // namespace WebCore
    143143
    144 #endif // USE(TILED_BACKING_STORE)
     144#endif // USE(COORDINATED_GRAPHICS)
  • trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.h

    r162139 r178095  
    2727#define CoordinatedTile_h
    2828
    29 #if USE(TILED_BACKING_STORE)
     29#if USE(COORDINATED_GRAPHICS)
    3030
    3131#include "CoordinatedSurface.h"
     
    9292} // namespace WebCore
    9393
    94 #endif // USE(TILED_BACKING_STORE)
     94#endif // USE(COORDINATED_GRAPHICS)
    9595
    9696#endif // CoordinatedTile_h
  • trunk/Source/WebKit2/ChangeLog

    r178080 r178095  
     12015-01-07  Gwang Yoon Hwang  <yoon@igalia.com>
     2
     3        [GTK][ThreadedCompositor] Add support for threaded compositor.
     4        https://bugs.webkit.org/show_bug.cgi?id=118265
     5
     6        Reviewed by Martin Robinson.
     7
     8        This patch introduces a threaded compositor for WebKitGTK+.
     9        It is disabled as a default because it is a initial implementation.
     10        The threaded compositor can be enabled using --threaded-compositor
     11        option at compile time.
     12
     13        No new tests, this is an experimental feature.
     14
     15        * PlatformGTK.cmake:
     16        Adds CoodinatedGraphics and threaded compositor related classes to
     17        support threaded compositor
     18
     19        * Shared/DrawingAreaInfo.h:
     20        Use DrawingAreaImpl for threaded compositor
     21
     22        * UIProcess/API/gtk/WebKitSettings.cpp:
     23        (_WebKitSettingsPrivate::_WebKitSettingsPrivate):
     24        Modified to use forceCompositingMode when the threaded compositor used.
     25        If we does not set this mode here, it cannot draw the root content layer.
     26
     27        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp: Added.
     28        * WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h: Added.
     29        (WebKit::ThreadedCoordinatedLayerTreeHost::rootLayer):
     30        Implements ThreadedCoordinatedLayerTreeHost to use the threaded
     31        compositor. It is basically similar with CoordinatedLayerTreeHost but it uses ThreadedCompositor instead of IPC.
     32
     33        * UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h:
     34        * UIProcess/PageClient.h:
     35        * UIProcess/WebPageProxy.cpp:
     36        * UIProcess/WebPageProxy.h:
     37        * UIProcess/WebPageProxy.messages.in:
     38        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
     39        (WebKit::WebChromeClient::contentsSizeChanged):
     40        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp:
     41        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h:
     42        * WebProcess/WebPage/DrawingArea.cpp:
     43        (WebKit::DrawingArea::create):
     44        (WebKit::DrawingArea::DrawingArea):
     45        * WebProcess/WebPage/DrawingArea.h:
     46        COORDINATED_GRAPHICS_MULTIPROCESS is introduced to classify IPC specific codes
     47        from Coordinated Graphics.
     48        And COORDINATED_GRAPHICS_THREADED is used to guard the threaded
     49        compositor specific codes.
     50
     51        * WebProcess/WebPage/DrawingAreaImpl.cpp:
     52        (WebKit::DrawingAreaImpl::DrawingAreaImpl):
     53        Modified to use forceCompositingMode when the threaded compositor used.
     54        If we does not set this mode here, it will crash because of PageOverlay.
     55        (WebKit::DrawingAreaImpl::mainFrameContentSizeChanged):
     56        (WebKit::DrawingAreaImpl::updateBackingStoreState):
     57        Modified to handle contents / viewport size changes for threaded compositor.
     58        (WebKit::DrawingAreaImpl::attachViewOverlayGraphicsLayer):
     59        Added to support Overlay layer in the threaded compositor.
     60        (WebKit::DrawingAreaImpl::setNativeSurfaceHandleForCompositing):
     61        Push the surface handle for compositing to the threaded compositor.
     62
     63        * WebProcess/WebPage/DrawingAreaImpl.h: Use COORDINATED_GRAPIHCS_THREADED to guard the threaded compositor related codes.
     64        * WebProcess/WebPage/LayerTreeHost.cpp: Ditto.
     65        * WebProcess/WebPage/LayerTreeHost.h: Ditto.
     66        * WebProcess/WebPage/WebPage.cpp: Ditto.
     67        * WebProcess/WebPage/WebPage.h: Ditto.
     68        * WebProcess/WebPage/WebPage.messages.in: Ditto.
     69
     70        * WebProcess/gtk/WebProcessMainGtk.cpp:
     71            Modified to call XInitThreads to use thread-safe xlib.
     72
    1732015-01-07  Daniel Bates  <dabates@apple.com>
    274
  • trunk/Source/WebKit2/PlatformGTK.cmake

    r177721 r178095  
    312312    WebProcess/WebPage/atk/WebPageAccessibilityObjectAtk.cpp
    313313
    314     WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp
    315314    WebProcess/WebPage/gtk/PrinterListGtk.cpp
    316315    WebProcess/WebPage/gtk/WebInspectorUIGtk.cpp
     
    743742)
    744743
     744if (ENABLE_THREADED_COMPOSITOR)
     745    list(APPEND WebKit2_SOURCES
     746        Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp
     747        Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp
     748        Shared/CoordinatedGraphics/SimpleViewportController.cpp
     749        Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp
     750        Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.cpp
     751        WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp
     752    )
     753    list(APPEND WebKit2_INCLUDE_DIRECTORIES
     754        "${WEBCORE_DIR}/platform/graphics/texmap/coordinated"
     755        "${WEBKIT2_DIR}/Shared/CoordinatedGraphics"
     756        "${WEBKIT2_DIR}/Shared/CoordinatedGraphics/threadedcompositor"
     757        "${WEBKIT2_DIR}/WebProcess/WebPage/CoordinatedGraphics"
     758    )
     759else (ENABLE_THREADED_COMPOSITOR)
     760    list(APPEND WebKit2_SOURCES
     761        WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp
     762    )
     763endif ()
     764
    745765# Commands for building the built-in injected bundle.
    746766include_directories(
  • trunk/Source/WebKit2/Shared/DrawingAreaInfo.h

    r163886 r178095  
    3636    DrawingAreaTypeRemoteLayerTree,
    3737#else
    38 #if USE(COORDINATED_GRAPHICS)
     38#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    3939    DrawingAreaTypeCoordinated
    4040#else
  • trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp

    r171742 r178095  
    5555        pictographFontFamily = preferences->pictographFontFamily().utf8();
    5656        defaultCharset = preferences->defaultTextEncodingName().utf8();
     57
     58#if USE(COORDINATED_GRAPHICS_THREADED)
     59        preferences->setForceCompositingMode(true);
     60#endif
    5761    }
    5862
  • trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h

    r177926 r178095  
    2222#define CoordinatedLayerTreeHostProxy_h
    2323
    24 #if USE(COORDINATED_GRAPHICS)
     24#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    2525
    2626#include "CoordinatedGraphicsArgumentCoders.h"
     
    7070} // namespace WebKit
    7171
    72 #endif // USE(COORDINATED_GRAPHICS)
     72#endif // USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    7373
    7474#endif // CoordinatedLayerTreeHostProxy_h
  • trunk/Source/WebKit2/UIProcess/PageClient.h

    r177639 r178095  
    139139    virtual void didCommitLoadForMainFrame(const String& mimeType, bool useCustomContentProvider) = 0;
    140140
    141 #if USE(TILED_BACKING_STORE)
     141#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    142142    virtual void pageDidRequestScroll(const WebCore::IntPoint&) = 0;
    143143    virtual void didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect) = 0;
    144144    virtual void pageTransitionViewportReady() = 0;
    145 #endif
    146 #if USE(COORDINATED_GRAPHICS)
    147145    virtual void didFindZoomableArea(const WebCore::IntPoint&, const WebCore::IntRect&) = 0;
    148146#endif
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp

    r178003 r178095  
    110110#endif
    111111
    112 #if USE(COORDINATED_GRAPHICS)
     112#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    113113#include "CoordinatedLayerTreeHostProxyMessages.h"
    114114#endif
     
    13731373#endif
    13741374
    1375 #if USE(TILED_BACKING_STORE)
     1375#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    13761376void WebPageProxy::commitPageTransitionViewport()
    13771377{
     
    32813281}
    32823282
    3283 #if USE(TILED_BACKING_STORE)
     3283#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    32843284void WebPageProxy::pageDidRequestScroll(const IntPoint& point)
    32853285{
     
    33973397}
    33983398
    3399 #if PLATFORM(EFL)
     3399#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    34003400void WebPageProxy::didChangeContentSize(const IntSize& size)
    34013401{
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.h

    r177917 r178095  
    476476    void didCommitLayerTree(const WebKit::RemoteLayerTreeTransaction&);
    477477
    478 #if USE(TILED_BACKING_STORE)
     478#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    479479    void didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect);
    480480#endif
     
    548548    PlatformWidget viewWidget();
    549549#endif
    550 #if USE(TILED_BACKING_STORE)
     550#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    551551    void commitPageTransitionViewport();
    552552#endif
     
    11081108    void didDestroyNotification(uint64_t notificationID);
    11091109
    1110 #if USE(TILED_BACKING_STORE)
     1110#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    11111111    void pageDidRequestScroll(const WebCore::IntPoint&);
    11121112    void pageTransitionViewportReady();
    1113 #endif
    1114 #if USE(COORDINATED_GRAPHICS)
    11151113    void didFindZoomableArea(const WebCore::IntPoint&, const WebCore::IntRect&);
    1116 #endif
    1117 #if PLATFORM(EFL)
    11181114    void didChangeContentSize(const WebCore::IntSize&);
    11191115#endif
  • trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in

    r177795 r178095  
    9696#endif
    9797
    98 #if USE(TILED_BACKING_STORE)
     98#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    9999    PageDidRequestScroll(WebCore::IntPoint point)
    100100    PageTransitionViewportReady()
    101 #endif
    102 #if USE(COORDINATED_GRAPHICS)
    103101    DidFindZoomableArea(WebCore::IntPoint target, WebCore::IntRect area)
    104 #endif
    105 
    106 #if PLATFORM(EFL)
    107102    DidChangeContentSize(WebCore::IntSize newSize)
    108103#endif
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp

    r177806 r178095  
    521521    if (m_page->useFixedLayout())
    522522        m_page->drawingArea()->layerTreeHost()->sizeDidChange(size);
    523 
     523#endif
     524
     525#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    524526    m_page->send(Messages::WebPageProxy::DidChangeContentSize(size));
    525527#endif
  • trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp

    r177926 r178095  
    601601}
    602602
     603#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    603604void CoordinatedDrawingArea::didReceiveCoordinatedLayerTreeHostMessage(IPC::Connection& connection, IPC::MessageDecoder& decoder)
    604605{
     
    606607        m_layerTreeHost->didReceiveCoordinatedLayerTreeHostMessage(connection, decoder);
    607608}
     609#endif
    608610
    609611void CoordinatedDrawingArea::attachViewOverlayGraphicsLayer(WebCore::Frame* frame, WebCore::GraphicsLayer* viewOverlayRootLayer)
  • trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h

    r177926 r178095  
    6565    virtual void scheduleCompositingLayerFlushImmediately() override;
    6666
     67#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    6768    virtual void didReceiveCoordinatedLayerTreeHostMessage(IPC::Connection&, IPC::MessageDecoder&);
     69#endif
    6870
    6971    virtual void attachViewOverlayGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) override;
  • trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.cpp

    r173429 r178095  
    4040#include "TiledCoreAnimationDrawingArea.h"
    4141#else
    42 #if USE(COORDINATED_GRAPHICS)
     42#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    4343#include "CoordinatedDrawingArea.h"
    4444#else
     
    6262        return std::make_unique<RemoteLayerTreeDrawingArea>(webPage, parameters);
    6363#else
    64 #if USE(COORDINATED_GRAPHICS)
     64#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    6565    case DrawingAreaTypeCoordinated:
    6666        return std::make_unique<CoordinatedDrawingArea>(webPage, parameters);
     
    7878    : m_type(type)
    7979    , m_webPage(webPage)
     80#if USE(TEXTURE_MAPPER_GL) && PLATFORM(GTK)
     81    , m_nativeSurfaceHandleForCompositing(0)
     82#endif
    8083{
    8184    WebProcess::shared().addMessageReceiver(Messages::DrawingArea::messageReceiverName(), m_webPage.pageID(), *this);
  • trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h

    r177917 r178095  
    110110#endif
    111111
    112 #if USE(COORDINATED_GRAPHICS)
     112#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    113113    virtual void didReceiveCoordinatedLayerTreeHostMessage(IPC::Connection&, IPC::MessageDecoder&) = 0;
    114114#endif
  • trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp

    r176954 r178095  
    3636#include "WebProcess.h"
    3737#include <WebCore/GraphicsContext.h>
     38#include <WebCore/MainFrame.h>
    3839#include <WebCore/Page.h>
    3940#include <WebCore/Settings.h>
     41
     42#if USE(COORDINATED_GRAPHICS_THREADED)
     43#include "ThreadedCoordinatedLayerTreeHost.h"
     44#endif
    4045
    4146using namespace WebCore;
     
    6469    , m_exitCompositingTimer(RunLoop::main(), this, &DrawingAreaImpl::exitAcceleratedCompositingMode)
    6570{
     71
     72#if USE(COORDINATED_GRAPHICS_THREADED)
     73    webPage.corePage()->settings().setForceCompositingMode(true);
     74#endif
     75
    6676    if (webPage.corePage()->settings().acceleratedDrawingEnabled() || webPage.corePage()->settings().forceCompositingMode())
    6777        m_alwaysUseCompositing = true;
     
    219229{
    220230    m_isPaintingEnabled = paintingEnabled;
     231}
     232
     233void DrawingAreaImpl::mainFrameContentSizeChanged(const WebCore::IntSize& newSize)
     234{
     235#if USE(COORDINATED_GRAPHICS_THREADED)
     236    if (m_layerTreeHost)
     237        m_layerTreeHost->sizeDidChange(newSize);
     238#else
     239    UNUSED_PARAM(newSize);
     240#endif
    221241}
    222242
     
    323343
    324344        if (m_layerTreeHost) {
     345#if USE(COORDINATED_GRAPHICS_THREADED)
     346            m_layerTreeHost->viewportSizeChanged(m_webPage.size());
     347#else
    325348            m_layerTreeHost->sizeDidChange(m_webPage.size());
     349#endif
    326350        } else
    327351            m_dirtyRegion = m_webPage.bounds();
     
    644668}
    645669
     670void DrawingAreaImpl::attachViewOverlayGraphicsLayer(WebCore::Frame* frame, WebCore::GraphicsLayer* viewOverlayRootLayer)
     671{
     672#if USE(COORDINATED_GRAPHICS_THREADED)
     673    if (!frame->isMainFrame())
     674        return;
     675
     676    if (!m_layerTreeHost)
     677        return;
     678
     679    ThreadedCoordinatedLayerTreeHost* coordinatedLayerTreeHost = static_cast<ThreadedCoordinatedLayerTreeHost*>(m_layerTreeHost.get());
     680    coordinatedLayerTreeHost->setViewOverlayRootLayer(viewOverlayRootLayer);
     681#else
     682    UNUSED_PARAM(frame);
     683    UNUSED_PARAM(viewOverlayRootLayer);
     684#endif
     685}
     686
    646687#if USE(TEXTURE_MAPPER_GL) && PLATFORM(GTK)
    647688void DrawingAreaImpl::setNativeSurfaceHandleForCompositing(uint64_t handle)
    648689{
    649690    m_nativeSurfaceHandleForCompositing = handle;
    650 }
     691
     692#if USE(COORDINATED_GRAPHICS_THREADED)
     693    if (m_layerTreeHost)
     694        m_layerTreeHost->setNativeSurfaceHandleForCompositing(handle);
    651695#endif
     696}
     697#endif
    652698
    653699} // namespace WebKit
  • trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h

    r176954 r178095  
    6161
    6262    virtual void setPaintingEnabled(bool);
     63    virtual void mainFrameContentSizeChanged(const WebCore::IntSize&) override;
    6364    virtual void updatePreferences(const WebPreferencesStore&) override;
    6465
     
    6768    virtual void scheduleCompositingLayerFlush() override;
    6869    virtual void scheduleCompositingLayerFlushImmediately() override;
     70
     71    virtual void attachViewOverlayGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*);
    6972
    7073#if USE(TEXTURE_MAPPER_GL) && PLATFORM(GTK)
  • trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp

    r156793 r178095  
    2727#include "LayerTreeHost.h"
    2828
    29 #if USE(COORDINATED_GRAPHICS)
     29#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    3030#include "CoordinatedLayerTreeHost.h"
    31 #endif
    32 
    33 #if PLATFORM(GTK) && USE(TEXTURE_MAPPER_GL)
     31#elif USE(COORDINATED_GRAPHICS_THREADED)
     32#include "ThreadedCoordinatedLayerTreeHost.h"
     33#elif PLATFORM(GTK) && USE(TEXTURE_MAPPER_GL)
    3434#include "LayerTreeHostGtk.h"
    3535#endif
     
    4141PassRefPtr<LayerTreeHost> LayerTreeHost::create(WebPage* webPage)
    4242{
    43 #if USE(COORDINATED_GRAPHICS)
     43#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    4444    return CoordinatedLayerTreeHost::create(webPage);
     45#elif USE(COORDINATED_GRAPHICS_THREADED)
     46    return ThreadedCoordinatedLayerTreeHost::create(webPage);
    4547#elif PLATFORM(GTK) && USE(TEXTURE_MAPPER_GL)
    4648    return LayerTreeHostGtk::create(webPage);
  • trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h

    r177926 r178095  
    4444class GraphicsLayer;
    4545class GraphicsLayerFactory;
     46#if USE(COORDINATED_GRAPHICS_THREADED)
     47class ViewportAttributes;
     48#endif
    4649}
    4750
     
    7780    virtual WebCore::GraphicsLayerFactory* graphicsLayerFactory() { return 0; }
    7881
    79 #if USE(COORDINATED_GRAPHICS)
     82#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    8083    virtual void didReceiveCoordinatedLayerTreeHostMessage(IPC::Connection&, IPC::MessageDecoder&) = 0;
     84#endif
     85
     86#if USE(COORDINATED_GRAPHICS_THREADED)
     87    virtual void setNativeSurfaceHandleForCompositing(uint64_t) = 0;
     88    virtual void viewportSizeChanged(const WebCore::IntSize&) = 0;
     89    virtual void didChangeViewportProperties(const WebCore::ViewportAttributes&) = 0;
    8190#endif
    8291
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r177960 r178095  
    210210#endif
    211211
    212 #if USE(COORDINATED_GRAPHICS)
     212#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    213213#include "CoordinatedLayerTreeHostMessages.h"
    214214#endif
     
    477477
    478478    // FIXME: This should be done in the object constructors, and the objects themselves should be message receivers.
    479 #if USE(COORDINATED_GRAPHICS)
     479#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    480480    WebProcess::shared().addMessageReceiver(Messages::CoordinatedLayerTreeHost::messageReceiverName(), m_pageID, *this);
    481481#endif
     
    563563
    564564    // FIXME: This should be done in the object destructors, and the objects themselves should be message receivers.
    565 #if USE(COORDINATED_GRAPHICS)
     565#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    566566    WebProcess::shared().removeMessageReceiver(Messages::CoordinatedLayerTreeHost::messageReceiverName(), m_pageID);
    567567#endif
     
    13121312    setFixedLayoutSize(roundedIntSize(attr.layoutSize));
    13131313
     1314#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    13141315    send(Messages::WebPageProxy::DidChangeViewportProperties(attr));
     1316#else
     1317    if (m_drawingArea->layerTreeHost())
     1318        m_drawingArea->layerTreeHost()->didChangeViewportProperties(attr);
     1319#endif
    13151320}
    13161321#endif
     
    17971802void WebPage::pageDidRequestScroll(const IntPoint& point)
    17981803{
     1804#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    17991805    send(Messages::WebPageProxy::PageDidRequestScroll(point));
     1806#elif USE(COORDINATED_GRAPHICS_THREADED)
     1807    drawingArea()->scroll(IntRect(point, IntSize()), IntSize());
     1808#endif
    18001809}
    18011810#endif
     
    23712380void WebPage::didCompletePageTransition()
    23722381{
    2373 #if USE(TILED_BACKING_STORE)
     2382#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    23742383    // m_mainFrame can be null since r170163.
    23752384    if (m_mainFrame && m_mainFrame->coreFrame()->view()->delegatesScrolling()) {
     
    35353544void WebPage::didReceiveMessage(IPC::Connection& connection, IPC::MessageDecoder& decoder)
    35363545{
    3537 #if USE(TILED_BACKING_STORE)
     3546#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    35383547    if (decoder.messageReceiverName() == Messages::CoordinatedLayerTreeHost::messageReceiverName()) {
    35393548        if (m_drawingArea)
     
    40224031}
    40234032
    4024 #if USE(TILED_BACKING_STORE)
     4033#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    40254034void WebPage::commitPageTransitionViewport()
    40264035{
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h

    r177917 r178095  
    588588#endif
    589589
    590 #if USE(TILED_BACKING_STORE)
     590#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    591591    void commitPageTransitionViewport();
    592592#endif
     
    10241024    void countStringMatches(const String&, uint32_t findOptions, uint32_t maxMatchCount);
    10251025
    1026 #if USE(COORDINATED_GRAPHICS)
     1026#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    10271027    void findZoomableAreaForPoint(const WebCore::IntPoint&, const WebCore::IntSize& area);
    10281028#endif
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in

    r177796 r178095  
    316316#endif
    317317
    318 #if USE(TILED_BACKING_STORE)
     318#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    319319    CommitPageTransitionViewport()
    320320#endif
     
    382382    CancelComposition()
    383383#endif
    384 #if USE(COORDINATED_GRAPHICS)
     384#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
    385385    FindZoomableAreaForPoint(WebCore::IntPoint point, WebCore::IntSize area)
    386386#endif
  • trunk/Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp

    r177634 r178095  
    3535#include <libsoup/soup.h>
    3636
     37#if PLATFORM(X11)
     38#include <X11/Xlib.h>
     39#endif
     40
    3741using namespace WebCore;
    3842
     
    4852#endif
    4953
     54#if USE(COORDINATED_GRAPHICS_THREADED) && PLATFORM(X11)
     55        XInitThreads();
     56#endif
    5057        gtk_init(nullptr, nullptr);
    5158
  • trunk/Source/cmake/OptionsEfl.cmake

    r176712 r178095  
    119119WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEBGL ON)
    120120WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_XHR_TIMEOUT ON)
    121 WEBKIT_OPTION_DEFAULT_PORT_VALUE(WTF_USE_TILED_BACKING_STORE ON)
    122121
    123122if (ENABLE_LLINT_C_LOOP)
     
    209208
    210209add_definitions(-DWTF_USE_COORDINATED_GRAPHICS=1)
     210add_definitions(-DWTF_USE_COORDINATED_GRAPHICS_MULTIPROCESS=1)
     211add_definitions(-DWTF_USE_TILED_BACKING_STORE=1)
    211212
    212213add_definitions(-DWTF_USE_TEXTURE_MAPPER=1)
  • trunk/Source/cmake/OptionsGTK.cmake

    r177358 r178095  
    173173WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_XHR_TIMEOUT ON)
    174174WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETWORK_PROCESS ON)
    175 WEBKIT_OPTION_DEFAULT_PORT_VALUE(WTF_USE_TILED_BACKING_STORE OFF)
     175WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_THREADED_COMPOSITOR OFF)
    176176WEBKIT_OPTION_END()
    177177
     
    329329    if (GLX_FOUND)
    330330        add_definitions(-DWTF_USE_GLX=1)
     331    endif ()
     332
     333    if (ENABLE_THREADED_COMPOSITOR)
     334        add_definitions(-DWTF_USE_TILED_BACKING_STORE=1)
     335        add_definitions(-DWTF_USE_COORDINATED_GRAPHICS=1)
     336        add_definitions(-DWTF_USE_COORDINATED_GRAPHICS_THREADED=1)
    331337    endif ()
    332338endif ()
  • trunk/Source/cmake/WebKitFeatures.cmake

    r176620 r178095  
    150150    WEBKIT_OPTION_DEFINE(ENABLE_XSLT "Toggle XSLT support" ON)
    151151    WEBKIT_OPTION_DEFINE(USE_SYSTEM_MALLOC "Toggle system allocator instead of TCmalloc" OFF)
    152     WEBKIT_OPTION_DEFINE(WTF_USE_TILED_BACKING_STORE "Toggle Tiled Backing Store support" OFF)
     152    WEBKIT_OPTION_DEFINE(ENABLE_THREADED_COMPOSITOR "Toggle threaded compositor support" OFF)
    153153
    154154    WEBKIT_OPTION_DEPEND(ENABLE_ENCRYPTED_MEDIA_V2 ENABLE_VIDEO)
  • trunk/Source/cmakeconfig.h.cmake

    r176620 r178095  
    140140#cmakedefine01 USE_SYSTEM_MALLOC
    141141#cmakedefine01 WTF_USE_GEOCLUE2
    142 #cmakedefine01 WTF_USE_TILED_BACKING_STORE
    143142#cmakedefine01 HAVE_LLVM
    144143#cmakedefine01 HAVE_GTK_UNIX_PRINTING
  • trunk/Tools/ChangeLog

    r178080 r178095  
     12015-01-07  Gwang Yoon Hwang  <yoon@igalia.com>
     2
     3        [GTK][ThreadedCompositor] Add support for threaded compositor.
     4        https://bugs.webkit.org/show_bug.cgi?id=118265
     5
     6        Reviewed by Martin Robinson.
     7
     8        Added the ENABLE_THREADED_COMPOSITOR feature flag to the cmake and
     9        autotools build systems. The feature is disabled by default.
     10        And remove deprecated the WTF_USE_TILED_BACKING_STORE feature flag
     11        from the feature flags.
     12
     13        * Scripts/webkitperl/FeatureList.pm:
     14
    1152015-01-07  Daniel Bates  <dabates@apple.com>
    216
  • trunk/Tools/Scripts/webkitperl/FeatureList.pm

    r177073 r178095  
    129129    $templateElementSupport,
    130130    $textAutosizingSupport,
    131     $tiledBackingStoreSupport,
     131    $threadedCompositorSupport,
    132132    $threadedHTMLParserSupport,
    133133    $touchEventsSupport,
     
    384384      define => "ENABLE_TEMPLATE_ELEMENT", default => 1, value => \$templateElementSupport },
    385385
     386    { option => "threaded-compositor", desc => "Toggle threaded compositor support",
     387      define => "ENABLE_THREADED_COMPOSITOR", default => 0, value => \$threadedCompositorSupport },
     388
    386389    { option => "text-autosizing", desc => "Toggle Text Autosizing support",
    387390      define => "ENABLE_TEXT_AUTOSIZING", default => 0, value => \$textAutosizingSupport },
Note: See TracChangeset for help on using the changeset viewer.