OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "platform/graphics/compositing/PropertyTreeManager.h" | 5 #include "platform/graphics/compositing/PropertyTreeManager.h" |
6 | 6 |
7 #include "cc/layers/layer.h" | 7 #include "cc/layers/layer.h" |
8 #include "cc/trees/clip_node.h" | 8 #include "cc/trees/clip_node.h" |
9 #include "cc/trees/effect_node.h" | 9 #include "cc/trees/effect_node.h" |
10 #include "cc/trees/layer_tree_host.h" | 10 #include "cc/trees/layer_tree_host.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 | 26 |
27 static constexpr int kInvalidNodeId = -1; | 27 static constexpr int kInvalidNodeId = -1; |
28 // cc's property trees use 0 for the root node (always non-null). | 28 // cc's property trees use 0 for the root node (always non-null). |
29 static constexpr int kRealRootNodeId = 0; | 29 static constexpr int kRealRootNodeId = 0; |
30 // cc allocates special nodes for root effects such as the device scale. | 30 // cc allocates special nodes for root effects such as the device scale. |
31 static constexpr int kSecondaryRootNodeId = 1; | 31 static constexpr int kSecondaryRootNodeId = 1; |
32 | 32 |
33 } // namespace | 33 } // namespace |
34 | 34 |
35 PropertyTreeManager::PropertyTreeManager(cc::PropertyTrees& propertyTrees, | 35 PropertyTreeManager::PropertyTreeManager(cc::PropertyTrees& propertyTrees, |
36 cc::Layer* rootLayer) | 36 cc::Layer* rootLayer, |
37 : m_propertyTrees(propertyTrees), m_rootLayer(rootLayer) { | 37 int sequenceNumber) |
| 38 : m_propertyTrees(propertyTrees), |
| 39 m_rootLayer(rootLayer), |
| 40 m_sequenceNumber(sequenceNumber) { |
38 setupRootTransformNode(); | 41 setupRootTransformNode(); |
39 setupRootClipNode(); | 42 setupRootClipNode(); |
40 setupRootEffectNode(); | 43 setupRootEffectNode(); |
41 setupRootScrollNode(); | 44 setupRootScrollNode(); |
42 } | 45 } |
43 | 46 |
44 cc::TransformTree& PropertyTreeManager::transformTree() { | 47 cc::TransformTree& PropertyTreeManager::transformTree() { |
45 return m_propertyTrees.transform_tree; | 48 return m_propertyTrees.transform_tree; |
46 } | 49 } |
47 | 50 |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 compositorNode.needs_local_transform_update = true; | 187 compositorNode.needs_local_transform_update = true; |
185 compositorNode.flattens_inherited_transform = | 188 compositorNode.flattens_inherited_transform = |
186 transformNode->flattensInheritedTransform(); | 189 transformNode->flattensInheritedTransform(); |
187 compositorNode.sorting_context_id = transformNode->renderingContextId(); | 190 compositorNode.sorting_context_id = transformNode->renderingContextId(); |
188 | 191 |
189 m_rootLayer->AddChild(dummyLayer); | 192 m_rootLayer->AddChild(dummyLayer); |
190 dummyLayer->SetTransformTreeIndex(id); | 193 dummyLayer->SetTransformTreeIndex(id); |
191 dummyLayer->SetClipTreeIndex(kSecondaryRootNodeId); | 194 dummyLayer->SetClipTreeIndex(kSecondaryRootNodeId); |
192 dummyLayer->SetEffectTreeIndex(kSecondaryRootNodeId); | 195 dummyLayer->SetEffectTreeIndex(kSecondaryRootNodeId); |
193 dummyLayer->SetScrollTreeIndex(kRealRootNodeId); | 196 dummyLayer->SetScrollTreeIndex(kRealRootNodeId); |
194 dummyLayer->set_property_tree_sequence_number(kPropertyTreeSequenceNumber); | 197 dummyLayer->set_property_tree_sequence_number(m_sequenceNumber); |
195 CompositorElementId compositorElementId = | 198 CompositorElementId compositorElementId = |
196 transformNode->compositorElementId(); | 199 transformNode->compositorElementId(); |
197 if (compositorElementId) { | 200 if (compositorElementId) { |
198 m_propertyTrees.element_id_to_transform_node_index[compositorElementId] = | 201 m_propertyTrees.element_id_to_transform_node_index[compositorElementId] = |
199 id; | 202 id; |
200 } | 203 } |
201 | 204 |
202 auto result = m_transformNodeMap.set(transformNode, id); | 205 auto result = m_transformNodeMap.set(transformNode, id); |
203 DCHECK(result.isNewEntry); | 206 DCHECK(result.isNewEntry); |
204 transformTree().set_needs_update(true); | 207 transformTree().set_needs_update(true); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 compositorNode.target_effect_id = kSecondaryRootNodeId; | 240 compositorNode.target_effect_id = kSecondaryRootNodeId; |
238 compositorNode.clip_type = cc::ClipNode::ClipType::APPLIES_LOCAL_CLIP; | 241 compositorNode.clip_type = cc::ClipNode::ClipType::APPLIES_LOCAL_CLIP; |
239 compositorNode.layers_are_clipped = true; | 242 compositorNode.layers_are_clipped = true; |
240 compositorNode.layers_are_clipped_when_surfaces_disabled = true; | 243 compositorNode.layers_are_clipped_when_surfaces_disabled = true; |
241 | 244 |
242 m_rootLayer->AddChild(dummyLayer); | 245 m_rootLayer->AddChild(dummyLayer); |
243 dummyLayer->SetTransformTreeIndex(compositorNode.transform_id); | 246 dummyLayer->SetTransformTreeIndex(compositorNode.transform_id); |
244 dummyLayer->SetClipTreeIndex(id); | 247 dummyLayer->SetClipTreeIndex(id); |
245 dummyLayer->SetEffectTreeIndex(kSecondaryRootNodeId); | 248 dummyLayer->SetEffectTreeIndex(kSecondaryRootNodeId); |
246 dummyLayer->SetScrollTreeIndex(kRealRootNodeId); | 249 dummyLayer->SetScrollTreeIndex(kRealRootNodeId); |
247 dummyLayer->set_property_tree_sequence_number(kPropertyTreeSequenceNumber); | 250 dummyLayer->set_property_tree_sequence_number(m_sequenceNumber); |
248 | 251 |
249 auto result = m_clipNodeMap.set(clipNode, id); | 252 auto result = m_clipNodeMap.set(clipNode, id); |
250 DCHECK(result.isNewEntry); | 253 DCHECK(result.isNewEntry); |
251 clipTree().set_needs_update(true); | 254 clipTree().set_needs_update(true); |
252 return id; | 255 return id; |
253 } | 256 } |
254 | 257 |
255 int PropertyTreeManager::ensureCompositorScrollNode( | 258 int PropertyTreeManager::ensureCompositorScrollNode( |
256 const ScrollPaintPropertyNode* scrollNode) { | 259 const ScrollPaintPropertyNode* scrollNode) { |
257 DCHECK(scrollNode); | 260 DCHECK(scrollNode); |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
445 effectNode.blend_mode = nextEffect->blendMode(); | 448 effectNode.blend_mode = nextEffect->blendMode(); |
446 m_propertyTrees.layer_id_to_effect_node_index[effectNode.owning_layer_id] = | 449 m_propertyTrees.layer_id_to_effect_node_index[effectNode.owning_layer_id] = |
447 effectNode.id; | 450 effectNode.id; |
448 CompositorElementId compositorElementId = nextEffect->compositorElementId(); | 451 CompositorElementId compositorElementId = nextEffect->compositorElementId(); |
449 if (compositorElementId) { | 452 if (compositorElementId) { |
450 m_propertyTrees.element_id_to_effect_node_index[compositorElementId] = | 453 m_propertyTrees.element_id_to_effect_node_index[compositorElementId] = |
451 effectNode.id; | 454 effectNode.id; |
452 } | 455 } |
453 m_effectStack.push_back(BlinkEffectAndCcIdPair{nextEffect, effectNode.id}); | 456 m_effectStack.push_back(BlinkEffectAndCcIdPair{nextEffect, effectNode.id}); |
454 | 457 |
455 dummyLayer->set_property_tree_sequence_number(kPropertyTreeSequenceNumber); | 458 dummyLayer->set_property_tree_sequence_number(m_sequenceNumber); |
456 dummyLayer->SetTransformTreeIndex(kSecondaryRootNodeId); | 459 dummyLayer->SetTransformTreeIndex(kSecondaryRootNodeId); |
457 dummyLayer->SetClipTreeIndex(outputClipId); | 460 dummyLayer->SetClipTreeIndex(outputClipId); |
458 dummyLayer->SetEffectTreeIndex(effectNode.id); | 461 dummyLayer->SetEffectTreeIndex(effectNode.id); |
459 dummyLayer->SetScrollTreeIndex(kRealRootNodeId); | 462 dummyLayer->SetScrollTreeIndex(kRealRootNodeId); |
460 } | 463 } |
461 | 464 |
462 } // namespace blink | 465 } // namespace blink |
OLD | NEW |