Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1369)

Unified Diff: Source/core/rendering/compositing/CompositingReasonFinder.cpp

Issue 205343009: Hoist compositorDrivenAcceleratedScrollingEnabled check out of scrollParent (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/rendering/compositing/CompositedLayerMapping.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/compositing/CompositingReasonFinder.cpp
diff --git a/Source/core/rendering/compositing/CompositingReasonFinder.cpp b/Source/core/rendering/compositing/CompositingReasonFinder.cpp
index 6f9ae626c35aa7cd735e75bf78d1f9c5a653df8d..261c935086b1f604dd45728f3c6494711ab0d42f 100644
--- a/Source/core/rendering/compositing/CompositingReasonFinder.cpp
+++ b/Source/core/rendering/compositing/CompositingReasonFinder.cpp
@@ -59,52 +59,6 @@ bool CompositingReasonFinder::isMainFrame() const
return !m_renderView.document().ownerElement();
}
-CompositingReasons CompositingReasonFinder::styleDeterminedReasons(RenderObject* renderer) const
-{
- CompositingReasons directReasons = CompositingReasonNone;
-
- if (requiresCompositingForTransform(renderer))
- directReasons |= CompositingReason3DTransform;
-
- if (requiresCompositingForBackfaceVisibilityHidden(renderer))
- directReasons |= CompositingReasonBackfaceVisibilityHidden;
-
- if (requiresCompositingForFilters(renderer))
- directReasons |= CompositingReasonFilters;
-
- if (requiresCompositingForWillChange(renderer))
- directReasons |= CompositingReasonWillChange;
-
- ASSERT(!(directReasons & ~CompositingReasonComboAllStyleDeterminedReasons));
- return directReasons;
-}
-
-CompositingReasons CompositingReasonFinder::nonStyleDeterminedDirectReasons(const RenderLayer* layer, bool* needToRecomputeCompositingRequirements) const
-{
- CompositingReasons directReasons = CompositingReasonNone;
- RenderObject* renderer = layer->renderer();
-
- if (requiresCompositingForAnimation(renderer))
- directReasons |= CompositingReasonActiveAnimation;
-
- if (requiresCompositingForOutOfFlowClipping(layer))
- directReasons |= CompositingReasonOutOfFlowClipping;
-
- if (requiresCompositingForOverflowScrolling(layer))
- directReasons |= CompositingReasonOverflowScrollingTouch;
-
- if (requiresCompositingForOverflowScrollingParent(layer))
- directReasons |= CompositingReasonOverflowScrollingParent;
-
- if (requiresCompositingForPosition(renderer, layer, 0, needToRecomputeCompositingRequirements))
- directReasons |= renderer->style()->position() == FixedPosition ? CompositingReasonPositionFixed : CompositingReasonPositionSticky;
-
- directReasons |= renderer->additionalCompositingReasons(m_compositingTriggers);
-
- ASSERT(!(directReasons & CompositingReasonComboAllStyleDeterminedReasons));
- return directReasons;
-}
-
CompositingReasons CompositingReasonFinder::directReasons(const RenderLayer* layer, bool* needToRecomputeCompositingRequirements) const
{
CompositingReasons styleReasons = layer->styleDeterminedCompositingReasons();
@@ -112,6 +66,7 @@ CompositingReasons CompositingReasonFinder::directReasons(const RenderLayer* lay
return styleReasons | nonStyleDeterminedDirectReasons(layer, needToRecomputeCompositingRequirements);
}
+// This information doesn't appear to be incorporated into CompositingReasons.
bool CompositingReasonFinder::requiresCompositingForScrollableFrame() const
{
// Need this done first to determine overflow.
@@ -126,15 +81,34 @@ bool CompositingReasonFinder::requiresCompositingForScrollableFrame() const
return frameView->isScrollable();
}
+CompositingReasons CompositingReasonFinder::styleDeterminedReasons(RenderObject* renderer) const
+{
+ CompositingReasons directReasons = CompositingReasonNone;
+
+ if (requiresCompositingForTransform(renderer))
+ directReasons |= CompositingReason3DTransform;
+
+ if (requiresCompositingForBackfaceVisibilityHidden(renderer))
+ directReasons |= CompositingReasonBackfaceVisibilityHidden;
+
+ if (requiresCompositingForFilters(renderer))
+ directReasons |= CompositingReasonFilters;
+
+ if (requiresCompositingForWillChange(renderer))
+ directReasons |= CompositingReasonWillChange;
+
+ ASSERT(!(directReasons & ~CompositingReasonComboAllStyleDeterminedReasons));
+ return directReasons;
+}
+
bool CompositingReasonFinder::requiresCompositingForTransform(RenderObject* renderer) const
{
if (!(m_compositingTriggers & ThreeDTransformTrigger))
return false;
- RenderStyle* style = renderer->style();
// Note that we ask the renderer if it has a transform, because the style may have transforms,
// but the renderer may be an inline that doesn't suppport them.
- return renderer->hasTransform() && style->transform().has3DOperation();
+ return renderer->hasTransform() && renderer->style()->transform().has3DOperation();
}
bool CompositingReasonFinder::requiresCompositingForBackfaceVisibilityHidden(RenderObject* renderer) const
@@ -145,41 +119,74 @@ bool CompositingReasonFinder::requiresCompositingForBackfaceVisibilityHidden(Ren
return renderer->style()->backfaceVisibility() == BackfaceVisibilityHidden;
}
-bool CompositingReasonFinder::requiresCompositingForAnimation(RenderObject* renderer) const
+bool CompositingReasonFinder::requiresCompositingForFilters(RenderObject* renderer) const
{
- if (!(m_compositingTriggers & AnimationTrigger))
+ if (!(m_compositingTriggers & FilterTrigger))
return false;
- return shouldCompositeForActiveAnimations(*renderer);
+ return renderer->hasFilter();
}
-bool CompositingReasonFinder::requiresCompositingForFilters(RenderObject* renderer) const
+bool CompositingReasonFinder::requiresCompositingForWillChange(const RenderObject* renderer) const
{
- if (!(m_compositingTriggers & FilterTrigger))
+ if (renderer->style()->hasWillChangeCompositingHint())
+ return true;
+
+ if (!(m_compositingTriggers & GPURasterizationTrigger))
return false;
- return renderer->hasFilter();
+ return renderer->style()->hasWillChangeGpuRasterizationHint();
}
-bool CompositingReasonFinder::requiresCompositingForOverflowScrollingParent(const RenderLayer* layer) const
+CompositingReasons CompositingReasonFinder::nonStyleDeterminedDirectReasons(const RenderLayer* layer, bool* needToRecomputeCompositingRequirements) const
{
- return !!layer->scrollParent();
+ CompositingReasons directReasons = CompositingReasonNone;
+ RenderObject* renderer = layer->renderer();
+
+ if (requiresCompositingForAnimation(renderer))
+ directReasons |= CompositingReasonActiveAnimation;
+
+ if (m_renderView.compositorDrivenAcceleratedScrollingEnabled()) {
+ if (requiresCompositingForOutOfFlowClipping(layer))
+ directReasons |= CompositingReasonOutOfFlowClipping;
+
+ if (requiresCompositingForOverflowScrollingParent(layer))
+ directReasons |= CompositingReasonOverflowScrollingParent;
+ }
+
+ if (requiresCompositingForOverflowScrolling(layer))
+ directReasons |= CompositingReasonOverflowScrollingTouch;
+
+ if (requiresCompositingForPosition(renderer, layer, 0, needToRecomputeCompositingRequirements))
+ directReasons |= renderer->style()->position() == FixedPosition ? CompositingReasonPositionFixed : CompositingReasonPositionSticky;
+
+ directReasons |= renderer->additionalCompositingReasons(m_compositingTriggers);
+
+ ASSERT(!(directReasons & CompositingReasonComboAllStyleDeterminedReasons));
+ return directReasons;
}
-bool CompositingReasonFinder::requiresCompositingForOutOfFlowClipping(const RenderLayer* layer) const
+bool CompositingReasonFinder::requiresCompositingForAnimation(RenderObject* renderer) const
{
- return m_renderView.compositorDrivenAcceleratedScrollingEnabled() && layer->isUnclippedDescendant();
+ if (!(m_compositingTriggers & AnimationTrigger))
+ return false;
+
+ return shouldCompositeForActiveAnimations(*renderer);
}
-bool CompositingReasonFinder::requiresCompositingForWillChange(const RenderObject* renderer) const
+bool CompositingReasonFinder::requiresCompositingForOutOfFlowClipping(const RenderLayer* layer) const
{
- if (renderer->style()->hasWillChangeCompositingHint())
- return true;
+ return layer->isUnclippedDescendant();
+}
- if (!(m_compositingTriggers & GPURasterizationTrigger))
- return false;
+bool CompositingReasonFinder::requiresCompositingForOverflowScrollingParent(const RenderLayer* layer) const
+{
+ return layer->scrollParent();
+}
- return renderer->style()->hasWillChangeGpuRasterizationHint();
+bool CompositingReasonFinder::requiresCompositingForOverflowScrolling(const RenderLayer* layer) const
+{
+ return layer->needsCompositedScrolling();
}
bool CompositingReasonFinder::isViewportConstrainedFixedOrStickyLayer(const RenderLayer* layer)
@@ -302,9 +309,4 @@ bool CompositingReasonFinder::requiresCompositingForPosition(RenderObject* rende
return true;
}
-bool CompositingReasonFinder::requiresCompositingForOverflowScrolling(const RenderLayer* layer) const
-{
- return layer->needsCompositedScrolling();
-}
-
}
« no previous file with comments | « Source/core/rendering/compositing/CompositedLayerMapping.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698