OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |