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 26 matching lines...) Expand all Loading... |
37 static void UpdateAllTilePriorities(PictureLayerTilingSet* set, | 37 static void UpdateAllTilePriorities(PictureLayerTilingSet* set, |
38 WhichTree tree, | 38 WhichTree tree, |
39 const gfx::Rect& visible_layer_rect, | 39 const gfx::Rect& visible_layer_rect, |
40 float layer_contents_scale, | 40 float layer_contents_scale, |
41 double current_frame_time_in_seconds) { | 41 double current_frame_time_in_seconds) { |
42 for (size_t i = 0; i < set->num_tilings(); ++i) { | 42 for (size_t i = 0; i < set->num_tilings(); ++i) { |
43 set->tiling_at(i)->UpdateTilePriorities(tree, | 43 set->tiling_at(i)->UpdateTilePriorities(tree, |
44 visible_layer_rect, | 44 visible_layer_rect, |
45 layer_contents_scale, | 45 layer_contents_scale, |
46 current_frame_time_in_seconds, | 46 current_frame_time_in_seconds, |
47 NULL, | 47 Occlusion()); |
48 NULL, | |
49 gfx::Transform()); | |
50 } | 48 } |
51 } | 49 } |
52 | 50 |
53 class TestablePictureLayerTiling : public PictureLayerTiling { | 51 class TestablePictureLayerTiling : public PictureLayerTiling { |
54 public: | 52 public: |
55 using PictureLayerTiling::SetLiveTilesRect; | 53 using PictureLayerTiling::SetLiveTilesRect; |
56 using PictureLayerTiling::TileAt; | 54 using PictureLayerTiling::TileAt; |
57 | 55 |
58 static scoped_ptr<TestablePictureLayerTiling> Create( | 56 static scoped_ptr<TestablePictureLayerTiling> Create( |
59 float contents_scale, | 57 float contents_scale, |
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
533 client.set_skewport_extrapolation_limit_in_content_pixels(75); | 531 client.set_skewport_extrapolation_limit_in_content_pixels(75); |
534 client.set_tree(ACTIVE_TREE); | 532 client.set_tree(ACTIVE_TREE); |
535 scoped_ptr<TestablePictureLayerTiling> tiling; | 533 scoped_ptr<TestablePictureLayerTiling> tiling; |
536 | 534 |
537 gfx::Rect viewport(0, 0, 100, 100); | 535 gfx::Rect viewport(0, 0, 100, 100); |
538 gfx::Size layer_bounds(200, 200); | 536 gfx::Size layer_bounds(200, 200); |
539 | 537 |
540 client.SetTileSize(gfx::Size(100, 100)); | 538 client.SetTileSize(gfx::Size(100, 100)); |
541 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 539 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
542 | 540 |
543 tiling->UpdateTilePriorities( | 541 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion()); |
544 ACTIVE_TREE, viewport, 1.f, 1.0, NULL, NULL, gfx::Transform()); | |
545 | 542 |
546 // Move viewport down 50 pixels in 0.5 seconds. | 543 // Move viewport down 50 pixels in 0.5 seconds. |
547 gfx::Rect down_skewport = | 544 gfx::Rect down_skewport = |
548 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100)); | 545 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100)); |
549 | 546 |
550 EXPECT_EQ(0, down_skewport.x()); | 547 EXPECT_EQ(0, down_skewport.x()); |
551 EXPECT_EQ(50, down_skewport.y()); | 548 EXPECT_EQ(50, down_skewport.y()); |
552 EXPECT_EQ(100, down_skewport.width()); | 549 EXPECT_EQ(100, down_skewport.width()); |
553 EXPECT_EQ(175, down_skewport.height()); | 550 EXPECT_EQ(175, down_skewport.height()); |
554 EXPECT_TRUE(down_skewport.Contains(gfx::Rect(0, 50, 100, 100))); | 551 EXPECT_TRUE(down_skewport.Contains(gfx::Rect(0, 50, 100, 100))); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
600 FakePictureLayerTilingClient client; | 597 FakePictureLayerTilingClient client; |
601 scoped_ptr<TestablePictureLayerTiling> tiling; | 598 scoped_ptr<TestablePictureLayerTiling> tiling; |
602 | 599 |
603 gfx::Rect viewport(0, 0, 100, 100); | 600 gfx::Rect viewport(0, 0, 100, 100); |
604 gfx::Size layer_bounds(200, 200); | 601 gfx::Size layer_bounds(200, 200); |
605 | 602 |
606 client.SetTileSize(gfx::Size(100, 100)); | 603 client.SetTileSize(gfx::Size(100, 100)); |
607 client.set_tree(ACTIVE_TREE); | 604 client.set_tree(ACTIVE_TREE); |
608 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 605 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
609 | 606 |
610 tiling->UpdateTilePriorities( | 607 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion()); |
611 ACTIVE_TREE, viewport, 1.f, 1.0, NULL, NULL, gfx::Transform()); | |
612 | 608 |
613 // Move viewport down 50 pixels in 0.5 seconds. | 609 // Move viewport down 50 pixels in 0.5 seconds. |
614 gfx::Rect down_skewport = | 610 gfx::Rect down_skewport = |
615 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100)); | 611 tiling->ComputeSkewport(1.5, gfx::Rect(0, 50, 100, 100)); |
616 | 612 |
617 EXPECT_EQ(0, down_skewport.x()); | 613 EXPECT_EQ(0, down_skewport.x()); |
618 EXPECT_EQ(50, down_skewport.y()); | 614 EXPECT_EQ(50, down_skewport.y()); |
619 EXPECT_EQ(100, down_skewport.width()); | 615 EXPECT_EQ(100, down_skewport.width()); |
620 EXPECT_EQ(200, down_skewport.height()); | 616 EXPECT_EQ(200, down_skewport.height()); |
621 | 617 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
668 | 664 |
669 // 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. |
670 // 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) |
671 // 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 |
672 // (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 |
673 // tiling. | 669 // tiling. |
674 tiling = TestablePictureLayerTiling::Create(0.25f, layer_bounds, &client); | 670 tiling = TestablePictureLayerTiling::Create(0.25f, layer_bounds, &client); |
675 gfx::Rect viewport_in_content_space = | 671 gfx::Rect viewport_in_content_space = |
676 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f)); | 672 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f)); |
677 | 673 |
678 tiling->UpdateTilePriorities( | 674 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.f, 1.0, Occlusion()); |
679 ACTIVE_TREE, viewport, 1.f, 1.0, NULL, NULL, gfx::Transform()); | |
680 | 675 |
681 gfx::Rect soon_rect = viewport; | 676 gfx::Rect soon_rect = viewport; |
682 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); | 677 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); |
683 gfx::Rect soon_rect_in_content_space = | 678 gfx::Rect soon_rect_in_content_space = |
684 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f)); | 679 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f)); |
685 | 680 |
686 // Sanity checks. | 681 // Sanity checks. |
687 for (int i = 0; i < 47; ++i) { | 682 for (int i = 0; i < 47; ++i) { |
688 for (int j = 0; j < 47; ++j) { | 683 for (int j = 0; j < 47; ++j) { |
689 EXPECT_TRUE(tiling->TileAt(i, j)) << "i: " << i << " j: " << j; | 684 EXPECT_TRUE(tiling->TileAt(i, j)) << "i: " << i << " j: " << j; |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
753 soon_rect = viewport; | 748 soon_rect = viewport; |
754 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); | 749 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); |
755 soon_rect_in_content_space = | 750 soon_rect_in_content_space = |
756 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f)); | 751 gfx::ToEnclosedRect(gfx::ScaleRect(soon_rect, 0.25f)); |
757 | 752 |
758 EXPECT_EQ(0, skewport.x()); | 753 EXPECT_EQ(0, skewport.x()); |
759 EXPECT_EQ(10, skewport.y()); | 754 EXPECT_EQ(10, skewport.y()); |
760 EXPECT_EQ(25, skewport.width()); | 755 EXPECT_EQ(25, skewport.width()); |
761 EXPECT_EQ(35, skewport.height()); | 756 EXPECT_EQ(35, skewport.height()); |
762 | 757 |
763 tiling->UpdateTilePriorities( | 758 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.f, 2.0, Occlusion()); |
764 ACTIVE_TREE, viewport, 1.f, 2.0, NULL, NULL, gfx::Transform()); | |
765 | 759 |
766 have_now = false; | 760 have_now = false; |
767 have_eventually = false; | 761 have_eventually = false; |
768 have_soon = false; | 762 have_soon = false; |
769 | 763 |
770 // Viewport moved, so we expect to find some NOW tiles, some SOON tiles and | 764 // Viewport moved, so we expect to find some NOW tiles, some SOON tiles and |
771 // some EVENTUALLY tiles. | 765 // some EVENTUALLY tiles. |
772 for (int i = 0; i < 47; ++i) { | 766 for (int i = 0; i < 47; ++i) { |
773 for (int j = 0; j < 47; ++j) { | 767 for (int j = 0; j < 47; ++j) { |
774 Tile* tile = tiling->TileAt(i, j); | 768 Tile* tile = tiling->TileAt(i, j); |
(...skipping 30 matching lines...) Expand all Loading... |
805 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); | 799 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); |
806 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible); | 800 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible); |
807 | 801 |
808 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); | 802 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); |
809 EXPECT_FLOAT_EQ(28.f, priority.distance_to_visible); | 803 EXPECT_FLOAT_EQ(28.f, priority.distance_to_visible); |
810 | 804 |
811 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); | 805 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); |
812 EXPECT_FLOAT_EQ(4.f, priority.distance_to_visible); | 806 EXPECT_FLOAT_EQ(4.f, priority.distance_to_visible); |
813 | 807 |
814 // Change the underlying layer scale. | 808 // Change the underlying layer scale. |
815 tiling->UpdateTilePriorities( | 809 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 2.0f, 3.0, Occlusion()); |
816 ACTIVE_TREE, viewport, 2.0f, 3.0, NULL, NULL, gfx::Transform()); | |
817 | 810 |
818 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); | 811 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); |
819 EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible); | 812 EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible); |
820 | 813 |
821 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); | 814 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); |
822 EXPECT_FLOAT_EQ(56.f, priority.distance_to_visible); | 815 EXPECT_FLOAT_EQ(56.f, priority.distance_to_visible); |
823 | 816 |
824 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); | 817 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); |
825 EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible); | 818 EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible); |
826 | 819 |
827 // Test additional scales. | 820 // Test additional scales. |
828 tiling = TestablePictureLayerTiling::Create(0.2f, layer_bounds, &client); | 821 tiling = TestablePictureLayerTiling::Create(0.2f, layer_bounds, &client); |
829 tiling->UpdateTilePriorities( | 822 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 4.0, Occlusion()); |
830 ACTIVE_TREE, viewport, 1.0f, 4.0, NULL, NULL, gfx::Transform()); | |
831 | 823 |
832 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); | 824 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); |
833 EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible); | 825 EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible); |
834 | 826 |
835 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); | 827 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); |
836 EXPECT_FLOAT_EQ(70.f, priority.distance_to_visible); | 828 EXPECT_FLOAT_EQ(70.f, priority.distance_to_visible); |
837 | 829 |
838 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); | 830 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); |
839 EXPECT_FLOAT_EQ(60.f, priority.distance_to_visible); | 831 EXPECT_FLOAT_EQ(60.f, priority.distance_to_visible); |
840 | 832 |
841 tiling->UpdateTilePriorities( | 833 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 0.5f, 5.0, Occlusion()); |
842 ACTIVE_TREE, viewport, 0.5f, 5.0, NULL, NULL, gfx::Transform()); | |
843 | 834 |
844 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); | 835 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); |
845 EXPECT_FLOAT_EQ(55.f, priority.distance_to_visible); | 836 EXPECT_FLOAT_EQ(55.f, priority.distance_to_visible); |
846 | 837 |
847 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); | 838 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); |
848 EXPECT_FLOAT_EQ(35.f, priority.distance_to_visible); | 839 EXPECT_FLOAT_EQ(35.f, priority.distance_to_visible); |
849 | 840 |
850 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); | 841 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); |
851 EXPECT_FLOAT_EQ(30.f, priority.distance_to_visible); | 842 EXPECT_FLOAT_EQ(30.f, priority.distance_to_visible); |
852 } | 843 } |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1080 gfx::Rect viewport(50, 50, 100, 100); | 1071 gfx::Rect viewport(50, 50, 100, 100); |
1081 gfx::Size layer_bounds(800, 800); | 1072 gfx::Size layer_bounds(800, 800); |
1082 | 1073 |
1083 gfx::Rect soon_rect = viewport; | 1074 gfx::Rect soon_rect = viewport; |
1084 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); | 1075 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); |
1085 | 1076 |
1086 client.SetTileSize(gfx::Size(30, 30)); | 1077 client.SetTileSize(gfx::Size(30, 30)); |
1087 client.set_tree(ACTIVE_TREE); | 1078 client.set_tree(ACTIVE_TREE); |
1088 | 1079 |
1089 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 1080 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
1090 tiling->UpdateTilePriorities( | 1081 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); |
1091 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); | |
1092 | 1082 |
1093 PictureLayerTiling::TilingRasterTileIterator empty_iterator; | 1083 PictureLayerTiling::TilingRasterTileIterator empty_iterator; |
1094 EXPECT_FALSE(empty_iterator); | 1084 EXPECT_FALSE(empty_iterator); |
1095 | 1085 |
1096 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); | 1086 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); |
1097 | 1087 |
1098 // Sanity check. | 1088 // Sanity check. |
1099 EXPECT_EQ(841u, all_tiles.size()); | 1089 EXPECT_EQ(841u, all_tiles.size()); |
1100 | 1090 |
1101 // The explanation of each iteration is as follows: | 1091 // The explanation of each iteration is as follows: |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1189 scoped_ptr<TestablePictureLayerTiling> tiling; | 1179 scoped_ptr<TestablePictureLayerTiling> tiling; |
1190 | 1180 |
1191 gfx::Rect viewport(50, 0, 100, 100); | 1181 gfx::Rect viewport(50, 0, 100, 100); |
1192 gfx::Rect moved_viewport(50, 0, 100, 500); | 1182 gfx::Rect moved_viewport(50, 0, 100, 500); |
1193 gfx::Size layer_bounds(1000, 1000); | 1183 gfx::Size layer_bounds(1000, 1000); |
1194 | 1184 |
1195 client.SetTileSize(gfx::Size(30, 30)); | 1185 client.SetTileSize(gfx::Size(30, 30)); |
1196 client.set_tree(ACTIVE_TREE); | 1186 client.set_tree(ACTIVE_TREE); |
1197 | 1187 |
1198 tiling = TestablePictureLayerTiling::Create(1.f, layer_bounds, &client); | 1188 tiling = TestablePictureLayerTiling::Create(1.f, layer_bounds, &client); |
| 1189 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); |
1199 tiling->UpdateTilePriorities( | 1190 tiling->UpdateTilePriorities( |
1200 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); | 1191 ACTIVE_TREE, moved_viewport, 1.0f, 2.0, Occlusion()); |
1201 tiling->UpdateTilePriorities( | |
1202 ACTIVE_TREE, moved_viewport, 1.0f, 2.0, NULL, NULL, gfx::Transform()); | |
1203 | 1192 |
1204 gfx::Rect soon_rect = moved_viewport; | 1193 gfx::Rect soon_rect = moved_viewport; |
1205 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); | 1194 soon_rect.Inset(-312.f, -312.f, -312.f, -312.f); |
1206 | 1195 |
1207 // There are 3 bins in TilePriority. | 1196 // There are 3 bins in TilePriority. |
1208 bool have_tiles[3] = {}; | 1197 bool have_tiles[3] = {}; |
1209 Tile* last_tile = NULL; | 1198 Tile* last_tile = NULL; |
1210 int eventually_bin_order_correct_count = 0; | 1199 int eventually_bin_order_correct_count = 0; |
1211 int eventually_bin_order_incorrect_count = 0; | 1200 int eventually_bin_order_incorrect_count = 0; |
1212 for (PictureLayerTiling::TilingRasterTileIterator it(tiling.get(), | 1201 for (PictureLayerTiling::TilingRasterTileIterator it(tiling.get(), |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1265 FakePictureLayerTilingClient client(resource_provider.get()); | 1254 FakePictureLayerTilingClient client(resource_provider.get()); |
1266 scoped_ptr<TestablePictureLayerTiling> tiling; | 1255 scoped_ptr<TestablePictureLayerTiling> tiling; |
1267 | 1256 |
1268 gfx::Rect viewport(50, 50, 100, 100); | 1257 gfx::Rect viewport(50, 50, 100, 100); |
1269 gfx::Size layer_bounds(2000, 2000); | 1258 gfx::Size layer_bounds(2000, 2000); |
1270 | 1259 |
1271 client.SetTileSize(gfx::Size(30, 30)); | 1260 client.SetTileSize(gfx::Size(30, 30)); |
1272 client.set_tree(ACTIVE_TREE); | 1261 client.set_tree(ACTIVE_TREE); |
1273 | 1262 |
1274 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 1263 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
1275 tiling->UpdateTilePriorities( | 1264 tiling->UpdateTilePriorities(ACTIVE_TREE, viewport, 1.0f, 1.0, Occlusion()); |
1276 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); | |
1277 | 1265 |
1278 PictureLayerTiling::TilingRasterTileIterator empty_iterator; | 1266 PictureLayerTiling::TilingRasterTileIterator empty_iterator; |
1279 EXPECT_FALSE(empty_iterator); | 1267 EXPECT_FALSE(empty_iterator); |
1280 | 1268 |
1281 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); | 1269 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); |
1282 | 1270 |
1283 PictureLayerTiling::TilingEvictionTileIterator it( | 1271 PictureLayerTiling::TilingEvictionTileIterator it( |
1284 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, PictureLayerTiling::NOW); | 1272 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, PictureLayerTiling::NOW); |
1285 | 1273 |
1286 // Tiles don't have resources to evict. | 1274 // Tiles don't have resources to evict. |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1344 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1332 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
1345 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1333 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
1346 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1334 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1347 | 1335 |
1348 client_.set_tree(ACTIVE_TREE); | 1336 client_.set_tree(ACTIVE_TREE); |
1349 tiling_->UpdateTilePriorities( | 1337 tiling_->UpdateTilePriorities( |
1350 ACTIVE_TREE, | 1338 ACTIVE_TREE, |
1351 gfx::Rect(layer_bounds), // visible content rect | 1339 gfx::Rect(layer_bounds), // visible content rect |
1352 1.f, // current contents scale | 1340 1.f, // current contents scale |
1353 1.0, // current frame time | 1341 1.0, // current frame time |
1354 NULL, // occlusion tracker | 1342 Occlusion()); |
1355 NULL, // render target | |
1356 gfx::Transform()); // draw transform | |
1357 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 1343 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
1358 | 1344 |
1359 // Make the viewport rect empty. All tiles are killed and become zombies. | 1345 // Make the viewport rect empty. All tiles are killed and become zombies. |
1360 tiling_->UpdateTilePriorities(ACTIVE_TREE, | 1346 tiling_->UpdateTilePriorities(ACTIVE_TREE, |
1361 gfx::Rect(), // visible content rect | 1347 gfx::Rect(), // visible content rect |
1362 1.f, // current contents scale | 1348 1.f, // current contents scale |
1363 2.0, // current frame time | 1349 2.0, // current frame time |
1364 NULL, // occlusion tracker | 1350 Occlusion()); |
1365 NULL, // render target | |
1366 gfx::Transform()); // draw transform | |
1367 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1351 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1368 } | 1352 } |
1369 | 1353 |
1370 TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) { | 1354 TEST_F(PictureLayerTilingIteratorTest, TilesExistGiantViewport) { |
1371 gfx::Size layer_bounds(1099, 801); | 1355 gfx::Size layer_bounds(1099, 801); |
1372 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1356 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
1373 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1357 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
1374 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1358 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1375 | 1359 |
1376 gfx::Rect giant_rect(-10000000, -10000000, 1000000000, 1000000000); | 1360 gfx::Rect giant_rect(-10000000, -10000000, 1000000000, 1000000000); |
1377 | 1361 |
1378 client_.set_tree(ACTIVE_TREE); | 1362 client_.set_tree(ACTIVE_TREE); |
1379 tiling_->UpdateTilePriorities( | 1363 tiling_->UpdateTilePriorities( |
1380 ACTIVE_TREE, | 1364 ACTIVE_TREE, |
1381 gfx::Rect(layer_bounds), // visible content rect | 1365 gfx::Rect(layer_bounds), // visible content rect |
1382 1.f, // current contents scale | 1366 1.f, // current contents scale |
1383 1.0, // current frame time | 1367 1.0, // current frame time |
1384 NULL, // occlusion tracker | 1368 Occlusion()); |
1385 NULL, // render target | |
1386 gfx::Transform()); // draw transform | |
1387 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 1369 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
1388 | 1370 |
1389 // If the visible content rect is empty, it should still have live tiles. | 1371 // If the visible content rect is empty, it should still have live tiles. |
1390 tiling_->UpdateTilePriorities(ACTIVE_TREE, | 1372 tiling_->UpdateTilePriorities(ACTIVE_TREE, |
1391 giant_rect, // visible content rect | 1373 giant_rect, // visible content rect |
1392 1.f, // current contents scale | 1374 1.f, // current contents scale |
1393 2.0, // current frame time | 1375 2.0, // current frame time |
1394 NULL, // occlusion tracker | 1376 Occlusion()); |
1395 NULL, // render target | |
1396 gfx::Transform()); // draw transform | |
1397 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 1377 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
1398 } | 1378 } |
1399 | 1379 |
1400 TEST_F(PictureLayerTilingIteratorTest, TilesExistOutsideViewport) { | 1380 TEST_F(PictureLayerTilingIteratorTest, TilesExistOutsideViewport) { |
1401 gfx::Size layer_bounds(1099, 801); | 1381 gfx::Size layer_bounds(1099, 801); |
1402 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1382 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
1403 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1383 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
1404 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1384 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1405 | 1385 |
1406 // This rect does not intersect with the layer, as the layer is outside the | 1386 // This rect does not intersect with the layer, as the layer is outside the |
1407 // viewport. | 1387 // viewport. |
1408 gfx::Rect viewport_rect(1100, 0, 1000, 1000); | 1388 gfx::Rect viewport_rect(1100, 0, 1000, 1000); |
1409 EXPECT_FALSE(viewport_rect.Intersects(gfx::Rect(layer_bounds))); | 1389 EXPECT_FALSE(viewport_rect.Intersects(gfx::Rect(layer_bounds))); |
1410 | 1390 |
1411 client_.set_tree(ACTIVE_TREE); | 1391 client_.set_tree(ACTIVE_TREE); |
1412 tiling_->UpdateTilePriorities(ACTIVE_TREE, | 1392 tiling_->UpdateTilePriorities(ACTIVE_TREE, |
1413 viewport_rect, // visible content rect | 1393 viewport_rect, // visible content rect |
1414 1.f, // current contents scale | 1394 1.f, // current contents scale |
1415 1.0, // current frame time | 1395 1.0, // current frame time |
1416 NULL, // occlusion tracker | 1396 Occlusion()); |
1417 NULL, // render target | |
1418 gfx::Transform()); // draw transform | |
1419 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); | 1397 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, true)); |
1420 } | 1398 } |
1421 | 1399 |
1422 static void TilesIntersectingRectExist(const gfx::Rect& rect, | 1400 static void TilesIntersectingRectExist(const gfx::Rect& rect, |
1423 bool intersect_exists, | 1401 bool intersect_exists, |
1424 Tile* tile, | 1402 Tile* tile, |
1425 const gfx::Rect& geometry_rect) { | 1403 const gfx::Rect& geometry_rect) { |
1426 bool intersects = rect.Intersects(geometry_rect); | 1404 bool intersects = rect.Intersects(geometry_rect); |
1427 bool expected_exists = intersect_exists ? intersects : !intersects; | 1405 bool expected_exists = intersect_exists ? intersects : !intersects; |
1428 EXPECT_EQ(expected_exists, tile != NULL) | 1406 EXPECT_EQ(expected_exists, tile != NULL) |
1429 << "Rects intersecting " << rect.ToString() << " should exist. " | 1407 << "Rects intersecting " << rect.ToString() << " should exist. " |
1430 << "Current tile rect is " << geometry_rect.ToString(); | 1408 << "Current tile rect is " << geometry_rect.ToString(); |
1431 } | 1409 } |
1432 | 1410 |
1433 TEST_F(PictureLayerTilingIteratorTest, | 1411 TEST_F(PictureLayerTilingIteratorTest, |
1434 TilesExistLargeViewportAndLayerWithSmallVisibleArea) { | 1412 TilesExistLargeViewportAndLayerWithSmallVisibleArea) { |
1435 gfx::Size layer_bounds(10000, 10000); | 1413 gfx::Size layer_bounds(10000, 10000); |
1436 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1414 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
1437 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1415 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
1438 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1416 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1439 | 1417 |
1440 gfx::Rect visible_rect(8000, 8000, 50, 50); | 1418 gfx::Rect visible_rect(8000, 8000, 50, 50); |
1441 | 1419 |
1442 client_.set_tree(ACTIVE_TREE); | 1420 client_.set_tree(ACTIVE_TREE); |
1443 set_max_tiles_for_interest_area(1); | 1421 set_max_tiles_for_interest_area(1); |
1444 tiling_->UpdateTilePriorities(ACTIVE_TREE, | 1422 tiling_->UpdateTilePriorities(ACTIVE_TREE, |
1445 visible_rect, // visible content rect | 1423 visible_rect, // visible content rect |
1446 1.f, // current contents scale | 1424 1.f, // current contents scale |
1447 1.0, // current frame time | 1425 1.0, // current frame time |
1448 NULL, // occlusion tracker | 1426 Occlusion()); |
1449 NULL, // render target | |
1450 gfx::Transform()); // draw transform | |
1451 VerifyTiles(1.f, | 1427 VerifyTiles(1.f, |
1452 gfx::Rect(layer_bounds), | 1428 gfx::Rect(layer_bounds), |
1453 base::Bind(&TilesIntersectingRectExist, visible_rect, true)); | 1429 base::Bind(&TilesIntersectingRectExist, visible_rect, true)); |
1454 } | 1430 } |
1455 | 1431 |
1456 TEST_F(PictureLayerTilingIteratorTest, AddTilingsToMatchScale) { | 1432 TEST_F(PictureLayerTilingIteratorTest, AddTilingsToMatchScale) { |
1457 gfx::Size layer_bounds(1099, 801); | 1433 gfx::Size layer_bounds(1099, 801); |
1458 gfx::Size tile_size(100, 100); | 1434 gfx::Size tile_size(100, 100); |
1459 | 1435 |
1460 client_.SetTileSize(tile_size); | 1436 client_.SetTileSize(tile_size); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1526 client.SetTileSize(gfx::Size(100, 100)); | 1502 client.SetTileSize(gfx::Size(100, 100)); |
1527 client.set_tree(ACTIVE_TREE); | 1503 client.set_tree(ACTIVE_TREE); |
1528 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1504 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1529 current_layer_bounds, | 1505 current_layer_bounds, |
1530 &client); | 1506 &client); |
1531 | 1507 |
1532 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1508 tiling->UpdateTilePriorities(ACTIVE_TREE, |
1533 viewport_in_layer_space, | 1509 viewport_in_layer_space, |
1534 current_layer_contents_scale, | 1510 current_layer_contents_scale, |
1535 current_frame_time_in_seconds, | 1511 current_frame_time_in_seconds, |
1536 NULL, // occlusion tracker | 1512 Occlusion()); |
1537 NULL, // render target | |
1538 gfx::Transform()); // draw transform | |
1539 | 1513 |
1540 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1514 ASSERT_TRUE(tiling->TileAt(0, 0)); |
1541 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1515 ASSERT_TRUE(tiling->TileAt(0, 1)); |
1542 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1516 ASSERT_TRUE(tiling->TileAt(1, 0)); |
1543 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1517 ASSERT_TRUE(tiling->TileAt(1, 1)); |
1544 | 1518 |
1545 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1519 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
1546 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1520 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
1547 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); | 1521 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); |
1548 | 1522 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1583 client.SetTileSize(gfx::Size(100, 100)); | 1557 client.SetTileSize(gfx::Size(100, 100)); |
1584 client.set_tree(ACTIVE_TREE); | 1558 client.set_tree(ACTIVE_TREE); |
1585 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1559 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1586 current_layer_bounds, | 1560 current_layer_bounds, |
1587 &client); | 1561 &client); |
1588 | 1562 |
1589 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1563 tiling->UpdateTilePriorities(ACTIVE_TREE, |
1590 viewport_in_layer_space, | 1564 viewport_in_layer_space, |
1591 current_layer_contents_scale, | 1565 current_layer_contents_scale, |
1592 current_frame_time_in_seconds, | 1566 current_frame_time_in_seconds, |
1593 NULL, // occlusion tracker | 1567 Occlusion()); |
1594 NULL, // render target | |
1595 gfx::Transform()); // draw transform | |
1596 | 1568 |
1597 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1569 ASSERT_TRUE(tiling->TileAt(0, 0)); |
1598 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1570 ASSERT_TRUE(tiling->TileAt(0, 1)); |
1599 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1571 ASSERT_TRUE(tiling->TileAt(1, 0)); |
1600 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1572 ASSERT_TRUE(tiling->TileAt(1, 1)); |
1601 | 1573 |
1602 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1574 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
1603 EXPECT_GT(priority.distance_to_visible, 0.f); | 1575 EXPECT_GT(priority.distance_to_visible, 0.f); |
1604 EXPECT_NE(TilePriority::NOW, priority.priority_bin); | 1576 EXPECT_NE(TilePriority::NOW, priority.priority_bin); |
1605 | 1577 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1650 client.SetTileSize(gfx::Size(100, 100)); | 1622 client.SetTileSize(gfx::Size(100, 100)); |
1651 client.set_tree(ACTIVE_TREE); | 1623 client.set_tree(ACTIVE_TREE); |
1652 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1624 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1653 current_layer_bounds, | 1625 current_layer_bounds, |
1654 &client); | 1626 &client); |
1655 | 1627 |
1656 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1628 tiling->UpdateTilePriorities(ACTIVE_TREE, |
1657 viewport_in_layer_space, | 1629 viewport_in_layer_space, |
1658 current_layer_contents_scale, | 1630 current_layer_contents_scale, |
1659 current_frame_time_in_seconds, | 1631 current_frame_time_in_seconds, |
1660 NULL, // occlusion tracker | 1632 Occlusion()); |
1661 NULL, // render target | |
1662 gfx::Transform()); // draw transform | |
1663 | 1633 |
1664 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1634 ASSERT_TRUE(tiling->TileAt(0, 0)); |
1665 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1635 ASSERT_TRUE(tiling->TileAt(0, 1)); |
1666 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1636 ASSERT_TRUE(tiling->TileAt(1, 0)); |
1667 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1637 ASSERT_TRUE(tiling->TileAt(1, 1)); |
1668 | 1638 |
1669 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1639 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
1670 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1640 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
1671 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); | 1641 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); |
1672 | 1642 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1711 client.SetTileSize(gfx::Size(100, 100)); | 1681 client.SetTileSize(gfx::Size(100, 100)); |
1712 client.set_tree(ACTIVE_TREE); | 1682 client.set_tree(ACTIVE_TREE); |
1713 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1683 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1714 current_layer_bounds, | 1684 current_layer_bounds, |
1715 &client); | 1685 &client); |
1716 | 1686 |
1717 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1687 tiling->UpdateTilePriorities(ACTIVE_TREE, |
1718 viewport_in_layer_space, | 1688 viewport_in_layer_space, |
1719 current_layer_contents_scale, | 1689 current_layer_contents_scale, |
1720 current_frame_time_in_seconds, | 1690 current_frame_time_in_seconds, |
1721 NULL, // occlusion tracker | 1691 Occlusion()); |
1722 NULL, // render target | |
1723 gfx::Transform()); // draw transform | |
1724 | 1692 |
1725 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1693 ASSERT_TRUE(tiling->TileAt(0, 0)); |
1726 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1694 ASSERT_TRUE(tiling->TileAt(0, 1)); |
1727 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1695 ASSERT_TRUE(tiling->TileAt(1, 0)); |
1728 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1696 ASSERT_TRUE(tiling->TileAt(1, 1)); |
1729 | 1697 |
1730 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1698 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
1731 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1699 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
1732 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); | 1700 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); |
1733 | 1701 |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1796 client.SetTileSize(gfx::Size(100, 100)); | 1764 client.SetTileSize(gfx::Size(100, 100)); |
1797 client.set_tree(ACTIVE_TREE); | 1765 client.set_tree(ACTIVE_TREE); |
1798 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1766 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1799 current_layer_bounds, | 1767 current_layer_bounds, |
1800 &client); | 1768 &client); |
1801 | 1769 |
1802 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1770 tiling->UpdateTilePriorities(ACTIVE_TREE, |
1803 viewport_in_layer_space, | 1771 viewport_in_layer_space, |
1804 current_layer_contents_scale, | 1772 current_layer_contents_scale, |
1805 current_frame_time_in_seconds, | 1773 current_frame_time_in_seconds, |
1806 NULL, // occlusion tracker | 1774 Occlusion()); |
1807 NULL, // render target | |
1808 gfx::Transform()); // draw transform | |
1809 | 1775 |
1810 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1776 ASSERT_TRUE(tiling->TileAt(0, 0)); |
1811 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1777 ASSERT_TRUE(tiling->TileAt(0, 1)); |
1812 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1778 ASSERT_TRUE(tiling->TileAt(1, 0)); |
1813 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1779 ASSERT_TRUE(tiling->TileAt(1, 1)); |
1814 | 1780 |
1815 // All tiles will have a positive distance_to_visible | 1781 // All tiles will have a positive distance_to_visible |
1816 // and an infinite time_to_visible. | 1782 // and an infinite time_to_visible. |
1817 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1783 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
1818 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f); | 1784 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1891 client.SetTileSize(gfx::Size(100, 100)); | 1857 client.SetTileSize(gfx::Size(100, 100)); |
1892 client.set_tree(ACTIVE_TREE); | 1858 client.set_tree(ACTIVE_TREE); |
1893 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1859 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1894 current_layer_bounds, | 1860 current_layer_bounds, |
1895 &client); | 1861 &client); |
1896 | 1862 |
1897 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1863 tiling->UpdateTilePriorities(ACTIVE_TREE, |
1898 viewport_in_layer_space, | 1864 viewport_in_layer_space, |
1899 current_layer_contents_scale, | 1865 current_layer_contents_scale, |
1900 current_frame_time_in_seconds, | 1866 current_frame_time_in_seconds, |
1901 NULL, // occlusion tracker | 1867 Occlusion()); |
1902 NULL, // render target | |
1903 gfx::Transform()); // draw transform | |
1904 | 1868 |
1905 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1869 ASSERT_TRUE(tiling->TileAt(0, 0)); |
1906 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1870 ASSERT_TRUE(tiling->TileAt(0, 1)); |
1907 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1871 ASSERT_TRUE(tiling->TileAt(1, 0)); |
1908 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1872 ASSERT_TRUE(tiling->TileAt(1, 1)); |
1909 | 1873 |
1910 // Left-side tiles will be clipped by the transform, so we have to assume | 1874 // Left-side tiles will be clipped by the transform, so we have to assume |
1911 // they are visible just in case. | 1875 // they are visible just in case. |
1912 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1876 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
1913 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1877 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1957 client.set_tree(ACTIVE_TREE); | 1921 client.set_tree(ACTIVE_TREE); |
1958 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 1922 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
1959 current_layer_bounds, | 1923 current_layer_bounds, |
1960 &client); | 1924 &client); |
1961 | 1925 |
1962 // previous ("last") frame | 1926 // previous ("last") frame |
1963 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1927 tiling->UpdateTilePriorities(ACTIVE_TREE, |
1964 viewport_in_layer_space, | 1928 viewport_in_layer_space, |
1965 last_layer_contents_scale, | 1929 last_layer_contents_scale, |
1966 last_frame_time_in_seconds, | 1930 last_frame_time_in_seconds, |
1967 NULL, // occlusion tracker | 1931 Occlusion()); |
1968 NULL, // render target | |
1969 gfx::Transform()); // draw transform | |
1970 | 1932 |
1971 // current frame | 1933 // current frame |
1972 tiling->UpdateTilePriorities(ACTIVE_TREE, | 1934 tiling->UpdateTilePriorities(ACTIVE_TREE, |
1973 viewport_in_layer_space, | 1935 viewport_in_layer_space, |
1974 current_layer_contents_scale, | 1936 current_layer_contents_scale, |
1975 current_frame_time_in_seconds, | 1937 current_frame_time_in_seconds, |
1976 NULL, // occlusion tracker | 1938 Occlusion()); |
1977 NULL, // render target | |
1978 gfx::Transform()); // draw transform | |
1979 | 1939 |
1980 ASSERT_TRUE(tiling->TileAt(0, 0)); | 1940 ASSERT_TRUE(tiling->TileAt(0, 0)); |
1981 ASSERT_TRUE(tiling->TileAt(0, 1)); | 1941 ASSERT_TRUE(tiling->TileAt(0, 1)); |
1982 ASSERT_TRUE(tiling->TileAt(1, 0)); | 1942 ASSERT_TRUE(tiling->TileAt(1, 0)); |
1983 ASSERT_TRUE(tiling->TileAt(1, 1)); | 1943 ASSERT_TRUE(tiling->TileAt(1, 1)); |
1984 | 1944 |
1985 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 1945 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
1986 EXPECT_GT(priority.distance_to_visible, 0.f); | 1946 EXPECT_GT(priority.distance_to_visible, 0.f); |
1987 EXPECT_NE(TilePriority::NOW, priority.priority_bin); | 1947 EXPECT_NE(TilePriority::NOW, priority.priority_bin); |
1988 | 1948 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2039 client.set_tree(ACTIVE_TREE); | 1999 client.set_tree(ACTIVE_TREE); |
2040 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 2000 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
2041 current_layer_bounds, | 2001 current_layer_bounds, |
2042 &client); | 2002 &client); |
2043 | 2003 |
2044 // previous ("last") frame | 2004 // previous ("last") frame |
2045 tiling->UpdateTilePriorities(ACTIVE_TREE, | 2005 tiling->UpdateTilePriorities(ACTIVE_TREE, |
2046 viewport_in_layer_space, | 2006 viewport_in_layer_space, |
2047 last_layer_contents_scale, | 2007 last_layer_contents_scale, |
2048 last_frame_time_in_seconds, | 2008 last_frame_time_in_seconds, |
2049 NULL, // occlusion tracker | 2009 Occlusion()); |
2050 NULL, // render target | |
2051 gfx::Transform()); // draw transform | |
2052 | 2010 |
2053 // current frame | 2011 // current frame |
2054 tiling->UpdateTilePriorities(ACTIVE_TREE, | 2012 tiling->UpdateTilePriorities(ACTIVE_TREE, |
2055 viewport_in_layer_space, | 2013 viewport_in_layer_space, |
2056 current_layer_contents_scale, | 2014 current_layer_contents_scale, |
2057 current_frame_time_in_seconds, | 2015 current_frame_time_in_seconds, |
2058 NULL, // occlusion tracker | 2016 Occlusion()); |
2059 NULL, // render target | |
2060 gfx::Transform()); // draw transform | |
2061 | 2017 |
2062 ASSERT_TRUE(tiling->TileAt(0, 0)); | 2018 ASSERT_TRUE(tiling->TileAt(0, 0)); |
2063 ASSERT_TRUE(tiling->TileAt(0, 1)); | 2019 ASSERT_TRUE(tiling->TileAt(0, 1)); |
2064 ASSERT_TRUE(tiling->TileAt(1, 0)); | 2020 ASSERT_TRUE(tiling->TileAt(1, 0)); |
2065 ASSERT_TRUE(tiling->TileAt(1, 1)); | 2021 ASSERT_TRUE(tiling->TileAt(1, 1)); |
2066 | 2022 |
2067 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); | 2023 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); |
2068 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 2024 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
2069 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); | 2025 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); |
2070 | 2026 |
2071 priority = tiling->TileAt(0, 1)->priority(ACTIVE_TREE); | 2027 priority = tiling->TileAt(0, 1)->priority(ACTIVE_TREE); |
2072 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 2028 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
2073 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); | 2029 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); |
2074 | 2030 |
2075 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); | 2031 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); |
2076 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 2032 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
2077 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); | 2033 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); |
2078 } | 2034 } |
2079 | 2035 |
2080 TEST(PictureLayerTilingTest, ResetClearsPriorities) { | 2036 TEST(PictureLayerTilingTest, ResetClearsPriorities) { |
2081 FakePictureLayerTilingClient client; | 2037 FakePictureLayerTilingClient client; |
2082 scoped_ptr<TestablePictureLayerTiling> tiling; | 2038 scoped_ptr<TestablePictureLayerTiling> tiling; |
2083 | 2039 |
2084 client.SetTileSize(gfx::Size(100, 100)); | 2040 client.SetTileSize(gfx::Size(100, 100)); |
2085 client.set_tree(ACTIVE_TREE); | 2041 client.set_tree(ACTIVE_TREE); |
2086 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 2042 tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
2087 gfx::Size(100, 100), | 2043 gfx::Size(100, 100), |
2088 &client); | 2044 &client); |
2089 tiling->UpdateTilePriorities(ACTIVE_TREE, | 2045 tiling->UpdateTilePriorities( |
2090 gfx::Rect(0, 0, 100, 100), | 2046 ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); |
2091 1.0f, | |
2092 1.0f, | |
2093 NULL, // occlusion tracker | |
2094 NULL, // render target | |
2095 gfx::Transform()); // draw transform | |
2096 | 2047 |
2097 std::vector<scoped_refptr<Tile> > tiles = tiling->AllRefTilesForTesting(); | 2048 std::vector<scoped_refptr<Tile> > tiles = tiling->AllRefTilesForTesting(); |
2098 ASSERT_GT(tiles.size(), 0u); | 2049 ASSERT_GT(tiles.size(), 0u); |
2099 for (std::vector<scoped_refptr<Tile> >::const_iterator it = tiles.begin(); | 2050 for (std::vector<scoped_refptr<Tile> >::const_iterator it = tiles.begin(); |
2100 it != tiles.end(); | 2051 it != tiles.end(); |
2101 ++it) { | 2052 ++it) { |
2102 EXPECT_NE(TilePriority(), (*it)->priority(ACTIVE_TREE)); | 2053 EXPECT_NE(TilePriority(), (*it)->priority(ACTIVE_TREE)); |
2103 } | 2054 } |
2104 | 2055 |
2105 tiling->Reset(); | 2056 tiling->Reset(); |
(...skipping 19 matching lines...) Expand all Loading... |
2125 FakePictureLayerTilingClient active_client; | 2076 FakePictureLayerTilingClient active_client; |
2126 scoped_ptr<TestablePictureLayerTiling> active_tiling; | 2077 scoped_ptr<TestablePictureLayerTiling> active_tiling; |
2127 | 2078 |
2128 active_client.SetTileSize(gfx::Size(100, 100)); | 2079 active_client.SetTileSize(gfx::Size(100, 100)); |
2129 active_client.set_tree(ACTIVE_TREE); | 2080 active_client.set_tree(ACTIVE_TREE); |
2130 active_client.set_max_tiles_for_interest_area(10); | 2081 active_client.set_max_tiles_for_interest_area(10); |
2131 active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 2082 active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
2132 gfx::Size(10000, 10000), | 2083 gfx::Size(10000, 10000), |
2133 &active_client); | 2084 &active_client); |
2134 // Create all tiles on this tiling. | 2085 // Create all tiles on this tiling. |
2135 active_tiling->UpdateTilePriorities(ACTIVE_TREE, | 2086 active_tiling->UpdateTilePriorities( |
2136 gfx::Rect(0, 0, 100, 100), | 2087 ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); |
2137 1.0f, | |
2138 1.0f, | |
2139 NULL, // occlusion tracker | |
2140 NULL, // render target | |
2141 gfx::Transform()); // draw transform | |
2142 | 2088 |
2143 FakePictureLayerTilingClient recycle_client; | 2089 FakePictureLayerTilingClient recycle_client; |
2144 recycle_client.SetTileSize(gfx::Size(100, 100)); | 2090 recycle_client.SetTileSize(gfx::Size(100, 100)); |
2145 recycle_client.set_tree(PENDING_TREE); | 2091 recycle_client.set_tree(PENDING_TREE); |
2146 recycle_client.set_twin_tiling(active_tiling.get()); | 2092 recycle_client.set_twin_tiling(active_tiling.get()); |
2147 recycle_client.set_max_tiles_for_interest_area(10); | 2093 recycle_client.set_max_tiles_for_interest_area(10); |
2148 | 2094 |
2149 scoped_ptr<TestablePictureLayerTiling> recycle_tiling; | 2095 scoped_ptr<TestablePictureLayerTiling> recycle_tiling; |
2150 recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 2096 recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
2151 gfx::Size(10000, 10000), | 2097 gfx::Size(10000, 10000), |
2152 &recycle_client); | 2098 &recycle_client); |
2153 | 2099 |
2154 // Create all tiles on the second tiling. All tiles should be shared. | 2100 // Create all tiles on the second tiling. All tiles should be shared. |
2155 recycle_tiling->UpdateTilePriorities(PENDING_TREE, | 2101 recycle_tiling->UpdateTilePriorities( |
2156 gfx::Rect(0, 0, 100, 100), | 2102 PENDING_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); |
2157 1.0f, | |
2158 1.0f, | |
2159 NULL, // occlusion tracker | |
2160 NULL, // render target | |
2161 gfx::Transform()); // draw transform | |
2162 | 2103 |
2163 // Set the second tiling as recycled. | 2104 // Set the second tiling as recycled. |
2164 active_client.set_twin_tiling(NULL); | 2105 active_client.set_twin_tiling(NULL); |
2165 active_client.set_recycled_twin_tiling(recycle_tiling.get()); | 2106 active_client.set_recycled_twin_tiling(recycle_tiling.get()); |
2166 recycle_client.set_twin_tiling(NULL); | 2107 recycle_client.set_twin_tiling(NULL); |
2167 | 2108 |
2168 // Verify that tiles exist and are shared. | 2109 // Verify that tiles exist and are shared. |
2169 EXPECT_TRUE(active_tiling->TileAt(0, 0)); | 2110 EXPECT_TRUE(active_tiling->TileAt(0, 0)); |
2170 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); | 2111 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); |
2171 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0)); | 2112 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0)); |
2172 | 2113 |
2173 // Move the viewport far away from the (0, 0) tile. | 2114 // Move the viewport far away from the (0, 0) tile. |
2174 active_tiling->UpdateTilePriorities(ACTIVE_TREE, | 2115 active_tiling->UpdateTilePriorities( |
2175 gfx::Rect(9000, 9000, 100, 100), | 2116 ACTIVE_TREE, gfx::Rect(9000, 9000, 100, 100), 1.0f, 2.0, Occlusion()); |
2176 1.0f, | |
2177 2.0, | |
2178 NULL, // occlusion tracker | |
2179 NULL, // render target | |
2180 gfx::Transform()); // draw transform | |
2181 // Ensure the tile was deleted on both tilings. | 2117 // Ensure the tile was deleted on both tilings. |
2182 EXPECT_FALSE(active_tiling->TileAt(0, 0)); | 2118 EXPECT_FALSE(active_tiling->TileAt(0, 0)); |
2183 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); | 2119 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); |
2184 | 2120 |
2185 // Move the viewport back to (0, 0) tile. | 2121 // Move the viewport back to (0, 0) tile. |
2186 active_tiling->UpdateTilePriorities(ACTIVE_TREE, | 2122 active_tiling->UpdateTilePriorities( |
2187 gfx::Rect(0, 0, 100, 100), | 2123 ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 3.0, Occlusion()); |
2188 1.0f, | |
2189 3.0, | |
2190 NULL, // occlusion tracker | |
2191 NULL, // render target | |
2192 gfx::Transform()); // draw transform | |
2193 | 2124 |
2194 // Ensure that we now have a tile here, but the recycle tiling does not. | 2125 // Ensure that we now have a tile here, but the recycle tiling does not. |
2195 EXPECT_TRUE(active_tiling->TileAt(0, 0)); | 2126 EXPECT_TRUE(active_tiling->TileAt(0, 0)); |
2196 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); | 2127 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); |
2197 } | 2128 } |
2198 | 2129 |
2199 TEST(PictureLayerTilingTest, RecycledTilesClearedOnReset) { | 2130 TEST(PictureLayerTilingTest, RecycledTilesClearedOnReset) { |
2200 FakePictureLayerTilingClient active_client; | 2131 FakePictureLayerTilingClient active_client; |
2201 scoped_ptr<TestablePictureLayerTiling> active_tiling; | 2132 scoped_ptr<TestablePictureLayerTiling> active_tiling; |
2202 | 2133 |
2203 active_client.SetTileSize(gfx::Size(100, 100)); | 2134 active_client.SetTileSize(gfx::Size(100, 100)); |
2204 active_client.set_tree(ACTIVE_TREE); | 2135 active_client.set_tree(ACTIVE_TREE); |
2205 active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 2136 active_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
2206 gfx::Size(100, 100), | 2137 gfx::Size(100, 100), |
2207 &active_client); | 2138 &active_client); |
2208 // Create all tiles on this tiling. | 2139 // Create all tiles on this tiling. |
2209 active_tiling->UpdateTilePriorities(ACTIVE_TREE, | 2140 active_tiling->UpdateTilePriorities( |
2210 gfx::Rect(0, 0, 100, 100), | 2141 ACTIVE_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); |
2211 1.0f, | |
2212 1.0f, | |
2213 NULL, // occlusion tracker | |
2214 NULL, // render target | |
2215 gfx::Transform()); // draw transform | |
2216 | 2142 |
2217 FakePictureLayerTilingClient recycle_client; | 2143 FakePictureLayerTilingClient recycle_client; |
2218 recycle_client.SetTileSize(gfx::Size(100, 100)); | 2144 recycle_client.SetTileSize(gfx::Size(100, 100)); |
2219 recycle_client.set_tree(PENDING_TREE); | 2145 recycle_client.set_tree(PENDING_TREE); |
2220 recycle_client.set_twin_tiling(active_tiling.get()); | 2146 recycle_client.set_twin_tiling(active_tiling.get()); |
2221 recycle_client.set_max_tiles_for_interest_area(10); | 2147 recycle_client.set_max_tiles_for_interest_area(10); |
2222 | 2148 |
2223 scoped_ptr<TestablePictureLayerTiling> recycle_tiling; | 2149 scoped_ptr<TestablePictureLayerTiling> recycle_tiling; |
2224 recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale | 2150 recycle_tiling = TestablePictureLayerTiling::Create(1.0f, // contents_scale |
2225 gfx::Size(100, 100), | 2151 gfx::Size(100, 100), |
2226 &recycle_client); | 2152 &recycle_client); |
2227 | 2153 |
2228 // Create all tiles on the recycle tiling. All tiles should be shared. | 2154 // Create all tiles on the recycle tiling. All tiles should be shared. |
2229 recycle_tiling->UpdateTilePriorities(PENDING_TREE, | 2155 recycle_tiling->UpdateTilePriorities( |
2230 gfx::Rect(0, 0, 100, 100), | 2156 PENDING_TREE, gfx::Rect(0, 0, 100, 100), 1.0f, 1.0f, Occlusion()); |
2231 1.0f, | |
2232 1.0f, | |
2233 NULL, // occlusion tracker | |
2234 NULL, // render target | |
2235 gfx::Transform()); // draw transform | |
2236 | 2157 |
2237 // Set the second tiling as recycled. | 2158 // Set the second tiling as recycled. |
2238 active_client.set_twin_tiling(NULL); | 2159 active_client.set_twin_tiling(NULL); |
2239 active_client.set_recycled_twin_tiling(recycle_tiling.get()); | 2160 active_client.set_recycled_twin_tiling(recycle_tiling.get()); |
2240 recycle_client.set_twin_tiling(NULL); | 2161 recycle_client.set_twin_tiling(NULL); |
2241 | 2162 |
2242 // Verify that tiles exist and are shared. | 2163 // Verify that tiles exist and are shared. |
2243 EXPECT_TRUE(active_tiling->TileAt(0, 0)); | 2164 EXPECT_TRUE(active_tiling->TileAt(0, 0)); |
2244 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); | 2165 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); |
2245 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0)); | 2166 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0)); |
2246 | 2167 |
2247 // Reset the active tiling. The recycle tiles should be released too. | 2168 // Reset the active tiling. The recycle tiles should be released too. |
2248 active_tiling->Reset(); | 2169 active_tiling->Reset(); |
2249 EXPECT_FALSE(active_tiling->TileAt(0, 0)); | 2170 EXPECT_FALSE(active_tiling->TileAt(0, 0)); |
2250 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); | 2171 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); |
2251 } | 2172 } |
2252 | 2173 |
2253 } // namespace | 2174 } // namespace |
2254 } // namespace cc | 2175 } // namespace cc |
OLD | NEW |