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

Side by Side Diff: cc/trees/layer_tree_host_common.cc

Issue 1884613005: cc : Simplify layer skipping logic (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/layer_tree_host_common.h" 5 #include "cc/trees/layer_tree_host_common.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 // |render_surface_layer_list| is the top level RenderSurfaceLayerList. 570 // |render_surface_layer_list| is the top level RenderSurfaceLayerList.
571 571
572 // |descendants| is used to determine what's in current layer's render 572 // |descendants| is used to determine what's in current layer's render
573 // surface's layer list. 573 // surface's layer list.
574 574
575 // |subtree_visible_from_ancestor| is set during recursion to affect current 575 // |subtree_visible_from_ancestor| is set during recursion to affect current
576 // layer's subtree. 576 // layer's subtree.
577 577
578 // |can_render_to_separate_surface| and |current_render_surface_layer_list_id| 578 // |can_render_to_separate_surface| and |current_render_surface_layer_list_id|
579 // are settings that should stay the same during recursion. 579 // are settings that should stay the same during recursion.
580 bool layer_is_drawn = false;
581 DCHECK_GE(layer->effect_tree_index(), 0); 580 DCHECK_GE(layer->effect_tree_index(), 0);
582 layer_is_drawn = property_trees->effect_tree.Node(layer->effect_tree_index()) 581 bool layer_is_drawn =
583 ->data.is_drawn; 582 property_trees->is_active
583 ? property_trees->effect_tree.Node(layer->effect_tree_index())
584 ->data.is_drawn_on_active
585 : property_trees->effect_tree.Node(layer->effect_tree_index())
586 ->data.is_drawn_on_main_and_pending;
584 587
585 // The root layer cannot be skipped. 588 // The root layer cannot be skipped.
586 if (!IsRootLayer(layer) && 589 if (!IsRootLayer(layer) &&
587 draw_property_utils::LayerShouldBeSkipped(layer, layer_is_drawn, 590 draw_property_utils::LayerShouldBeSkipped(
588 property_trees->transform_tree, 591 layer, property_trees->transform_tree, property_trees->effect_tree)) {
589 property_trees->effect_tree)) {
590 if (layer->render_surface()) 592 if (layer->render_surface())
591 layer->ClearRenderSurfaceLayerList(); 593 layer->ClearRenderSurfaceLayerList();
592 for (auto* child_layer : layer->children()) { 594 for (auto* child_layer : layer->children()) {
593 CalculateRenderSurfaceLayerList( 595 CalculateRenderSurfaceLayerList(
594 child_layer, property_trees, render_surface_layer_list, descendants, 596 child_layer, property_trees, render_surface_layer_list, descendants,
595 nearest_occlusion_immune_ancestor, layer_is_drawn, 597 nearest_occlusion_immune_ancestor, layer_is_drawn,
596 can_render_to_separate_surface, current_render_surface_layer_list_id, 598 can_render_to_separate_surface, current_render_surface_layer_list_id,
597 max_texture_size); 599 max_texture_size);
598 600
599 MarkMasksAndAddChildToDescendantsIfRequired( 601 MarkMasksAndAddChildToDescendantsIfRequired(
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 layer->ClearRenderSurfaceLayerList(); 644 layer->ClearRenderSurfaceLayerList();
643 645
644 render_surface_layer_list->push_back(layer); 646 render_surface_layer_list->push_back(layer);
645 647
646 descendants = &(layer->render_surface()->layer_list()); 648 descendants = &(layer->render_surface()->layer_list());
647 } 649 }
648 650
649 size_t descendants_size = descendants->size(); 651 size_t descendants_size = descendants->size();
650 652
651 bool layer_should_be_skipped = !draw_property_utils::LayerNeedsUpdate( 653 bool layer_should_be_skipped = !draw_property_utils::LayerNeedsUpdate(
652 layer, layer_is_drawn, property_trees->transform_tree); 654 layer, property_trees->transform_tree);
653 if (!layer_should_be_skipped) { 655 if (!layer_should_be_skipped) {
654 MarkLayerWithRenderSurfaceLayerListId(layer, 656 MarkLayerWithRenderSurfaceLayerListId(layer,
655 current_render_surface_layer_list_id); 657 current_render_surface_layer_list_id);
656 descendants->push_back(layer); 658 descendants->push_back(layer);
657 } 659 }
658 660
659 661
660 // Clear the old accumulated content rect of surface. 662 // Clear the old accumulated content rect of surface.
661 if (render_to_separate_surface) 663 if (render_to_separate_surface)
662 layer->render_surface()->ClearAccumulatedContentRect(); 664 layer->render_surface()->ClearAccumulatedContentRect();
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
951 953
952 PropertyTrees* GetPropertyTrees(Layer* layer) { 954 PropertyTrees* GetPropertyTrees(Layer* layer) {
953 return layer->layer_tree_host()->property_trees(); 955 return layer->layer_tree_host()->property_trees();
954 } 956 }
955 957
956 PropertyTrees* GetPropertyTrees(LayerImpl* layer) { 958 PropertyTrees* GetPropertyTrees(LayerImpl* layer) {
957 return layer->layer_tree_impl()->property_trees(); 959 return layer->layer_tree_impl()->property_trees();
958 } 960 }
959 961
960 } // namespace cc 962 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698