Chromium Code Reviews| 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 |