| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "cc/trees/draw_property_utils.h" | 5 #include "cc/trees/draw_property_utils.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 DCHECK(layer->background_filters().IsEmpty()) << "layer: " << layer->id(); | 64 DCHECK(layer->background_filters().IsEmpty()) << "layer: " << layer->id(); |
| 65 DCHECK(!IsRootLayer(layer)) << "layer: " << layer->id(); | 65 DCHECK(!IsRootLayer(layer)) << "layer: " << layer->id(); |
| 66 if (EffectNodeOwner(layer)->replica_layer() == layer) | 66 if (EffectNodeOwner(layer)->replica_layer() == layer) |
| 67 return; | 67 return; |
| 68 DCHECK(!layer->mask_layer()) << "layer: " << layer->id(); | 68 DCHECK(!layer->mask_layer()) << "layer: " << layer->id(); |
| 69 DCHECK(!layer->replica_layer()) << "layer: " << layer->id(); | 69 DCHECK(!layer->replica_layer()) << "layer: " << layer->id(); |
| 70 DCHECK(!layer->HasCopyRequest()) << "layer: " << layer->id(); | 70 DCHECK(!layer->HasCopyRequest()) << "layer: " << layer->id(); |
| 71 ValidateIsNotRootForIsolatedGroup(layer); | 71 ValidateIsNotRootForIsolatedGroup(layer); |
| 72 } | 72 } |
| 73 | 73 |
| 74 static void ValidateRenderSurfacesRecursive(Layer* layer) { | |
| 75 ValidateRenderSurfaceForLayer(layer); | |
| 76 for (size_t i = 0; i < layer->children().size(); ++i) | |
| 77 ValidateRenderSurfacesRecursive(layer->child_at(i)); | |
| 78 } | |
| 79 #endif | 74 #endif |
| 80 | 75 |
| 81 template <typename LayerType> | 76 template <typename LayerType> |
| 82 void CalculateVisibleRects( | 77 void CalculateVisibleRects( |
| 83 const typename LayerType::LayerListType& visible_layer_list, | 78 const typename LayerType::LayerListType& visible_layer_list, |
| 84 const ClipTree& clip_tree, | 79 const ClipTree& clip_tree, |
| 85 const TransformTree& transform_tree, | 80 const TransformTree& transform_tree, |
| 86 bool non_root_surfaces_enabled) { | 81 bool non_root_surfaces_enabled) { |
| 87 for (auto& layer : visible_layer_list) { | 82 for (auto& layer : visible_layer_list) { |
| 88 gfx::Size layer_bounds = layer->bounds(); | 83 gfx::Size layer_bounds = layer->bounds(); |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 366 } | 361 } |
| 367 | 362 |
| 368 EffectNode* node = effect_tree->Node(layer->effect_tree_index()); | 363 EffectNode* node = effect_tree->Node(layer->effect_tree_index()); |
| 369 | 364 |
| 370 if (node->owner_id == layer->id() && node->data.has_render_surface) | 365 if (node->owner_id == layer->id() && node->data.has_render_surface) |
| 371 layer->SetHasRenderSurface(true); | 366 layer->SetHasRenderSurface(true); |
| 372 else | 367 else |
| 373 layer->SetHasRenderSurface(false); | 368 layer->SetHasRenderSurface(false); |
| 374 } | 369 } |
| 375 | 370 |
| 376 void UpdateRenderSurfacesForLayersRecursive(EffectTree* effect_tree, | |
| 377 Layer* layer) { | |
| 378 UpdateRenderSurfaceForLayer(effect_tree, true, layer); | |
| 379 | |
| 380 for (size_t i = 0; i < layer->children().size(); ++i) { | |
| 381 UpdateRenderSurfacesForLayersRecursive(effect_tree, layer->child_at(i)); | |
| 382 } | |
| 383 } | |
| 384 | |
| 385 } // namespace | 371 } // namespace |
| 386 | 372 |
| 387 template <typename LayerType> | 373 template <typename LayerType> |
| 388 static inline bool LayerShouldBeSkippedInternal( | 374 static inline bool LayerShouldBeSkippedInternal( |
| 389 LayerType* layer, | 375 LayerType* layer, |
| 390 bool layer_is_drawn, | 376 bool layer_is_drawn, |
| 391 const TransformTree& transform_tree, | 377 const TransformTree& transform_tree, |
| 392 const EffectTree& effect_tree) { | 378 const EffectTree& effect_tree) { |
| 393 const TransformNode* transform_node = | 379 const TransformNode* transform_node = |
| 394 transform_tree.Node(layer->transform_tree_index()); | 380 transform_tree.Node(layer->transform_tree_index()); |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 651 | 637 |
| 652 FindLayersThatNeedUpdates( | 638 FindLayersThatNeedUpdates( |
| 653 root_layer->layer_tree_impl(), property_trees->transform_tree, | 639 root_layer->layer_tree_impl(), property_trees->transform_tree, |
| 654 property_trees->effect_tree, update_layer_list, visible_layer_list); | 640 property_trees->effect_tree, update_layer_list, visible_layer_list); |
| 655 CalculateVisibleRects<LayerImpl>( | 641 CalculateVisibleRects<LayerImpl>( |
| 656 *visible_layer_list, property_trees->clip_tree, | 642 *visible_layer_list, property_trees->clip_tree, |
| 657 property_trees->transform_tree, can_render_to_separate_surface); | 643 property_trees->transform_tree, can_render_to_separate_surface); |
| 658 } | 644 } |
| 659 | 645 |
| 660 void UpdateRenderSurfaces(Layer* root_layer, PropertyTrees* property_trees) { | 646 void UpdateRenderSurfaces(Layer* root_layer, PropertyTrees* property_trees) { |
| 661 UpdateRenderSurfacesForLayersRecursive(&property_trees->effect_tree, | 647 for (auto* layer : *root_layer->layer_tree_host()) { |
| 662 root_layer); | 648 UpdateRenderSurfaceForLayer(&property_trees->effect_tree, true, layer); |
| 663 #if DCHECK_IS_ON() | 649 #if DCHECK_IS_ON() |
| 664 ValidateRenderSurfacesRecursive(root_layer); | 650 ValidateRenderSurfaceForLayer(layer); |
| 665 #endif | 651 #endif |
| 652 } |
| 666 } | 653 } |
| 667 | 654 |
| 668 void UpdatePropertyTrees(PropertyTrees* property_trees, | 655 void UpdatePropertyTrees(PropertyTrees* property_trees, |
| 669 bool can_render_to_separate_surface) { | 656 bool can_render_to_separate_surface) { |
| 670 if (property_trees->non_root_surfaces_enabled != | 657 if (property_trees->non_root_surfaces_enabled != |
| 671 can_render_to_separate_surface) { | 658 can_render_to_separate_surface) { |
| 672 property_trees->non_root_surfaces_enabled = can_render_to_separate_surface; | 659 property_trees->non_root_surfaces_enabled = can_render_to_separate_surface; |
| 673 property_trees->transform_tree.set_needs_update(true); | 660 property_trees->transform_tree.set_needs_update(true); |
| 674 } | 661 } |
| 675 if (property_trees->transform_tree.needs_update()) | 662 if (property_trees->transform_tree.needs_update()) |
| (...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1126 void UpdateElasticOverscroll(PropertyTrees* property_trees, | 1113 void UpdateElasticOverscroll(PropertyTrees* property_trees, |
| 1127 const Layer* overscroll_elasticity_layer, | 1114 const Layer* overscroll_elasticity_layer, |
| 1128 const gfx::Vector2dF& elastic_overscroll) { | 1115 const gfx::Vector2dF& elastic_overscroll) { |
| 1129 UpdateElasticOverscrollInternal(property_trees, overscroll_elasticity_layer, | 1116 UpdateElasticOverscrollInternal(property_trees, overscroll_elasticity_layer, |
| 1130 elastic_overscroll); | 1117 elastic_overscroll); |
| 1131 } | 1118 } |
| 1132 | 1119 |
| 1133 } // namespace draw_property_utils | 1120 } // namespace draw_property_utils |
| 1134 | 1121 |
| 1135 } // namespace cc | 1122 } // namespace cc |
| OLD | NEW |