| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/damage_tracker.h" | 5 #include "cc/trees/damage_tracker.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "cc/base/math_util.h" | 9 #include "cc/base/math_util.h" |
| 10 #include "cc/layers/layer_impl.h" | 10 #include "cc/layers/layer_impl.h" |
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 LayerImpl* root = CreateAndSetUpTestTreeWithOneSurface(); | 373 LayerImpl* root = CreateAndSetUpTestTreeWithOneSurface(); |
| 374 LayerImpl* child = root->test_properties()->children[0]; | 374 LayerImpl* child = root->test_properties()->children[0]; |
| 375 | 375 |
| 376 // CASE 1: The layer's property changed flag takes priority over update rect. | 376 // CASE 1: The layer's property changed flag takes priority over update rect. |
| 377 // | 377 // |
| 378 child->test_properties()->force_render_surface = true; | 378 child->test_properties()->force_render_surface = true; |
| 379 root->layer_tree_impl()->property_trees()->needs_rebuild = true; | 379 root->layer_tree_impl()->property_trees()->needs_rebuild = true; |
| 380 EmulateDrawingOneFrame(root); | 380 EmulateDrawingOneFrame(root); |
| 381 ClearDamageForAllSurfaces(root); | 381 ClearDamageForAllSurfaces(root); |
| 382 child->SetUpdateRect(gfx::Rect(10, 11, 12, 13)); | 382 child->SetUpdateRect(gfx::Rect(10, 11, 12, 13)); |
| 383 child->OnOpacityAnimated(0.5f); | 383 root->layer_tree_impl()->property_trees()->effect_tree.OnOpacityAnimated( |
| 384 0.5f, child->effect_tree_index(), root->layer_tree_impl()); |
| 384 EmulateDrawingOneFrame(root); | 385 EmulateDrawingOneFrame(root); |
| 385 | 386 |
| 386 ASSERT_EQ(2u, root->render_surface()->layer_list().size()); | 387 ASSERT_EQ(2u, root->render_surface()->layer_list().size()); |
| 387 | 388 |
| 388 // Damage should be the entire child layer in target_surface space. | 389 // Damage should be the entire child layer in target_surface space. |
| 389 gfx::Rect expected_rect = gfx::Rect(100, 100, 30, 30); | 390 gfx::Rect expected_rect = gfx::Rect(100, 100, 30, 30); |
| 390 gfx::Rect root_damage_rect = | 391 gfx::Rect root_damage_rect = |
| 391 root->render_surface()->damage_tracker()->current_damage_rect(); | 392 root->render_surface()->damage_tracker()->current_damage_rect(); |
| 392 EXPECT_EQ(expected_rect.ToString(), root_damage_rect.ToString()); | 393 EXPECT_EQ(expected_rect.ToString(), root_damage_rect.ToString()); |
| 393 | 394 |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 514 gfx::QuadF test_quad(gfx::RectF(gfx::PointF(), gfx::SizeF(100.f, 100.f))); | 515 gfx::QuadF test_quad(gfx::RectF(gfx::PointF(), gfx::SizeF(100.f, 100.f))); |
| 515 bool clipped = false; | 516 bool clipped = false; |
| 516 MathUtil::MapQuad(transform, test_quad, &clipped); | 517 MathUtil::MapQuad(transform, test_quad, &clipped); |
| 517 EXPECT_TRUE(clipped); | 518 EXPECT_TRUE(clipped); |
| 518 | 519 |
| 519 // Damage the child without moving it. | 520 // Damage the child without moving it. |
| 520 child->test_properties()->force_render_surface = true; | 521 child->test_properties()->force_render_surface = true; |
| 521 root->layer_tree_impl()->property_trees()->needs_rebuild = true; | 522 root->layer_tree_impl()->property_trees()->needs_rebuild = true; |
| 522 EmulateDrawingOneFrame(root); | 523 EmulateDrawingOneFrame(root); |
| 523 ClearDamageForAllSurfaces(root); | 524 ClearDamageForAllSurfaces(root); |
| 524 child->OnOpacityAnimated(0.5f); | 525 root->layer_tree_impl()->property_trees()->effect_tree.OnOpacityAnimated( |
| 526 0.5f, child->effect_tree_index(), root->layer_tree_impl()); |
| 525 EmulateDrawingOneFrame(root); | 527 EmulateDrawingOneFrame(root); |
| 526 | 528 |
| 527 // The expected damage should cover the entire root surface (500x500), but we | 529 // The expected damage should cover the entire root surface (500x500), but we |
| 528 // don't care whether the damage rect was clamped or is larger than the | 530 // don't care whether the damage rect was clamped or is larger than the |
| 529 // surface for this test. | 531 // surface for this test. |
| 530 gfx::Rect root_damage_rect = | 532 gfx::Rect root_damage_rect = |
| 531 root->render_surface()->damage_tracker()->current_damage_rect(); | 533 root->render_surface()->damage_tracker()->current_damage_rect(); |
| 532 gfx::Rect damage_we_care_about = gfx::Rect(gfx::Size(500, 500)); | 534 gfx::Rect damage_we_care_about = gfx::Rect(gfx::Size(500, 500)); |
| 533 EXPECT_TRUE(root_damage_rect.Contains(damage_we_care_about)); | 535 EXPECT_TRUE(root_damage_rect.Contains(damage_we_care_about)); |
| 534 } | 536 } |
| (...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 973 child2->test_properties()->force_render_surface = true; | 975 child2->test_properties()->force_render_surface = true; |
| 974 grand_child1->test_properties()->force_render_surface = true; | 976 grand_child1->test_properties()->force_render_surface = true; |
| 975 root->layer_tree_impl()->property_trees()->needs_rebuild = true; | 977 root->layer_tree_impl()->property_trees()->needs_rebuild = true; |
| 976 EmulateDrawingOneFrame(root); | 978 EmulateDrawingOneFrame(root); |
| 977 gfx::Rect child_damage_rect; | 979 gfx::Rect child_damage_rect; |
| 978 gfx::Rect root_damage_rect; | 980 gfx::Rect root_damage_rect; |
| 979 | 981 |
| 980 // CASE 1: Damage to a descendant surface should propagate properly to | 982 // CASE 1: Damage to a descendant surface should propagate properly to |
| 981 // ancestor surface. | 983 // ancestor surface. |
| 982 ClearDamageForAllSurfaces(root); | 984 ClearDamageForAllSurfaces(root); |
| 983 grand_child1->OnOpacityAnimated(0.5f); | 985 root->layer_tree_impl()->property_trees()->effect_tree.OnOpacityAnimated( |
| 986 0.5f, grand_child1->effect_tree_index(), root->layer_tree_impl()); |
| 984 EmulateDrawingOneFrame(root); | 987 EmulateDrawingOneFrame(root); |
| 985 child_damage_rect = | 988 child_damage_rect = |
| 986 child1->render_surface()->damage_tracker()->current_damage_rect(); | 989 child1->render_surface()->damage_tracker()->current_damage_rect(); |
| 987 root_damage_rect = | 990 root_damage_rect = |
| 988 root->render_surface()->damage_tracker()->current_damage_rect(); | 991 root->render_surface()->damage_tracker()->current_damage_rect(); |
| 989 EXPECT_EQ(gfx::Rect(200, 200, 6, 8).ToString(), child_damage_rect.ToString()); | 992 EXPECT_EQ(gfx::Rect(200, 200, 6, 8).ToString(), child_damage_rect.ToString()); |
| 990 EXPECT_EQ(gfx::Rect(300, 300, 6, 8).ToString(), root_damage_rect.ToString()); | 993 EXPECT_EQ(gfx::Rect(300, 300, 6, 8).ToString(), root_damage_rect.ToString()); |
| 991 | 994 |
| 992 // CASE 2: Same as previous case, but with additional damage elsewhere that | 995 // CASE 2: Same as previous case, but with additional damage elsewhere that |
| 993 // should be properly unioned. | 996 // should be properly unioned. |
| 994 // - child1 surface damage in root surface space: | 997 // - child1 surface damage in root surface space: |
| 995 // gfx::Rect(300, 300, 6, 8); | 998 // gfx::Rect(300, 300, 6, 8); |
| 996 // - child2 damage in root surface space: | 999 // - child2 damage in root surface space: |
| 997 // gfx::Rect(11, 11, 18, 18); | 1000 // gfx::Rect(11, 11, 18, 18); |
| 998 ClearDamageForAllSurfaces(root); | 1001 ClearDamageForAllSurfaces(root); |
| 999 grand_child1->OnOpacityAnimated(0.7f); | 1002 root->layer_tree_impl()->property_trees()->effect_tree.OnOpacityAnimated( |
| 1000 child2->OnOpacityAnimated(0.7f); | 1003 0.7f, grand_child1->effect_tree_index(), root->layer_tree_impl()); |
| 1004 root->layer_tree_impl()->property_trees()->effect_tree.OnOpacityAnimated( |
| 1005 0.7f, child2->effect_tree_index(), root->layer_tree_impl()); |
| 1001 EmulateDrawingOneFrame(root); | 1006 EmulateDrawingOneFrame(root); |
| 1002 child_damage_rect = | 1007 child_damage_rect = |
| 1003 child1->render_surface()->damage_tracker()->current_damage_rect(); | 1008 child1->render_surface()->damage_tracker()->current_damage_rect(); |
| 1004 root_damage_rect = | 1009 root_damage_rect = |
| 1005 root->render_surface()->damage_tracker()->current_damage_rect(); | 1010 root->render_surface()->damage_tracker()->current_damage_rect(); |
| 1006 EXPECT_EQ(gfx::Rect(200, 200, 6, 8).ToString(), child_damage_rect.ToString()); | 1011 EXPECT_EQ(gfx::Rect(200, 200, 6, 8).ToString(), child_damage_rect.ToString()); |
| 1007 EXPECT_EQ(gfx::Rect(11, 11, 295, 297).ToString(), | 1012 EXPECT_EQ(gfx::Rect(11, 11, 295, 297).ToString(), |
| 1008 root_damage_rect.ToString()); | 1013 root_damage_rect.ToString()); |
| 1009 } | 1014 } |
| 1010 | 1015 |
| (...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1668 gfx::Rect root_damage_rect = | 1673 gfx::Rect root_damage_rect = |
| 1669 root->render_surface()->damage_tracker()->current_damage_rect(); | 1674 root->render_surface()->damage_tracker()->current_damage_rect(); |
| 1670 gfx::Rect damage_we_care_about = gfx::Rect(i, i); | 1675 gfx::Rect damage_we_care_about = gfx::Rect(i, i); |
| 1671 EXPECT_LE(damage_we_care_about.right(), root_damage_rect.right()); | 1676 EXPECT_LE(damage_we_care_about.right(), root_damage_rect.right()); |
| 1672 EXPECT_LE(damage_we_care_about.bottom(), root_damage_rect.bottom()); | 1677 EXPECT_LE(damage_we_care_about.bottom(), root_damage_rect.bottom()); |
| 1673 } | 1678 } |
| 1674 } | 1679 } |
| 1675 | 1680 |
| 1676 } // namespace | 1681 } // namespace |
| 1677 } // namespace cc | 1682 } // namespace cc |
| OLD | NEW |