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

Unified Diff: Source/core/rendering/RenderLayer.h

Issue 233063004: Suppress layer creation for descendants of GPU-rasterized layers (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Move assert disabler in ~CompositedLayerMapping Created 6 years, 8 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
Index: Source/core/rendering/RenderLayer.h
diff --git a/Source/core/rendering/RenderLayer.h b/Source/core/rendering/RenderLayer.h
index 6e144688fd68052960ca8d70b11ddbac3433fc81..9a6b6b50617ba5ba7b10a6a9cc1ead32423f27e1 100644
--- a/Source/core/rendering/RenderLayer.h
+++ b/Source/core/rendering/RenderLayer.h
@@ -232,7 +232,7 @@ public:
// Will ensure that hasUnclippedDescendant and hasNonCompositiedChild are up to date.
void updateScrollingStateAfterCompositingChange();
bool hasVisibleNonLayerContent() const { return m_hasVisibleNonLayerContent; }
- bool hasNonCompositedChild() const { return m_compositingProperties.hasNonCompositedChild; }
+ bool hasNonCompositedChild() const { return compositingProperties().hasNonCompositedChild; }
bool usedTransparency() const { return m_usedTransparency; }
@@ -428,8 +428,8 @@ public:
ViewportConstrainedNotCompositedReasonBits = 3
};
- void setViewportConstrainedNotCompositedReason(ViewportConstrainedNotCompositedReason reason) { m_compositingProperties.viewportConstrainedNotCompositedReason = reason; }
- ViewportConstrainedNotCompositedReason viewportConstrainedNotCompositedReason() const { return static_cast<ViewportConstrainedNotCompositedReason>(m_compositingProperties.viewportConstrainedNotCompositedReason); }
+ void setViewportConstrainedNotCompositedReason(ViewportConstrainedNotCompositedReason reason) { compositingProperties().viewportConstrainedNotCompositedReason = reason; }
+ ViewportConstrainedNotCompositedReason viewportConstrainedNotCompositedReason() const { return static_cast<ViewportConstrainedNotCompositedReason>(compositingProperties().viewportConstrainedNotCompositedReason); }
bool isOutOfFlowRenderFlowThread() const { return renderer()->isOutOfFlowRenderFlowThread(); }
@@ -461,13 +461,15 @@ public:
RenderLayerBlendInfo& blendInfo() { return m_blendInfo; }
- void setOffsetFromSquashingLayerOrigin(IntSize offset) { m_compositingProperties.offsetFromSquashingLayerOrigin = offset; }
- IntSize offsetFromSquashingLayerOrigin() const { return m_compositingProperties.offsetFromSquashingLayerOrigin; }
+ void setOffsetFromSquashingLayerOrigin(IntSize offset) { compositingProperties().offsetFromSquashingLayerOrigin = offset; }
+ IntSize offsetFromSquashingLayerOrigin() const { return compositingProperties().offsetFromSquashingLayerOrigin; }
bool scrollsOverflow() const;
bool hasDirectReasonsForCompositing() const { return compositingReasons() & CompositingReasonComboAllDirectReasons; }
- CompositingReasons styleDeterminedCompositingReasons() const { return compositingReasons() & CompositingReasonComboAllStyleDeterminedReasons; }
+
+ CompositingReasons styleDeterminedCompositingReasons() const { return m_styleDeterminedCompositingReasons; }
+ void setStyleDeterminedCompositingReasons(CompositingReasons reasons) { ASSERT(reasons == (reasons & CompositingReasonComboAllStyleDeterminedReasons)); m_styleDeterminedCompositingReasons = reasons; }
class AncestorDependentProperties {
public:
@@ -492,17 +494,20 @@ public:
const AncestorDependentProperties& ancestorDependentProperties() const { ASSERT(!m_needsToUpdateAncestorDependentProperties); return m_ancestorDependentProperties; }
- bool lostGroupedMapping() const { return m_compositingProperties.lostGroupedMapping; }
- void setLostGroupedMapping(bool b) { m_compositingProperties.lostGroupedMapping = b; }
+ bool lostGroupedMapping() const { return compositingProperties().lostGroupedMapping; }
+ void setLostGroupedMapping(bool b) { compositingProperties().lostGroupedMapping = b; }
- CompositingReasons compositingReasons() const { return m_compositingProperties.compositingReasons; }
+ CompositingReasons compositingReasons() const { return compositingProperties().compositingReasons; }
void setCompositingReasons(CompositingReasons, CompositingReasons mask = CompositingReasonAll);
- bool hasCompositingDescendant() const { return m_compositingProperties.hasCompositingDescendant; }
- void setHasCompositingDescendant(bool b) { m_compositingProperties.hasCompositingDescendant = b; }
+ bool hasCompositingDescendant() const { return compositingProperties().hasCompositingDescendant; }
+ void setHasCompositingDescendant(bool b) { compositingProperties().hasCompositingDescendant = b; }
+
+ bool shouldIsolateCompositedDescendants() const { return compositingProperties().shouldIsolateCompositedDescendants; }
+ void setShouldIsolateCompositedDescendants(bool b) { compositingProperties().shouldIsolateCompositedDescendants = b; }
- bool shouldIsolateCompositedDescendants() const { return m_compositingProperties.shouldIsolateCompositedDescendants; }
- void setShouldIsolateCompositedDescendants(bool b) { m_compositingProperties.shouldIsolateCompositedDescendants = b; }
+ bool suppressingCompositedLayerCreation() const { return compositingProperties().suppressingCompositedLayerCreation; }
+ void setSuppressingCompositedLayerCreation(bool b) { compositingProperties().suppressingCompositedLayerCreation = b; }
void updateDescendantDependentFlags();
@@ -718,6 +723,10 @@ private:
// Pointer to the enclosing RenderLayer that caused us to be paginated. It is 0 if we are not paginated.
RenderLayer* m_enclosingPaginationLayer;
+ // These compositing reasons are updated whenever style changes, not while updating compositing layers.
+ // They should not be used to infer the compositing state of this layer.
+ CompositingReasons m_styleDeterminedCompositingReasons;
+
// Properties that are computed while updating compositing layers. These values may be dirty/invalid if
// compositing status is not up-to-date before using them.
struct CompositingProperties {
@@ -726,6 +735,7 @@ private:
, hasNonCompositedChild(false)
, shouldIsolateCompositedDescendants(false)
, lostGroupedMapping(false)
+ , suppressingCompositedLayerCreation(false)
, viewportConstrainedNotCompositedReason(NoNotCompositedReason)
, compositingReasons(CompositingReasonNone)
{ }
@@ -744,6 +754,9 @@ private:
// and we don't yet know to what graphics layer this RenderLayer will be assigned.
bool lostGroupedMapping : 1;
+ // Whether this render layer is trying to avoid becoming composited, if possible.
+ bool suppressingCompositedLayerCreation : 1;
+
// The reason, if any exists, that a fixed-position layer is chosen not to be composited.
unsigned viewportConstrainedNotCompositedReason : ViewportConstrainedNotCompositedReasonBits;
@@ -754,6 +767,9 @@ private:
IntSize offsetFromSquashingLayerOrigin;
};
+ CompositingProperties& compositingProperties() { ASSERT(isAllowedToQueryCompositingState()); return m_compositingProperties; }
+ const CompositingProperties& compositingProperties() const { ASSERT(isAllowedToQueryCompositingState()); return m_compositingProperties; }
+
AncestorDependentProperties m_ancestorDependentProperties;
CompositingProperties m_compositingProperties;

Powered by Google App Engine
This is Rietveld 408576698