Title: [117521] trunk/Source
Revision
117521
Author
[email protected]
Date
2012-05-17 18:20:41 -0700 (Thu, 17 May 2012)

Log Message

Source/Platform: [chromium] Expose layer tiling size options to WebSettings
https://bugs.webkit.org/show_bug.cgi?id=86425

Adding entries for tile size and max untiled layer size.

Reviewed by Adrienne Walker.

* chromium/public/WebLayerTreeView.h:
(WebKit):
(WebKit::WebLayerTreeView::Settings::Settings):
(Settings):

Source/WebCore: [chromium] Expose layer tiling size options to WebSettings.
https://bugs.webkit.org/show_bug.cgi?id=86425

Removing hardcoded tile size and max untiled layer size from TiledLayerChromium
and instead have the values passed in via the LTH CCSettings. This will allow
different compositor instances to adjust tiling parameters as needed and makes
it possible to set the values via command line arguments.

Reviewed by Adrienne Walker.

* platform/graphics/chromium/TiledLayerChromium.cpp:
(WebCore::TiledLayerChromium::TiledLayerChromium):
(WebCore::TiledLayerChromium::updateTileSizeAndTilingOption):
Made some additional adjustments to the single-tile heuristic
to make it work better with arbitrary sizes while still avoiding
to create unreasonably large layers.
* platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
(WebCore::CCLayerTreeHost::initializeLayerRenderer):
* platform/graphics/chromium/cc/CCLayerTreeHost.h:
(WebCore::CCSettings::CCSettings):
(CCSettings):

Source/WebKit/chromium: Expose layer tiling size options to WebSettings.
https://bugs.webkit.org/show_bug.cgi?id=86425

This will allow tiling parameters to be set via command line flags
passed to the Renderer.

Reviewed by Adrienne Walker.

* public/WebSettings.h:
* src/WebLayerTreeView.cpp:
(WebKit::WebLayerTreeView::Settings::operator CCSettings):
* src/WebSettingsImpl.cpp:
(WebKit::WebSettingsImpl::WebSettingsImpl):
(WebKit::WebSettingsImpl::setDefaultTileSize):
(WebKit):
(WebKit::WebSettingsImpl::setMaxUntiledLayerSize):
* src/WebSettingsImpl.h:
(WebSettingsImpl):
(WebKit::WebSettingsImpl::defaultTileSize):
(WebKit::WebSettingsImpl::maxUntiledLayerSize):
* src/WebViewImpl.cpp:
(WebKit::WebViewImpl::setIsAcceleratedCompositingActive):

Modified Paths

Diff

Modified: trunk/Source/Platform/ChangeLog (117520 => 117521)


--- trunk/Source/Platform/ChangeLog	2012-05-18 01:12:35 UTC (rev 117520)
+++ trunk/Source/Platform/ChangeLog	2012-05-18 01:20:41 UTC (rev 117521)
@@ -1,3 +1,17 @@
+2012-05-17  Vangelis Kokkevis  <[email protected]>
+
+        [chromium] Expose layer tiling size options to WebSettings
+        https://bugs.webkit.org/show_bug.cgi?id=86425
+
+        Adding entries for tile size and max untiled layer size.
+        
+        Reviewed by Adrienne Walker.
+
+        * chromium/public/WebLayerTreeView.h:
+        (WebKit):
+        (WebKit::WebLayerTreeView::Settings::Settings):
+        (Settings):
+
 2012-05-17  Mark Pilgrim  <[email protected]>
 
         [Chromium] Move fileUtilities to Platform.h

Modified: trunk/Source/Platform/chromium/public/WebLayerTreeView.h (117520 => 117521)


--- trunk/Source/Platform/chromium/public/WebLayerTreeView.h	2012-05-18 01:12:35 UTC (rev 117520)
+++ trunk/Source/Platform/chromium/public/WebLayerTreeView.h	2012-05-18 01:20:41 UTC (rev 117521)
@@ -30,6 +30,7 @@
 #include "WebCommon.h"
 #include "WebNonCopyable.h"
 #include "WebPrivateOwnPtr.h"
+#include "WebSize.h"
 
 namespace WebCore {
 class CCLayerTreeHost;
@@ -43,7 +44,6 @@
 class WebLayerTreeViewImpl;
 struct WebPoint;
 struct WebRect;
-struct WebSize;
 
 class WebLayerTreeView : public WebNonCopyable {
 public:
@@ -57,6 +57,8 @@
             , perTilePainting(false)
             , partialSwapEnabled(false)
             , threadedAnimationEnabled(false)
+            , defaultTileSize(WebSize(256, 256))
+            , maxUntiledLayerSize(WebSize(512, 512))
         {
         }
 
@@ -68,6 +70,8 @@
         bool perTilePainting;
         bool partialSwapEnabled;
         bool threadedAnimationEnabled;
+        WebSize defaultTileSize;
+        WebSize maxUntiledLayerSize;
 #if WEBKIT_IMPLEMENTATION
         operator WebCore::CCSettings() const;
 #endif

Modified: trunk/Source/WebCore/ChangeLog (117520 => 117521)


--- trunk/Source/WebCore/ChangeLog	2012-05-18 01:12:35 UTC (rev 117520)
+++ trunk/Source/WebCore/ChangeLog	2012-05-18 01:20:41 UTC (rev 117521)
@@ -1,3 +1,27 @@
+2012-05-17  Vangelis Kokkevis  <[email protected]>
+
+        [chromium] Expose layer tiling size options to WebSettings.
+        https://bugs.webkit.org/show_bug.cgi?id=86425
+
+        Removing hardcoded tile size and max untiled layer size from TiledLayerChromium
+        and instead have the values passed in via the LTH CCSettings. This will allow
+        different compositor instances to adjust tiling parameters as needed and makes
+        it possible to set the values via command line arguments.
+
+        Reviewed by Adrienne Walker.
+
+        * platform/graphics/chromium/TiledLayerChromium.cpp:
+        (WebCore::TiledLayerChromium::TiledLayerChromium):
+        (WebCore::TiledLayerChromium::updateTileSizeAndTilingOption):
+        Made some additional adjustments to the single-tile heuristic
+        to make it work better with arbitrary sizes while still avoiding
+        to create unreasonably large layers.
+        * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
+        (WebCore::CCLayerTreeHost::initializeLayerRenderer):
+        * platform/graphics/chromium/cc/CCLayerTreeHost.h:
+        (WebCore::CCSettings::CCSettings):
+        (CCSettings):
+
 2012-05-17  Sudarsana Nagineni  <[email protected]>
 
         Memory leak in NetworkInfoClient

Modified: trunk/Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp (117520 => 117521)


--- trunk/Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp	2012-05-18 01:12:35 UTC (rev 117520)
+++ trunk/Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp	2012-05-18 01:20:41 UTC (rev 117521)
@@ -43,13 +43,6 @@
 #include <wtf/CurrentTime.h>
 #include <wtf/MathExtras.h>
 
-// Start tiling when the width and height of a layer are larger than this size.
-static int maxUntiledSize = 512;
-
-// When tiling is enabled, use tiles of this size:
-static int defaultTileWidth = 256;
-static int defaultTileHeight = 256;
-
 using namespace std;
 
 namespace WebCore {
@@ -101,7 +94,7 @@
     , m_didPaint(false)
     , m_tilingOption(AutoTile)
 {
-    m_tiler = CCLayerTilingData::create(IntSize(defaultTileWidth, defaultTileHeight), CCLayerTilingData::HasBorderTexels);
+    m_tiler = CCLayerTilingData::create(IntSize(), CCLayerTilingData::HasBorderTexels);
 }
 
 TiledLayerChromium::~TiledLayerChromium()
@@ -115,13 +108,24 @@
 
 void TiledLayerChromium::updateTileSizeAndTilingOption()
 {
-    const IntSize tileSize(min(defaultTileWidth, contentBounds().width()), min(defaultTileHeight, contentBounds().height()));
+    ASSERT(layerTreeHost());
 
+    const CCSettings& settings = layerTreeHost()->settings();
+    const IntSize& defaultTileSize = settings.defaultTileSize;
+    const IntSize& maxUntiledLayerSize = settings.maxUntiledLayerSize;
+    int layerWidth = contentBounds().width();
+    int layerHeight = contentBounds().height();
+
+    const IntSize tileSize(min(defaultTileSize.width(), layerWidth), min(defaultTileSize.height(), layerHeight));
+
     // Tile if both dimensions large, or any one dimension large and the other
-    // extends into a second tile. This heuristic allows for long skinny layers
-    // (e.g. scrollbars) that are Nx1 tiles to minimize wasted texture space.
-    const bool anyDimensionLarge = contentBounds().width() > maxUntiledSize || contentBounds().height() > maxUntiledSize;
-    const bool anyDimensionOneTile = contentBounds().width() <= defaultTileWidth || contentBounds().height() <= defaultTileHeight;
+    // extends into a second tile but the total layer area isn't larger than that
+    // of the largest possible untiled layer. This heuristic allows for long skinny layers
+    // (e.g. scrollbars) that are Nx1 tiles to minimize wasted texture space but still avoids
+    // creating very large tiles.
+    const bool anyDimensionLarge = layerWidth > maxUntiledLayerSize.width() || layerHeight > maxUntiledLayerSize.height();
+    const bool anyDimensionOneTile = (layerWidth <= defaultTileSize.width() || layerHeight <= defaultTileSize.height())
+                                      && (layerWidth * layerHeight) <= (maxUntiledLayerSize.width() * maxUntiledLayerSize.height());
     const bool autoTiled = anyDimensionLarge && !anyDimensionOneTile;
 
     bool isTiled;

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp (117520 => 117521)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp	2012-05-18 01:12:35 UTC (rev 117520)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp	2012-05-18 01:20:41 UTC (rev 117521)
@@ -148,6 +148,11 @@
                                                       m_proxy->layerRendererCapabilities().maxTextureSize);
 
     m_layerRendererInitialized = true;
+
+    m_settings.defaultTileSize = IntSize(min(m_settings.defaultTileSize.width(), m_proxy->layerRendererCapabilities().maxTextureSize),
+                                         min(m_settings.defaultTileSize.height(), m_proxy->layerRendererCapabilities().maxTextureSize));
+    m_settings.maxUntiledLayerSize = IntSize(min(m_settings.maxUntiledLayerSize.width(), m_proxy->layerRendererCapabilities().maxTextureSize),
+                                             min(m_settings.maxUntiledLayerSize.height(), m_proxy->layerRendererCapabilities().maxTextureSize));
 }
 
 CCLayerTreeHost::RecreateResult CCLayerTreeHost::recreateContext()

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h (117520 => 117521)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h	2012-05-18 01:12:35 UTC (rev 117520)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h	2012-05-18 01:20:41 UTC (rev 117521)
@@ -83,7 +83,9 @@
             , perTilePainting(false)
             , partialSwapEnabled(false)
             , threadedAnimationEnabled(false)
-            , maxPartialTextureUpdates(std::numeric_limits<size_t>::max()) { }
+            , maxPartialTextureUpdates(std::numeric_limits<size_t>::max())
+            , defaultTileSize(IntSize(256, 256))
+            , maxUntiledLayerSize(IntSize(512, 512)) { }
 
     bool acceleratePainting;
     bool showFPSCounter;
@@ -96,6 +98,8 @@
     bool partialSwapEnabled;
     bool threadedAnimationEnabled;
     size_t maxPartialTextureUpdates;
+    IntSize defaultTileSize;
+    IntSize maxUntiledLayerSize;
 };
 
 // Provides information on an Impl's rendering capabilities back to the CCLayerTreeHost

Modified: trunk/Source/WebKit/chromium/ChangeLog (117520 => 117521)


--- trunk/Source/WebKit/chromium/ChangeLog	2012-05-18 01:12:35 UTC (rev 117520)
+++ trunk/Source/WebKit/chromium/ChangeLog	2012-05-18 01:20:41 UTC (rev 117521)
@@ -1,3 +1,28 @@
+2012-05-17  Vangelis Kokkevis  <[email protected]>
+
+        Expose layer tiling size options to WebSettings.
+        https://bugs.webkit.org/show_bug.cgi?id=86425
+
+        This will allow tiling parameters to be set via command line flags
+        passed to the Renderer.
+
+        Reviewed by Adrienne Walker.
+
+        * public/WebSettings.h:
+        * src/WebLayerTreeView.cpp:
+        (WebKit::WebLayerTreeView::Settings::operator CCSettings):
+        * src/WebSettingsImpl.cpp:
+        (WebKit::WebSettingsImpl::WebSettingsImpl):
+        (WebKit::WebSettingsImpl::setDefaultTileSize):
+        (WebKit):
+        (WebKit::WebSettingsImpl::setMaxUntiledLayerSize):
+        * src/WebSettingsImpl.h:
+        (WebSettingsImpl):
+        (WebKit::WebSettingsImpl::defaultTileSize):
+        (WebKit::WebSettingsImpl::maxUntiledLayerSize):
+        * src/WebViewImpl.cpp:
+        (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):
+
 2012-05-17  Mark Pilgrim  <[email protected]>
 
         [Chromium] Move fileUtilities to Platform.h

Modified: trunk/Source/WebKit/chromium/public/WebSettings.h (117520 => 117521)


--- trunk/Source/WebKit/chromium/public/WebSettings.h	2012-05-18 01:12:35 UTC (rev 117520)
+++ trunk/Source/WebKit/chromium/public/WebSettings.h	2012-05-18 01:20:41 UTC (rev 117521)
@@ -32,6 +32,7 @@
 #define WebSettings_h
 
 #include "platform/WebCommon.h"
+#include "platform/WebSize.h"
 #include <unicode/uscript.h>
 
 #define HAS_WEBAUDIO_FEATURE_ENABLE 1
@@ -145,7 +146,10 @@
     virtual void setThreadedAnimationEnabled(bool) = 0;
     virtual void setViewportEnabled(bool) = 0;
     virtual bool viewportEnabled() const = 0;
+    virtual void setDefaultTileSize(WebSize) = 0;
+    virtual void setMaxUntiledLayerSize(WebSize) = 0;
 
+
 protected:
     ~WebSettings() { }
 };

Modified: trunk/Source/WebKit/chromium/src/WebLayerTreeView.cpp (117520 => 117521)


--- trunk/Source/WebKit/chromium/src/WebLayerTreeView.cpp	2012-05-18 01:12:35 UTC (rev 117520)
+++ trunk/Source/WebKit/chromium/src/WebLayerTreeView.cpp	2012-05-18 01:20:41 UTC (rev 117521)
@@ -48,6 +48,8 @@
     settings.perTilePainting = perTilePainting;
     settings.partialSwapEnabled = partialSwapEnabled;
     settings.threadedAnimationEnabled = threadedAnimationEnabled;
+    settings.defaultTileSize = defaultTileSize;
+    settings.maxUntiledLayerSize = maxUntiledLayerSize;
 
     // FIXME: showFPSCounter / showPlatformLayerTree / maxPartialTextureUpdates aren't supported currently.
     return settings;

Modified: trunk/Source/WebKit/chromium/src/WebSettingsImpl.cpp (117520 => 117521)


--- trunk/Source/WebKit/chromium/src/WebSettingsImpl.cpp	2012-05-18 01:12:35 UTC (rev 117520)
+++ trunk/Source/WebKit/chromium/src/WebSettingsImpl.cpp	2012-05-18 01:20:41 UTC (rev 117521)
@@ -51,6 +51,8 @@
     , m_showPlatformLayerTree(false)
     , m_showPaintRects(false)
     , m_viewportEnabled(false)
+    , m_defaultTileSize(WebSize(256, 256))
+    , m_maxUntiledLayerSize(WebSize(512, 512))
 {
     ASSERT(settings);
 }
@@ -573,4 +575,14 @@
     m_viewportEnabled = enabled;
 }
 
+void WebSettingsImpl::setDefaultTileSize(WebSize size)
+{
+    m_defaultTileSize = size;
+}
+
+void WebSettingsImpl::setMaxUntiledLayerSize(WebSize size)
+{
+    m_maxUntiledLayerSize = size;
+}
+
 } // namespace WebKit

Modified: trunk/Source/WebKit/chromium/src/WebSettingsImpl.h (117520 => 117521)


--- trunk/Source/WebKit/chromium/src/WebSettingsImpl.h	2012-05-18 01:12:35 UTC (rev 117520)
+++ trunk/Source/WebKit/chromium/src/WebSettingsImpl.h	2012-05-18 01:20:41 UTC (rev 117521)
@@ -98,6 +98,8 @@
     virtual void setShowFPSCounter(bool);
     virtual void setShowPlatformLayerTree(bool);
     virtual void setShowPaintRects(bool);
+    virtual void setDefaultTileSize(WebSize);
+    virtual void setMaxUntiledLayerSize(WebSize);
     virtual void setEditingBehavior(EditingBehavior);
     virtual void setAcceleratedCompositingEnabled(bool);
     virtual void setForceCompositingMode(bool);
@@ -144,6 +146,8 @@
     bool showFPSCounter() const { return m_showFPSCounter; }
     bool showPlatformLayerTree() const { return m_showPlatformLayerTree; }
     bool showPaintRects() const { return m_showPaintRects; }
+    WebSize defaultTileSize() const { return m_defaultTileSize; }
+    WebSize maxUntiledLayerSize() const { return m_maxUntiledLayerSize; }
 
 private:
     WebCore::Settings* m_settings;
@@ -151,6 +155,8 @@
     bool m_showPlatformLayerTree;
     bool m_showPaintRects;
     bool m_viewportEnabled;
+    WebSize m_defaultTileSize;
+    WebSize m_maxUntiledLayerSize;
 };
 
 } // namespace WebKit

Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.cpp (117520 => 117521)


--- trunk/Source/WebKit/chromium/src/WebViewImpl.cpp	2012-05-18 01:12:35 UTC (rev 117520)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.cpp	2012-05-18 01:20:41 UTC (rev 117521)
@@ -3389,6 +3389,9 @@
         layerTreeViewSettings.partialSwapEnabled = page()->settings()->partialSwapEnabled();
         layerTreeViewSettings.threadedAnimationEnabled = page()->settings()->threadedAnimationEnabled();
 
+        layerTreeViewSettings.defaultTileSize = settingsImpl()->defaultTileSize();
+        layerTreeViewSettings.maxUntiledLayerSize = settingsImpl()->maxUntiledLayerSize();
+
         m_nonCompositedContentHost = NonCompositedContentHost::create(WebViewImplContentPainter::create(this));
         m_nonCompositedContentHost->setShowDebugBorders(page()->settings()->showDebugBorders());
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to