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

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

Issue 2147283002: cc : Fix occlusion tracking bug for contributing surface (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 5 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/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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 EffectNode* effect_node = 47 EffectNode* effect_node =
48 layer->layer_tree_impl()->property_trees()->effect_tree.Node( 48 layer->layer_tree_impl()->property_trees()->effect_tree.Node(
49 layer->effect_tree_index()); 49 layer->effect_tree_index());
50 if (effect_node->owner_id != layer->id()) 50 if (effect_node->owner_id != layer->id())
51 return; 51 return;
52 DCHECK_EQ(effect_node->mask_layer_id, -1) << "layer: " << layer->id(); 52 DCHECK_EQ(effect_node->mask_layer_id, -1) << "layer: " << layer->id();
53 DCHECK_EQ(effect_node->replica_layer_id, -1) << "layer: " << layer->id(); 53 DCHECK_EQ(effect_node->replica_layer_id, -1) << "layer: " << layer->id();
54 DCHECK(effect_node->background_filters.IsEmpty()); 54 DCHECK(effect_node->background_filters.IsEmpty());
55 } 55 }
56 56
57 #endif
58
59 static void ApplySublayerScale(const int effect_node_id,
60 const EffectTree& effect_tree,
61 gfx::Transform* transform) {
62 const EffectNode* effect_node = effect_tree.Node(effect_node_id);
63 const EffectNode* target_effect_node =
64 effect_node->has_render_surface
65 ? effect_node
66 : effect_tree.Node(effect_node->target_id);
67 transform->matrix().postScale(target_effect_node->sublayer_scale.x(),
68 target_effect_node->sublayer_scale.y(), 1.f);
69 }
70
71 #if DCHECK_IS_ON()
72 void VerifySublayerScalesMatch(const int effect_node_id, 57 void VerifySublayerScalesMatch(const int effect_node_id,
73 const int target_transform_id, 58 const int target_transform_id,
74 const EffectTree& effect_tree, 59 const EffectTree& effect_tree,
75 const TransformTree& transform_tree) { 60 const TransformTree& transform_tree) {
76 const TransformNode* target_transform_node = 61 const TransformNode* target_transform_node =
77 transform_tree.Node(target_transform_id); 62 transform_tree.Node(target_transform_id);
78 const EffectNode* effect_node = effect_tree.Node(effect_node_id); 63 const EffectNode* effect_node = effect_tree.Node(effect_node_id);
79 const EffectNode* target_effect_node = 64 const EffectNode* target_effect_node =
80 effect_node->has_render_surface 65 effect_node->has_render_surface
81 ? effect_node 66 ? effect_node
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after
708 } 693 }
709 } 694 }
710 } 695 }
711 696
712 static void ResetIfHasNanCoordinate(gfx::RectF* rect) { 697 static void ResetIfHasNanCoordinate(gfx::RectF* rect) {
713 if (std::isnan(rect->x()) || std::isnan(rect->y()) || 698 if (std::isnan(rect->x()) || std::isnan(rect->y()) ||
714 std::isnan(rect->right()) || std::isnan(rect->bottom())) 699 std::isnan(rect->right()) || std::isnan(rect->bottom()))
715 *rect = gfx::RectF(); 700 *rect = gfx::RectF();
716 } 701 }
717 702
703 void ApplySublayerScale(const int effect_node_id,
704 const EffectTree& effect_tree,
705 gfx::Transform* transform) {
706 const EffectNode* effect_node = effect_tree.Node(effect_node_id);
707 const EffectNode* target_effect_node =
708 effect_node->has_render_surface
709 ? effect_node
710 : effect_tree.Node(effect_node->target_id);
711 transform->matrix().postScale(target_effect_node->sublayer_scale.x(),
712 target_effect_node->sublayer_scale.y(), 1.f);
713 }
714
715 void RemoveSublayerScale(const int effect_node_id,
716 const EffectTree& effect_tree,
717 gfx::Transform* transform) {
718 const EffectNode* effect_node = effect_tree.Node(effect_node_id);
719 if (effect_node->sublayer_scale.x() != 0.0 &&
720 effect_node->sublayer_scale.y() != 0.0)
721 transform->Scale(1.0 / effect_node->sublayer_scale.x(),
722 1.0 / effect_node->sublayer_scale.y());
723 }
724
718 void ComputeClips(ClipTree* clip_tree, 725 void ComputeClips(ClipTree* clip_tree,
719 const TransformTree& transform_tree, 726 const TransformTree& transform_tree,
720 const EffectTree& effect_tree, 727 const EffectTree& effect_tree,
721 bool non_root_surfaces_enabled) { 728 bool non_root_surfaces_enabled) {
722 if (!clip_tree->needs_update()) 729 if (!clip_tree->needs_update())
723 return; 730 return;
724 for (int i = 1; i < static_cast<int>(clip_tree->size()); ++i) { 731 for (int i = 1; i < static_cast<int>(clip_tree->size()); ++i) {
725 ClipNode* clip_node = clip_tree->Node(i); 732 ClipNode* clip_node = clip_tree->Node(i);
726 733
727 if (clip_node->id == 1) { 734 if (clip_node->id == 1) {
(...skipping 799 matching lines...) Expand 10 before | Expand all | Expand 10 after
1527 void UpdateElasticOverscroll(PropertyTrees* property_trees, 1534 void UpdateElasticOverscroll(PropertyTrees* property_trees,
1528 const Layer* overscroll_elasticity_layer, 1535 const Layer* overscroll_elasticity_layer,
1529 const gfx::Vector2dF& elastic_overscroll) { 1536 const gfx::Vector2dF& elastic_overscroll) {
1530 UpdateElasticOverscrollInternal(property_trees, overscroll_elasticity_layer, 1537 UpdateElasticOverscrollInternal(property_trees, overscroll_elasticity_layer,
1531 elastic_overscroll); 1538 elastic_overscroll);
1532 } 1539 }
1533 1540
1534 } // namespace draw_property_utils 1541 } // namespace draw_property_utils
1535 1542
1536 } // namespace cc 1543 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698