Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1549)

Side by Side Diff: cc/trees/property_tree_builder.cc

Issue 2048723002: cc: Compute mask draw properties directly (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/property_tree_builder.h" 5 #include "cc/trees/property_tree_builder.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 gfx::Transform to_parent; 469 gfx::Transform to_parent;
470 data_from_ancestor.property_trees->transform_tree.ComputeTransform( 470 data_from_ancestor.property_trees->transform_tree.ComputeTransform(
471 source_index, parent_index, &to_parent); 471 source_index, parent_index, &to_parent);
472 source_to_parent = to_parent.To2dTranslation(); 472 source_to_parent = to_parent.To2dTranslation();
473 } 473 }
474 layer->set_offset_to_transform_parent(source_offset + source_to_parent + 474 layer->set_offset_to_transform_parent(source_offset + source_to_parent +
475 local_offset); 475 local_offset);
476 layer->set_should_flatten_transform_from_property_tree( 476 layer->set_should_flatten_transform_from_property_tree(
477 data_from_ancestor.should_flatten); 477 data_from_ancestor.should_flatten);
478 layer->SetTransformTreeIndex(parent_index); 478 layer->SetTransformTreeIndex(parent_index);
479 if (layer->mask_layer())
480 layer->mask_layer()->SetTransformTreeIndex(parent_index);
481 return false; 479 return false;
482 } 480 }
483 481
484 data_for_children->property_trees->transform_tree.Insert(TransformNode(), 482 data_for_children->property_trees->transform_tree.Insert(TransformNode(),
485 parent_index); 483 parent_index);
486 484
487 TransformNode* node = 485 TransformNode* node =
488 data_for_children->property_trees->transform_tree.back(); 486 data_for_children->property_trees->transform_tree.back();
489 layer->SetTransformTreeIndex(node->id); 487 layer->SetTransformTreeIndex(node->id);
490 data_for_children->property_trees->transform_id_to_index_map[layer->id()] = 488 data_for_children->property_trees->transform_id_to_index_map[layer->id()] =
491 node->id; 489 node->id;
492 if (layer->mask_layer())
493 layer->mask_layer()->SetTransformTreeIndex(node->id);
494 490
495 node->data.scrolls = is_scrollable; 491 node->data.scrolls = is_scrollable;
496 node->data.flattens_inherited_transform = data_for_children->should_flatten; 492 node->data.flattens_inherited_transform = data_for_children->should_flatten;
497 493
498 node->data.sorting_context_id = layer->sorting_context_id(); 494 node->data.sorting_context_id = layer->sorting_context_id();
499 495
500 if (layer == data_from_ancestor.page_scale_layer) 496 if (layer == data_from_ancestor.page_scale_layer)
501 data_for_children->in_subtree_of_page_scale_layer = true; 497 data_for_children->in_subtree_of_page_scale_layer = true;
502 node->data.in_subtree_of_page_scale_layer = 498 node->data.in_subtree_of_page_scale_layer =
503 data_for_children->in_subtree_of_page_scale_layer; 499 data_for_children->in_subtree_of_page_scale_layer;
(...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after
1052 static void SetLayerPropertyChangedForChild(LayerImpl* parent, 1048 static void SetLayerPropertyChangedForChild(LayerImpl* parent,
1053 LayerImpl* child) {} 1049 LayerImpl* child) {}
1054 1050
1055 template <typename LayerType> 1051 template <typename LayerType>
1056 void BuildPropertyTreesInternal( 1052 void BuildPropertyTreesInternal(
1057 LayerType* layer, 1053 LayerType* layer,
1058 const DataForRecursion<LayerType>& data_from_parent, 1054 const DataForRecursion<LayerType>& data_from_parent,
1059 DataForRecursionFromChild<LayerType>* data_to_parent) { 1055 DataForRecursionFromChild<LayerType>* data_to_parent) {
1060 layer->set_property_tree_sequence_number( 1056 layer->set_property_tree_sequence_number(
1061 data_from_parent.property_trees->sequence_number); 1057 data_from_parent.property_trees->sequence_number);
1062 if (layer->mask_layer())
1063 layer->mask_layer()->set_property_tree_sequence_number(
1064 data_from_parent.property_trees->sequence_number);
1065 1058
1066 DataForRecursion<LayerType> data_for_children(data_from_parent); 1059 DataForRecursion<LayerType> data_for_children(data_from_parent);
1067 1060
1068 bool created_render_surface = 1061 bool created_render_surface =
1069 AddEffectNodeIfNeeded(data_from_parent, layer, &data_for_children); 1062 AddEffectNodeIfNeeded(data_from_parent, layer, &data_for_children);
1070 1063
1071 if (created_render_surface) { 1064 if (created_render_surface) {
1072 data_for_children.render_target = data_for_children.effect_tree_parent; 1065 data_for_children.render_target = data_for_children.effect_tree_parent;
1073 layer->set_draw_blend_mode(SkXfermode::kSrcOver_Mode); 1066 layer->set_draw_blend_mode(SkXfermode::kSrcOver_Mode);
1074 } else { 1067 } else {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1115 } 1108 }
1116 } 1109 }
1117 1110
1118 if (layer->has_replica()) { 1111 if (layer->has_replica()) {
1119 DataForRecursionFromChild<LayerType> data_from_child; 1112 DataForRecursionFromChild<LayerType> data_from_child;
1120 BuildPropertyTreesInternal(layer->replica_layer(), data_for_children, 1113 BuildPropertyTreesInternal(layer->replica_layer(), data_for_children,
1121 &data_from_child); 1114 &data_from_child);
1122 data_to_parent->Merge(data_from_child); 1115 data_to_parent->Merge(data_from_child);
1123 } 1116 }
1124 1117
1118 if (layer->mask_layer()) {
1119 layer->mask_layer()->set_property_tree_sequence_number(
1120 data_from_parent.property_trees->sequence_number);
1121 layer->mask_layer()->set_offset_to_transform_parent(
1122 layer->offset_to_transform_parent());
1123 layer->mask_layer()->SetTransformTreeIndex(layer->transform_tree_index());
1124 layer->mask_layer()->SetClipTreeIndex(layer->clip_tree_index());
1125 layer->mask_layer()->SetEffectTreeIndex(layer->effect_tree_index());
1126 layer->mask_layer()->SetScrollTreeIndex(layer->scroll_tree_index());
1127 }
1128
1125 EffectNode* effect_node = data_for_children.property_trees->effect_tree.Node( 1129 EffectNode* effect_node = data_for_children.property_trees->effect_tree.Node(
1126 data_for_children.effect_tree_parent); 1130 data_for_children.effect_tree_parent);
1127 1131
1128 if (effect_node->owner_id == layer->id()) { 1132 if (effect_node->owner_id == layer->id()) {
1129 if (effect_node->data.has_copy_request) 1133 if (effect_node->data.has_copy_request)
1130 data_to_parent->num_copy_requests_in_subtree++; 1134 data_to_parent->num_copy_requests_in_subtree++;
1131 effect_node->data.num_copy_requests_in_subtree = 1135 effect_node->data.num_copy_requests_in_subtree =
1132 data_to_parent->num_copy_requests_in_subtree; 1136 data_to_parent->num_copy_requests_in_subtree;
1133 } 1137 }
1134 } 1138 }
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
1320 if (SkColorGetA(color) != 255) 1324 if (SkColorGetA(color) != 255)
1321 color = SkColorSetA(color, 255); 1325 color = SkColorSetA(color, 255);
1322 BuildPropertyTreesTopLevelInternal( 1326 BuildPropertyTreesTopLevelInternal(
1323 root_layer, page_scale_layer, inner_viewport_scroll_layer, 1327 root_layer, page_scale_layer, inner_viewport_scroll_layer,
1324 outer_viewport_scroll_layer, overscroll_elasticity_layer, 1328 outer_viewport_scroll_layer, overscroll_elasticity_layer,
1325 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, 1329 elastic_overscroll, page_scale_factor, device_scale_factor, viewport,
1326 device_transform, property_trees, color); 1330 device_transform, property_trees, color);
1327 } 1331 }
1328 1332
1329 } // namespace cc 1333 } // namespace cc
OLDNEW
« cc/trees/layer_tree_host_common.cc ('K') | « cc/trees/layer_tree_host_common_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698