| 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 28 matching lines...) Expand all Loading... |
| 39 static void ValidateRenderSurfaceForLayer(LayerImpl* layer) { | 39 static void ValidateRenderSurfaceForLayer(LayerImpl* layer) { |
| 40 // This test verifies that there are no cases where a LayerImpl needs | 40 // This test verifies that there are no cases where a LayerImpl needs |
| 41 // a render surface, but doesn't have one. | 41 // a render surface, but doesn't have one. |
| 42 if (layer->has_render_surface()) | 42 if (layer->has_render_surface()) |
| 43 return; | 43 return; |
| 44 | 44 |
| 45 DCHECK(!IsRootLayer(layer)) << "layer: " << layer->id(); | 45 DCHECK(!IsRootLayer(layer)) << "layer: " << layer->id(); |
| 46 EffectNode* effect_node = | 46 EffectNode* effect_node = |
| 47 layer->layer_tree_impl()->property_trees()->effect_tree.Node( | 47 layer->layer_tree_impl()->property_trees()->effect_tree.Node( |
| 48 layer->effect_tree_index()); | 48 layer->effect_tree_index()); |
| 49 if (effect_node->owner_id != layer->id()) | 49 if (effect_node->owning_layer_id != layer->id()) |
| 50 return; | 50 return; |
| 51 DCHECK_EQ(effect_node->mask_layer_id, EffectTree::kInvalidNodeId) | 51 DCHECK_EQ(effect_node->mask_layer_id, EffectTree::kInvalidNodeId) |
| 52 << "layer: " << layer->id(); | 52 << "layer: " << layer->id(); |
| 53 DCHECK(effect_node->filters.IsEmpty()); | 53 DCHECK(effect_node->filters.IsEmpty()); |
| 54 DCHECK(effect_node->background_filters.IsEmpty()); | 54 DCHECK(effect_node->background_filters.IsEmpty()); |
| 55 } | 55 } |
| 56 #endif | 56 #endif |
| 57 | 57 |
| 58 static const EffectNode* ContentsTargetEffectNode( | 58 static const EffectNode* ContentsTargetEffectNode( |
| 59 const int effect_tree_index, | 59 const int effect_tree_index, |
| (...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 512 const TransformNode* node = tree.Node(transform_tree_index); | 512 const TransformNode* node = tree.Node(transform_tree_index); |
| 513 return !node->is_invertible || !node->ancestors_are_invertible; | 513 return !node->is_invertible || !node->ancestors_are_invertible; |
| 514 } | 514 } |
| 515 | 515 |
| 516 template <typename LayerType> | 516 template <typename LayerType> |
| 517 static int TransformTreeIndexForBackfaceVisibility(LayerType* layer, | 517 static int TransformTreeIndexForBackfaceVisibility(LayerType* layer, |
| 518 const TransformTree& tree) { | 518 const TransformTree& tree) { |
| 519 if (!layer->use_parent_backface_visibility()) | 519 if (!layer->use_parent_backface_visibility()) |
| 520 return layer->transform_tree_index(); | 520 return layer->transform_tree_index(); |
| 521 const TransformNode* node = tree.Node(layer->transform_tree_index()); | 521 const TransformNode* node = tree.Node(layer->transform_tree_index()); |
| 522 return layer->id() == node->owner_id ? tree.parent(node)->id : node->id; | 522 return layer->id() == node->owning_layer_id ? tree.parent(node)->id |
| 523 : node->id; |
| 523 } | 524 } |
| 524 | 525 |
| 525 static bool IsTargetSpaceTransformBackFaceVisible( | 526 static bool IsTargetSpaceTransformBackFaceVisible( |
| 526 Layer* layer, | 527 Layer* layer, |
| 527 int transform_tree_index, | 528 int transform_tree_index, |
| 528 const PropertyTrees* property_trees) { | 529 const PropertyTrees* property_trees) { |
| 529 // We do not skip back face invisible layers on main thread as target space | 530 // We do not skip back face invisible layers on main thread as target space |
| 530 // transform will not be available here. | 531 // transform will not be available here. |
| 531 return false; | 532 return false; |
| 532 } | 533 } |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 632 void UpdateRenderSurfaceForLayer(EffectTree* effect_tree, | 633 void UpdateRenderSurfaceForLayer(EffectTree* effect_tree, |
| 633 bool non_root_surfaces_enabled, | 634 bool non_root_surfaces_enabled, |
| 634 LayerImpl* layer) { | 635 LayerImpl* layer) { |
| 635 if (!non_root_surfaces_enabled) { | 636 if (!non_root_surfaces_enabled) { |
| 636 layer->SetHasRenderSurface(IsRootLayer(layer)); | 637 layer->SetHasRenderSurface(IsRootLayer(layer)); |
| 637 return; | 638 return; |
| 638 } | 639 } |
| 639 | 640 |
| 640 EffectNode* node = effect_tree->Node(layer->effect_tree_index()); | 641 EffectNode* node = effect_tree->Node(layer->effect_tree_index()); |
| 641 | 642 |
| 642 if (node->owner_id == layer->id() && node->has_render_surface) | 643 if (node->owning_layer_id == layer->id() && node->has_render_surface) |
| 643 layer->SetHasRenderSurface(true); | 644 layer->SetHasRenderSurface(true); |
| 644 else | 645 else |
| 645 layer->SetHasRenderSurface(false); | 646 layer->SetHasRenderSurface(false); |
| 646 } | 647 } |
| 647 } // namespace | 648 } // namespace |
| 648 | 649 |
| 649 template <typename LayerType> | 650 template <typename LayerType> |
| 650 static inline bool LayerShouldBeSkippedInternal( | 651 static inline bool LayerShouldBeSkippedInternal( |
| 651 LayerType* layer, | 652 LayerType* layer, |
| 652 const TransformTree& transform_tree, | 653 const TransformTree& transform_tree, |
| (...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1064 | 1065 |
| 1065 void ComputeVisibleRects(LayerImpl* root_layer, | 1066 void ComputeVisibleRects(LayerImpl* root_layer, |
| 1066 PropertyTrees* property_trees, | 1067 PropertyTrees* property_trees, |
| 1067 bool can_render_to_separate_surface, | 1068 bool can_render_to_separate_surface, |
| 1068 LayerImplList* visible_layer_list) { | 1069 LayerImplList* visible_layer_list) { |
| 1069 for (auto* layer : *root_layer->layer_tree_impl()) { | 1070 for (auto* layer : *root_layer->layer_tree_impl()) { |
| 1070 UpdateRenderSurfaceForLayer(&property_trees->effect_tree, | 1071 UpdateRenderSurfaceForLayer(&property_trees->effect_tree, |
| 1071 can_render_to_separate_surface, layer); | 1072 can_render_to_separate_surface, layer); |
| 1072 EffectNode* node = | 1073 EffectNode* node = |
| 1073 property_trees->effect_tree.Node(layer->effect_tree_index()); | 1074 property_trees->effect_tree.Node(layer->effect_tree_index()); |
| 1074 if (node->owner_id == layer->id()) | 1075 if (node->owning_layer_id == layer->id()) |
| 1075 node->render_surface = layer->render_surface(); | 1076 node->render_surface = layer->render_surface(); |
| 1076 #if DCHECK_IS_ON() | 1077 #if DCHECK_IS_ON() |
| 1077 if (can_render_to_separate_surface) | 1078 if (can_render_to_separate_surface) |
| 1078 ValidateRenderSurfaceForLayer(layer); | 1079 ValidateRenderSurfaceForLayer(layer); |
| 1079 #endif | 1080 #endif |
| 1080 } | 1081 } |
| 1081 ComputeVisibleRectsInternal(root_layer, property_trees, | 1082 ComputeVisibleRectsInternal(root_layer, property_trees, |
| 1082 can_render_to_separate_surface, | 1083 can_render_to_separate_surface, |
| 1083 visible_layer_list); | 1084 visible_layer_list); |
| 1084 } | 1085 } |
| (...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1458 void UpdateElasticOverscroll(PropertyTrees* property_trees, | 1459 void UpdateElasticOverscroll(PropertyTrees* property_trees, |
| 1459 const Layer* overscroll_elasticity_layer, | 1460 const Layer* overscroll_elasticity_layer, |
| 1460 const gfx::Vector2dF& elastic_overscroll) { | 1461 const gfx::Vector2dF& elastic_overscroll) { |
| 1461 UpdateElasticOverscrollInternal(property_trees, overscroll_elasticity_layer, | 1462 UpdateElasticOverscrollInternal(property_trees, overscroll_elasticity_layer, |
| 1462 elastic_overscroll); | 1463 elastic_overscroll); |
| 1463 } | 1464 } |
| 1464 | 1465 |
| 1465 } // namespace draw_property_utils | 1466 } // namespace draw_property_utils |
| 1466 | 1467 |
| 1467 } // namespace cc | 1468 } // namespace cc |
| OLD | NEW |