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 e91dded995895c30d906072953f6a4a1b6f1ddca..78043bffd43ae43b266f0ed2e9aefe293baf7775 100644 |
--- a/cc/trees/layer_tree_host_common.cc |
+++ b/cc/trees/layer_tree_host_common.cc |
@@ -358,11 +358,22 @@ static void ComputeInitialRenderSurfaceList( |
property_trees->transform_tree.Node(layer->transform_tree_index()); |
bool skip_for_invertibility = !transform_node->ancestors_are_invertible; |
- bool skip_layer = !is_root && (skip_draw_properties_computation || |
- skip_for_invertibility); |
+ const EffectNode* effect_node = |
+ property_trees->effect_tree.Node(layer->effect_tree_index()); |
+ bool has_animating_opacity_and_hidden = |
+ effect_node->has_potential_opacity_animation && |
+ property_trees->effect_tree.EffectiveOpacity(effect_node) == 0.f && |
+ !effect_node->has_copy_request; |
- layer->set_raster_even_if_not_in_rsll(skip_for_invertibility && |
- !skip_draw_properties_computation); |
+ bool skip_layer = !is_root && (skip_draw_properties_computation || |
+ skip_for_invertibility || |
+ has_animating_opacity_and_hidden); |
+ |
+ bool raster_even_if_not_in_rsll = |
+ skip_draw_properties_computation |
+ ? false |
+ : has_animating_opacity_and_hidden || skip_for_invertibility; |
+ layer->set_raster_even_if_not_in_rsll(raster_even_if_not_in_rsll); |
if (skip_layer) |
continue; |