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());