| Index: cc/trees/property_tree.cc
|
| diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc
|
| index f23bc969cedee91ff6adee4ad704770b6f5190f4..2f7f40fd9993fab7ca61beda5041c0ff2e9c436a 100644
|
| --- a/cc/trees/property_tree.cc
|
| +++ b/cc/trees/property_tree.cc
|
| @@ -1986,20 +1986,29 @@ bool PropertyTrees::ComputeTransformToTarget(int transform_id,
|
| transform->MakeIdentity();
|
|
|
| int target_transform_id;
|
| + const EffectNode* effect_node = effect_tree.Node(effect_id);
|
| if (effect_id == EffectTree::kInvalidNodeId) {
|
| // This can happen when PaintArtifactCompositor builds property trees as
|
| // it doesn't set effect ids on clip nodes. We want to compute transform
|
| // to the root in this case.
|
| target_transform_id = TransformTree::kRootNodeId;
|
| } else {
|
| - const EffectNode* effect_node = effect_tree.Node(effect_id);
|
| DCHECK(effect_node->has_render_surface ||
|
| effect_node->id == EffectTree::kRootNodeId);
|
| target_transform_id = effect_node->transform_id;
|
| }
|
|
|
| - return transform_tree.ComputeTransform(transform_id, target_transform_id,
|
| - transform);
|
| + if (!verify_transform_tree_calculations || transform_id < target_transform_id)
|
| + return transform_tree.ComputeTransform(transform_id, target_transform_id,
|
| + transform);
|
| + transform->ConcatTransform(
|
| + GetDrawTransforms(transform_id, effect_id).to_target);
|
| + if (effect_node->surface_contents_scale.x() != 0.f &&
|
| + effect_node->surface_contents_scale.y() != 0.f)
|
| + transform->matrix().postScale(
|
| + 1.0f / effect_node->surface_contents_scale.x(),
|
| + 1.0f / effect_node->surface_contents_scale.y(), 1.0f);
|
| + return true;
|
| }
|
|
|
| bool PropertyTrees::ComputeTransformFromTarget(
|
| @@ -2009,20 +2018,27 @@ bool PropertyTrees::ComputeTransformFromTarget(
|
| transform->MakeIdentity();
|
|
|
| int target_transform_id;
|
| + const EffectNode* effect_node = effect_tree.Node(effect_id);
|
| if (effect_id == EffectTree::kInvalidNodeId) {
|
| // This can happen when PaintArtifactCompositor builds property trees as
|
| // it doesn't set effect ids on clip nodes. We want to compute transform
|
| // to the root in this case.
|
| target_transform_id = TransformTree::kRootNodeId;
|
| } else {
|
| - const EffectNode* effect_node = effect_tree.Node(effect_id);
|
| DCHECK(effect_node->has_render_surface ||
|
| effect_node->id == EffectTree::kRootNodeId);
|
| target_transform_id = effect_node->transform_id;
|
| }
|
|
|
| - return transform_tree.ComputeTransform(target_transform_id, transform_id,
|
| - transform);
|
| + if (!verify_transform_tree_calculations || transform_id > target_transform_id)
|
| + return transform_tree.ComputeTransform(target_transform_id, transform_id,
|
| + transform);
|
| +
|
| + auto draw_transforms = GetDrawTransforms(transform_id, effect_id);
|
| + transform->ConcatTransform(draw_transforms.from_target);
|
| + transform->Scale(effect_node->surface_contents_scale.x(),
|
| + effect_node->surface_contents_scale.y());
|
| + return draw_transforms.invertible;
|
| }
|
|
|
| } // namespace cc
|
|
|