| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/trees/draw_property_utils.h" | 5 #include "cc/trees/draw_property_utils.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 DCHECK_EQ(effect_node->mask_layer_id, -1) << "layer: " << layer->id(); | 51 DCHECK_EQ(effect_node->mask_layer_id, -1) << "layer: " << layer->id(); |
| 52 DCHECK_EQ(effect_node->replica_layer_id, -1) << "layer: " << layer->id(); | 52 DCHECK_EQ(effect_node->replica_layer_id, -1) << "layer: " << layer->id(); |
| 53 DCHECK(effect_node->filters.IsEmpty()); | 53 DCHECK(effect_node->filters.IsEmpty()); |
| 54 DCHECK(effect_node->background_filters.IsEmpty()); | 54 DCHECK(effect_node->background_filters.IsEmpty()); |
| 55 } | 55 } |
| 56 | 56 |
| 57 void VerifySurfaceContentsScalesMatch(const int target_effect_id, | 57 void VerifySurfaceContentsScalesMatch(const int target_effect_id, |
| 58 const int target_transform_id, | 58 const int target_transform_id, |
| 59 const EffectTree& effect_tree, | 59 const EffectTree& effect_tree, |
| 60 const TransformTree& transform_tree) { | 60 const TransformTree& transform_tree) { |
| 61 if (target_effect_id == -1) { |
| 62 // This can happen when PaintArtifactCompositor builds property trees as it |
| 63 // doesn't set effect ids on clip nodes. |
| 64 return; |
| 65 } |
| 61 const TransformNode* target_transform_node = | 66 const TransformNode* target_transform_node = |
| 62 transform_tree.Node(target_transform_id); | 67 transform_tree.Node(target_transform_id); |
| 63 const EffectNode* target_effect_node = effect_tree.Node(target_effect_id); | 68 const EffectNode* target_effect_node = effect_tree.Node(target_effect_id); |
| 64 DCHECK(target_transform_node->surface_contents_scale == | 69 DCHECK(target_transform_node->surface_contents_scale == |
| 65 target_effect_node->surface_contents_scale) | 70 target_effect_node->surface_contents_scale) |
| 66 << " surface contents scale from transform tree: " | 71 << " surface contents scale from transform tree: " |
| 67 << target_transform_node->surface_contents_scale.ToString() | 72 << target_transform_node->surface_contents_scale.ToString() |
| 68 << " surface contents scale from effect tree: " | 73 << " surface contents scale from effect tree: " |
| 69 << target_effect_node->surface_contents_scale.ToString(); | 74 << target_effect_node->surface_contents_scale.ToString(); |
| 70 } | 75 } |
| (...skipping 22 matching lines...) Expand all Loading... |
| 93 ContentsTargetEffectNode(layer->effect_tree_index(), effect_tree); | 98 ContentsTargetEffectNode(layer->effect_tree_index(), effect_tree); |
| 94 gfx::Transform clip_to_target; | 99 gfx::Transform clip_to_target; |
| 95 if (clip_node->target_transform_id > target_node_id) { | 100 if (clip_node->target_transform_id > target_node_id) { |
| 96 // In this case, layer has a scroll parent. We need to keep the scale | 101 // In this case, layer has a scroll parent. We need to keep the scale |
| 97 // at the layer's target but remove the scale at the scroll parent's | 102 // at the layer's target but remove the scale at the scroll parent's |
| 98 // target. | 103 // target. |
| 99 if (property_trees->ComputeTransformToTarget(clip_node->target_transform_id, | 104 if (property_trees->ComputeTransformToTarget(clip_node->target_transform_id, |
| 100 target_effect_node->id, | 105 target_effect_node->id, |
| 101 &clip_to_target)) { | 106 &clip_to_target)) { |
| 102 // We don't have to apply surface contents scale when target is root. | 107 // We don't have to apply surface contents scale when target is root. |
| 103 if (target_node_id != 0) { | 108 if (target_effect_node->id != 1) { |
| 104 PostConcatSurfaceContentsScale(target_effect_node, &clip_to_target); | 109 PostConcatSurfaceContentsScale(target_effect_node, &clip_to_target); |
| 105 #if DCHECK_IS_ON() | 110 #if DCHECK_IS_ON() |
| 106 const TransformTree& transform_tree = property_trees->transform_tree; | 111 const TransformTree& transform_tree = property_trees->transform_tree; |
| 107 VerifySurfaceContentsScalesMatch(layer->effect_tree_index(), | 112 VerifySurfaceContentsScalesMatch(layer->effect_tree_index(), |
| 108 target_node_id, effect_tree, | 113 target_node_id, effect_tree, |
| 109 transform_tree); | 114 transform_tree); |
| 110 #endif | 115 #endif |
| 111 } | 116 } |
| 112 | 117 |
| 113 const EffectNode* source_node = | 118 const EffectNode* source_node = |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 const PropertyTrees* property_trees, | 177 const PropertyTrees* property_trees, |
| 173 int current_transform_id, | 178 int current_transform_id, |
| 174 int target_transform_id, | 179 int target_transform_id, |
| 175 int target_effect_id) { | 180 int target_effect_id) { |
| 176 gfx::Transform current_to_target; | 181 gfx::Transform current_to_target; |
| 177 if (!property_trees->ComputeTransformToTarget( | 182 if (!property_trees->ComputeTransformToTarget( |
| 178 current_transform_id, target_effect_id, ¤t_to_target)) | 183 current_transform_id, target_effect_id, ¤t_to_target)) |
| 179 // If transform is not invertible, cannot apply clip. | 184 // If transform is not invertible, cannot apply clip. |
| 180 return ConditionalClip{false, gfx::RectF()}; | 185 return ConditionalClip{false, gfx::RectF()}; |
| 181 // We don't have to apply surface contents scale when target is root. | 186 // We don't have to apply surface contents scale when target is root. |
| 182 if (target_transform_id != 0) { | 187 if (target_effect_id != 1) { |
| 183 const EffectTree& effect_tree = property_trees->effect_tree; | 188 const EffectTree& effect_tree = property_trees->effect_tree; |
| 184 const EffectNode* target_effect_node = effect_tree.Node(target_effect_id); | 189 const EffectNode* target_effect_node = effect_tree.Node(target_effect_id); |
| 185 PostConcatSurfaceContentsScale(target_effect_node, ¤t_to_target); | 190 PostConcatSurfaceContentsScale(target_effect_node, ¤t_to_target); |
| 186 #if DCHECK_IS_ON() | 191 #if DCHECK_IS_ON() |
| 187 const TransformTree& transform_tree = property_trees->transform_tree; | 192 const TransformTree& transform_tree = property_trees->transform_tree; |
| 188 VerifySurfaceContentsScalesMatch(target_effect_id, target_transform_id, | 193 VerifySurfaceContentsScalesMatch(target_effect_id, target_transform_id, |
| 189 effect_tree, transform_tree); | 194 effect_tree, transform_tree); |
| 190 #endif | 195 #endif |
| 191 } | 196 } |
| 192 | 197 |
| (...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 514 } else { | 519 } else { |
| 515 bool success = transform_tree.ComputeTransform( | 520 bool success = transform_tree.ComputeTransform( |
| 516 target_node_id, transform_node->id, &target_to_layer); | 521 target_node_id, transform_node->id, &target_to_layer); |
| 517 if (!success) { | 522 if (!success) { |
| 518 // An animated singular transform may become non-singular during the | 523 // An animated singular transform may become non-singular during the |
| 519 // animation, so we still need to compute a visible rect. In this | 524 // animation, so we still need to compute a visible rect. In this |
| 520 // situation, we treat the entire layer as visible. | 525 // situation, we treat the entire layer as visible. |
| 521 layer->set_visible_layer_rect(gfx::Rect(layer_bounds)); | 526 layer->set_visible_layer_rect(gfx::Rect(layer_bounds)); |
| 522 continue; | 527 continue; |
| 523 } | 528 } |
| 524 if (target_node_id != 0) { | 529 const EffectNode* target_effect_node = |
| 525 const EffectNode* target_effect_node = | 530 ContentsTargetEffectNode(layer->effect_tree_index(), effect_tree); |
| 526 ContentsTargetEffectNode(layer->effect_tree_index(), effect_tree); | 531 if (target_effect_node->id != 1) { |
| 527 ConcatInverseSurfaceContentsScale(target_effect_node, &target_to_layer); | 532 ConcatInverseSurfaceContentsScale(target_effect_node, &target_to_layer); |
| 528 #if DCHECK_IS_ON() | 533 #if DCHECK_IS_ON() |
| 529 VerifySurfaceContentsScalesMatch(target_effect_node->id, target_node_id, | 534 VerifySurfaceContentsScalesMatch(target_effect_node->id, target_node_id, |
| 530 effect_tree, transform_tree); | 535 effect_tree, transform_tree); |
| 531 #endif | 536 #endif |
| 532 } | 537 } |
| 533 } | 538 } |
| 534 gfx::Transform target_to_content; | 539 gfx::Transform target_to_content; |
| 535 target_to_content.Translate(-layer->offset_to_transform_parent().x(), | 540 target_to_content.Translate(-layer->offset_to_transform_parent().x(), |
| 536 -layer->offset_to_transform_parent().y()); | 541 -layer->offset_to_transform_parent().y()); |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 725 } | 730 } |
| 726 | 731 |
| 727 static void ResetIfHasNanCoordinate(gfx::RectF* rect) { | 732 static void ResetIfHasNanCoordinate(gfx::RectF* rect) { |
| 728 if (std::isnan(rect->x()) || std::isnan(rect->y()) || | 733 if (std::isnan(rect->x()) || std::isnan(rect->y()) || |
| 729 std::isnan(rect->right()) || std::isnan(rect->bottom())) | 734 std::isnan(rect->right()) || std::isnan(rect->bottom())) |
| 730 *rect = gfx::RectF(); | 735 *rect = gfx::RectF(); |
| 731 } | 736 } |
| 732 | 737 |
| 733 void PostConcatSurfaceContentsScale(const EffectNode* effect_node, | 738 void PostConcatSurfaceContentsScale(const EffectNode* effect_node, |
| 734 gfx::Transform* transform) { | 739 gfx::Transform* transform) { |
| 740 if (!effect_node) { |
| 741 // This can happen when PaintArtifactCompositor builds property trees as it |
| 742 // doesn't set effect ids on clip nodes. |
| 743 return; |
| 744 } |
| 735 DCHECK(effect_node->has_render_surface); | 745 DCHECK(effect_node->has_render_surface); |
| 736 transform->matrix().postScale(effect_node->surface_contents_scale.x(), | 746 transform->matrix().postScale(effect_node->surface_contents_scale.x(), |
| 737 effect_node->surface_contents_scale.y(), 1.f); | 747 effect_node->surface_contents_scale.y(), 1.f); |
| 738 } | 748 } |
| 739 | 749 |
| 740 void ConcatInverseSurfaceContentsScale(const EffectNode* effect_node, | 750 void ConcatInverseSurfaceContentsScale(const EffectNode* effect_node, |
| 741 gfx::Transform* transform) { | 751 gfx::Transform* transform) { |
| 742 DCHECK(effect_node->has_render_surface); | 752 DCHECK(effect_node->has_render_surface); |
| 743 if (effect_node->surface_contents_scale.x() != 0.0 && | 753 if (effect_node->surface_contents_scale.x() != 0.0 && |
| 744 effect_node->surface_contents_scale.y() != 0.0) | 754 effect_node->surface_contents_scale.y() != 0.0) |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 785 parent_clip_node->combined_clip_in_target_space; | 795 parent_clip_node->combined_clip_in_target_space; |
| 786 gfx::RectF parent_clip_in_target_space = | 796 gfx::RectF parent_clip_in_target_space = |
| 787 parent_clip_node->clip_in_target_space; | 797 parent_clip_node->clip_in_target_space; |
| 788 if (parent_target_transform_node && | 798 if (parent_target_transform_node && |
| 789 parent_target_transform_node->id != clip_node->target_transform_id && | 799 parent_target_transform_node->id != clip_node->target_transform_id && |
| 790 non_root_surfaces_enabled) { | 800 non_root_surfaces_enabled) { |
| 791 success &= property_trees->ComputeTransformToTarget( | 801 success &= property_trees->ComputeTransformToTarget( |
| 792 parent_target_transform_node->id, clip_node->target_effect_id, | 802 parent_target_transform_node->id, clip_node->target_effect_id, |
| 793 &parent_to_current); | 803 &parent_to_current); |
| 794 // We don't have to apply surface contents scale when target is root. | 804 // We don't have to apply surface contents scale when target is root. |
| 795 if (clip_node->target_transform_id != 0) { | 805 if (clip_node->target_effect_id != 1) { |
| 796 const EffectNode* target_effect_node = | 806 const EffectNode* target_effect_node = |
| 797 effect_tree.Node(clip_node->target_effect_id); | 807 effect_tree.Node(clip_node->target_effect_id); |
| 798 PostConcatSurfaceContentsScale(target_effect_node, &parent_to_current); | 808 PostConcatSurfaceContentsScale(target_effect_node, &parent_to_current); |
| 799 #if DCHECK_IS_ON() | 809 #if DCHECK_IS_ON() |
| 800 VerifySurfaceContentsScalesMatch(clip_node->target_effect_id, | 810 VerifySurfaceContentsScalesMatch(clip_node->target_effect_id, |
| 801 clip_node->target_transform_id, | 811 clip_node->target_transform_id, |
| 802 effect_tree, transform_tree); | 812 effect_tree, transform_tree); |
| 803 #endif | 813 #endif |
| 804 } | 814 } |
| 805 if (parent_clip_node->target_transform_id != 0) { | 815 if (parent_clip_node->target_effect_id != 1) { |
| 806 const EffectNode* parent_target_effect_node = | 816 const EffectNode* parent_target_effect_node = |
| 807 effect_tree.Node(parent_clip_node->target_effect_id); | 817 effect_tree.Node(parent_clip_node->target_effect_id); |
| 808 ConcatInverseSurfaceContentsScale(parent_target_effect_node, | 818 ConcatInverseSurfaceContentsScale(parent_target_effect_node, |
| 809 &parent_to_current); | 819 &parent_to_current); |
| 810 #if DCHECK_IS_ON() | 820 #if DCHECK_IS_ON() |
| 811 VerifySurfaceContentsScalesMatch(parent_clip_node->target_effect_id, | 821 VerifySurfaceContentsScalesMatch(parent_clip_node->target_effect_id, |
| 812 parent_clip_node->target_transform_id, | 822 parent_clip_node->target_transform_id, |
| 813 effect_tree, transform_tree); | 823 effect_tree, transform_tree); |
| 814 #endif | 824 #endif |
| 815 } | 825 } |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 865 | 875 |
| 866 if (!non_root_surfaces_enabled) { | 876 if (!non_root_surfaces_enabled) { |
| 867 source_to_target = transform_tree.ToScreen(clip_node->transform_id); | 877 source_to_target = transform_tree.ToScreen(clip_node->transform_id); |
| 868 } else if (transform_tree.ContentTargetId(transform_node->id) == | 878 } else if (transform_tree.ContentTargetId(transform_node->id) == |
| 869 clip_node->target_transform_id) { | 879 clip_node->target_transform_id) { |
| 870 source_to_target = transform_tree.ToTarget(clip_node->transform_id); | 880 source_to_target = transform_tree.ToTarget(clip_node->transform_id); |
| 871 } else { | 881 } else { |
| 872 success = property_trees->ComputeTransformToTarget( | 882 success = property_trees->ComputeTransformToTarget( |
| 873 transform_node->id, clip_node->target_effect_id, &source_to_target); | 883 transform_node->id, clip_node->target_effect_id, &source_to_target); |
| 874 // We don't have to apply surface contents scale when target is root. | 884 // We don't have to apply surface contents scale when target is root. |
| 875 if (clip_node->target_transform_id != 0) { | 885 if (clip_node->target_effect_id != 1) { |
| 876 const EffectNode* target_effect_node = | 886 const EffectNode* target_effect_node = |
| 877 effect_tree.Node(clip_node->target_effect_id); | 887 effect_tree.Node(clip_node->target_effect_id); |
| 878 PostConcatSurfaceContentsScale(target_effect_node, &source_to_target); | 888 PostConcatSurfaceContentsScale(target_effect_node, &source_to_target); |
| 879 #if DCHECK_IS_ON() | 889 #if DCHECK_IS_ON() |
| 880 VerifySurfaceContentsScalesMatch(clip_node->target_effect_id, | 890 VerifySurfaceContentsScalesMatch(clip_node->target_effect_id, |
| 881 clip_node->target_transform_id, | 891 clip_node->target_transform_id, |
| 882 effect_tree, transform_tree); | 892 effect_tree, transform_tree); |
| 883 #endif | 893 #endif |
| 884 } | 894 } |
| 885 // source_to_target computation should be successful as target is an | 895 // source_to_target computation should be successful as target is an |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1026 PropertyTrees* property_trees) { | 1036 PropertyTrees* property_trees) { |
| 1027 const int source_id = layer->transform_tree_index(); | 1037 const int source_id = layer->transform_tree_index(); |
| 1028 int destination_id = FindTargetTransformTreeIndexFromEffectTree( | 1038 int destination_id = FindTargetTransformTreeIndexFromEffectTree( |
| 1029 property_trees->effect_tree, layer->effect_tree_index()); | 1039 property_trees->effect_tree, layer->effect_tree_index()); |
| 1030 const EffectNode* target_effect_node = ContentsTargetEffectNode( | 1040 const EffectNode* target_effect_node = ContentsTargetEffectNode( |
| 1031 layer->effect_tree_index(), property_trees->effect_tree); | 1041 layer->effect_tree_index(), property_trees->effect_tree); |
| 1032 gfx::Transform draw_transform; | 1042 gfx::Transform draw_transform; |
| 1033 property_trees->ComputeTransformToTarget(source_id, target_effect_node->id, | 1043 property_trees->ComputeTransformToTarget(source_id, target_effect_node->id, |
| 1034 &draw_transform); | 1044 &draw_transform); |
| 1035 // We don't have to apply surface contents scale when target is root. | 1045 // We don't have to apply surface contents scale when target is root. |
| 1036 if (destination_id != 0) { | 1046 if (target_effect_node->id != 1) { |
| 1037 PostConcatSurfaceContentsScale(target_effect_node, &draw_transform); | 1047 PostConcatSurfaceContentsScale(target_effect_node, &draw_transform); |
| 1038 #if DCHECK_IS_ON() | 1048 #if DCHECK_IS_ON() |
| 1039 VerifySurfaceContentsScalesMatch(layer->effect_tree_index(), destination_id, | 1049 VerifySurfaceContentsScalesMatch(layer->effect_tree_index(), destination_id, |
| 1040 property_trees->effect_tree, | 1050 property_trees->effect_tree, |
| 1041 property_trees->transform_tree); | 1051 property_trees->transform_tree); |
| 1042 #endif | 1052 #endif |
| 1043 } | 1053 } |
| 1044 if (layer->should_flatten_transform_from_property_tree()) | 1054 if (layer->should_flatten_transform_from_property_tree()) |
| 1045 draw_transform.FlattenTo2d(); | 1055 draw_transform.FlattenTo2d(); |
| 1046 draw_transform.Translate(layer->offset_to_transform_parent().x(), | 1056 draw_transform.Translate(layer->offset_to_transform_parent().x(), |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1220 transform_tree.Node(render_surface->TransformTreeIndex()); | 1230 transform_tree.Node(render_surface->TransformTreeIndex()); |
| 1221 const EffectNode* effect_node = | 1231 const EffectNode* effect_node = |
| 1222 effect_tree.Node(render_surface->EffectTreeIndex()); | 1232 effect_tree.Node(render_surface->EffectTreeIndex()); |
| 1223 // The draw transform of root render surface is identity tranform. | 1233 // The draw transform of root render surface is identity tranform. |
| 1224 if (transform_node->id == 1) { | 1234 if (transform_node->id == 1) { |
| 1225 render_surface->SetDrawTransform(gfx::Transform()); | 1235 render_surface->SetDrawTransform(gfx::Transform()); |
| 1226 return; | 1236 return; |
| 1227 } | 1237 } |
| 1228 | 1238 |
| 1229 gfx::Transform render_surface_transform; | 1239 gfx::Transform render_surface_transform; |
| 1230 const TransformNode* target_transform_node = | |
| 1231 transform_tree.Node(transform_tree.TargetId(transform_node->id)); | |
| 1232 const EffectNode* target_effect_node = | 1240 const EffectNode* target_effect_node = |
| 1233 effect_tree.Node(effect_node->target_id); | 1241 effect_tree.Node(effect_node->target_id); |
| 1234 property_trees->ComputeTransformToTarget( | 1242 property_trees->ComputeTransformToTarget( |
| 1235 transform_node->id, target_effect_node->id, &render_surface_transform); | 1243 transform_node->id, target_effect_node->id, &render_surface_transform); |
| 1236 // We don't have to apply surface contents scale when target is root. | 1244 // We don't have to apply surface contents scale when target is root. |
| 1237 if (target_transform_node->id != 0) { | 1245 if (effect_node->target_id != 1) { |
| 1238 PostConcatSurfaceContentsScale(target_effect_node, | 1246 PostConcatSurfaceContentsScale(target_effect_node, |
| 1239 &render_surface_transform); | 1247 &render_surface_transform); |
| 1240 #if DCHECK_IS_ON() | 1248 #if DCHECK_IS_ON() |
| 1249 const TransformNode* target_transform_node = |
| 1250 transform_tree.Node(transform_tree.TargetId(transform_node->id)); |
| 1241 VerifySurfaceContentsScalesMatch(effect_node->target_id, | 1251 VerifySurfaceContentsScalesMatch(effect_node->target_id, |
| 1242 target_transform_node->id, effect_tree, | 1252 target_transform_node->id, effect_tree, |
| 1243 transform_tree); | 1253 transform_tree); |
| 1244 #endif | 1254 #endif |
| 1245 } | 1255 } |
| 1246 | 1256 |
| 1247 ConcatInverseSurfaceContentsScale(effect_node, &render_surface_transform); | 1257 ConcatInverseSurfaceContentsScale(effect_node, &render_surface_transform); |
| 1248 #if DCHECK_IS_ON() | 1258 #if DCHECK_IS_ON() |
| 1249 VerifySurfaceContentsScalesMatch(effect_node->id, transform_node->id, | 1259 VerifySurfaceContentsScalesMatch(effect_node->id, transform_node->id, |
| 1250 effect_tree, transform_tree); | 1260 effect_tree, transform_tree); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1289 const bool success = property_trees->ComputeTransformToTarget( | 1299 const bool success = property_trees->ComputeTransformToTarget( |
| 1290 parent_clip_node->target_transform_id, target_effect_id, | 1300 parent_clip_node->target_transform_id, target_effect_id, |
| 1291 &clip_parent_target_to_target); | 1301 &clip_parent_target_to_target); |
| 1292 | 1302 |
| 1293 if (!success) { | 1303 if (!success) { |
| 1294 render_surface->SetClipRect(gfx::Rect()); | 1304 render_surface->SetClipRect(gfx::Rect()); |
| 1295 return; | 1305 return; |
| 1296 } | 1306 } |
| 1297 | 1307 |
| 1298 // We don't have to apply surface contents scale when target is root. | 1308 // We don't have to apply surface contents scale when target is root. |
| 1299 if (transform_tree.TargetId(transform_node->id) != 0) { | 1309 if (render_surface->EffectTreeIndex() != 1) { |
| 1300 const EffectNode* effect_node = | 1310 const EffectNode* effect_node = |
| 1301 effect_tree.Node(render_surface->EffectTreeIndex()); | 1311 effect_tree.Node(render_surface->EffectTreeIndex()); |
| 1302 PostConcatSurfaceContentsScale(effect_node, &clip_parent_target_to_target); | 1312 PostConcatSurfaceContentsScale(effect_node, &clip_parent_target_to_target); |
| 1303 #if DCHECK_IS_ON() | 1313 #if DCHECK_IS_ON() |
| 1304 VerifySurfaceContentsScalesMatch( | 1314 VerifySurfaceContentsScalesMatch( |
| 1305 render_surface->EffectTreeIndex(), | 1315 render_surface->EffectTreeIndex(), |
| 1306 transform_tree.TargetId(transform_node->id), effect_tree, | 1316 transform_tree.TargetId(transform_node->id), effect_tree, |
| 1307 transform_tree); | 1317 transform_tree); |
| 1308 #endif | 1318 #endif |
| 1309 } | 1319 } |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1380 static gfx::Transform ReplicaToSurfaceTransform( | 1390 static gfx::Transform ReplicaToSurfaceTransform( |
| 1381 const RenderSurfaceImpl* render_surface, | 1391 const RenderSurfaceImpl* render_surface, |
| 1382 const PropertyTrees* property_trees) { | 1392 const PropertyTrees* property_trees) { |
| 1383 gfx::Transform replica_to_surface; | 1393 gfx::Transform replica_to_surface; |
| 1384 if (!render_surface->HasReplica()) | 1394 if (!render_surface->HasReplica()) |
| 1385 return replica_to_surface; | 1395 return replica_to_surface; |
| 1386 const LayerImpl* replica_layer = render_surface->ReplicaLayer(); | 1396 const LayerImpl* replica_layer = render_surface->ReplicaLayer(); |
| 1387 const EffectTree& effect_tree = property_trees->effect_tree; | 1397 const EffectTree& effect_tree = property_trees->effect_tree; |
| 1388 const EffectNode* surface_effect_node = | 1398 const EffectNode* surface_effect_node = |
| 1389 effect_tree.Node(render_surface->EffectTreeIndex()); | 1399 effect_tree.Node(render_surface->EffectTreeIndex()); |
| 1390 if (render_surface->TransformTreeIndex() != 0) { | 1400 if (render_surface->EffectTreeIndex() != 1) { |
| 1391 replica_to_surface.Scale(surface_effect_node->surface_contents_scale.x(), | 1401 replica_to_surface.Scale(surface_effect_node->surface_contents_scale.x(), |
| 1392 surface_effect_node->surface_contents_scale.y()); | 1402 surface_effect_node->surface_contents_scale.y()); |
| 1393 #if DCHECK_IS_ON() | 1403 #if DCHECK_IS_ON() |
| 1394 const TransformTree& transform_tree = property_trees->transform_tree; | 1404 const TransformTree& transform_tree = property_trees->transform_tree; |
| 1395 VerifySurfaceContentsScalesMatch(render_surface->EffectTreeIndex(), | 1405 VerifySurfaceContentsScalesMatch(render_surface->EffectTreeIndex(), |
| 1396 render_surface->TransformTreeIndex(), | 1406 render_surface->TransformTreeIndex(), |
| 1397 effect_tree, transform_tree); | 1407 effect_tree, transform_tree); |
| 1398 #endif | 1408 #endif |
| 1399 } | 1409 } |
| 1400 replica_to_surface.Translate(replica_layer->offset_to_transform_parent().x(), | 1410 replica_to_surface.Translate(replica_layer->offset_to_transform_parent().x(), |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1583 void UpdateElasticOverscroll(PropertyTrees* property_trees, | 1593 void UpdateElasticOverscroll(PropertyTrees* property_trees, |
| 1584 const Layer* overscroll_elasticity_layer, | 1594 const Layer* overscroll_elasticity_layer, |
| 1585 const gfx::Vector2dF& elastic_overscroll) { | 1595 const gfx::Vector2dF& elastic_overscroll) { |
| 1586 UpdateElasticOverscrollInternal(property_trees, overscroll_elasticity_layer, | 1596 UpdateElasticOverscrollInternal(property_trees, overscroll_elasticity_layer, |
| 1587 elastic_overscroll); | 1597 elastic_overscroll); |
| 1588 } | 1598 } |
| 1589 | 1599 |
| 1590 } // namespace draw_property_utils | 1600 } // namespace draw_property_utils |
| 1591 | 1601 |
| 1592 } // namespace cc | 1602 } // namespace cc |
| OLD | NEW |