Index: third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp |
diff --git a/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp b/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp |
index 5e552c2b831d41bcbec65d4804ad153d25362798..7f85e9e41bada787a6089cace5c8d3f2af7c6881 100644 |
--- a/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp |
+++ b/third_party/WebKit/Source/platform/graphics/compositing/PaintArtifactCompositor.cpp |
@@ -345,27 +345,14 @@ |
public: |
PropertyTreeManager(cc::PropertyTrees& propertyTrees, cc::Layer* rootLayer) |
: m_propertyTrees(propertyTrees) |
- , m_rootLayer(rootLayer) |
-#if DCHECK_IS_ON() |
- , m_isFirstEffectEver(true) |
-#endif |
- { |
- m_effectStack.append(BlinkEffectAndCcIdPair{nullptr, kSecondaryRootNodeId}); |
- } |
+ , m_rootLayer(rootLayer) {} |
int compositorIdForTransformNode(const TransformPaintPropertyNode*); |
int compositorIdForClipNode(const ClipPaintPropertyNode*); |
- int switchToEffectNode(const EffectPaintPropertyNode& nextEffect); |
- int compositorIdForCurrentEffectNode() const { return m_effectStack.last().id; } |
private: |
- void buildEffectNodesRecursively(const EffectPaintPropertyNode* nextEffect); |
- |
cc::TransformTree& transformTree() { return m_propertyTrees.transform_tree; } |
cc::ClipTree& clipTree() { return m_propertyTrees.clip_tree; } |
- cc::EffectTree& effectTree() { return m_propertyTrees.effect_tree; } |
- |
- const EffectPaintPropertyNode* currentEffectNode() const { return m_effectStack.last().effect; } |
// Property trees which should be updated by the manager. |
cc::PropertyTrees& m_propertyTrees; |
@@ -377,17 +364,6 @@ |
// Maps from Blink-side property tree nodes to cc property node indices. |
HashMap<const TransformPaintPropertyNode*, int> m_transformNodeMap; |
HashMap<const ClipPaintPropertyNode*, int> m_clipNodeMap; |
- |
- struct BlinkEffectAndCcIdPair { |
- const EffectPaintPropertyNode* effect; |
- int id; |
- }; |
- Vector<BlinkEffectAndCcIdPair> m_effectStack; |
- |
-#if DCHECK_IS_ON() |
- HashSet<const EffectPaintPropertyNode*> m_effectNodesConverted; |
- bool m_isFirstEffectEver; |
-#endif |
}; |
int PropertyTreeManager::compositorIdForTransformNode(const TransformPaintPropertyNode* transformNode) |
@@ -466,91 +442,6 @@ |
return id; |
} |
-unsigned depth(const EffectPaintPropertyNode* node) |
-{ |
- unsigned result = 0; |
- for (; node; node = node->parent()) |
- result++; |
- return result; |
-} |
- |
-const EffectPaintPropertyNode* lowestCommonAncestor(const EffectPaintPropertyNode* nodeA, const EffectPaintPropertyNode* nodeB) |
-{ |
- // Optimized common case. |
- if (nodeA == nodeB) |
- return nodeA; |
- |
- unsigned depthA = depth(nodeA), depthB = depth(nodeB); |
- while (depthA > depthB) { |
- nodeA = nodeA->parent(); |
- depthA--; |
- } |
- while (depthB > depthA) { |
- nodeB = nodeB->parent(); |
- depthB--; |
- } |
- DCHECK_EQ(depthA, depthB); |
- while (nodeA != nodeB) { |
- nodeA = nodeA->parent(); |
- nodeB = nodeB->parent(); |
- } |
- return nodeA; |
-} |
- |
-int PropertyTreeManager::switchToEffectNode(const EffectPaintPropertyNode& nextEffect) |
-{ |
- const EffectPaintPropertyNode* ancestor = lowestCommonAncestor(currentEffectNode(), &nextEffect); |
- while (currentEffectNode() != ancestor) |
- m_effectStack.removeLast(); |
- |
-#if DCHECK_IS_ON() |
- DCHECK(m_isFirstEffectEver || currentEffectNode()) << "Malformed effect tree. Nodes in the same property tree should have common root."; |
- m_isFirstEffectEver = false; |
-#endif |
- buildEffectNodesRecursively(&nextEffect); |
- |
- return compositorIdForCurrentEffectNode(); |
-} |
- |
-void PropertyTreeManager::buildEffectNodesRecursively(const EffectPaintPropertyNode* nextEffect) |
-{ |
- if (nextEffect == currentEffectNode()) |
- return; |
- DCHECK(nextEffect); |
- |
- buildEffectNodesRecursively(nextEffect->parent()); |
- DCHECK_EQ(nextEffect->parent(), currentEffectNode()); |
- |
-#if DCHECK_IS_ON() |
- DCHECK(!m_effectNodesConverted.contains(nextEffect)) << "Malformed paint artifact. Paint chunks under the same effect should be contiguous."; |
- m_effectNodesConverted.add(nextEffect); |
-#endif |
- |
- // We currently create dummy layers to host effect nodes and corresponding render surface. |
- // This should be removed once cc implements better support for freestanding property trees. |
- scoped_refptr<cc::Layer> dummyLayer = cc::Layer::Create(); |
- m_rootLayer->AddChild(dummyLayer); |
- |
- // Also cc assumes a clip node is always created by a layer that creates render surface. |
- cc::ClipNode& dummyClip = *clipTree().Node(clipTree().Insert(cc::ClipNode(), kSecondaryRootNodeId)); |
- dummyClip.owner_id = dummyLayer->id(); |
- dummyClip.transform_id = kRealRootNodeId; |
- dummyClip.target_transform_id = kRealRootNodeId; |
- |
- cc::EffectNode& effectNode = *effectTree().Node(effectTree().Insert(cc::EffectNode(), compositorIdForCurrentEffectNode())); |
- effectNode.owner_id = dummyLayer->id(); |
- effectNode.clip_id = dummyClip.id; |
- effectNode.has_render_surface = true; |
- effectNode.opacity = nextEffect->opacity(); |
- m_effectStack.append(BlinkEffectAndCcIdPair{nextEffect, effectNode.id}); |
- |
- dummyLayer->set_property_tree_sequence_number(kPropertyTreeSequenceNumber); |
- dummyLayer->SetTransformTreeIndex(kSecondaryRootNodeId); |
- dummyLayer->SetClipTreeIndex(dummyClip.id); |
- dummyLayer->SetEffectTreeIndex(effectNode.id); |
- dummyLayer->SetScrollTreeIndex(kRealRootNodeId); |
-} |
- |
} // namespace |
void PaintArtifactCompositor::updateInLayerListMode(const PaintArtifact& paintArtifact) |
@@ -574,7 +465,6 @@ |
int transformId = propertyTreeManager.compositorIdForTransformNode(paintChunk.properties.transform.get()); |
int clipId = propertyTreeManager.compositorIdForClipNode(paintChunk.properties.clip.get()); |
- int effectId = propertyTreeManager.switchToEffectNode(*paintChunk.properties.effect.get()); |
layer->set_offset_to_transform_parent(layerOffset); |
@@ -582,7 +472,7 @@ |
layer->set_property_tree_sequence_number(kPropertyTreeSequenceNumber); |
layer->SetTransformTreeIndex(transformId); |
layer->SetClipTreeIndex(clipId); |
- layer->SetEffectTreeIndex(effectId); |
+ layer->SetEffectTreeIndex(kSecondaryRootNodeId); |
layer->SetScrollTreeIndex(kRealRootNodeId); |
if (m_extraDataForTestingEnabled) |