<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[178095] trunk</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/178095">178095</a></dd>
<dt>Author</dt> <dd>yoon@igalia.com</dd>
<dt>Date</dt> <dd>2015-01-07 20:29:24 -0800 (Wed, 07 Jan 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>[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:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkChangeLog">trunk/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorePlatformGTKcmake">trunk/Source/WebCore/PlatformGTK.cmake</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicstexmapcoordinatedCoordinatedTilecpp">trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicstexmapcoordinatedCoordinatedTileh">trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2PlatformGTKcmake">trunk/Source/WebKit2/PlatformGTK.cmake</a></li>
<li><a href="#trunkSourceWebKit2SharedDrawingAreaInfoh">trunk/Source/WebKit2/Shared/DrawingAreaInfo.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIgtkWebKitSettingscpp">trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessCoordinatedGraphicsCoordinatedLayerTreeHostProxyh">trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessPageClienth">trunk/Source/WebKit2/UIProcess/PageClient.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxymessagesin">trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebChromeClientcpp">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsCoordinatedDrawingAreacpp">trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsCoordinatedDrawingAreah">trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageDrawingAreacpp">trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageDrawingAreah">trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageDrawingAreaImplcpp">trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageDrawingAreaImplh">trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageLayerTreeHostcpp">trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageLayerTreeHosth">trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageh">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagemessagesin">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in</a></li>
<li><a href="#trunkSourceWebKit2WebProcessgtkWebProcessMainGtkcpp">trunk/Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp</a></li>
<li><a href="#trunkSourcecmakeOptionsEflcmake">trunk/Source/cmake/OptionsEfl.cmake</a></li>
<li><a href="#trunkSourcecmakeOptionsGTKcmake">trunk/Source/cmake/OptionsGTK.cmake</a></li>
<li><a href="#trunkSourcecmakeWebKitFeaturescmake">trunk/Source/cmake/WebKitFeatures.cmake</a></li>
<li><a href="#trunkSourcecmakeconfighcmake">trunk/Source/cmakeconfig.h.cmake</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsScriptswebkitperlFeatureListpm">trunk/Tools/Scripts/webkitperl/FeatureList.pm</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsThreadedCoordinatedLayerTreeHostcpp">trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsThreadedCoordinatedLayerTreeHosth">trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/ChangeLog (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/ChangeLog        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/ChangeLog        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2015-01-07 Gwang Yoon Hwang <yoon@igalia.com>
+
+ [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:
+
</ins><span class="cx"> 2014-12-23 Alexey Proskuryakov <ap@apple.com>
</span><span class="cx">
</span><span class="cx"> Simplify building with ASan
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebCore/ChangeLog        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2015-01-07 Gwang Yoon Hwang <yoon@igalia.com>
+
+ [GTK][ThreadedCompositor] Add support for threaded compositor.
+ https://bugs.webkit.org/show_bug.cgi?id=118265
+
+ Reviewed by Martin Robinson.
+
+ * 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
+
</ins><span class="cx"> 2015-01-07 Daniel Bates <dabates@apple.com>
</span><span class="cx">
</span><span class="cx"> [iOS] Make WebKit2 build with public iOS SDK and more build fixes for DRT
</span></span></pre></div>
<a id="trunkSourceWebCorePlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/PlatformGTK.cmake (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/PlatformGTK.cmake        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebCore/PlatformGTK.cmake        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -374,6 +374,31 @@
</span><span class="cx"> )
</span><span class="cx"> endif ()
</span><span class="cx">
</span><ins>+if (ENABLE_THREADED_COMPOSITOR)
+ list(APPEND WebCore_INCLUDE_DIRECTORIES
+ "${WEBCORE_DIR}/page/scrolling/coordinatedgraphics"
+ "${WEBCORE_DIR}/platform/graphics/texmap/coordinated"
+ "${WEBCORE_DIR}/platform/graphics/texmap/threadedcompositor"
+ )
+ list(APPEND WebCore_SOURCES
+ page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp
+ page/scrolling/coordinatedgraphics/ScrollingStateNodeCoordinatedGraphics.cpp
+ page/scrolling/coordinatedgraphics/ScrollingStateScrollingNodeCoordinatedGraphics.cpp
+ page/scrolling/ScrollingStateStickyNode.cpp
+ page/scrolling/ScrollingThread.cpp
+ page/scrolling/ScrollingTreeNode.cpp
+ page/scrolling/ScrollingTreeScrollingNode.cpp
+ platform/graphics/TiledBackingStore.cpp
+ platform/graphics/texmap/coordinated/AreaAllocator.cpp
+ platform/graphics/texmap/coordinated/CompositingCoordinator.cpp
+ platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp
+ platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp
+ platform/graphics/texmap/coordinated/CoordinatedSurface.cpp
+ platform/graphics/texmap/coordinated/CoordinatedTile.cpp
+ platform/graphics/texmap/coordinated/UpdateAtlas.cpp
+ )
+endif ()
+
</ins><span class="cx"> if (WTF_USE_EGL)
</span><span class="cx"> list(APPEND WebCore_LIBRARIES
</span><span class="cx"> ${EGL_LIBRARY}
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicstexmapcoordinatedCoordinatedTilecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> #include "config.h"
</span><span class="cx"> #include "CoordinatedTile.h"
</span><span class="cx">
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS)
</ins><span class="cx">
</span><span class="cx"> #include "GraphicsContext.h"
</span><span class="cx"> #include "ImageBuffer.h"
</span><span class="lines">@@ -141,4 +141,4 @@
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><del>-#endif // USE(TILED_BACKING_STORE)
</del><ins>+#endif // USE(COORDINATED_GRAPHICS)
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicstexmapcoordinatedCoordinatedTileh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedTile.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> #ifndef CoordinatedTile_h
</span><span class="cx"> #define CoordinatedTile_h
</span><span class="cx">
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS)
</ins><span class="cx">
</span><span class="cx"> #include "CoordinatedSurface.h"
</span><span class="cx"> #include "IntRect.h"
</span><span class="lines">@@ -91,6 +91,6 @@
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><del>-#endif // USE(TILED_BACKING_STORE)
</del><ins>+#endif // USE(COORDINATED_GRAPHICS)
</ins><span class="cx">
</span><span class="cx"> #endif // CoordinatedTile_h
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/ChangeLog        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -1,3 +1,75 @@
</span><ins>+2015-01-07 Gwang Yoon Hwang <yoon@igalia.com>
+
+ [GTK][ThreadedCompositor] Add support for threaded compositor.
+ https://bugs.webkit.org/show_bug.cgi?id=118265
+
+ Reviewed by Martin Robinson.
+
+ 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.
+
</ins><span class="cx"> 2015-01-07 Daniel Bates <dabates@apple.com>
</span><span class="cx">
</span><span class="cx"> [iOS] Make WebKit2 build with public iOS SDK and more build fixes for DRT
</span></span></pre></div>
<a id="trunkSourceWebKit2PlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/PlatformGTK.cmake (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/PlatformGTK.cmake        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/PlatformGTK.cmake        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -311,7 +311,6 @@
</span><span class="cx">
</span><span class="cx"> WebProcess/WebPage/atk/WebPageAccessibilityObjectAtk.cpp
</span><span class="cx">
</span><del>- WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp
</del><span class="cx"> WebProcess/WebPage/gtk/PrinterListGtk.cpp
</span><span class="cx"> WebProcess/WebPage/gtk/WebInspectorUIGtk.cpp
</span><span class="cx"> WebProcess/WebPage/gtk/WebPageGtk.cpp
</span><span class="lines">@@ -742,6 +741,27 @@
</span><span class="cx"> PluginProcess/EntryPoint/unix/PluginProcessMain.cpp
</span><span class="cx"> )
</span><span class="cx">
</span><ins>+if (ENABLE_THREADED_COMPOSITOR)
+ list(APPEND WebKit2_SOURCES
+ Shared/CoordinatedGraphics/CoordinatedBackingStore.cpp
+ Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp
+ Shared/CoordinatedGraphics/SimpleViewportController.cpp
+ Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp
+ Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.cpp
+ WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp
+ )
+ list(APPEND WebKit2_INCLUDE_DIRECTORIES
+ "${WEBCORE_DIR}/platform/graphics/texmap/coordinated"
+ "${WEBKIT2_DIR}/Shared/CoordinatedGraphics"
+ "${WEBKIT2_DIR}/Shared/CoordinatedGraphics/threadedcompositor"
+ "${WEBKIT2_DIR}/WebProcess/WebPage/CoordinatedGraphics"
+ )
+else (ENABLE_THREADED_COMPOSITOR)
+ list(APPEND WebKit2_SOURCES
+ WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp
+ )
+endif ()
+
</ins><span class="cx"> # Commands for building the built-in injected bundle.
</span><span class="cx"> include_directories(
</span><span class="cx"> "${WEBKIT2_DIR}/Platform"
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedDrawingAreaInfoh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/DrawingAreaInfo.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/DrawingAreaInfo.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/Shared/DrawingAreaInfo.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> DrawingAreaTypeRemoteLayerTree,
</span><span class="cx"> #else
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> DrawingAreaTypeCoordinated
</span><span class="cx"> #else
</span><span class="cx"> DrawingAreaTypeImpl,
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIgtkWebKitSettingscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -54,6 +54,10 @@
</span><span class="cx"> fantasyFontFamily = preferences->fantasyFontFamily().utf8();
</span><span class="cx"> pictographFontFamily = preferences->pictographFontFamily().utf8();
</span><span class="cx"> defaultCharset = preferences->defaultTextEncodingName().utf8();
</span><ins>+
+#if USE(COORDINATED_GRAPHICS_THREADED)
+ preferences->setForceCompositingMode(true);
+#endif
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> RefPtr<WebPreferences> preferences;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessCoordinatedGraphicsCoordinatedLayerTreeHostProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -21,7 +21,7 @@
</span><span class="cx"> #ifndef CoordinatedLayerTreeHostProxy_h
</span><span class="cx"> #define CoordinatedLayerTreeHostProxy_h
</span><span class="cx">
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">
</span><span class="cx"> #include "CoordinatedGraphicsArgumentCoders.h"
</span><span class="cx"> #include "CoordinatedGraphicsScene.h"
</span><span class="lines">@@ -69,6 +69,6 @@
</span><span class="cx">
</span><span class="cx"> } // namespace WebKit
</span><span class="cx">
</span><del>-#endif // USE(COORDINATED_GRAPHICS)
</del><ins>+#endif // USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx">
</span><span class="cx"> #endif // CoordinatedLayerTreeHostProxy_h
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessPageClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/PageClient.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/PageClient.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/UIProcess/PageClient.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -138,12 +138,10 @@
</span><span class="cx">
</span><span class="cx"> virtual void didCommitLoadForMainFrame(const String& mimeType, bool useCustomContentProvider) = 0;
</span><span class="cx">
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> virtual void pageDidRequestScroll(const WebCore::IntPoint&) = 0;
</span><span class="cx"> virtual void didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect) = 0;
</span><span class="cx"> virtual void pageTransitionViewportReady() = 0;
</span><del>-#endif
-#if USE(COORDINATED_GRAPHICS)
</del><span class="cx"> virtual void didFindZoomableArea(const WebCore::IntPoint&, const WebCore::IntRect&) = 0;
</span><span class="cx"> #endif
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx"> #include "RemoteScrollingCoordinatorProxy.h"
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> #include "CoordinatedLayerTreeHostProxyMessages.h"
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="lines">@@ -1372,7 +1372,7 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> void WebPageProxy::commitPageTransitionViewport()
</span><span class="cx"> {
</span><span class="cx"> if (!isValid())
</span><span class="lines">@@ -3280,7 +3280,7 @@
</span><span class="cx"> shouldClose = m_uiClient->runBeforeUnloadConfirmPanel(this, message, frame);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> void WebPageProxy::pageDidRequestScroll(const IntPoint& point)
</span><span class="cx"> {
</span><span class="cx"> m_pageClient.pageDidRequestScroll(point);
</span><span class="lines">@@ -3396,7 +3396,7 @@
</span><span class="cx"> m_pageClient.handleDownloadRequest(download);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#if PLATFORM(EFL)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> void WebPageProxy::didChangeContentSize(const IntSize& size)
</span><span class="cx"> {
</span><span class="cx"> m_pageClient.didChangeContentSize(size);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -475,7 +475,7 @@
</span><span class="cx">
</span><span class="cx"> void didCommitLayerTree(const WebKit::RemoteLayerTreeTransaction&);
</span><span class="cx">
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> void didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect);
</span><span class="cx"> #endif
</span><span class="cx"> #if PLATFORM(EFL)
</span><span class="lines">@@ -547,7 +547,7 @@
</span><span class="cx"> #if PLATFORM(GTK)
</span><span class="cx"> PlatformWidget viewWidget();
</span><span class="cx"> #endif
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> void commitPageTransitionViewport();
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="lines">@@ -1107,14 +1107,10 @@
</span><span class="cx"> void clearNotifications(const Vector<uint64_t>& notificationIDs);
</span><span class="cx"> void didDestroyNotification(uint64_t notificationID);
</span><span class="cx">
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> void pageDidRequestScroll(const WebCore::IntPoint&);
</span><span class="cx"> void pageTransitionViewportReady();
</span><del>-#endif
-#if USE(COORDINATED_GRAPHICS)
</del><span class="cx"> void didFindZoomableArea(const WebCore::IntPoint&, const WebCore::IntRect&);
</span><del>-#endif
-#if PLATFORM(EFL)
</del><span class="cx"> void didChangeContentSize(const WebCore::IntSize&);
</span><span class="cx"> #endif
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxymessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -95,15 +95,10 @@
</span><span class="cx"> HandleInputMethodKeydown() -> (bool handled)
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> PageDidRequestScroll(WebCore::IntPoint point)
</span><span class="cx"> PageTransitionViewportReady()
</span><del>-#endif
-#if USE(COORDINATED_GRAPHICS)
</del><span class="cx"> DidFindZoomableArea(WebCore::IntPoint target, WebCore::IntRect area)
</span><del>-#endif
-
-#if PLATFORM(EFL)
</del><span class="cx"> DidChangeContentSize(WebCore::IntSize newSize)
</span><span class="cx"> #endif
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebChromeClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -520,7 +520,9 @@
</span><span class="cx"> #if USE(COORDINATED_GRAPHICS)
</span><span class="cx"> if (m_page->useFixedLayout())
</span><span class="cx"> m_page->drawingArea()->layerTreeHost()->sizeDidChange(size);
</span><ins>+#endif
</ins><span class="cx">
</span><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> m_page->send(Messages::WebPageProxy::DidChangeContentSize(size));
</span><span class="cx"> #endif
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsCoordinatedDrawingAreacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -600,11 +600,13 @@
</span><span class="cx"> m_displayTimer.stop();
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> void CoordinatedDrawingArea::didReceiveCoordinatedLayerTreeHostMessage(IPC::Connection& connection, IPC::MessageDecoder& decoder)
</span><span class="cx"> {
</span><span class="cx"> if (m_layerTreeHost)
</span><span class="cx"> m_layerTreeHost->didReceiveCoordinatedLayerTreeHostMessage(connection, decoder);
</span><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx">
</span><span class="cx"> void CoordinatedDrawingArea::attachViewOverlayGraphicsLayer(WebCore::Frame* frame, WebCore::GraphicsLayer* viewOverlayRootLayer)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsCoordinatedDrawingAreah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedDrawingArea.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -64,7 +64,9 @@
</span><span class="cx"> virtual void scheduleCompositingLayerFlush() override;
</span><span class="cx"> virtual void scheduleCompositingLayerFlushImmediately() override;
</span><span class="cx">
</span><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> virtual void didReceiveCoordinatedLayerTreeHostMessage(IPC::Connection&, IPC::MessageDecoder&);
</span><ins>+#endif
</ins><span class="cx">
</span><span class="cx"> virtual void attachViewOverlayGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) override;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsThreadedCoordinatedLayerTreeHostcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp (0 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp         (rev 0)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -0,0 +1,300 @@
</span><ins>+/*
+ * Copyright (C) 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+ * Copyright (C) 2012 Company 100, Inc.
+ * Copyright (C) 2014 Igalia S.L.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "ThreadedCoordinatedLayerTreeHost.h"
+
+#if USE(COORDINATED_GRAPHICS_THREADED)
+
+#include "DrawingAreaImpl.h"
+#include "NotImplemented.h"
+#include "ThreadSafeCoordinatedSurface.h"
+#include "WebPage.h"
+#include <WebCore/CoordinatedGraphicsLayer.h>
+#include <WebCore/CoordinatedGraphicsState.h>
+#include <WebCore/Frame.h>
+#include <WebCore/FrameView.h>
+#include <WebCore/GraphicsContext.h>
+#include <WebCore/MainFrame.h>
+#include <WebCore/Page.h>
+#include <wtf/CurrentTime.h>
+
+using namespace WebCore;
+
+namespace WebKit {
+
+PassRefPtr<ThreadedCoordinatedLayerTreeHost> ThreadedCoordinatedLayerTreeHost::create(WebPage* webPage)
+{
+ return adoptRef(new ThreadedCoordinatedLayerTreeHost(webPage));
+}
+
+ThreadedCoordinatedLayerTreeHost::~ThreadedCoordinatedLayerTreeHost()
+{
+}
+
+ThreadedCoordinatedLayerTreeHost::ThreadedCoordinatedLayerTreeHost(WebPage* webPage)
+ : LayerTreeHost(webPage)
+ , m_forceRepaintAsyncCallbackID(0)
+ , m_contentLayer(nullptr)
+ , m_viewOverlayRootLayer(nullptr)
+ , m_notifyAfterScheduledLayerFlush(false)
+ , m_isSuspended(false)
+ , m_isWaitingForRenderer(false)
+ , m_layerFlushTimer(RunLoop::main(), this, &ThreadedCoordinatedLayerTreeHost::performScheduledLayerFlush)
+ , m_layerFlushSchedulingEnabled(true)
+{
+ m_coordinator = std::make_unique<CompositingCoordinator>(m_webPage->corePage(), this);
+
+ m_coordinator->createRootLayer(m_webPage->size());
+
+ CoordinatedSurface::setFactory(createCoordinatedSurface);
+
+ m_compositor = ThreadedCompositor::create(this);
+ scheduleLayerFlush();
+}
+
+PassRefPtr<CoordinatedSurface> ThreadedCoordinatedLayerTreeHost::createCoordinatedSurface(const IntSize& size, CoordinatedSurface::Flags flags)
+{
+ return ThreadSafeCoordinatedSurface::create(size, flags);
+}
+
+void ThreadedCoordinatedLayerTreeHost::scheduleLayerFlush()
+{
+ if (!m_layerFlushSchedulingEnabled)
+ return;
+
+ if (!m_layerFlushTimer.isActive())
+ m_layerFlushTimer.startOneShot(0);
+}
+
+void ThreadedCoordinatedLayerTreeHost::setLayerFlushSchedulingEnabled(bool layerFlushingEnabled)
+{
+ if (m_layerFlushSchedulingEnabled == layerFlushingEnabled)
+ return;
+
+ m_layerFlushSchedulingEnabled = layerFlushingEnabled;
+
+ if (m_layerFlushSchedulingEnabled) {
+ scheduleLayerFlush();
+ return;
+ }
+
+ cancelPendingLayerFlush();
+}
+
+void ThreadedCoordinatedLayerTreeHost::setShouldNotifyAfterNextScheduledLayerFlush(bool notifyAfterScheduledLayerFlush)
+{
+ m_notifyAfterScheduledLayerFlush = notifyAfterScheduledLayerFlush;
+}
+
+void ThreadedCoordinatedLayerTreeHost::setRootCompositingLayer(WebCore::GraphicsLayer* graphicsLayer)
+{
+ m_contentLayer = graphicsLayer;
+ updateRootLayers();
+}
+
+void ThreadedCoordinatedLayerTreeHost::invalidate()
+{
+ notImplemented();
+}
+
+void ThreadedCoordinatedLayerTreeHost::scrollNonCompositedContents(const WebCore::IntRect& rect)
+{
+ m_compositor->scrollTo(rect.location());
+ scheduleLayerFlush();
+}
+
+void ThreadedCoordinatedLayerTreeHost::forceRepaint()
+{
+ notImplemented();
+}
+
+bool ThreadedCoordinatedLayerTreeHost::forceRepaintAsync(uint64_t callbackID)
+{
+ // We expect the UI process to not require a new repaint until the previous one has finished.
+ ASSERT(!m_forceRepaintAsyncCallbackID);
+ m_forceRepaintAsyncCallbackID = callbackID;
+ scheduleLayerFlush();
+ return true;
+}
+
+void ThreadedCoordinatedLayerTreeHost::sizeDidChange(const WebCore::IntSize& newSize)
+{
+ m_coordinator->sizeDidChange(newSize);
+ m_compositor->didChangeContentsSize(newSize);
+}
+
+void ThreadedCoordinatedLayerTreeHost::deviceOrPageScaleFactorChanged()
+{
+ m_coordinator->deviceOrPageScaleFactorChanged();
+}
+
+void ThreadedCoordinatedLayerTreeHost::pauseRendering()
+{
+ m_isSuspended = true;
+}
+
+void ThreadedCoordinatedLayerTreeHost::resumeRendering()
+{
+ m_isSuspended = false;
+ scheduleLayerFlush();
+}
+
+GraphicsLayerFactory* ThreadedCoordinatedLayerTreeHost::graphicsLayerFactory()
+{
+ return m_coordinator.get();
+}
+
+void ThreadedCoordinatedLayerTreeHost::viewportSizeChanged(const WebCore::IntSize& size)
+{
+ m_compositor->didChangeViewportSize(size);
+}
+
+void ThreadedCoordinatedLayerTreeHost::didChangeViewportProperties(const WebCore::ViewportAttributes& attr)
+{
+ m_compositor->didChangeViewportAttribute(attr);
+}
+
+void ThreadedCoordinatedLayerTreeHost::compositorDidFlushLayers()
+{
+ static_cast<DrawingAreaImpl*>(m_webPage->drawingArea())->layerHostDidFlushLayers();
+}
+
+void ThreadedCoordinatedLayerTreeHost::didScaleFactorChanged(float scale, const IntPoint& origin)
+{
+ m_webPage->scalePage(scale, origin);
+}
+
+void ThreadedCoordinatedLayerTreeHost::updateRootLayers()
+{
+ if (!m_contentLayer && !m_viewOverlayRootLayer)
+ return;
+
+ m_coordinator->setRootCompositingLayer(m_contentLayer, m_viewOverlayRootLayer);
+}
+
+void ThreadedCoordinatedLayerTreeHost::setViewOverlayRootLayer(GraphicsLayer* viewOverlayRootLayer)
+{
+ m_viewOverlayRootLayer = viewOverlayRootLayer;
+ updateRootLayers();
+}
+
+#if PLATFORM(GTK)
+void ThreadedCoordinatedLayerTreeHost::setNativeSurfaceHandleForCompositing(uint64_t handle)
+{
+ m_layerTreeContext.contextID = handle;
+ m_compositor->setNativeSurfaceHandleForCompositing(handle);
+}
+#endif
+
+#if ENABLE(REQUEST_ANIMATION_FRAME)
+void ThreadedCoordinatedLayerTreeHost::scheduleAnimation()
+{
+ if (m_isWaitingForRenderer)
+ return;
+
+ if (m_layerFlushTimer.isActive())
+ return;
+
+ m_layerFlushTimer.startOneShot(m_coordinator->nextAnimationServiceTime());
+ scheduleLayerFlush();
+}
+#endif
+
+void ThreadedCoordinatedLayerTreeHost::setVisibleContentsRect(const FloatRect& rect, const FloatPoint& trajectoryVector, float scale)
+{
+ m_coordinator->setVisibleContentsRect(rect, trajectoryVector);
+ if (m_lastScrollPosition != roundedIntPoint(rect.location())) {
+ m_lastScrollPosition = roundedIntPoint(rect.location());
+
+ if (!m_webPage->corePage()->mainFrame().view()->useFixedLayout())
+ m_webPage->corePage()->mainFrame().view()->notifyScrollPositionChanged(m_lastScrollPosition);
+ }
+
+ if (m_lastScaleFactor != scale) {
+ m_lastScaleFactor = scale;
+ didScaleFactorChanged(m_lastScaleFactor, m_lastScrollPosition);
+ }
+
+ scheduleLayerFlush();
+}
+
+void ThreadedCoordinatedLayerTreeHost::cancelPendingLayerFlush()
+{
+ m_layerFlushTimer.stop();
+}
+
+void ThreadedCoordinatedLayerTreeHost::performScheduledLayerFlush()
+{
+ if (m_isSuspended || m_isWaitingForRenderer)
+ return;
+
+ m_coordinator->syncDisplayState();
+ bool didSync = m_coordinator->flushPendingLayerChanges();
+
+ if (m_notifyAfterScheduledLayerFlush && didSync) {
+ compositorDidFlushLayers();
+ m_notifyAfterScheduledLayerFlush = false;
+ }
+}
+
+void ThreadedCoordinatedLayerTreeHost::purgeBackingStores()
+{
+ m_coordinator->purgeBackingStores();
+}
+
+void ThreadedCoordinatedLayerTreeHost::renderNextFrame()
+{
+ m_isWaitingForRenderer = false;
+ m_coordinator->renderNextFrame();
+ scheduleLayerFlush();
+}
+
+void ThreadedCoordinatedLayerTreeHost::commitScrollOffset(uint32_t layerID, const IntSize& offset)
+{
+ m_coordinator->commitScrollOffset(layerID, offset);
+}
+
+void ThreadedCoordinatedLayerTreeHost::notifyFlushRequired()
+{
+ scheduleLayerFlush();
+}
+
+void ThreadedCoordinatedLayerTreeHost::commitSceneState(const CoordinatedGraphicsState& state)
+{
+ m_isWaitingForRenderer = true;
+ m_compositor->updateSceneState(state);
+}
+
+void ThreadedCoordinatedLayerTreeHost::paintLayerContents(const GraphicsLayer*, GraphicsContext&, const IntRect&)
+{
+}
+
+} // namespace WebKit
+
+#endif // USE(COORDINATED_GRAPHICS)
</ins></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsThreadedCoordinatedLayerTreeHosth"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h (0 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h         (rev 0)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -0,0 +1,157 @@
</span><ins>+/*
+ * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies)
+ * Copyright (C) 2013 Company 100, Inc.
+ * Copyright (C) 2014 Igalia S.L.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ThreadedCoordinatedLayerTreeHost_h
+#define ThreadedCoordinatedLayerTreeHost_h
+
+#if USE(COORDINATED_GRAPHICS_THREADED)
+
+#include "LayerTreeContext.h"
+#include "LayerTreeHost.h"
+#include "ThreadedCompositor.h"
+#include <WebCore/CompositingCoordinator.h>
+#include <WebCore/FloatPoint.h>
+#include <WebCore/FloatRect.h>
+#include <WebCore/IntPoint.h>
+#include <WebCore/IntRect.h>
+#include <WebCore/IntSize.h>
+#include <WebCore/PageOverlay.h>
+#include <WebCore/Timer.h>
+#include <wtf/OwnPtr.h>
+#include <wtf/RunLoop.h>
+#include <wtf/Threading.h>
+
+namespace WebCore {
+class CoordinatedGraphicsLayerState;
+class CoordinatedGraphicsState;
+class CoordinatedSurface;
+class GraphicsContext;
+class GraphicsLayer;
+class GraphicsLayerFactory;
+class GraphicsLayerFactory;
+}
+
+namespace WebKit {
+
+class WebPage;
+
+class ThreadedCoordinatedLayerTreeHost : public LayerTreeHost, public WebCore::CompositingCoordinator::Client, public ThreadedCompositor::Client {
+ WTF_MAKE_NONCOPYABLE(ThreadedCoordinatedLayerTreeHost); WTF_MAKE_FAST_ALLOCATED;
+public:
+ static PassRefPtr<ThreadedCoordinatedLayerTreeHost> create(WebPage*);
+ virtual ~ThreadedCoordinatedLayerTreeHost();
+
+ virtual const LayerTreeContext& layerTreeContext() override { return m_layerTreeContext; };
+
+ virtual void scheduleLayerFlush() override;
+ virtual void setLayerFlushSchedulingEnabled(bool) override;
+ virtual void setShouldNotifyAfterNextScheduledLayerFlush(bool) override;
+ virtual void setRootCompositingLayer(WebCore::GraphicsLayer*) override;
+ virtual void invalidate() override;
+
+ virtual void setNonCompositedContentsNeedDisplay() override { };
+ virtual void setNonCompositedContentsNeedDisplayInRect(const WebCore::IntRect&) override { };
+ virtual void scrollNonCompositedContents(const WebCore::IntRect& scrollRect) override;
+ virtual void forceRepaint() override;
+ virtual bool forceRepaintAsync(uint64_t /*callbackID*/) override;
+ virtual void sizeDidChange(const WebCore::IntSize& newSize) override;
+ virtual void deviceOrPageScaleFactorChanged() override;
+
+ virtual void pauseRendering() override;
+ virtual void resumeRendering() override;
+
+ virtual WebCore::GraphicsLayerFactory* graphicsLayerFactory() override;
+ virtual void pageBackgroundTransparencyChanged() override { };
+
+ virtual void viewportSizeChanged(const WebCore::IntSize&) override;
+ virtual void didChangeViewportProperties(const WebCore::ViewportAttributes&) override;
+
+#if PLATFORM(GTK)
+ virtual void setNativeSurfaceHandleForCompositing(uint64_t) override;
+#endif
+
+#if ENABLE(REQUEST_ANIMATION_FRAME)
+ virtual void scheduleAnimation() override;
+#endif
+
+ void setViewOverlayRootLayer(WebCore::GraphicsLayer*);
+ static PassRefPtr<WebCore::CoordinatedSurface> createCoordinatedSurface(const WebCore::IntSize&, WebCore::CoordinatedSurface::Flags);
+
+protected:
+ explicit ThreadedCoordinatedLayerTreeHost(WebPage*);
+
+private:
+
+ void compositorDidFlushLayers();
+ void didScaleFactorChanged(float scale, const WebCore::IntPoint& origin);
+
+ void updateRootLayers();
+
+ void cancelPendingLayerFlush();
+ void performScheduledLayerFlush();
+
+ WebCore::GraphicsLayer* rootLayer() { return m_coordinator->rootLayer(); }
+
+ // ThreadedCompositor::Client
+ virtual void setVisibleContentsRect(const WebCore::FloatRect&, const WebCore::FloatPoint&, float) override;
+ virtual void purgeBackingStores() override;
+ virtual void renderNextFrame() override;
+ virtual void commitScrollOffset(uint32_t layerID, const WebCore::IntSize& offset) override;
+
+ // CompositingCoordinator::Client
+ virtual void didFlushRootLayer(const WebCore::FloatRect&) override { }
+ virtual void notifyFlushRequired() override;
+ virtual void commitSceneState(const WebCore::CoordinatedGraphicsState&) override;
+ virtual void paintLayerContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, const WebCore::IntRect& clipRect) override;
+
+ LayerTreeContext m_layerTreeContext;
+ uint64_t m_forceRepaintAsyncCallbackID;
+
+ WebCore::IntPoint m_prevScrollPosition;
+
+ WebCore::GraphicsLayer* m_contentLayer;
+ WebCore::GraphicsLayer* m_viewOverlayRootLayer;
+
+ std::unique_ptr<WebCore::CompositingCoordinator> m_coordinator;
+ RefPtr<ThreadedCompositor> m_compositor;
+
+ bool m_notifyAfterScheduledLayerFlush;
+ bool m_isSuspended;
+ bool m_isWaitingForRenderer;
+
+ float m_lastScaleFactor;
+ WebCore::IntPoint m_lastScrollPosition;
+
+ RunLoop::Timer<ThreadedCoordinatedLayerTreeHost> m_layerFlushTimer;
+ bool m_layerFlushSchedulingEnabled;
+};
+
+} // namespace WebKit
+
+#endif // USE(COORDINATED_GRAPHICS_THREADED)
+
+#endif // ThreadedCoordinatedLayerTreeHost_h
</ins></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageDrawingAreacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> #include "RemoteLayerTreeDrawingArea.h"
</span><span class="cx"> #include "TiledCoreAnimationDrawingArea.h"
</span><span class="cx"> #else
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> #include "CoordinatedDrawingArea.h"
</span><span class="cx"> #else
</span><span class="cx"> #include "DrawingAreaImpl.h"
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx"> case DrawingAreaTypeRemoteLayerTree:
</span><span class="cx"> return std::make_unique<RemoteLayerTreeDrawingArea>(webPage, parameters);
</span><span class="cx"> #else
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> case DrawingAreaTypeCoordinated:
</span><span class="cx"> return std::make_unique<CoordinatedDrawingArea>(webPage, parameters);
</span><span class="cx"> #else
</span><span class="lines">@@ -77,6 +77,9 @@
</span><span class="cx"> DrawingArea::DrawingArea(DrawingAreaType type, WebPage& webPage)
</span><span class="cx"> : m_type(type)
</span><span class="cx"> , m_webPage(webPage)
</span><ins>+#if USE(TEXTURE_MAPPER_GL) && PLATFORM(GTK)
+ , m_nativeSurfaceHandleForCompositing(0)
+#endif
</ins><span class="cx"> {
</span><span class="cx"> WebProcess::shared().addMessageReceiver(Messages::DrawingArea::messageReceiverName(), m_webPage.pageID(), *this);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageDrawingAreah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingArea.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx"> virtual PassRefPtr<WebCore::DisplayRefreshMonitor> createDisplayRefreshMonitor(PlatformDisplayID);
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> virtual void didReceiveCoordinatedLayerTreeHostMessage(IPC::Connection&, IPC::MessageDecoder&) = 0;
</span><span class="cx"> #endif
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageDrawingAreaImplcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -35,9 +35,14 @@
</span><span class="cx"> #include "WebPreferencesKeys.h"
</span><span class="cx"> #include "WebProcess.h"
</span><span class="cx"> #include <WebCore/GraphicsContext.h>
</span><ins>+#include <WebCore/MainFrame.h>
</ins><span class="cx"> #include <WebCore/Page.h>
</span><span class="cx"> #include <WebCore/Settings.h>
</span><span class="cx">
</span><ins>+#if USE(COORDINATED_GRAPHICS_THREADED)
+#include "ThreadedCoordinatedLayerTreeHost.h"
+#endif
+
</ins><span class="cx"> using namespace WebCore;
</span><span class="cx">
</span><span class="cx"> namespace WebKit {
</span><span class="lines">@@ -63,6 +68,11 @@
</span><span class="cx"> , m_displayTimer(RunLoop::main(), this, &DrawingAreaImpl::displayTimerFired)
</span><span class="cx"> , m_exitCompositingTimer(RunLoop::main(), this, &DrawingAreaImpl::exitAcceleratedCompositingMode)
</span><span class="cx"> {
</span><ins>+
+#if USE(COORDINATED_GRAPHICS_THREADED)
+ webPage.corePage()->settings().setForceCompositingMode(true);
+#endif
+
</ins><span class="cx"> if (webPage.corePage()->settings().acceleratedDrawingEnabled() || webPage.corePage()->settings().forceCompositingMode())
</span><span class="cx"> m_alwaysUseCompositing = true;
</span><span class="cx">
</span><span class="lines">@@ -220,6 +230,16 @@
</span><span class="cx"> m_isPaintingEnabled = paintingEnabled;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void DrawingAreaImpl::mainFrameContentSizeChanged(const WebCore::IntSize& newSize)
+{
+#if USE(COORDINATED_GRAPHICS_THREADED)
+ if (m_layerTreeHost)
+ m_layerTreeHost->sizeDidChange(newSize);
+#else
+ UNUSED_PARAM(newSize);
+#endif
+}
+
</ins><span class="cx"> void DrawingAreaImpl::updatePreferences(const WebPreferencesStore& store)
</span><span class="cx"> {
</span><span class="cx"> m_webPage.corePage()->settings().setForceCompositingMode(store.getBoolValueForKey(WebPreferencesKey::forceCompositingModeKey()));
</span><span class="lines">@@ -322,7 +342,11 @@
</span><span class="cx"> m_webPage.scrollMainFrameIfNotAtMaxScrollPosition(scrollOffset);
</span><span class="cx">
</span><span class="cx"> if (m_layerTreeHost) {
</span><ins>+#if USE(COORDINATED_GRAPHICS_THREADED)
+ m_layerTreeHost->viewportSizeChanged(m_webPage.size());
+#else
</ins><span class="cx"> m_layerTreeHost->sizeDidChange(m_webPage.size());
</span><ins>+#endif
</ins><span class="cx"> } else
</span><span class="cx"> m_dirtyRegion = m_webPage.bounds();
</span><span class="cx"> } else {
</span><span class="lines">@@ -643,10 +667,32 @@
</span><span class="cx"> m_displayTimer.stop();
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void DrawingAreaImpl::attachViewOverlayGraphicsLayer(WebCore::Frame* frame, WebCore::GraphicsLayer* viewOverlayRootLayer)
+{
+#if USE(COORDINATED_GRAPHICS_THREADED)
+ if (!frame->isMainFrame())
+ return;
+
+ if (!m_layerTreeHost)
+ return;
+
+ ThreadedCoordinatedLayerTreeHost* coordinatedLayerTreeHost = static_cast<ThreadedCoordinatedLayerTreeHost*>(m_layerTreeHost.get());
+ coordinatedLayerTreeHost->setViewOverlayRootLayer(viewOverlayRootLayer);
+#else
+ UNUSED_PARAM(frame);
+ UNUSED_PARAM(viewOverlayRootLayer);
+#endif
+}
+
</ins><span class="cx"> #if USE(TEXTURE_MAPPER_GL) && PLATFORM(GTK)
</span><span class="cx"> void DrawingAreaImpl::setNativeSurfaceHandleForCompositing(uint64_t handle)
</span><span class="cx"> {
</span><span class="cx"> m_nativeSurfaceHandleForCompositing = handle;
</span><ins>+
+#if USE(COORDINATED_GRAPHICS_THREADED)
+ if (m_layerTreeHost)
+ m_layerTreeHost->setNativeSurfaceHandleForCompositing(handle);
+#endif
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageDrawingAreaImplh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -60,6 +60,7 @@
</span><span class="cx"> virtual bool forceRepaintAsync(uint64_t callbackID);
</span><span class="cx">
</span><span class="cx"> virtual void setPaintingEnabled(bool);
</span><ins>+ virtual void mainFrameContentSizeChanged(const WebCore::IntSize&) override;
</ins><span class="cx"> virtual void updatePreferences(const WebPreferencesStore&) override;
</span><span class="cx">
</span><span class="cx"> virtual WebCore::GraphicsLayerFactory* graphicsLayerFactory() override;
</span><span class="lines">@@ -67,6 +68,8 @@
</span><span class="cx"> virtual void scheduleCompositingLayerFlush() override;
</span><span class="cx"> virtual void scheduleCompositingLayerFlushImmediately() override;
</span><span class="cx">
</span><ins>+ virtual void attachViewOverlayGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*);
+
</ins><span class="cx"> #if USE(TEXTURE_MAPPER_GL) && PLATFORM(GTK)
</span><span class="cx"> virtual void setNativeSurfaceHandleForCompositing(uint64_t) override;
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageLayerTreeHostcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -26,11 +26,11 @@
</span><span class="cx"> #include "config.h"
</span><span class="cx"> #include "LayerTreeHost.h"
</span><span class="cx">
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> #include "CoordinatedLayerTreeHost.h"
</span><del>-#endif
-
-#if PLATFORM(GTK) && USE(TEXTURE_MAPPER_GL)
</del><ins>+#elif USE(COORDINATED_GRAPHICS_THREADED)
+#include "ThreadedCoordinatedLayerTreeHost.h"
+#elif PLATFORM(GTK) && USE(TEXTURE_MAPPER_GL)
</ins><span class="cx"> #include "LayerTreeHostGtk.h"
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="lines">@@ -40,8 +40,10 @@
</span><span class="cx">
</span><span class="cx"> PassRefPtr<LayerTreeHost> LayerTreeHost::create(WebPage* webPage)
</span><span class="cx"> {
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> return CoordinatedLayerTreeHost::create(webPage);
</span><ins>+#elif USE(COORDINATED_GRAPHICS_THREADED)
+ return ThreadedCoordinatedLayerTreeHost::create(webPage);
</ins><span class="cx"> #elif PLATFORM(GTK) && USE(TEXTURE_MAPPER_GL)
</span><span class="cx"> return LayerTreeHostGtk::create(webPage);
</span><span class="cx"> #else
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageLayerTreeHosth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -43,6 +43,9 @@
</span><span class="cx"> class IntSize;
</span><span class="cx"> class GraphicsLayer;
</span><span class="cx"> class GraphicsLayerFactory;
</span><ins>+#if USE(COORDINATED_GRAPHICS_THREADED)
+class ViewportAttributes;
+#endif
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> namespace WebKit {
</span><span class="lines">@@ -76,10 +79,16 @@
</span><span class="cx">
</span><span class="cx"> virtual WebCore::GraphicsLayerFactory* graphicsLayerFactory() { return 0; }
</span><span class="cx">
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> virtual void didReceiveCoordinatedLayerTreeHostMessage(IPC::Connection&, IPC::MessageDecoder&) = 0;
</span><span class="cx"> #endif
</span><span class="cx">
</span><ins>+#if USE(COORDINATED_GRAPHICS_THREADED)
+ virtual void setNativeSurfaceHandleForCompositing(uint64_t) = 0;
+ virtual void viewportSizeChanged(const WebCore::IntSize&) = 0;
+ virtual void didChangeViewportProperties(const WebCore::ViewportAttributes&) = 0;
+#endif
+
</ins><span class="cx"> #if USE(COORDINATED_GRAPHICS) && ENABLE(REQUEST_ANIMATION_FRAME)
</span><span class="cx"> virtual void scheduleAnimation() = 0;
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -209,7 +209,7 @@
</span><span class="cx"> #include <wtf/RefCountedLeakCounter.h>
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> #include "CoordinatedLayerTreeHostMessages.h"
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="lines">@@ -476,7 +476,7 @@
</span><span class="cx"> WebProcess::shared().addMessageReceiver(Messages::WebPage::messageReceiverName(), m_pageID, *this);
</span><span class="cx">
</span><span class="cx"> // FIXME: This should be done in the object constructors, and the objects themselves should be message receivers.
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> WebProcess::shared().addMessageReceiver(Messages::CoordinatedLayerTreeHost::messageReceiverName(), m_pageID, *this);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="lines">@@ -562,7 +562,7 @@
</span><span class="cx"> WebProcess::shared().removeMessageReceiver(Messages::WebPage::messageReceiverName(), m_pageID);
</span><span class="cx">
</span><span class="cx"> // FIXME: This should be done in the object destructors, and the objects themselves should be message receivers.
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> WebProcess::shared().removeMessageReceiver(Messages::CoordinatedLayerTreeHost::messageReceiverName(), m_pageID);
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="lines">@@ -1311,7 +1311,12 @@
</span><span class="cx"> // This also takes care of the relayout.
</span><span class="cx"> setFixedLayoutSize(roundedIntSize(attr.layoutSize));
</span><span class="cx">
</span><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> send(Messages::WebPageProxy::DidChangeViewportProperties(attr));
</span><ins>+#else
+ if (m_drawingArea->layerTreeHost())
+ m_drawingArea->layerTreeHost()->didChangeViewportProperties(attr);
+#endif
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="lines">@@ -1796,7 +1801,11 @@
</span><span class="cx"> #if USE(TILED_BACKING_STORE)
</span><span class="cx"> void WebPage::pageDidRequestScroll(const IntPoint& point)
</span><span class="cx"> {
</span><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> send(Messages::WebPageProxy::PageDidRequestScroll(point));
</span><ins>+#elif USE(COORDINATED_GRAPHICS_THREADED)
+ drawingArea()->scroll(IntRect(point, IntSize()), IntSize());
+#endif
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="lines">@@ -2370,7 +2379,7 @@
</span><span class="cx">
</span><span class="cx"> void WebPage::didCompletePageTransition()
</span><span class="cx"> {
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> // m_mainFrame can be null since r170163.
</span><span class="cx"> if (m_mainFrame && m_mainFrame->coreFrame()->view()->delegatesScrolling()) {
</span><span class="cx"> // Wait until the UI process sent us the visible rect it wants rendered.
</span><span class="lines">@@ -3534,7 +3543,7 @@
</span><span class="cx">
</span><span class="cx"> void WebPage::didReceiveMessage(IPC::Connection& connection, IPC::MessageDecoder& decoder)
</span><span class="cx"> {
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> if (decoder.messageReceiverName() == Messages::CoordinatedLayerTreeHost::messageReceiverName()) {
</span><span class="cx"> if (m_drawingArea)
</span><span class="cx"> m_drawingArea->didReceiveCoordinatedLayerTreeHostMessage(connection, decoder);
</span><span class="lines">@@ -4021,7 +4030,7 @@
</span><span class="cx"> return platformCanHandleRequest(request);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> void WebPage::commitPageTransitionViewport()
</span><span class="cx"> {
</span><span class="cx"> m_drawingArea->setLayerTreeStateIsFrozen(false);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -587,7 +587,7 @@
</span><span class="cx"> void setThemePath(const String&);
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> void commitPageTransitionViewport();
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="lines">@@ -1023,7 +1023,7 @@
</span><span class="cx"> void hideFindUI();
</span><span class="cx"> void countStringMatches(const String&, uint32_t findOptions, uint32_t maxMatchCount);
</span><span class="cx">
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> void findZoomableAreaForPoint(const WebCore::IntPoint&, const WebCore::IntSize& area);
</span><span class="cx"> #endif
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagemessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -315,7 +315,7 @@
</span><span class="cx"> SetThemePath(String themePath)
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-#if USE(TILED_BACKING_STORE)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> CommitPageTransitionViewport()
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="lines">@@ -381,7 +381,7 @@
</span><span class="cx"> SetComposition(String compositionString, Vector<WebCore::CompositionUnderline> underlines, uint64_t cursorPosition)
</span><span class="cx"> CancelComposition()
</span><span class="cx"> #endif
</span><del>-#if USE(COORDINATED_GRAPHICS)
</del><ins>+#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
</ins><span class="cx"> FindZoomableAreaForPoint(WebCore::IntPoint point, WebCore::IntSize area)
</span><span class="cx"> #endif
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessgtkWebProcessMainGtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/WebKit2/WebProcess/gtk/WebProcessMainGtk.cpp        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -34,6 +34,10 @@
</span><span class="cx"> #include <libintl.h>
</span><span class="cx"> #include <libsoup/soup.h>
</span><span class="cx">
</span><ins>+#if PLATFORM(X11)
+#include <X11/Xlib.h>
+#endif
+
</ins><span class="cx"> using namespace WebCore;
</span><span class="cx">
</span><span class="cx"> namespace WebKit {
</span><span class="lines">@@ -47,6 +51,9 @@
</span><span class="cx"> sleep(30);
</span><span class="cx"> #endif
</span><span class="cx">
</span><ins>+#if USE(COORDINATED_GRAPHICS_THREADED) && PLATFORM(X11)
+ XInitThreads();
+#endif
</ins><span class="cx"> gtk_init(nullptr, nullptr);
</span><span class="cx">
</span><span class="cx"> bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
</span></span></pre></div>
<a id="trunkSourcecmakeOptionsEflcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/cmake/OptionsEfl.cmake (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/cmake/OptionsEfl.cmake        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/cmake/OptionsEfl.cmake        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -118,7 +118,6 @@
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_TIMING ON)
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEBGL ON)
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_XHR_TIMEOUT ON)
</span><del>-WEBKIT_OPTION_DEFAULT_PORT_VALUE(WTF_USE_TILED_BACKING_STORE ON)
</del><span class="cx">
</span><span class="cx"> if (ENABLE_LLINT_C_LOOP)
</span><span class="cx"> message(STATUS "Force enabling LLINT C LOOP.")
</span><span class="lines">@@ -208,6 +207,8 @@
</span><span class="cx"> endif ()
</span><span class="cx">
</span><span class="cx"> add_definitions(-DWTF_USE_COORDINATED_GRAPHICS=1)
</span><ins>+add_definitions(-DWTF_USE_COORDINATED_GRAPHICS_MULTIPROCESS=1)
+add_definitions(-DWTF_USE_TILED_BACKING_STORE=1)
</ins><span class="cx">
</span><span class="cx"> add_definitions(-DWTF_USE_TEXTURE_MAPPER=1)
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourcecmakeOptionsGTKcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/cmake/OptionsGTK.cmake (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/cmake/OptionsGTK.cmake        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/cmake/OptionsGTK.cmake        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -172,7 +172,7 @@
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_TIMING ON)
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_XHR_TIMEOUT ON)
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETWORK_PROCESS ON)
</span><del>-WEBKIT_OPTION_DEFAULT_PORT_VALUE(WTF_USE_TILED_BACKING_STORE OFF)
</del><ins>+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_THREADED_COMPOSITOR OFF)
</ins><span class="cx"> WEBKIT_OPTION_END()
</span><span class="cx">
</span><span class="cx"> if (LIBNOTIFY_FOUND)
</span><span class="lines">@@ -329,6 +329,12 @@
</span><span class="cx"> if (GLX_FOUND)
</span><span class="cx"> add_definitions(-DWTF_USE_GLX=1)
</span><span class="cx"> endif ()
</span><ins>+
+ if (ENABLE_THREADED_COMPOSITOR)
+ add_definitions(-DWTF_USE_TILED_BACKING_STORE=1)
+ add_definitions(-DWTF_USE_COORDINATED_GRAPHICS=1)
+ add_definitions(-DWTF_USE_COORDINATED_GRAPHICS_THREADED=1)
+ endif ()
</ins><span class="cx"> endif ()
</span><span class="cx">
</span><span class="cx"> if (ENABLE_GAMEPAD_DEPRECATED)
</span></span></pre></div>
<a id="trunkSourcecmakeWebKitFeaturescmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/cmake/WebKitFeatures.cmake (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/cmake/WebKitFeatures.cmake        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/cmake/WebKitFeatures.cmake        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -149,7 +149,7 @@
</span><span class="cx"> WEBKIT_OPTION_DEFINE(ENABLE_XHR_TIMEOUT "Toggle XHR timeout support" OFF)
</span><span class="cx"> WEBKIT_OPTION_DEFINE(ENABLE_XSLT "Toggle XSLT support" ON)
</span><span class="cx"> WEBKIT_OPTION_DEFINE(USE_SYSTEM_MALLOC "Toggle system allocator instead of TCmalloc" OFF)
</span><del>- WEBKIT_OPTION_DEFINE(WTF_USE_TILED_BACKING_STORE "Toggle Tiled Backing Store support" OFF)
</del><ins>+ WEBKIT_OPTION_DEFINE(ENABLE_THREADED_COMPOSITOR "Toggle threaded compositor support" OFF)
</ins><span class="cx">
</span><span class="cx"> WEBKIT_OPTION_DEPEND(ENABLE_ENCRYPTED_MEDIA_V2 ENABLE_VIDEO)
</span><span class="cx"> WEBKIT_OPTION_DEPEND(ENABLE_MEDIA_CONTROLS_SCRIPT ENABLE_VIDEO)
</span></span></pre></div>
<a id="trunkSourcecmakeconfighcmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/cmakeconfig.h.cmake (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/cmakeconfig.h.cmake        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Source/cmakeconfig.h.cmake        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -139,7 +139,6 @@
</span><span class="cx"> #cmakedefine01 ENABLE_XSLT
</span><span class="cx"> #cmakedefine01 USE_SYSTEM_MALLOC
</span><span class="cx"> #cmakedefine01 WTF_USE_GEOCLUE2
</span><del>-#cmakedefine01 WTF_USE_TILED_BACKING_STORE
</del><span class="cx"> #cmakedefine01 HAVE_LLVM
</span><span class="cx"> #cmakedefine01 HAVE_GTK_UNIX_PRINTING
</span><span class="cx"> #cmakedefine01 WTF_CPU_ARM64_CORTEXA53
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Tools/ChangeLog        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2015-01-07 Gwang Yoon Hwang <yoon@igalia.com>
+
+ [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.
+
+ * Scripts/webkitperl/FeatureList.pm:
+
</ins><span class="cx"> 2015-01-07 Daniel Bates <dabates@apple.com>
</span><span class="cx">
</span><span class="cx"> [iOS] Make WebKit2 build with public iOS SDK and more build fixes for DRT
</span></span></pre></div>
<a id="trunkToolsScriptswebkitperlFeatureListpm"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitperl/FeatureList.pm (178094 => 178095)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitperl/FeatureList.pm        2015-01-08 04:17:50 UTC (rev 178094)
+++ trunk/Tools/Scripts/webkitperl/FeatureList.pm        2015-01-08 04:29:24 UTC (rev 178095)
</span><span class="lines">@@ -128,7 +128,7 @@
</span><span class="cx"> $systemMallocSupport,
</span><span class="cx"> $templateElementSupport,
</span><span class="cx"> $textAutosizingSupport,
</span><del>- $tiledBackingStoreSupport,
</del><ins>+ $threadedCompositorSupport,
</ins><span class="cx"> $threadedHTMLParserSupport,
</span><span class="cx"> $touchEventsSupport,
</span><span class="cx"> $touchSliderSupport,
</span><span class="lines">@@ -383,6 +383,9 @@
</span><span class="cx"> { option => "template-element", desc => "Toggle HTMLTemplateElement support",
</span><span class="cx"> define => "ENABLE_TEMPLATE_ELEMENT", default => 1, value => \$templateElementSupport },
</span><span class="cx">
</span><ins>+ { option => "threaded-compositor", desc => "Toggle threaded compositor support",
+ define => "ENABLE_THREADED_COMPOSITOR", default => 0, value => \$threadedCompositorSupport },
+
</ins><span class="cx"> { option => "text-autosizing", desc => "Toggle Text Autosizing support",
</span><span class="cx"> define => "ENABLE_TEXT_AUTOSIZING", default => 0, value => \$textAutosizingSupport },
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>