Index: cc/trees/draw_property_utils.cc |
diff --git a/cc/trees/draw_property_utils.cc b/cc/trees/draw_property_utils.cc |
index 66b86d15bfbb71fe278ff96d684a3df45c2f11c0..94b2e5d15ad05fbb6f690b61ee2cee9b343f4f95 100644 |
--- a/cc/trees/draw_property_utils.cc |
+++ b/cc/trees/draw_property_utils.cc |
@@ -460,10 +460,9 @@ static inline bool LayerShouldBeSkippedInternal( |
if (effect_node->has_render_surface && effect_node->subtree_has_copy_request) |
return false; |
- // If the layer transform is not invertible, it should be skipped. |
- // TODO(ajuma): Correctly process subtrees with singular transform for the |
- // case where we may animate to a non-singular transform and wish to |
- // pre-raster. |
+ |
+ // If the layer transform is not invertible, it should be skipped. In case the |
+ // transform is animating and singular, we should not skip it. |
return !transform_node->node_and_ancestors_are_animated_or_invertible || |
effect_node->hidden_by_backface_visibility || !effect_node->is_drawn; |
} |
@@ -800,15 +799,17 @@ void ConcatInverseSurfaceContentsScale(const EffectNode* effect_node, |
1.0 / effect_node->surface_contents_scale.y()); |
} |
-bool LayerShouldBeSkipped(LayerImpl* layer, |
- const TransformTree& transform_tree, |
- const EffectTree& effect_tree) { |
+bool LayerShouldBeSkippedForDrawPropertiesComputation( |
+ LayerImpl* layer, |
+ const TransformTree& transform_tree, |
+ const EffectTree& effect_tree) { |
return LayerShouldBeSkippedInternal(layer, transform_tree, effect_tree); |
} |
-bool LayerShouldBeSkipped(Layer* layer, |
- const TransformTree& transform_tree, |
- const EffectTree& effect_tree) { |
+bool LayerShouldBeSkippedForDrawPropertiesComputation( |
+ Layer* layer, |
+ const TransformTree& transform_tree, |
+ const EffectTree& effect_tree) { |
return LayerShouldBeSkippedInternal(layer, transform_tree, effect_tree); |
} |
@@ -818,8 +819,8 @@ void FindLayersThatNeedUpdates(LayerTreeHost* layer_tree_host, |
const TransformTree& transform_tree = property_trees->transform_tree; |
const EffectTree& effect_tree = property_trees->effect_tree; |
for (auto* layer : *layer_tree_host) { |
- if (!IsRootLayer(layer) && |
- LayerShouldBeSkipped(layer, transform_tree, effect_tree)) |
+ if (!IsRootLayer(layer) && LayerShouldBeSkippedForDrawPropertiesComputation( |
+ layer, transform_tree, effect_tree)) |
continue; |
bool layer_is_drawn = |
@@ -844,7 +845,8 @@ void FindLayersThatNeedUpdates(LayerTreeImpl* layer_tree_impl, |
for (auto* layer_impl : *layer_tree_impl) { |
if (!IsRootLayer(layer_impl) && |
- LayerShouldBeSkipped(layer_impl, transform_tree, effect_tree)) |
+ LayerShouldBeSkippedForDrawPropertiesComputation( |
+ layer_impl, transform_tree, effect_tree)) |
continue; |
bool layer_is_drawn = |