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

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

Issue 1975623002: cc : Add LayerToPropertyTreeIndices map to PropertyTrees (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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
« cc/trees/property_tree.cc ('K') | « cc/trees/property_tree.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 bool target_is_clipped; 52 bool target_is_clipped;
53 bool is_hidden; 53 bool is_hidden;
54 uint32_t main_thread_scrolling_reasons; 54 uint32_t main_thread_scrolling_reasons;
55 bool scroll_tree_parent_created_by_uninheritable_criteria; 55 bool scroll_tree_parent_created_by_uninheritable_criteria;
56 const gfx::Transform* device_transform; 56 const gfx::Transform* device_transform;
57 gfx::Vector2dF scroll_snap; 57 gfx::Vector2dF scroll_snap;
58 gfx::Transform compound_transform_since_render_target; 58 gfx::Transform compound_transform_since_render_target;
59 bool axis_align_since_render_target; 59 bool axis_align_since_render_target;
60 int sequence_number; 60 int sequence_number;
61 SkColor safe_opaque_background_color; 61 SkColor safe_opaque_background_color;
62 std::unordered_map<int, int>* transform_node_owner_to_node_map;
63 std::unordered_map<int, int>* effect_node_owner_to_node_map;
64 std::unordered_map<int, int>* clip_node_owner_to_node_map;
65 std::unordered_map<int, int>* scroll_node_owner_to_node_map;
ajuma 2016/05/13 14:38:53 DataForRecursion is starting to get pretty large.
jaydasika 2016/05/13 19:40:39 Acknowledged.
62 }; 66 };
63 67
64 template <typename LayerType> 68 template <typename LayerType>
65 struct DataForRecursionFromChild { 69 struct DataForRecursionFromChild {
66 int num_copy_requests_in_subtree; 70 int num_copy_requests_in_subtree;
67 71
68 DataForRecursionFromChild() : num_copy_requests_in_subtree(0) {} 72 DataForRecursionFromChild() : num_copy_requests_in_subtree(0) {}
69 73
70 void Merge(const DataForRecursionFromChild& data) { 74 void Merge(const DataForRecursionFromChild& data) {
71 num_copy_requests_in_subtree += data.num_copy_requests_in_subtree; 75 num_copy_requests_in_subtree += data.num_copy_requests_in_subtree;
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 350
347 node.data.applies_local_clip = layer_clips_subtree; 351 node.data.applies_local_clip = layer_clips_subtree;
348 node.data.resets_clip = has_unclipped_surface; 352 node.data.resets_clip = has_unclipped_surface;
349 node.data.target_is_clipped = data_for_children->target_is_clipped; 353 node.data.target_is_clipped = data_for_children->target_is_clipped;
350 node.data.layers_are_clipped = layers_are_clipped; 354 node.data.layers_are_clipped = layers_are_clipped;
351 node.data.layers_are_clipped_when_surfaces_disabled = 355 node.data.layers_are_clipped_when_surfaces_disabled =
352 layers_are_clipped_when_surfaces_disabled; 356 layers_are_clipped_when_surfaces_disabled;
353 357
354 data_for_children->clip_tree_parent = 358 data_for_children->clip_tree_parent =
355 data_for_children->clip_tree->Insert(node, parent_id); 359 data_for_children->clip_tree->Insert(node, parent_id);
360 (*data_for_children->clip_node_owner_to_node_map)[layer->id()] = node.id;
356 } 361 }
357 362
358 layer->SetClipTreeIndex(data_for_children->clip_tree_parent); 363 layer->SetClipTreeIndex(data_for_children->clip_tree_parent);
359 // TODO(awoloszyn): Right now when we hit a node with a replica, we reset the 364 // TODO(awoloszyn): Right now when we hit a node with a replica, we reset the
360 // clip for all children since we may need to draw. We need to figure out a 365 // clip for all children since we may need to draw. We need to figure out a
361 // better way, since we will need both the clipped and unclipped versions. 366 // better way, since we will need both the clipped and unclipped versions.
362 } 367 }
363 368
364 template <typename LayerType> 369 template <typename LayerType>
365 static inline bool IsAtBoundaryOf3dRenderingContext(LayerType* layer) { 370 static inline bool IsAtBoundaryOf3dRenderingContext(LayerType* layer) {
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 layer->SetTransformTreeIndex(parent_index); 505 layer->SetTransformTreeIndex(parent_index);
501 if (layer->mask_layer()) 506 if (layer->mask_layer())
502 layer->mask_layer()->SetTransformTreeIndex(parent_index); 507 layer->mask_layer()->SetTransformTreeIndex(parent_index);
503 return false; 508 return false;
504 } 509 }
505 510
506 data_for_children->transform_tree->Insert(TransformNode(), parent_index); 511 data_for_children->transform_tree->Insert(TransformNode(), parent_index);
507 512
508 TransformNode* node = data_for_children->transform_tree->back(); 513 TransformNode* node = data_for_children->transform_tree->back();
509 layer->SetTransformTreeIndex(node->id); 514 layer->SetTransformTreeIndex(node->id);
515 (*data_for_children->transform_node_owner_to_node_map)[layer->id()] =
516 node->id;
510 if (layer->mask_layer()) 517 if (layer->mask_layer())
511 layer->mask_layer()->SetTransformTreeIndex(node->id); 518 layer->mask_layer()->SetTransformTreeIndex(node->id);
512 519
513 node->data.scrolls = is_scrollable; 520 node->data.scrolls = is_scrollable;
514 node->data.flattens_inherited_transform = data_for_children->should_flatten; 521 node->data.flattens_inherited_transform = data_for_children->should_flatten;
515 522
516 node->data.sorting_context_id = layer->sorting_context_id(); 523 node->data.sorting_context_id = layer->sorting_context_id();
517 524
518 if (layer == data_from_ancestor.page_scale_layer) 525 if (layer == data_from_ancestor.page_scale_layer)
519 data_for_children->in_subtree_of_page_scale_layer = true; 526 data_for_children->in_subtree_of_page_scale_layer = true;
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 // Root render surface acts the unbounded and untransformed to draw content 861 // Root render surface acts the unbounded and untransformed to draw content
855 // into. Transform node created from root layer (includes device scale 862 // into. Transform node created from root layer (includes device scale
856 // factor) and clip node created from root layer (include viewports) applies 863 // factor) and clip node created from root layer (include viewports) applies
857 // to root render surface's content, but not root render surface itself. 864 // to root render surface's content, but not root render surface itself.
858 node.data.transform_id = kRootPropertyTreeNodeId; 865 node.data.transform_id = kRootPropertyTreeNodeId;
859 node.data.clip_id = kRootPropertyTreeNodeId; 866 node.data.clip_id = kRootPropertyTreeNodeId;
860 } 867 }
861 data_for_children->effect_tree_parent = 868 data_for_children->effect_tree_parent =
862 data_for_children->effect_tree->Insert(node, parent_id); 869 data_for_children->effect_tree->Insert(node, parent_id);
863 layer->SetEffectTreeIndex(data_for_children->effect_tree_parent); 870 layer->SetEffectTreeIndex(data_for_children->effect_tree_parent);
871 (*data_for_children->effect_node_owner_to_node_map)[layer->id()] = node.id;
864 if (should_create_render_surface) { 872 if (should_create_render_surface) {
865 data_for_children->compound_transform_since_render_target = 873 data_for_children->compound_transform_since_render_target =
866 gfx::Transform(); 874 gfx::Transform();
867 data_for_children->axis_align_since_render_target = true; 875 data_for_children->axis_align_since_render_target = true;
868 } 876 }
869 return should_create_render_surface; 877 return should_create_render_surface;
870 } 878 }
871 879
872 template <typename LayerType> 880 template <typename LayerType>
873 void AddScrollNodeIfNeeded( 881 void AddScrollNodeIfNeeded(
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
932 node.data.element_id = layer->element_id(); 940 node.data.element_id = layer->element_id();
933 node.data.transform_id = 941 node.data.transform_id =
934 data_for_children->transform_tree_parent->transform_tree_index(); 942 data_for_children->transform_tree_parent->transform_tree_index();
935 943
936 data_for_children->scroll_tree_parent = 944 data_for_children->scroll_tree_parent =
937 data_for_children->scroll_tree->Insert(node, parent_id); 945 data_for_children->scroll_tree->Insert(node, parent_id);
938 data_for_children->main_thread_scrolling_reasons = 946 data_for_children->main_thread_scrolling_reasons =
939 node.data.main_thread_scrolling_reasons; 947 node.data.main_thread_scrolling_reasons;
940 data_for_children->scroll_tree_parent_created_by_uninheritable_criteria = 948 data_for_children->scroll_tree_parent_created_by_uninheritable_criteria =
941 scroll_node_uninheritable_criteria; 949 scroll_node_uninheritable_criteria;
950 (*data_for_children->scroll_node_owner_to_node_map)[layer->id()] = node.id;
942 951
943 if (node.data.scrollable) { 952 if (node.data.scrollable) {
944 data_for_children->scroll_tree->SetBaseScrollOffset( 953 data_for_children->scroll_tree->SetBaseScrollOffset(
945 layer->id(), layer->CurrentScrollOffset()); 954 layer->id(), layer->CurrentScrollOffset());
946 } 955 }
947 } 956 }
948 957
949 layer->SetScrollTreeIndex(data_for_children->scroll_tree_parent); 958 layer->SetScrollTreeIndex(data_for_children->scroll_tree_parent);
950 } 959 }
951 960
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
1166 data_for_recursion.affected_by_inner_viewport_bounds_delta = false; 1175 data_for_recursion.affected_by_inner_viewport_bounds_delta = false;
1167 data_for_recursion.affected_by_outer_viewport_bounds_delta = false; 1176 data_for_recursion.affected_by_outer_viewport_bounds_delta = false;
1168 data_for_recursion.should_flatten = false; 1177 data_for_recursion.should_flatten = false;
1169 data_for_recursion.target_is_clipped = false; 1178 data_for_recursion.target_is_clipped = false;
1170 data_for_recursion.is_hidden = false; 1179 data_for_recursion.is_hidden = false;
1171 data_for_recursion.main_thread_scrolling_reasons = 1180 data_for_recursion.main_thread_scrolling_reasons =
1172 MainThreadScrollingReason::kNotScrollingOnMain; 1181 MainThreadScrollingReason::kNotScrollingOnMain;
1173 data_for_recursion.scroll_tree_parent_created_by_uninheritable_criteria = 1182 data_for_recursion.scroll_tree_parent_created_by_uninheritable_criteria =
1174 true; 1183 true;
1175 data_for_recursion.device_transform = &device_transform; 1184 data_for_recursion.device_transform = &device_transform;
1185 data_for_recursion.transform_node_owner_to_node_map =
1186 &property_trees->transform_node_owner_to_node_map;
1187 data_for_recursion.effect_node_owner_to_node_map =
1188 &property_trees->effect_node_owner_to_node_map;
1189 data_for_recursion.clip_node_owner_to_node_map =
1190 &property_trees->clip_node_owner_to_node_map;
1191 data_for_recursion.scroll_node_owner_to_node_map =
1192 &property_trees->scroll_node_owner_to_node_map;
1176 1193
1177 data_for_recursion.transform_tree->clear(); 1194 data_for_recursion.transform_tree->clear();
1178 data_for_recursion.clip_tree->clear(); 1195 data_for_recursion.clip_tree->clear();
1179 data_for_recursion.effect_tree->clear(); 1196 data_for_recursion.effect_tree->clear();
1180 data_for_recursion.scroll_tree->clear(); 1197 data_for_recursion.scroll_tree->clear();
1181 data_for_recursion.compound_transform_since_render_target = gfx::Transform(); 1198 data_for_recursion.compound_transform_since_render_target = gfx::Transform();
1182 data_for_recursion.axis_align_since_render_target = true; 1199 data_for_recursion.axis_align_since_render_target = true;
1183 data_for_recursion.sequence_number = property_trees->sequence_number; 1200 data_for_recursion.sequence_number = property_trees->sequence_number;
1184 data_for_recursion.transform_tree->set_device_scale_factor( 1201 data_for_recursion.transform_tree->set_device_scale_factor(
1185 device_scale_factor); 1202 device_scale_factor);
1186 data_for_recursion.safe_opaque_background_color = color; 1203 data_for_recursion.safe_opaque_background_color = color;
1204 data_for_recursion.transform_node_owner_to_node_map->clear();
1205 data_for_recursion.effect_node_owner_to_node_map->clear();
1206 data_for_recursion.clip_node_owner_to_node_map->clear();
1207 data_for_recursion.scroll_node_owner_to_node_map->clear();
1187 1208
1188 ClipNode root_clip; 1209 ClipNode root_clip;
1189 root_clip.data.resets_clip = true; 1210 root_clip.data.resets_clip = true;
1190 root_clip.data.applies_local_clip = true; 1211 root_clip.data.applies_local_clip = true;
1191 root_clip.data.clip = gfx::RectF(viewport); 1212 root_clip.data.clip = gfx::RectF(viewport);
1192 root_clip.data.transform_id = kRootPropertyTreeNodeId; 1213 root_clip.data.transform_id = kRootPropertyTreeNodeId;
1193 data_for_recursion.clip_tree_parent = 1214 data_for_recursion.clip_tree_parent =
1194 data_for_recursion.clip_tree->Insert(root_clip, kRootPropertyTreeNodeId); 1215 data_for_recursion.clip_tree->Insert(root_clip, kRootPropertyTreeNodeId);
1195 1216
1196 DataForRecursionFromChild<LayerType> data_from_child; 1217 DataForRecursionFromChild<LayerType> data_from_child;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1273 if (SkColorGetA(color) != 255) 1294 if (SkColorGetA(color) != 255)
1274 color = SkColorSetA(color, 255); 1295 color = SkColorSetA(color, 255);
1275 BuildPropertyTreesTopLevelInternal( 1296 BuildPropertyTreesTopLevelInternal(
1276 root_layer, page_scale_layer, inner_viewport_scroll_layer, 1297 root_layer, page_scale_layer, inner_viewport_scroll_layer,
1277 outer_viewport_scroll_layer, overscroll_elasticity_layer, 1298 outer_viewport_scroll_layer, overscroll_elasticity_layer,
1278 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, 1299 elastic_overscroll, page_scale_factor, device_scale_factor, viewport,
1279 device_transform, property_trees, color); 1300 device_transform, property_trees, color);
1280 } 1301 }
1281 1302
1282 } // namespace cc 1303 } // namespace cc
OLDNEW
« cc/trees/property_tree.cc ('K') | « cc/trees/property_tree.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698