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 25805379548abe1a16d109ef1be7a64a3b6d5e19..ca048445bd3d36693eab2f4100295db93e809a97 100644 |
--- a/cc/trees/layer_tree_host_common.cc |
+++ b/cc/trees/layer_tree_host_common.cc |
@@ -378,11 +378,22 @@ static void ComputeInitialRenderSurfaceList( |
bool skip_for_invertibility = SkipForInvertibility(layer, property_trees); |
- 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; |