Chromium Code Reviews

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

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

Powered by Google App Engine