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

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

Issue 547723002: Reland 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: rebase Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« 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...) Expand all
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
This is Rietveld 408576698