diff options
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/WebCore/page/ChromeClient.h | 1 | ||||
| -rw-r--r-- | Source/WebCore/rendering/RenderLayerCompositor.cpp | 4 | ||||
| -rw-r--r-- | Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h | 3 |
3 files changed, 7 insertions, 1 deletions
diff --git a/Source/WebCore/page/ChromeClient.h b/Source/WebCore/page/ChromeClient.h index 6fce249eb..3146d41ff 100644 --- a/Source/WebCore/page/ChromeClient.h +++ b/Source/WebCore/page/ChromeClient.h @@ -266,6 +266,7 @@ public: FilterTrigger = 1 << 5, ScrollableInnerFrameTrigger = 1 << 6, AnimatedOpacityTrigger = 1 << 7, + LargeAreaTrigger = 1 << 8, AllTriggers = 0xFFFFFFFF }; typedef unsigned CompositingTriggerFlags; diff --git a/Source/WebCore/rendering/RenderLayerCompositor.cpp b/Source/WebCore/rendering/RenderLayerCompositor.cpp index 784ebdc80..da390cb75 100644 --- a/Source/WebCore/rendering/RenderLayerCompositor.cpp +++ b/Source/WebCore/rendering/RenderLayerCompositor.cpp @@ -85,6 +85,7 @@ bool WebCoreHas3DRendering = true; namespace WebCore { static const int canvasAreaThresholdRequiringCompositing = 50 * 100; +static const int largeAreaThresholdForCompositing = 8192 * 8192; // During page loading delay layer flushes up to this many seconds to allow them coalesce, reducing workload. static const double throttledLayerFlushDelay = .5; @@ -1804,6 +1805,9 @@ bool RenderLayerCompositor::requiresCompositingLayer(const RenderLayer* layer, R bool RenderLayerCompositor::canBeComposited(const RenderLayer* layer) const { + if (!(m_compositingTriggers & ChromeClient::LargeAreaTrigger) && layer->size().area() > largeAreaThresholdForCompositing) + return false; + // FIXME: We disable accelerated compositing for elements in a RenderFlowThread as it doesn't work properly. // See http://webkit.org/b/84900 to re-enable it. return m_hasAcceleratedCompositing && layer->isSelfPaintingLayer() && layer->renderer()->flowThreadState() == RenderObject::NotInsideFlowThread; diff --git a/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h b/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h index d48b67ab0..c0cbee716 100644 --- a/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h +++ b/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h @@ -192,7 +192,8 @@ private: VideoTrigger | PluginTrigger| CanvasTrigger | - AnimationTrigger); + AnimationTrigger | + LargeAreaTrigger); } virtual bool layerTreeStateIsFrozen() const OVERRIDE; |
