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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: cc/trees/layer_tree_host_common.cc
diff --git a/cc/trees/layer_tree_host_common.cc b/cc/trees/layer_tree_host_common.cc
index c16382e20a0033d87d1d3fab8fc7f817985a0792..84204b72e847b1b27e676beb660a3c962567d698 100644
--- a/cc/trees/layer_tree_host_common.cc
+++ b/cc/trees/layer_tree_host_common.cc
@@ -577,16 +577,18 @@ void CalculateRenderSurfaceLayerList(
// |can_render_to_separate_surface| and |current_render_surface_layer_list_id|
// are settings that should stay the same during recursion.
- bool layer_is_drawn = false;
DCHECK_GE(layer->effect_tree_index(), 0);
- layer_is_drawn = property_trees->effect_tree.Node(layer->effect_tree_index())
- ->data.is_drawn;
+ bool layer_is_drawn =
+ property_trees->is_active
+ ? property_trees->effect_tree.Node(layer->effect_tree_index())
+ ->data.is_drawn_on_active
+ : property_trees->effect_tree.Node(layer->effect_tree_index())
+ ->data.is_drawn_on_main_and_pending;
// The root layer cannot be skipped.
if (!IsRootLayer(layer) &&
- draw_property_utils::LayerShouldBeSkipped(layer, layer_is_drawn,
- property_trees->transform_tree,
- property_trees->effect_tree)) {
+ draw_property_utils::LayerShouldBeSkipped(
+ layer, property_trees->transform_tree, property_trees->effect_tree)) {
if (layer->render_surface())
layer->ClearRenderSurfaceLayerList();
for (auto* child_layer : layer->children()) {
@@ -649,7 +651,7 @@ void CalculateRenderSurfaceLayerList(
size_t descendants_size = descendants->size();
bool layer_should_be_skipped = !draw_property_utils::LayerNeedsUpdate(
- layer, layer_is_drawn, property_trees->transform_tree);
+ layer, property_trees->transform_tree);
if (!layer_should_be_skipped) {
MarkLayerWithRenderSurfaceLayerListId(layer,
current_render_surface_layer_list_id);

Powered by Google App Engine
This is Rietveld 408576698