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

Side by Side Diff: cc/resources/picture_layer_tiling_unittest.cc

Issue 367833003: cc: Start using raster/eviction iterators. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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/resources/picture_layer_tiling.h" 5 #include "cc/resources/picture_layer_tiling.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <set> 8 #include <set>
9 9
10 #include "cc/base/math_util.h" 10 #include "cc/base/math_util.h"
(...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after
665 // Tiling at 0.25 scale: this should create 47x47 tiles of size 10x10. 665 // Tiling at 0.25 scale: this should create 47x47 tiles of size 10x10.
666 // The reason is that each tile has a one pixel border, so tile at (1, 2) 666 // The reason is that each tile has a one pixel border, so tile at (1, 2)
667 // for instance begins at (8, 16) pixels. So tile at (46, 46) will begin at 667 // for instance begins at (8, 16) pixels. So tile at (46, 46) will begin at
668 // (368, 368) and extend to the end of 1500 * 0.25 = 375 edge of the 668 // (368, 368) and extend to the end of 1500 * 0.25 = 375 edge of the
669 // tiling. 669 // tiling.
670 tiling = TestablePictureLayerTiling::Create(0.25f, layer_bounds, &client); 670 tiling = TestablePictureLayerTiling::Create(0.25f, layer_bounds, &client);
671 gfx::Rect viewport_in_content_space = 671 gfx::Rect viewport_in_content_space =
672 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f)); 672 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f));
673 673
674 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion()); 674 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion());
675 tiling->UpdateAllTilePrioritiesForTesting();
675 676
676 gfx::Rect soon_rect = viewport; 677 gfx::Rect soon_rect = viewport;
677 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); 678 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f);
678 gfx::Rect soon_rect_in_content_space = 679 gfx::Rect soon_rect_in_content_space =
679 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f)); 680 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f));
680 681
681 // Sanity checks. 682 // Sanity checks.
682 for (int i = 0; i < 47; ++i) { 683 for (int i = 0; i < 47; ++i) {
683 for (int j = 0; j < 47; ++j) { 684 for (int j = 0; j < 47; ++j) {
684 EXPECT_TRUE(tiling->TileAt(i, j)) << "i: " << i << " j: " << j; 685 EXPECT_TRUE(tiling->TileAt(i, j)) << "i: " << i << " j: " << j;
(...skipping 29 matching lines...) Expand all
714 have_eventually = true; 715 have_eventually = true;
715 } 716 }
716 } 717 }
717 } 718 }
718 719
719 EXPECT_TRUE(have_now); 720 EXPECT_TRUE(have_now);
720 EXPECT_TRUE(have_soon); 721 EXPECT_TRUE(have_soon);
721 EXPECT_TRUE(have_eventually); 722 EXPECT_TRUE(have_eventually);
722 723
723 // Spot check some distances. 724 // Spot check some distances.
724 // Tile at 5, 1 should begin at 41x9 in content space (without borders), 725 // Tile at 5, 1 should begin at 40x8 in content space (with borders),
725 // so the distance to a viewport that ends at 25x25 in content space 726 // so the distance to a viewport that ends at 25x25 in content space
726 // should be 17 (41 - 25 + 1). In layer space, then that should be 727 // should be 16 (40 - 25 + 1). In layer space, then that should be
727 // 17 / 0.25 = 68 pixels. 728 // 16 / 0.25 = 64 pixels.
danakj 2014/09/19 01:41:47 This comment changed but the code didn't. Don't ch
vmpstr 2014/09/19 21:22:53 Whoops. I'm not sure how that crept in.
728 729
729 // We can verify that the content rect (with borders) is one pixel off 730 // We can verify that the content rect (with borders) is one pixel off
730 // 41,9 8x8 on all sides. 731 // 41,9 8x8 on all sides.
731 EXPECT_EQ(tiling->TileAt(5, 1)->content_rect().ToString(), "40,8 10x10"); 732 EXPECT_EQ(tiling->TileAt(5, 1)->content_rect().ToString(), "40,8 10x10");
732 733
733 TilePriority priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); 734 TilePriority priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE);
734 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible); 735 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible);
735 736
736 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); 737 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE);
737 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible); 738 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible);
(...skipping 11 matching lines...) Expand all
749 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); 750 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f);
750 soon_rect_in_content_space = 751 soon_rect_in_content_space =
751 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f)); 752 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f));
752 753
753 EXPECT_EQ(0, skewport.x()); 754 EXPECT_EQ(0, skewport.x());
754 EXPECT_EQ(10, skewport.y()); 755 EXPECT_EQ(10, skewport.y());
755 EXPECT_EQ(25, skewport.width()); 756 EXPECT_EQ(25, skewport.width());
756 EXPECT_EQ(35, skewport.height()); 757 EXPECT_EQ(35, skewport.height());
757 758
758 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.f, 2.0, Occlusion()); 759 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.f, 2.0, Occlusion());
760 tiling->UpdateAllTilePrioritiesForTesting();
759 761
760 have_now = false; 762 have_now = false;
761 have_eventually = false; 763 have_eventually = false;
762 have_soon = false; 764 have_soon = false;
763 765
764 // Viewport moved, so we expect to find some NOW tiles, some SOON tiles and 766 // Viewport moved, so we expect to find some NOW tiles, some SOON tiles and
765 // some EVENTUALLY tiles. 767 // some EVENTUALLY tiles.
766 for (int i = 0; i < 47; ++i) { 768 for (int i = 0; i < 47; ++i) {
767 for (int j = 0; j < 47; ++j) { 769 for (int j = 0; j < 47; ++j) {
768 Tile* tile = tiling->TileAt(i, j); 770 Tile* tile = tiling->TileAt(i, j);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
800 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible); 802 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible);
801 803
802 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); 804 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE);
803 EXPECT_FLOAT_EQ(28.f, priority.distance_to_visible); 805 EXPECT_FLOAT_EQ(28.f, priority.distance_to_visible);
804 806
805 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); 807 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE);
806 EXPECT_FLOAT_EQ(4.f, priority.distance_to_visible); 808 EXPECT_FLOAT_EQ(4.f, priority.distance_to_visible);
807 809
808 // Change the underlying layer scale. 810 // Change the underlying layer scale.
809 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 2.0f, 3.0, Occlusion()); 811 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 2.0f, 3.0, Occlusion());
812 tiling->UpdateAllTilePrioritiesForTesting();
810 813
811 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); 814 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE);
812 EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible); 815 EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible);
813 816
814 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); 817 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE);
815 EXPECT_FLOAT_EQ(56.f, priority.distance_to_visible); 818 EXPECT_FLOAT_EQ(56.f, priority.distance_to_visible);
816 819
817 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); 820 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE);
818 EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible); 821 EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible);
819 822
820 // Test additional scales. 823 // Test additional scales.
821 tiling = TestablePictureLayerTiling::Create(0.2f, layer_bounds, &client); 824 tiling = TestablePictureLayerTiling::Create(0.2f, layer_bounds, &client);
822 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 4.0, Occlusion()); 825 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 4.0, Occlusion());
826 tiling->UpdateAllTilePrioritiesForTesting();
823 827
824 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); 828 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE);
825 EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible); 829 EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible);
826 830
827 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); 831 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE);
828 EXPECT_FLOAT_EQ(70.f, priority.distance_to_visible); 832 EXPECT_FLOAT_EQ(70.f, priority.distance_to_visible);
829 833
830 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); 834 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE);
831 EXPECT_FLOAT_EQ(60.f, priority.distance_to_visible); 835 EXPECT_FLOAT_EQ(60.f, priority.distance_to_visible);
832 836
833 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 0.5f, 5.0, Occlusion()); 837 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 0.5f, 5.0, Occlusion());
838 tiling->UpdateAllTilePrioritiesForTesting();
834 839
835 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); 840 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE);
836 EXPECT_FLOAT_EQ(55.f, priority.distance_to_visible); 841 EXPECT_FLOAT_EQ(55.f, priority.distance_to_visible);
837 842
838 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); 843 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE);
839 EXPECT_FLOAT_EQ(35.f, priority.distance_to_visible); 844 EXPECT_FLOAT_EQ(35.f, priority.distance_to_visible);
840 845
841 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); 846 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE);
842 EXPECT_FLOAT_EQ(30.f, priority.distance_to_visible); 847 EXPECT_FLOAT_EQ(30.f, priority.distance_to_visible);
843 } 848 }
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
1072 gfx::Size layer_bounds(800, 800); 1077 gfx::Size layer_bounds(800, 800);
1073 1078
1074 gfx::Rect soon_rect = viewport; 1079 gfx::Rect soon_rect = viewport;
1075 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); 1080 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f);
1076 1081
1077 client.SetTileSize(gfx::Size(30, 30)); 1082 client.SetTileSize(gfx::Size(30, 30));
1078 client.set_tree(ACTIVE_TREE); 1083 client.set_tree(ACTIVE_TREE);
1079 1084
1080 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); 1085 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client);
1081 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); 1086 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
1087 tiling->UpdateAllTilePrioritiesForTesting();
1082 1088
1083 PictureLayerTiling::TilingRasterTileIterator empty_iterator; 1089 PictureLayerTiling::TilingRasterTileIterator empty_iterator;
1084 EXPECT_FALSE(empty_iterator); 1090 EXPECT_FALSE(empty_iterator);
1085 1091
1086 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); 1092 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting();
1087 1093
1088 // Sanity check. 1094 // Sanity check.
1089 EXPECT_EQ(841u, all_tiles.size()); 1095 EXPECT_EQ(841u, all_tiles.size());
1090 1096
1091 // The explanation of each iteration is as follows: 1097 // The explanation of each iteration is as follows:
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1182 gfx::Rect moved_viewport(50, 0, 100, 500); 1188 gfx::Rect moved_viewport(50, 0, 100, 500);
1183 gfx::Size layer_bounds(1000, 1000); 1189 gfx::Size layer_bounds(1000, 1000);
1184 1190
1185 client.SetTileSize(gfx::Size(30, 30)); 1191 client.SetTileSize(gfx::Size(30, 30));
1186 client.set_tree(ACTIVE_TREE); 1192 client.set_tree(ACTIVE_TREE);
1187 1193
1188 tiling = TestablePictureLayerTiling::Create(1.f, layer_bounds, &client); 1194 tiling = TestablePictureLayerTiling::Create(1.f, layer_bounds, &client);
1189 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); 1195 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
1190 tiling->UpdateTilePriorities( 1196 tiling->UpdateTilePriorities(
1191 ACTIVE_TREE, moved_viewport, 1.0f, 2.0, Occlusion()); 1197 ACTIVE_TREE, moved_viewport, 1.0f, 2.0, Occlusion());
1198 tiling->UpdateAllTilePrioritiesForTesting();
1192 1199
1193 gfx::Rect soon_rect = moved_viewport; 1200 gfx::Rect soon_rect = moved_viewport;
1194 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); 1201 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f);
1195 1202
1196 // There are 3 bins in TilePriority. 1203 // There are 3 bins in TilePriority.
1197 bool have_tiles[3] = {}; 1204 bool have_tiles[3] = {};
1198 Tile* last_tile = NULL; 1205 Tile* last_tile = NULL;
1199 int eventually_bin_order_correct_count = 0; 1206 int eventually_bin_order_correct_count = 0;
1200 int eventually_bin_order_incorrect_count = 0; 1207 int eventually_bin_order_incorrect_count = 0;
1201 for (PictureLayerTiling::TilingRasterTileIterator it(tiling.get(), 1208 for (PictureLayerTiling::TilingRasterTileIterator it(tiling.get(),
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1255 scoped_ptr<TestablePictureLayerTiling> tiling; 1262 scoped_ptr<TestablePictureLayerTiling> tiling;
1256 1263
1257 gfx::Rect viewport(50, 50, 100, 100); 1264 gfx::Rect viewport(50, 50, 100, 100);
1258 gfx::Size layer_bounds(2000, 2000); 1265 gfx::Size layer_bounds(2000, 2000);
1259 1266
1260 client.SetTileSize(gfx::Size(30, 30)); 1267 client.SetTileSize(gfx::Size(30, 30));
1261 client.set_tree(ACTIVE_TREE); 1268 client.set_tree(ACTIVE_TREE);
1262 1269
1263 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); 1270 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client);
1264 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); 1271 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion());
1272 tiling->UpdateAllTilePrioritiesForTesting();
1265 1273
1266 PictureLayerTiling::TilingRasterTileIterator empty_iterator; 1274 PictureLayerTiling::TilingRasterTileIterator empty_iterator;
1267 EXPECT_FALSE(empty_iterator); 1275 EXPECT_FALSE(empty_iterator);
1268 1276
1269 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); 1277 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting();
1270 1278
1271 PictureLayerTiling::TilingEvictionTileIterator it( 1279 PictureLayerTiling::TilingEvictionTileIterator it(
1272 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, PictureLayerTiling::NOW); 1280 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, PictureLayerTiling::NOW);
1273 1281
1274 // Tiles don't have resources to evict. 1282 // Tiles don't have resources to evict.
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
1503 client.set_tree(ACTIVE_TREE); 1511 client.set_tree(ACTIVE_TREE);
1504 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 1512 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
1505 current_layer_bounds, 1513 current_layer_bounds,
1506 &client); 1514 &client);
1507 1515
1508 tiling->UpdateTilePriorities(ACTIVE_TREE, 1516 tiling->UpdateTilePriorities(ACTIVE_TREE,
1509 viewport_in_layer_space, 1517 viewport_in_layer_space,
1510 current_layer_contents_scale, 1518 current_layer_contents_scale,
1511 current_frame_time_in_seconds, 1519 current_frame_time_in_seconds,
1512 Occlusion()); 1520 Occlusion());
1521 tiling->UpdateAllTilePrioritiesForTesting();
1513 1522
1514 ASSERT_TRUE(tiling->TileAt(0, 0)); 1523 ASSERT_TRUE(tiling->TileAt(0, 0));
1515 ASSERT_TRUE(tiling->TileAt(0, 1)); 1524 ASSERT_TRUE(tiling->TileAt(0, 1));
1516 ASSERT_TRUE(tiling->TileAt(1, 0)); 1525 ASSERT_TRUE(tiling->TileAt(1, 0));
1517 ASSERT_TRUE(tiling->TileAt(1, 1)); 1526 ASSERT_TRUE(tiling->TileAt(1, 1));
1518 1527
1519 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1528 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE);
1520 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1529 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1521 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); 1530 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin);
1522 1531
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1558 client.set_tree(ACTIVE_TREE); 1567 client.set_tree(ACTIVE_TREE);
1559 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 1568 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
1560 current_layer_bounds, 1569 current_layer_bounds,
1561 &client); 1570 &client);
1562 1571
1563 tiling->UpdateTilePriorities(ACTIVE_TREE, 1572 tiling->UpdateTilePriorities(ACTIVE_TREE,
1564 viewport_in_layer_space, 1573 viewport_in_layer_space,
1565 current_layer_contents_scale, 1574 current_layer_contents_scale,
1566 current_frame_time_in_seconds, 1575 current_frame_time_in_seconds,
1567 Occlusion()); 1576 Occlusion());
1577 tiling->UpdateAllTilePrioritiesForTesting();
1568 1578
1569 ASSERT_TRUE(tiling->TileAt(0, 0)); 1579 ASSERT_TRUE(tiling->TileAt(0, 0));
1570 ASSERT_TRUE(tiling->TileAt(0, 1)); 1580 ASSERT_TRUE(tiling->TileAt(0, 1));
1571 ASSERT_TRUE(tiling->TileAt(1, 0)); 1581 ASSERT_TRUE(tiling->TileAt(1, 0));
1572 ASSERT_TRUE(tiling->TileAt(1, 1)); 1582 ASSERT_TRUE(tiling->TileAt(1, 1));
1573 1583
1574 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1584 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE);
1575 EXPECT_GT(priority.distance_to_visible, 0.f); 1585 EXPECT_GT(priority.distance_to_visible, 0.f);
1576 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1586 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1577 1587
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1623 client.set_tree(ACTIVE_TREE); 1633 client.set_tree(ACTIVE_TREE);
1624 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 1634 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
1625 current_layer_bounds, 1635 current_layer_bounds,
1626 &client); 1636 &client);
1627 1637
1628 tiling->UpdateTilePriorities(ACTIVE_TREE, 1638 tiling->UpdateTilePriorities(ACTIVE_TREE,
1629 viewport_in_layer_space, 1639 viewport_in_layer_space,
1630 current_layer_contents_scale, 1640 current_layer_contents_scale,
1631 current_frame_time_in_seconds, 1641 current_frame_time_in_seconds,
1632 Occlusion()); 1642 Occlusion());
1643 tiling->UpdateAllTilePrioritiesForTesting();
1633 1644
1634 ASSERT_TRUE(tiling->TileAt(0, 0)); 1645 ASSERT_TRUE(tiling->TileAt(0, 0));
1635 ASSERT_TRUE(tiling->TileAt(0, 1)); 1646 ASSERT_TRUE(tiling->TileAt(0, 1));
1636 ASSERT_TRUE(tiling->TileAt(1, 0)); 1647 ASSERT_TRUE(tiling->TileAt(1, 0));
1637 ASSERT_TRUE(tiling->TileAt(1, 1)); 1648 ASSERT_TRUE(tiling->TileAt(1, 1));
1638 1649
1639 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1650 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE);
1640 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1651 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1641 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); 1652 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin);
1642 1653
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1682 client.set_tree(ACTIVE_TREE); 1693 client.set_tree(ACTIVE_TREE);
1683 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 1694 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
1684 current_layer_bounds, 1695 current_layer_bounds,
1685 &client); 1696 &client);
1686 1697
1687 tiling->UpdateTilePriorities(ACTIVE_TREE, 1698 tiling->UpdateTilePriorities(ACTIVE_TREE,
1688 viewport_in_layer_space, 1699 viewport_in_layer_space,
1689 current_layer_contents_scale, 1700 current_layer_contents_scale,
1690 current_frame_time_in_seconds, 1701 current_frame_time_in_seconds,
1691 Occlusion()); 1702 Occlusion());
1703 tiling->UpdateAllTilePrioritiesForTesting();
1692 1704
1693 ASSERT_TRUE(tiling->TileAt(0, 0)); 1705 ASSERT_TRUE(tiling->TileAt(0, 0));
1694 ASSERT_TRUE(tiling->TileAt(0, 1)); 1706 ASSERT_TRUE(tiling->TileAt(0, 1));
1695 ASSERT_TRUE(tiling->TileAt(1, 0)); 1707 ASSERT_TRUE(tiling->TileAt(1, 0));
1696 ASSERT_TRUE(tiling->TileAt(1, 1)); 1708 ASSERT_TRUE(tiling->TileAt(1, 1));
1697 1709
1698 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1710 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE);
1699 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1711 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1700 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1712 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1701 1713
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1765 client.set_tree(ACTIVE_TREE); 1777 client.set_tree(ACTIVE_TREE);
1766 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 1778 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
1767 current_layer_bounds, 1779 current_layer_bounds,
1768 &client); 1780 &client);
1769 1781
1770 tiling->UpdateTilePriorities(ACTIVE_TREE, 1782 tiling->UpdateTilePriorities(ACTIVE_TREE,
1771 viewport_in_layer_space, 1783 viewport_in_layer_space,
1772 current_layer_contents_scale, 1784 current_layer_contents_scale,
1773 current_frame_time_in_seconds, 1785 current_frame_time_in_seconds,
1774 Occlusion()); 1786 Occlusion());
1787 tiling->UpdateAllTilePrioritiesForTesting();
1775 1788
1776 ASSERT_TRUE(tiling->TileAt(0, 0)); 1789 ASSERT_TRUE(tiling->TileAt(0, 0));
1777 ASSERT_TRUE(tiling->TileAt(0, 1)); 1790 ASSERT_TRUE(tiling->TileAt(0, 1));
1778 ASSERT_TRUE(tiling->TileAt(1, 0)); 1791 ASSERT_TRUE(tiling->TileAt(1, 0));
1779 ASSERT_TRUE(tiling->TileAt(1, 1)); 1792 ASSERT_TRUE(tiling->TileAt(1, 1));
1780 1793
1781 // All tiles will have a positive distance_to_visible 1794 // All tiles will have a positive distance_to_visible
1782 // and an infinite time_to_visible. 1795 // and an infinite time_to_visible.
1783 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1796 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE);
1784 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f); 1797 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
1858 client.set_tree(ACTIVE_TREE); 1871 client.set_tree(ACTIVE_TREE);
1859 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale 1872 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
1860 current_layer_bounds, 1873 current_layer_bounds,
1861 &client); 1874 &client);
1862 1875
1863 tiling->UpdateTilePriorities(ACTIVE_TREE, 1876 tiling->UpdateTilePriorities(ACTIVE_TREE,
1864 viewport_in_layer_space, 1877 viewport_in_layer_space,
1865 current_layer_contents_scale, 1878 current_layer_contents_scale,
1866 current_frame_time_in_seconds, 1879 current_frame_time_in_seconds,
1867 Occlusion()); 1880 Occlusion());
1881 tiling->UpdateAllTilePrioritiesForTesting();
1868 1882
1869 ASSERT_TRUE(tiling->TileAt(0, 0)); 1883 ASSERT_TRUE(tiling->TileAt(0, 0));
1870 ASSERT_TRUE(tiling->TileAt(0, 1)); 1884 ASSERT_TRUE(tiling->TileAt(0, 1));
1871 ASSERT_TRUE(tiling->TileAt(1, 0)); 1885 ASSERT_TRUE(tiling->TileAt(1, 0));
1872 ASSERT_TRUE(tiling->TileAt(1, 1)); 1886 ASSERT_TRUE(tiling->TileAt(1, 1));
1873 1887
1874 // Left-side tiles will be clipped by the transform, so we have to assume 1888 // Left-side tiles will be clipped by the transform, so we have to assume
1875 // they are visible just in case. 1889 // they are visible just in case.
1876 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1890 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE);
1877 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1891 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1929 last_layer_contents_scale, 1943 last_layer_contents_scale,
1930 last_frame_time_in_seconds, 1944 last_frame_time_in_seconds,
1931 Occlusion()); 1945 Occlusion());
1932 1946
1933 // current frame 1947 // current frame
1934 tiling->UpdateTilePriorities(ACTIVE_TREE, 1948 tiling->UpdateTilePriorities(ACTIVE_TREE,
1935 viewport_in_layer_space, 1949 viewport_in_layer_space,
1936 current_layer_contents_scale, 1950 current_layer_contents_scale,
1937 current_frame_time_in_seconds, 1951 current_frame_time_in_seconds,
1938 Occlusion()); 1952 Occlusion());
1953 tiling->UpdateAllTilePrioritiesForTesting();
1939 1954
1940 ASSERT_TRUE(tiling->TileAt(0, 0)); 1955 ASSERT_TRUE(tiling->TileAt(0, 0));
1941 ASSERT_TRUE(tiling->TileAt(0, 1)); 1956 ASSERT_TRUE(tiling->TileAt(0, 1));
1942 ASSERT_TRUE(tiling->TileAt(1, 0)); 1957 ASSERT_TRUE(tiling->TileAt(1, 0));
1943 ASSERT_TRUE(tiling->TileAt(1, 1)); 1958 ASSERT_TRUE(tiling->TileAt(1, 1));
1944 1959
1945 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1960 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE);
1946 EXPECT_GT(priority.distance_to_visible, 0.f); 1961 EXPECT_GT(priority.distance_to_visible, 0.f);
1947 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1962 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1948 1963
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
2007 last_layer_contents_scale, 2022 last_layer_contents_scale,
2008 last_frame_time_in_seconds, 2023 last_frame_time_in_seconds,
2009 Occlusion()); 2024 Occlusion());
2010 2025
2011 // current frame 2026 // current frame
2012 tiling->UpdateTilePriorities(ACTIVE_TREE, 2027 tiling->UpdateTilePriorities(ACTIVE_TREE,
2013 viewport_in_layer_space, 2028 viewport_in_layer_space,
2014 current_layer_contents_scale, 2029 current_layer_contents_scale,
2015 current_frame_time_in_seconds, 2030 current_frame_time_in_seconds,
2016 Occlusion()); 2031 Occlusion());
2032 tiling->UpdateAllTilePrioritiesForTesting();
2017 2033
2018 ASSERT_TRUE(tiling->TileAt(0, 0)); 2034 ASSERT_TRUE(tiling->TileAt(0, 0));
2019 ASSERT_TRUE(tiling->TileAt(0, 1)); 2035 ASSERT_TRUE(tiling->TileAt(0, 1));
2020 ASSERT_TRUE(tiling->TileAt(1, 0)); 2036 ASSERT_TRUE(tiling->TileAt(1, 0));
2021 ASSERT_TRUE(tiling->TileAt(1, 1)); 2037 ASSERT_TRUE(tiling->TileAt(1, 1));
2022 2038
2023 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 2039 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE);
2024 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 2040 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
2025 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 2041 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
2026 2042
2027 priority = tiling->TileAt(0, 1)->priority(ACTIVE_TREE); 2043 priority = tiling->TileAt(0, 1)->priority(ACTIVE_TREE);
2028 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 2044 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
2029 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 2045 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
2030 2046
2031 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); 2047 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE);
2032 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 2048 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
2033 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 2049 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
2034 } 2050 }
2035 2051
2036 TEST(PictureLayerTilingTest, ResetClearsPriorities) {
2037 FakePictureLayerTilingClient client;
2038 scoped_ptr<TestablePictureLayerTiling> tiling;
2039
2040 client.SetTileSize(gfx::Size(100, 100));
2041 client.set_tree(ACTIVE_TREE);
2042 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale
2043 gfx::Size(100, 100),
2044 &client);
2045 tiling->UpdateTilePriorities(
2046 ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion());
2047
2048 std::vector<scoped_refptr<Tile> > tiles = tiling->AllRefTilesForTesting();
2049 ASSERT_GT(tiles.size(), 0u);
2050 for (std::vector<scoped_refptr<Tile> >::const_iterator it = tiles.begin();
2051 it != tiles.end();
2052 ++it) {
2053 EXPECT_NE(TilePriority(), (*it)->priority(ACTIVE_TREE));
2054 }
2055
2056 tiling->Reset();
2057 for (std::vector<scoped_refptr<Tile> >::const_iterator it = tiles.begin();
2058 it != tiles.end();
2059 ++it) {
2060 EXPECT_EQ(TilePriority(), (*it)->priority(ACTIVE_TREE));
2061 }
2062 tiles.clear();
2063 }
2064
2065 TEST(PictureLayerTilingTest, RecycledTilesCleared) { 2052 TEST(PictureLayerTilingTest, RecycledTilesCleared) {
2066 // This test performs the following: 2053 // This test performs the following:
2067 // Setup: 2054 // Setup:
2068 // - Two tilings, one active one recycled with all tiles shared. 2055 // - Two tilings, one active one recycled with all tiles shared.
2069 // Procedure: 2056 // Procedure:
2070 // - Viewport moves somewhere far away and active tiling clears tiles. 2057 // - Viewport moves somewhere far away and active tiling clears tiles.
2071 // - Viewport moves back and a new active tiling tile is created. 2058 // - Viewport moves back and a new active tiling tile is created.
2072 // Result: 2059 // Result:
2073 // - Recycle tiling does _not_ have the tile in the same location (thus it 2060 // - Recycle tiling does _not_ have the tile in the same location (thus it
2074 // will be shared next time a pending tiling is created). 2061 // will be shared next time a pending tiling is created).
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
2166 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0)); 2153 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0));
2167 2154
2168 // Reset the active tiling. The recycle tiles should be released too. 2155 // Reset the active tiling. The recycle tiles should be released too.
2169 active_tiling->Reset(); 2156 active_tiling->Reset();
2170 EXPECT_FALSE(active_tiling->TileAt(0, 0)); 2157 EXPECT_FALSE(active_tiling->TileAt(0, 0));
2171 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); 2158 EXPECT_FALSE(recycle_tiling->TileAt(0, 0));
2172 } 2159 }
2173 2160
2174 } // namespace 2161 } // namespace
2175 } // namespace cc 2162 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698