| 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..e899ca816489af1c003007e3e7599a93e3679519 100644
|
| --- a/cc/trees/layer_tree_host_common.cc
|
| +++ b/cc/trees/layer_tree_host_common.cc
|
| @@ -322,6 +322,28 @@ static void AddSurfaceToRenderSurfaceList(
|
| }
|
| }
|
|
|
| +static bool SkipForInvertibility(const LayerImpl* layer,
|
| + PropertyTrees* property_trees) {
|
| + const TransformNode* transform_node =
|
| + property_trees->transform_tree.Node(layer->transform_tree_index());
|
| + const EffectNode* effect_node =
|
| + property_trees->effect_tree.Node(layer->effect_tree_index());
|
| + bool non_root_copy_request =
|
| + effect_node->closest_ancestor_with_copy_request_id >
|
| + EffectTree::kContentsRootNodeId;
|
| + gfx::Transform from_target;
|
| + // If there is a copy request, we check the invertibility of the transform
|
| + // between the node corresponding to the layer and the node corresponding to
|
| + // the copy request. Otherwise, we are interested in the invertibility of
|
| + // screen space transform which is already cached on the transform node.
|
| + return non_root_copy_request
|
| + ? !property_trees->GetFromTarget(
|
| + layer->transform_tree_index(),
|
| + effect_node->closest_ancestor_with_copy_request_id,
|
| + &from_target)
|
| + : !transform_node->ancestors_are_invertible;
|
| +}
|
| +
|
| static void ComputeInitialRenderSurfaceList(
|
| LayerTreeImpl* layer_tree_impl,
|
| PropertyTrees* property_trees,
|
| @@ -354,9 +376,7 @@ static void ComputeInitialRenderSurfaceList(
|
| draw_property_utils::LayerShouldBeSkippedForDrawPropertiesComputation(
|
| layer, property_trees->transform_tree, property_trees->effect_tree);
|
|
|
| - const TransformNode* transform_node =
|
| - property_trees->transform_tree.Node(layer->transform_tree_index());
|
| - bool skip_for_invertibility = !transform_node->ancestors_are_invertible;
|
| + bool skip_for_invertibility = SkipForInvertibility(layer, property_trees);
|
|
|
| bool skip_layer = !is_root && (skip_draw_properties_computation ||
|
| skip_for_invertibility);
|
|
|