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

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

Issue 2615773003: Replace LayerImpl::sorting_context_id with transform reference. (Closed)
Patch Set: Update tests. Created 3 years, 11 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 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 448
449 data_for_children->clip_tree_parent = 449 data_for_children->clip_tree_parent =
450 data_for_children->property_trees->clip_tree.Insert(node, parent_id); 450 data_for_children->property_trees->clip_tree.Insert(node, parent_id);
451 data_for_children->property_trees->clip_id_to_index_map[layer->id()] = 451 data_for_children->property_trees->clip_id_to_index_map[layer->id()] =
452 data_for_children->clip_tree_parent; 452 data_for_children->clip_tree_parent;
453 } 453 }
454 454
455 layer->SetClipTreeIndex(data_for_children->clip_tree_parent); 455 layer->SetClipTreeIndex(data_for_children->clip_tree_parent);
456 } 456 }
457 457
458 static inline int SortingContextId(Layer* layer) {
459 return layer->sorting_context_id();
460 }
461
462 static inline int SortingContextId(LayerImpl* layer) {
463 return layer->test_properties()->sorting_context_id;
464 }
465
466 static inline bool Is3dSorted(Layer* layer) {
467 return layer->Is3dSorted();
468 }
469
470 static inline bool Is3dSorted(LayerImpl* layer) {
471 return layer->test_properties()->sorting_context_id != 0;
472 }
473
458 template <typename LayerType> 474 template <typename LayerType>
459 static inline bool IsAtBoundaryOf3dRenderingContext(LayerType* layer) { 475 static inline bool IsAtBoundaryOf3dRenderingContext(LayerType* layer) {
460 return Parent(layer) 476 return Parent(layer)
461 ? Parent(layer)->sorting_context_id() != 477 ? SortingContextId(Parent(layer)) != SortingContextId(layer)
462 layer->sorting_context_id() 478 : Is3dSorted(layer);
463 : layer->Is3dSorted();
464 } 479 }
465 480
466 static inline gfx::Point3F TransformOrigin(Layer* layer) { 481 static inline gfx::Point3F TransformOrigin(Layer* layer) {
467 return layer->transform_origin(); 482 return layer->transform_origin();
468 } 483 }
469 484
470 static inline gfx::Point3F TransformOrigin(LayerImpl* layer) { 485 static inline gfx::Point3F TransformOrigin(LayerImpl* layer) {
471 return layer->test_properties()->transform_origin; 486 return layer->test_properties()->transform_origin;
472 } 487 }
473 488
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 TransformNode* node = 619 TransformNode* node =
605 data_for_children->property_trees->transform_tree.back(); 620 data_for_children->property_trees->transform_tree.back();
606 layer->SetTransformTreeIndex(node->id); 621 layer->SetTransformTreeIndex(node->id);
607 data_for_children->property_trees->transform_id_to_index_map[layer->id()] = 622 data_for_children->property_trees->transform_id_to_index_map[layer->id()] =
608 node->id; 623 node->id;
609 624
610 node->scrolls = is_scrollable; 625 node->scrolls = is_scrollable;
611 node->should_be_snapped = is_snapped; 626 node->should_be_snapped = is_snapped;
612 node->flattens_inherited_transform = data_for_children->should_flatten; 627 node->flattens_inherited_transform = data_for_children->should_flatten;
613 628
614 node->sorting_context_id = layer->sorting_context_id(); 629 node->sorting_context_id = SortingContextId(layer);
615 630
616 if (layer == data_from_ancestor.page_scale_layer) 631 if (layer == data_from_ancestor.page_scale_layer)
617 data_for_children->in_subtree_of_page_scale_layer = true; 632 data_for_children->in_subtree_of_page_scale_layer = true;
618 node->in_subtree_of_page_scale_layer = 633 node->in_subtree_of_page_scale_layer =
619 data_for_children->in_subtree_of_page_scale_layer; 634 data_for_children->in_subtree_of_page_scale_layer;
620 635
621 // Surfaces inherently flatten transforms. 636 // Surfaces inherently flatten transforms.
622 data_for_children->should_flatten = 637 data_for_children->should_flatten =
623 ShouldFlattenTransform(layer) || has_surface; 638 ShouldFlattenTransform(layer) || has_surface;
624 DCHECK_GT(data_from_ancestor.property_trees->effect_tree.size(), 0u); 639 DCHECK_GT(data_from_ancestor.property_trees->effect_tree.size(), 0u);
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
766 static inline bool ForceRenderSurface(Layer* layer) { 781 static inline bool ForceRenderSurface(Layer* layer) {
767 return layer->force_render_surface_for_testing(); 782 return layer->force_render_surface_for_testing();
768 } 783 }
769 784
770 static inline bool ForceRenderSurface(LayerImpl* layer) { 785 static inline bool ForceRenderSurface(LayerImpl* layer) {
771 return layer->test_properties()->force_render_surface; 786 return layer->test_properties()->force_render_surface;
772 } 787 }
773 788
774 template <typename LayerType> 789 template <typename LayerType>
775 static inline bool LayerIsInExisting3DRenderingContext(LayerType* layer) { 790 static inline bool LayerIsInExisting3DRenderingContext(LayerType* layer) {
776 return layer->Is3dSorted() && Parent(layer) && Parent(layer)->Is3dSorted() && 791 return Is3dSorted(layer) && Parent(layer) && Is3dSorted(Parent(layer)) &&
777 (Parent(layer)->sorting_context_id() == layer->sorting_context_id()); 792 (SortingContextId(Parent(layer)) == SortingContextId(layer));
778 } 793 }
779 794
780 static inline bool IsRootForIsolatedGroup(Layer* layer) { 795 static inline bool IsRootForIsolatedGroup(Layer* layer) {
781 return layer->is_root_for_isolated_group(); 796 return layer->is_root_for_isolated_group();
782 } 797 }
783 798
784 static inline bool IsRootForIsolatedGroup(LayerImpl* layer) { 799 static inline bool IsRootForIsolatedGroup(LayerImpl* layer) {
785 return false; 800 return false;
786 } 801 }
787 802
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
1189 Parent(layer)->use_local_transform_for_backface_visibility()); 1204 Parent(layer)->use_local_transform_for_backface_visibility());
1190 layer->SetShouldCheckBackfaceVisibility( 1205 layer->SetShouldCheckBackfaceVisibility(
1191 Parent(layer)->should_check_backface_visibility()); 1206 Parent(layer)->should_check_backface_visibility());
1192 } else { 1207 } else {
1193 // The current W3C spec on CSS transforms says that backface visibility 1208 // The current W3C spec on CSS transforms says that backface visibility
1194 // should be determined differently depending on whether the layer is in a 1209 // should be determined differently depending on whether the layer is in a
1195 // "3d rendering context" or not. For Chromium code, we can determine 1210 // "3d rendering context" or not. For Chromium code, we can determine
1196 // whether we are in a 3d rendering context by checking if the parent 1211 // whether we are in a 3d rendering context by checking if the parent
1197 // preserves 3d. 1212 // preserves 3d.
1198 const bool use_local_transform = 1213 const bool use_local_transform =
1199 !layer->Is3dSorted() || 1214 !Is3dSorted(layer) ||
1200 (layer->Is3dSorted() && is_at_boundary_of_3d_rendering_context); 1215 (Is3dSorted(layer) && is_at_boundary_of_3d_rendering_context);
1201 layer->SetUseLocalTransformForBackfaceVisibility(use_local_transform); 1216 layer->SetUseLocalTransformForBackfaceVisibility(use_local_transform);
1202 1217
1203 // A double-sided layer's backface can been shown when its visibile. 1218 // A double-sided layer's backface can been shown when its visibile.
1204 if (DoubleSided(layer)) 1219 if (DoubleSided(layer))
1205 layer->SetShouldCheckBackfaceVisibility(false); 1220 layer->SetShouldCheckBackfaceVisibility(false);
1206 // The backface of a layer that uses local transform for backface visibility 1221 // The backface of a layer that uses local transform for backface visibility
1207 // is not visible when it does not create a transform node as its local 1222 // is not visible when it does not create a transform node as its local
1208 // transform is identity or 2d translation and is not animating. 1223 // transform is identity or 2d translation and is not animating.
1209 else if (use_local_transform && !created_transform_node) 1224 else if (use_local_transform && !created_transform_node)
1210 layer->SetShouldCheckBackfaceVisibility(false); 1225 layer->SetShouldCheckBackfaceVisibility(false);
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
1502 color = SkColorSetA(color, 255); 1517 color = SkColorSetA(color, 255);
1503 BuildPropertyTreesTopLevelInternal( 1518 BuildPropertyTreesTopLevelInternal(
1504 root_layer, page_scale_layer, inner_viewport_scroll_layer, 1519 root_layer, page_scale_layer, inner_viewport_scroll_layer,
1505 outer_viewport_scroll_layer, overscroll_elasticity_layer, 1520 outer_viewport_scroll_layer, overscroll_elasticity_layer,
1506 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, 1521 elastic_overscroll, page_scale_factor, device_scale_factor, viewport,
1507 device_transform, property_trees, color); 1522 device_transform, property_trees, color);
1508 property_trees->ResetCachedData(); 1523 property_trees->ResetCachedData();
1509 } 1524 }
1510 1525
1511 } // namespace cc 1526 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698