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

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

Issue 1130123003: cc: Separate the priority from the tile and put in new PrioritizedTile (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge Created 5 years, 7 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.cc ('k') | cc/resources/prioritized_tile.h » ('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 <limits> 5 #include <limits>
6 #include <set> 6 #include <set>
7 7
8 #include "cc/base/math_util.h" 8 #include "cc/base/math_util.h"
9 #include "cc/resources/picture_layer_tiling.h" 9 #include "cc/resources/picture_layer_tiling.h"
10 #include "cc/resources/picture_layer_tiling_set.h" 10 #include "cc/resources/picture_layer_tiling_set.h"
(...skipping 766 matching lines...) Expand 10 before | Expand all | Expand 10 after
777 // tiling. 777 // tiling.
778 scoped_refptr<FakePicturePileImpl> pile = 778 scoped_refptr<FakePicturePileImpl> pile =
779 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize(layer_bounds); 779 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize(layer_bounds);
780 scoped_ptr<TestablePictureLayerTiling> tiling = 780 scoped_ptr<TestablePictureLayerTiling> tiling =
781 TestablePictureLayerTiling::Create(ACTIVE_TREE, 0.25f, pile, &client, 781 TestablePictureLayerTiling::Create(ACTIVE_TREE, 0.25f, pile, &client,
782 settings); 782 settings);
783 gfx::Rect viewport_in_content_space = 783 gfx::Rect viewport_in_content_space =
784 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f)); 784 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f));
785 785
786 tiling->ComputeTilePriorityRects(viewport, 1.f, 1.0, Occlusion()); 786 tiling->ComputeTilePriorityRects(viewport, 1.f, 1.0, Occlusion());
787 tiling->UpdateAllTilePrioritiesForTesting(); 787 auto prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting();
788 788
789 // Compute the soon border. 789 // Compute the soon border.
790 float inset = PictureLayerTiling::CalculateSoonBorderDistance( 790 float inset = PictureLayerTiling::CalculateSoonBorderDistance(
791 viewport_in_content_space, 1.0f / 0.25f); 791 viewport_in_content_space, 1.0f / 0.25f);
792 gfx::Rect soon_rect_in_content_space = viewport_in_content_space; 792 gfx::Rect soon_rect_in_content_space = viewport_in_content_space;
793 soon_rect_in_content_space.Inset(-inset, -inset); 793 soon_rect_in_content_space.Inset(-inset, -inset);
794 794
795 // Sanity checks. 795 // Sanity checks.
796 for (int i = 0; i < 47; ++i) { 796 for (int i = 0; i < 47; ++i) {
797 for (int j = 0; j < 47; ++j) { 797 for (int j = 0; j < 47; ++j) {
798 EXPECT_TRUE(tiling->TileAt(i, j)) << "i: " << i << " j: " << j; 798 EXPECT_TRUE(tiling->TileAt(i, j)) << "i: " << i << " j: " << j;
799 } 799 }
800 } 800 }
801 for (int i = 0; i < 47; ++i) { 801 for (int i = 0; i < 47; ++i) {
802 EXPECT_FALSE(tiling->TileAt(i, 47)) << "i: " << i; 802 EXPECT_FALSE(tiling->TileAt(i, 47)) << "i: " << i;
803 EXPECT_FALSE(tiling->TileAt(47, i)) << "i: " << i; 803 EXPECT_FALSE(tiling->TileAt(47, i)) << "i: " << i;
804 } 804 }
805 805
806 // No movement in the viewport implies that tiles will either be NOW 806 // No movement in the viewport implies that tiles will either be NOW
807 // or EVENTUALLY, with the exception of tiles that are between 0 and 312 807 // or EVENTUALLY, with the exception of tiles that are between 0 and 312
808 // pixels away from the viewport, which will be in the SOON bin. 808 // pixels away from the viewport, which will be in the SOON bin.
809 bool have_now = false; 809 bool have_now = false;
810 bool have_eventually = false; 810 bool have_eventually = false;
811 bool have_soon = false; 811 bool have_soon = false;
812 for (int i = 0; i < 47; ++i) { 812 for (int i = 0; i < 47; ++i) {
813 for (int j = 0; j < 47; ++j) { 813 for (int j = 0; j < 47; ++j) {
814 Tile* tile = tiling->TileAt(i, j); 814 Tile* tile = tiling->TileAt(i, j);
815 TilePriority priority = tile->priority(); 815 PrioritizedTile prioritized_tile = prioritized_tiles[tile];
816 TilePriority priority = prioritized_tile.priority();
816 817
817 gfx::Rect tile_rect = tiling->TilingDataForTesting().TileBounds(i, j); 818 gfx::Rect tile_rect = tiling->TilingDataForTesting().TileBounds(i, j);
818 if (viewport_in_content_space.Intersects(tile_rect)) { 819 if (viewport_in_content_space.Intersects(tile_rect)) {
819 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 820 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
820 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 821 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
821 have_now = true; 822 have_now = true;
822 } else if (soon_rect_in_content_space.Intersects(tile_rect)) { 823 } else if (soon_rect_in_content_space.Intersects(tile_rect)) {
823 EXPECT_EQ(TilePriority::SOON, priority.priority_bin); 824 EXPECT_EQ(TilePriority::SOON, priority.priority_bin);
824 have_soon = true; 825 have_soon = true;
825 } else { 826 } else {
(...skipping 11 matching lines...) Expand all
837 // Spot check some distances. 838 // Spot check some distances.
838 // Tile at 5, 1 should begin at 41x9 in content space (without borders), 839 // Tile at 5, 1 should begin at 41x9 in content space (without borders),
839 // so the distance to a viewport that ends at 25x25 in content space 840 // so the distance to a viewport that ends at 25x25 in content space
840 // should be 17 (41 - 25 + 1). In layer space, then that should be 841 // should be 17 (41 - 25 + 1). In layer space, then that should be
841 // 17 / 0.25 = 68 pixels. 842 // 17 / 0.25 = 68 pixels.
842 843
843 // We can verify that the content rect (with borders) is one pixel off 844 // We can verify that the content rect (with borders) is one pixel off
844 // 41,9 8x8 on all sides. 845 // 41,9 8x8 on all sides.
845 EXPECT_EQ(tiling->TileAt(5, 1)->content_rect().ToString(), "40,8 10x10"); 846 EXPECT_EQ(tiling->TileAt(5, 1)->content_rect().ToString(), "40,8 10x10");
846 847
847 TilePriority priority = tiling->TileAt(5, 1)->priority(); 848 TilePriority priority = prioritized_tiles[tiling->TileAt(5, 1)].priority();
848 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible); 849 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible);
849 850
850 priority = tiling->TileAt(2, 5)->priority(); 851 priority = prioritized_tiles[tiling->TileAt(2, 5)].priority();
851 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible); 852 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible);
852 853
853 priority = tiling->TileAt(3, 4)->priority(); 854 priority = prioritized_tiles[tiling->TileAt(3, 4)].priority();
854 EXPECT_FLOAT_EQ(40.f, priority.distance_to_visible); 855 EXPECT_FLOAT_EQ(40.f, priority.distance_to_visible);
855 856
856 // Move the viewport down 40 pixels. 857 // Move the viewport down 40 pixels.
857 viewport = gfx::Rect(0, 40, 100, 100); 858 viewport = gfx::Rect(0, 40, 100, 100);
858 viewport_in_content_space = 859 viewport_in_content_space =
859 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f)); 860 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f));
860 gfx::Rect skewport = tiling->ComputeSkewport(2.0, viewport_in_content_space); 861 gfx::Rect skewport = tiling->ComputeSkewport(2.0, viewport_in_content_space);
861 862
862 // Compute the soon border. 863 // Compute the soon border.
863 inset = PictureLayerTiling::CalculateSoonBorderDistance( 864 inset = PictureLayerTiling::CalculateSoonBorderDistance(
864 viewport_in_content_space, 1.0f / 0.25f); 865 viewport_in_content_space, 1.0f / 0.25f);
865 soon_rect_in_content_space = viewport_in_content_space; 866 soon_rect_in_content_space = viewport_in_content_space;
866 soon_rect_in_content_space.Inset(-inset, -inset); 867 soon_rect_in_content_space.Inset(-inset, -inset);
867 868
868 EXPECT_EQ(0, skewport.x()); 869 EXPECT_EQ(0, skewport.x());
869 EXPECT_EQ(10, skewport.y()); 870 EXPECT_EQ(10, skewport.y());
870 EXPECT_EQ(25, skewport.width()); 871 EXPECT_EQ(25, skewport.width());
871 EXPECT_EQ(35, skewport.height()); 872 EXPECT_EQ(35, skewport.height());
872 873
873 tiling->ComputeTilePriorityRects(viewport, 1.f, 2.0, Occlusion()); 874 tiling->ComputeTilePriorityRects(viewport, 1.f, 2.0, Occlusion());
874 tiling->UpdateAllTilePrioritiesForTesting(); 875 prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting();
875 876
876 have_now = false; 877 have_now = false;
877 have_eventually = false; 878 have_eventually = false;
878 have_soon = false; 879 have_soon = false;
879 880
880 // Viewport moved, so we expect to find some NOW tiles, some SOON tiles and 881 // Viewport moved, so we expect to find some NOW tiles, some SOON tiles and
881 // some EVENTUALLY tiles. 882 // some EVENTUALLY tiles.
882 for (int i = 0; i < 47; ++i) { 883 for (int i = 0; i < 47; ++i) {
883 for (int j = 0; j < 47; ++j) { 884 for (int j = 0; j < 47; ++j) {
884 Tile* tile = tiling->TileAt(i, j); 885 Tile* tile = tiling->TileAt(i, j);
885 TilePriority priority = tile->priority(); 886 TilePriority priority = prioritized_tiles[tile].priority();
886 887
887 gfx::Rect tile_rect = tiling->TilingDataForTesting().TileBounds(i, j); 888 gfx::Rect tile_rect = tiling->TilingDataForTesting().TileBounds(i, j);
888 if (viewport_in_content_space.Intersects(tile_rect)) { 889 if (viewport_in_content_space.Intersects(tile_rect)) {
889 EXPECT_EQ(TilePriority::NOW, priority.priority_bin) << "i: " << i 890 EXPECT_EQ(TilePriority::NOW, priority.priority_bin) << "i: " << i
890 << " j: " << j; 891 << " j: " << j;
891 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible) << "i: " << i 892 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible) << "i: " << i
892 << " j: " << j; 893 << " j: " << j;
893 have_now = true; 894 have_now = true;
894 } else if (skewport.Intersects(tile_rect) || 895 } else if (skewport.Intersects(tile_rect) ||
895 soon_rect_in_content_space.Intersects(tile_rect)) { 896 soon_rect_in_content_space.Intersects(tile_rect)) {
896 EXPECT_EQ(TilePriority::SOON, priority.priority_bin) << "i: " << i 897 EXPECT_EQ(TilePriority::SOON, priority.priority_bin) << "i: " << i
897 << " j: " << j; 898 << " j: " << j;
898 EXPECT_GT(priority.distance_to_visible, 0.f) << "i: " << i 899 EXPECT_GT(priority.distance_to_visible, 0.f) << "i: " << i
899 << " j: " << j; 900 << " j: " << j;
900 have_soon = true; 901 have_soon = true;
901 } else { 902 } else {
902 EXPECT_EQ(TilePriority::EVENTUALLY, priority.priority_bin) 903 EXPECT_EQ(TilePriority::EVENTUALLY, priority.priority_bin)
903 << "i: " << i << " j: " << j; 904 << "i: " << i << " j: " << j;
904 EXPECT_GT(priority.distance_to_visible, 0.f) << "i: " << i 905 EXPECT_GT(priority.distance_to_visible, 0.f) << "i: " << i
905 << " j: " << j; 906 << " j: " << j;
906 have_eventually = true; 907 have_eventually = true;
907 } 908 }
908 } 909 }
909 } 910 }
910 911
911 EXPECT_TRUE(have_now); 912 EXPECT_TRUE(have_now);
912 EXPECT_TRUE(have_soon); 913 EXPECT_TRUE(have_soon);
913 EXPECT_TRUE(have_eventually); 914 EXPECT_TRUE(have_eventually);
914 915
915 priority = tiling->TileAt(5, 1)->priority(); 916 priority = prioritized_tiles[tiling->TileAt(5, 1)].priority();
916 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible); 917 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible);
917 918
918 priority = tiling->TileAt(2, 5)->priority(); 919 priority = prioritized_tiles[tiling->TileAt(2, 5)].priority();
919 EXPECT_FLOAT_EQ(28.f, priority.distance_to_visible); 920 EXPECT_FLOAT_EQ(28.f, priority.distance_to_visible);
920 921
921 priority = tiling->TileAt(3, 4)->priority(); 922 priority = prioritized_tiles[tiling->TileAt(3, 4)].priority();
922 EXPECT_FLOAT_EQ(4.f, priority.distance_to_visible); 923 EXPECT_FLOAT_EQ(4.f, priority.distance_to_visible);
923 924
924 // Change the underlying layer scale. 925 // Change the underlying layer scale.
925 tiling->ComputeTilePriorityRects(viewport, 2.0f, 3.0, Occlusion()); 926 tiling->ComputeTilePriorityRects(viewport, 2.0f, 3.0, Occlusion());
926 tiling->UpdateAllTilePrioritiesForTesting(); 927 prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting();
927 928
928 priority = tiling->TileAt(5, 1)->priority(); 929 priority = prioritized_tiles[tiling->TileAt(5, 1)].priority();
929 EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible); 930 EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible);
930 931
931 priority = tiling->TileAt(2, 5)->priority(); 932 priority = prioritized_tiles[tiling->TileAt(2, 5)].priority();
932 EXPECT_FLOAT_EQ(56.f, priority.distance_to_visible); 933 EXPECT_FLOAT_EQ(56.f, priority.distance_to_visible);
933 934
934 priority = tiling->TileAt(3, 4)->priority(); 935 priority = prioritized_tiles[tiling->TileAt(3, 4)].priority();
935 EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible); 936 EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible);
936 937
937 // Test additional scales. 938 // Test additional scales.
938 tiling = TestablePictureLayerTiling::Create(ACTIVE_TREE, 0.2f, pile, &client, 939 tiling = TestablePictureLayerTiling::Create(ACTIVE_TREE, 0.2f, pile, &client,
939 LayerTreeSettings()); 940 LayerTreeSettings());
940 tiling->ComputeTilePriorityRects(viewport, 1.0f, 4.0, Occlusion()); 941 tiling->ComputeTilePriorityRects(viewport, 1.0f, 4.0, Occlusion());
941 tiling->UpdateAllTilePrioritiesForTesting(); 942 prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting();
942 943
943 priority = tiling->TileAt(5, 1)->priority(); 944 priority = prioritized_tiles[tiling->TileAt(5, 1)].priority();
944 EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible); 945 EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible);
945 946
946 priority = tiling->TileAt(2, 5)->priority(); 947 priority = prioritized_tiles[tiling->TileAt(2, 5)].priority();
947 EXPECT_FLOAT_EQ(70.f, priority.distance_to_visible); 948 EXPECT_FLOAT_EQ(70.f, priority.distance_to_visible);
948 949
949 priority = tiling->TileAt(3, 4)->priority(); 950 priority = prioritized_tiles[tiling->TileAt(3, 4)].priority();
950 EXPECT_FLOAT_EQ(60.f, priority.distance_to_visible); 951 EXPECT_FLOAT_EQ(60.f, priority.distance_to_visible);
951 952
952 tiling->ComputeTilePriorityRects(viewport, 0.5f, 5.0, Occlusion()); 953 tiling->ComputeTilePriorityRects(viewport, 0.5f, 5.0, Occlusion());
953 tiling->UpdateAllTilePrioritiesForTesting(); 954 prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting();
954 955
955 priority = tiling->TileAt(5, 1)->priority(); 956 priority = prioritized_tiles[tiling->TileAt(5, 1)].priority();
956 EXPECT_FLOAT_EQ(55.f, priority.distance_to_visible); 957 EXPECT_FLOAT_EQ(55.f, priority.distance_to_visible);
957 958
958 priority = tiling->TileAt(2, 5)->priority(); 959 priority = prioritized_tiles[tiling->TileAt(2, 5)].priority();
959 EXPECT_FLOAT_EQ(35.f, priority.distance_to_visible); 960 EXPECT_FLOAT_EQ(35.f, priority.distance_to_visible);
960 961
961 priority = tiling->TileAt(3, 4)->priority(); 962 priority = prioritized_tiles[tiling->TileAt(3, 4)].priority();
962 EXPECT_FLOAT_EQ(30.f, priority.distance_to_visible); 963 EXPECT_FLOAT_EQ(30.f, priority.distance_to_visible);
963 } 964 }
964 965
965 TEST(PictureLayerTilingTest, ExpandRectEqual) { 966 TEST(PictureLayerTilingTest, ExpandRectEqual) {
966 gfx::Rect in(40, 50, 100, 200); 967 gfx::Rect in(40, 50, 100, 200);
967 gfx::Rect bounds(-1000, -1000, 10000, 10000); 968 gfx::Rect bounds(-1000, -1000, 10000, 10000);
968 int64 target_area = 100 * 200; 969 int64 target_area = 100 * 200;
969 gfx::Rect out = PictureLayerTiling::ExpandRectEquallyToAreaBoundedBy( 970 gfx::Rect out = PictureLayerTiling::ExpandRectEquallyToAreaBoundedBy(
970 in, target_area, bounds, NULL); 971 in, target_area, bounds, NULL);
971 EXPECT_EQ(in.ToString(), out.ToString()); 972 EXPECT_EQ(in.ToString(), out.ToString());
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
1307 scoped_refptr<FakePicturePileImpl> pile = 1308 scoped_refptr<FakePicturePileImpl> pile =
1308 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize( 1309 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize(
1309 current_layer_bounds); 1310 current_layer_bounds);
1310 scoped_ptr<TestablePictureLayerTiling> tiling = 1311 scoped_ptr<TestablePictureLayerTiling> tiling =
1311 TestablePictureLayerTiling::Create(ACTIVE_TREE, 1.0f, pile, &client, 1312 TestablePictureLayerTiling::Create(ACTIVE_TREE, 1.0f, pile, &client,
1312 LayerTreeSettings()); 1313 LayerTreeSettings());
1313 1314
1314 tiling->ComputeTilePriorityRects(viewport_in_layer_space, 1315 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1315 current_layer_contents_scale, 1316 current_layer_contents_scale,
1316 current_frame_time_in_seconds, Occlusion()); 1317 current_frame_time_in_seconds, Occlusion());
1317 tiling->UpdateAllTilePrioritiesForTesting(); 1318 auto prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting();
1318 1319
1319 ASSERT_TRUE(tiling->TileAt(0, 0)); 1320 ASSERT_TRUE(tiling->TileAt(0, 0));
1320 ASSERT_TRUE(tiling->TileAt(0, 1)); 1321 ASSERT_TRUE(tiling->TileAt(0, 1));
1321 ASSERT_TRUE(tiling->TileAt(1, 0)); 1322 ASSERT_TRUE(tiling->TileAt(1, 0));
1322 ASSERT_TRUE(tiling->TileAt(1, 1)); 1323 ASSERT_TRUE(tiling->TileAt(1, 1));
1323 1324
1324 TilePriority priority = tiling->TileAt(0, 0)->priority(); 1325 TilePriority priority = prioritized_tiles[tiling->TileAt(0, 0)].priority();
1325 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1326 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1326 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); 1327 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin);
1327 1328
1328 priority = tiling->TileAt(0, 1)->priority(); 1329 priority = prioritized_tiles[tiling->TileAt(0, 1)].priority();
1329 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1330 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1330 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); 1331 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin);
1331 1332
1332 priority = tiling->TileAt(1, 0)->priority(); 1333 priority = prioritized_tiles[tiling->TileAt(1, 0)].priority();
1333 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1334 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1334 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); 1335 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin);
1335 1336
1336 priority = tiling->TileAt(1, 1)->priority(); 1337 priority = prioritized_tiles[tiling->TileAt(1, 1)].priority();
1337 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1338 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1338 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); 1339 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin);
1339 } 1340 }
1340 1341
1341 TEST(ComputeTilePriorityRectsTest, OffscreenTiles) { 1342 TEST(ComputeTilePriorityRectsTest, OffscreenTiles) {
1342 // The TilePriority of offscreen tiles (without movement) should have nonzero 1343 // The TilePriority of offscreen tiles (without movement) should have nonzero
1343 // distance_to_visible and infinite time_to_visible. 1344 // distance_to_visible and infinite time_to_visible.
1344 FakePictureLayerTilingClient client; 1345 FakePictureLayerTilingClient client;
1345 1346
1346 gfx::Size device_viewport(800, 600); 1347 gfx::Size device_viewport(800, 600);
(...skipping 15 matching lines...) Expand all
1362 scoped_refptr<FakePicturePileImpl> pile = 1363 scoped_refptr<FakePicturePileImpl> pile =
1363 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize( 1364 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize(
1364 current_layer_bounds); 1365 current_layer_bounds);
1365 scoped_ptr<TestablePictureLayerTiling> tiling = 1366 scoped_ptr<TestablePictureLayerTiling> tiling =
1366 TestablePictureLayerTiling::Create(ACTIVE_TREE, 1.0f, pile, &client, 1367 TestablePictureLayerTiling::Create(ACTIVE_TREE, 1.0f, pile, &client,
1367 LayerTreeSettings()); 1368 LayerTreeSettings());
1368 1369
1369 tiling->ComputeTilePriorityRects(viewport_in_layer_space, 1370 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1370 current_layer_contents_scale, 1371 current_layer_contents_scale,
1371 current_frame_time_in_seconds, Occlusion()); 1372 current_frame_time_in_seconds, Occlusion());
1372 tiling->UpdateAllTilePrioritiesForTesting(); 1373 auto prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting();
1373 1374
1374 ASSERT_TRUE(tiling->TileAt(0, 0)); 1375 ASSERT_TRUE(tiling->TileAt(0, 0));
1375 ASSERT_TRUE(tiling->TileAt(0, 1)); 1376 ASSERT_TRUE(tiling->TileAt(0, 1));
1376 ASSERT_TRUE(tiling->TileAt(1, 0)); 1377 ASSERT_TRUE(tiling->TileAt(1, 0));
1377 ASSERT_TRUE(tiling->TileAt(1, 1)); 1378 ASSERT_TRUE(tiling->TileAt(1, 1));
1378 1379
1379 TilePriority priority = tiling->TileAt(0, 0)->priority(); 1380 TilePriority priority = prioritized_tiles[tiling->TileAt(0, 0)].priority();
1380 EXPECT_GT(priority.distance_to_visible, 0.f); 1381 EXPECT_GT(priority.distance_to_visible, 0.f);
1381 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1382 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1382 1383
1383 priority = tiling->TileAt(0, 1)->priority(); 1384 priority = prioritized_tiles[tiling->TileAt(0, 1)].priority();
1384 EXPECT_GT(priority.distance_to_visible, 0.f); 1385 EXPECT_GT(priority.distance_to_visible, 0.f);
1385 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1386 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1386 1387
1387 priority = tiling->TileAt(1, 0)->priority(); 1388 priority = prioritized_tiles[tiling->TileAt(1, 0)].priority();
1388 EXPECT_GT(priority.distance_to_visible, 0.f); 1389 EXPECT_GT(priority.distance_to_visible, 0.f);
1389 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1390 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1390 1391
1391 priority = tiling->TileAt(1, 1)->priority(); 1392 priority = prioritized_tiles[tiling->TileAt(1, 1)].priority();
1392 EXPECT_GT(priority.distance_to_visible, 0.f); 1393 EXPECT_GT(priority.distance_to_visible, 0.f);
1393 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1394 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1394 1395
1395 // Furthermore, in this scenario tiles on the right hand side should have a 1396 // Furthermore, in this scenario tiles on the right hand side should have a
1396 // larger distance to visible. 1397 // larger distance to visible.
1397 TilePriority left = tiling->TileAt(0, 0)->priority(); 1398 TilePriority left = prioritized_tiles[tiling->TileAt(0, 0)].priority();
1398 TilePriority right = tiling->TileAt(1, 0)->priority(); 1399 TilePriority right = prioritized_tiles[tiling->TileAt(1, 0)].priority();
1399 EXPECT_GT(right.distance_to_visible, left.distance_to_visible); 1400 EXPECT_GT(right.distance_to_visible, left.distance_to_visible);
1400 1401
1401 left = tiling->TileAt(0, 1)->priority(); 1402 left = prioritized_tiles[tiling->TileAt(0, 1)].priority();
1402 right = tiling->TileAt(1, 1)->priority(); 1403 right = prioritized_tiles[tiling->TileAt(1, 1)].priority();
1403 EXPECT_GT(right.distance_to_visible, left.distance_to_visible); 1404 EXPECT_GT(right.distance_to_visible, left.distance_to_visible);
1404 } 1405 }
1405 1406
1406 TEST(ComputeTilePriorityRectsTest, PartiallyOffscreenLayer) { 1407 TEST(ComputeTilePriorityRectsTest, PartiallyOffscreenLayer) {
1407 // Sanity check that a layer with some tiles visible and others offscreen has 1408 // Sanity check that a layer with some tiles visible and others offscreen has
1408 // correct TilePriorities for each tile. 1409 // correct TilePriorities for each tile.
1409 FakePictureLayerTilingClient client; 1410 FakePictureLayerTilingClient client;
1410 1411
1411 gfx::Size device_viewport(800, 600); 1412 gfx::Size device_viewport(800, 600);
1412 gfx::Size last_layer_bounds(200, 200); 1413 gfx::Size last_layer_bounds(200, 200);
(...skipping 14 matching lines...) Expand all
1427 scoped_refptr<FakePicturePileImpl> pile = 1428 scoped_refptr<FakePicturePileImpl> pile =
1428 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize( 1429 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize(
1429 current_layer_bounds); 1430 current_layer_bounds);
1430 scoped_ptr<TestablePictureLayerTiling> tiling = 1431 scoped_ptr<TestablePictureLayerTiling> tiling =
1431 TestablePictureLayerTiling::Create(ACTIVE_TREE, 1.0f, pile, &client, 1432 TestablePictureLayerTiling::Create(ACTIVE_TREE, 1.0f, pile, &client,
1432 LayerTreeSettings()); 1433 LayerTreeSettings());
1433 1434
1434 tiling->ComputeTilePriorityRects(viewport_in_layer_space, 1435 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1435 current_layer_contents_scale, 1436 current_layer_contents_scale,
1436 current_frame_time_in_seconds, Occlusion()); 1437 current_frame_time_in_seconds, Occlusion());
1437 tiling->UpdateAllTilePrioritiesForTesting(); 1438 auto prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting();
1438 1439
1439 ASSERT_TRUE(tiling->TileAt(0, 0)); 1440 ASSERT_TRUE(tiling->TileAt(0, 0));
1440 ASSERT_TRUE(tiling->TileAt(0, 1)); 1441 ASSERT_TRUE(tiling->TileAt(0, 1));
1441 ASSERT_TRUE(tiling->TileAt(1, 0)); 1442 ASSERT_TRUE(tiling->TileAt(1, 0));
1442 ASSERT_TRUE(tiling->TileAt(1, 1)); 1443 ASSERT_TRUE(tiling->TileAt(1, 1));
1443 1444
1444 TilePriority priority = tiling->TileAt(0, 0)->priority(); 1445 TilePriority priority = prioritized_tiles[tiling->TileAt(0, 0)].priority();
1445 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1446 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1446 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); 1447 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin);
1447 1448
1448 priority = tiling->TileAt(0, 1)->priority(); 1449 priority = prioritized_tiles[tiling->TileAt(0, 1)].priority();
1449 EXPECT_GT(priority.distance_to_visible, 0.f); 1450 EXPECT_GT(priority.distance_to_visible, 0.f);
1450 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1451 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1451 1452
1452 priority = tiling->TileAt(1, 0)->priority(); 1453 priority = prioritized_tiles[tiling->TileAt(1, 0)].priority();
1453 EXPECT_GT(priority.distance_to_visible, 0.f); 1454 EXPECT_GT(priority.distance_to_visible, 0.f);
1454 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1455 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1455 1456
1456 priority = tiling->TileAt(1, 1)->priority(); 1457 priority = prioritized_tiles[tiling->TileAt(1, 1)].priority();
1457 EXPECT_GT(priority.distance_to_visible, 0.f); 1458 EXPECT_GT(priority.distance_to_visible, 0.f);
1458 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1459 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1459 } 1460 }
1460 1461
1461 TEST(ComputeTilePriorityRectsTest, PartiallyOffscreenRotatedLayer) { 1462 TEST(ComputeTilePriorityRectsTest, PartiallyOffscreenRotatedLayer) {
1462 // Each tile of a layer may be affected differently by a transform; Check 1463 // Each tile of a layer may be affected differently by a transform; Check
1463 // that ComputeTilePriorityRects correctly accounts for the transform between 1464 // that ComputeTilePriorityRects correctly accounts for the transform between
1464 // layer space and screen space. 1465 // layer space and screen space.
1465 FakePictureLayerTilingClient client; 1466 FakePictureLayerTilingClient client;
1466 1467
(...skipping 19 matching lines...) Expand all
1486 scoped_refptr<FakePicturePileImpl> pile = 1487 scoped_refptr<FakePicturePileImpl> pile =
1487 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize( 1488 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize(
1488 current_layer_bounds); 1489 current_layer_bounds);
1489 scoped_ptr<TestablePictureLayerTiling> tiling = 1490 scoped_ptr<TestablePictureLayerTiling> tiling =
1490 TestablePictureLayerTiling::Create(ACTIVE_TREE, 1.0f, pile, &client, 1491 TestablePictureLayerTiling::Create(ACTIVE_TREE, 1.0f, pile, &client,
1491 LayerTreeSettings()); 1492 LayerTreeSettings());
1492 1493
1493 tiling->ComputeTilePriorityRects(viewport_in_layer_space, 1494 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1494 current_layer_contents_scale, 1495 current_layer_contents_scale,
1495 current_frame_time_in_seconds, Occlusion()); 1496 current_frame_time_in_seconds, Occlusion());
1496 tiling->UpdateAllTilePrioritiesForTesting(); 1497 auto prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting();
1497 1498
1498 ASSERT_TRUE(tiling->TileAt(0, 0)); 1499 ASSERT_TRUE(tiling->TileAt(0, 0));
1499 ASSERT_TRUE(tiling->TileAt(0, 1)); 1500 ASSERT_TRUE(tiling->TileAt(0, 1));
1500 ASSERT_TRUE(tiling->TileAt(1, 0)); 1501 ASSERT_TRUE(tiling->TileAt(1, 0));
1501 ASSERT_TRUE(tiling->TileAt(1, 1)); 1502 ASSERT_TRUE(tiling->TileAt(1, 1));
1502 1503
1503 TilePriority priority = tiling->TileAt(0, 0)->priority(); 1504 TilePriority priority = prioritized_tiles[tiling->TileAt(0, 0)].priority();
1504 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1505 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1505 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1506 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1506 1507
1507 priority = tiling->TileAt(0, 1)->priority(); 1508 priority = prioritized_tiles[tiling->TileAt(0, 1)].priority();
1508 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1509 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1509 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1510 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1510 1511
1511 priority = tiling->TileAt(1, 0)->priority(); 1512 priority = prioritized_tiles[tiling->TileAt(1, 0)].priority();
1512 EXPECT_GT(priority.distance_to_visible, 0.f); 1513 EXPECT_GT(priority.distance_to_visible, 0.f);
1513 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1514 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1514 1515
1515 priority = tiling->TileAt(1, 1)->priority(); 1516 priority = prioritized_tiles[tiling->TileAt(1, 1)].priority();
1516 EXPECT_GT(priority.distance_to_visible, 0.f); 1517 EXPECT_GT(priority.distance_to_visible, 0.f);
1517 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1518 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1518 1519
1519 // Furthermore, in this scenario the bottom-right tile should have the larger 1520 // Furthermore, in this scenario the bottom-right tile should have the larger
1520 // distance to visible. 1521 // distance to visible.
1521 TilePriority top_left = tiling->TileAt(0, 0)->priority(); 1522 TilePriority top_left = prioritized_tiles[tiling->TileAt(0, 0)].priority();
1522 TilePriority top_right = tiling->TileAt(1, 0)->priority(); 1523 TilePriority top_right = prioritized_tiles[tiling->TileAt(1, 0)].priority();
1523 TilePriority bottom_right = tiling->TileAt(1, 1)->priority(); 1524 TilePriority bottom_right =
1525 prioritized_tiles[tiling->TileAt(1, 1)].priority();
1524 EXPECT_GT(top_right.distance_to_visible, top_left.distance_to_visible); 1526 EXPECT_GT(top_right.distance_to_visible, top_left.distance_to_visible);
1525 1527
1526 EXPECT_EQ(bottom_right.distance_to_visible, top_right.distance_to_visible); 1528 EXPECT_EQ(bottom_right.distance_to_visible, top_right.distance_to_visible);
1527 } 1529 }
1528 1530
1529 TEST(ComputeTilePriorityRectsTest, PerspectiveLayer) { 1531 TEST(ComputeTilePriorityRectsTest, PerspectiveLayer) {
1530 // Perspective transforms need to take a different code path. 1532 // Perspective transforms need to take a different code path.
1531 // This test checks tile priorities of a perspective layer. 1533 // This test checks tile priorities of a perspective layer.
1532 FakePictureLayerTilingClient client; 1534 FakePictureLayerTilingClient client;
1533 1535
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1569 scoped_refptr<FakePicturePileImpl> pile = 1571 scoped_refptr<FakePicturePileImpl> pile =
1570 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize( 1572 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize(
1571 current_layer_bounds); 1573 current_layer_bounds);
1572 scoped_ptr<TestablePictureLayerTiling> tiling = 1574 scoped_ptr<TestablePictureLayerTiling> tiling =
1573 TestablePictureLayerTiling::Create(ACTIVE_TREE, 1.0f, pile, &client, 1575 TestablePictureLayerTiling::Create(ACTIVE_TREE, 1.0f, pile, &client,
1574 LayerTreeSettings()); 1576 LayerTreeSettings());
1575 1577
1576 tiling->ComputeTilePriorityRects(viewport_in_layer_space, 1578 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1577 current_layer_contents_scale, 1579 current_layer_contents_scale,
1578 current_frame_time_in_seconds, Occlusion()); 1580 current_frame_time_in_seconds, Occlusion());
1579 tiling->UpdateAllTilePrioritiesForTesting(); 1581 auto prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting();
1580 1582
1581 ASSERT_TRUE(tiling->TileAt(0, 0)); 1583 ASSERT_TRUE(tiling->TileAt(0, 0));
1582 ASSERT_TRUE(tiling->TileAt(0, 1)); 1584 ASSERT_TRUE(tiling->TileAt(0, 1));
1583 ASSERT_TRUE(tiling->TileAt(1, 0)); 1585 ASSERT_TRUE(tiling->TileAt(1, 0));
1584 ASSERT_TRUE(tiling->TileAt(1, 1)); 1586 ASSERT_TRUE(tiling->TileAt(1, 1));
1585 1587
1586 // All tiles will have a positive distance_to_visible 1588 // All tiles will have a positive distance_to_visible
1587 // and an infinite time_to_visible. 1589 // and an infinite time_to_visible.
1588 TilePriority priority = tiling->TileAt(0, 0)->priority(); 1590 TilePriority priority = prioritized_tiles[tiling->TileAt(0, 0)].priority();
1589 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f); 1591 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f);
1590 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1592 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1591 1593
1592 priority = tiling->TileAt(0, 1)->priority(); 1594 priority = prioritized_tiles[tiling->TileAt(0, 1)].priority();
1593 EXPECT_GT(priority.distance_to_visible, 0.f); 1595 EXPECT_GT(priority.distance_to_visible, 0.f);
1594 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1596 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1595 1597
1596 priority = tiling->TileAt(1, 0)->priority(); 1598 priority = prioritized_tiles[tiling->TileAt(1, 0)].priority();
1597 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f); 1599 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f);
1598 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1600 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1599 1601
1600 priority = tiling->TileAt(1, 1)->priority(); 1602 priority = prioritized_tiles[tiling->TileAt(1, 1)].priority();
1601 EXPECT_GT(priority.distance_to_visible, 0.f); 1603 EXPECT_GT(priority.distance_to_visible, 0.f);
1602 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1604 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1603 1605
1604 // Furthermore, in this scenario the top-left distance_to_visible 1606 // Furthermore, in this scenario the top-left distance_to_visible
1605 // will be smallest, followed by top-right. The bottom layers 1607 // will be smallest, followed by top-right. The bottom layers
1606 // will of course be further than the top layers. 1608 // will of course be further than the top layers.
1607 TilePriority top_left = tiling->TileAt(0, 0)->priority(); 1609 TilePriority top_left = prioritized_tiles[tiling->TileAt(0, 0)].priority();
1608 TilePriority top_right = tiling->TileAt(1, 0)->priority(); 1610 TilePriority top_right = prioritized_tiles[tiling->TileAt(1, 0)].priority();
1609 TilePriority bottom_left = tiling->TileAt(0, 1)->priority(); 1611 TilePriority bottom_left = prioritized_tiles[tiling->TileAt(0, 1)].priority();
1610 TilePriority bottom_right = tiling->TileAt(1, 1)->priority(); 1612 TilePriority bottom_right =
1613 prioritized_tiles[tiling->TileAt(1, 1)].priority();
1611 1614
1612 EXPECT_GT(bottom_right.distance_to_visible, top_right.distance_to_visible); 1615 EXPECT_GT(bottom_right.distance_to_visible, top_right.distance_to_visible);
1613 1616
1614 EXPECT_GT(bottom_left.distance_to_visible, top_left.distance_to_visible); 1617 EXPECT_GT(bottom_left.distance_to_visible, top_left.distance_to_visible);
1615 } 1618 }
1616 1619
1617 TEST(ComputeTilePriorityRectsTest, PerspectiveLayerClippedByW) { 1620 TEST(ComputeTilePriorityRectsTest, PerspectiveLayerClippedByW) {
1618 // Perspective transforms need to take a different code path. 1621 // Perspective transforms need to take a different code path.
1619 // This test checks tile priorities of a perspective layer. 1622 // This test checks tile priorities of a perspective layer.
1620 FakePictureLayerTilingClient client; 1623 FakePictureLayerTilingClient client;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1662 scoped_refptr<FakePicturePileImpl> pile = 1665 scoped_refptr<FakePicturePileImpl> pile =
1663 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize( 1666 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize(
1664 current_layer_bounds); 1667 current_layer_bounds);
1665 scoped_ptr<TestablePictureLayerTiling> tiling = 1668 scoped_ptr<TestablePictureLayerTiling> tiling =
1666 TestablePictureLayerTiling::Create(ACTIVE_TREE, 1.0f, pile, &client, 1669 TestablePictureLayerTiling::Create(ACTIVE_TREE, 1.0f, pile, &client,
1667 LayerTreeSettings()); 1670 LayerTreeSettings());
1668 1671
1669 tiling->ComputeTilePriorityRects(viewport_in_layer_space, 1672 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1670 current_layer_contents_scale, 1673 current_layer_contents_scale,
1671 current_frame_time_in_seconds, Occlusion()); 1674 current_frame_time_in_seconds, Occlusion());
1672 tiling->UpdateAllTilePrioritiesForTesting(); 1675 auto prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting();
1673 1676
1674 ASSERT_TRUE(tiling->TileAt(0, 0)); 1677 ASSERT_TRUE(tiling->TileAt(0, 0));
1675 ASSERT_TRUE(tiling->TileAt(0, 1)); 1678 ASSERT_TRUE(tiling->TileAt(0, 1));
1676 ASSERT_TRUE(tiling->TileAt(1, 0)); 1679 ASSERT_TRUE(tiling->TileAt(1, 0));
1677 ASSERT_TRUE(tiling->TileAt(1, 1)); 1680 ASSERT_TRUE(tiling->TileAt(1, 1));
1678 1681
1679 // Left-side tiles will be clipped by the transform, so we have to assume 1682 // Left-side tiles will be clipped by the transform, so we have to assume
1680 // they are visible just in case. 1683 // they are visible just in case.
1681 TilePriority priority = tiling->TileAt(0, 0)->priority(); 1684 TilePriority priority = prioritized_tiles[tiling->TileAt(0, 0)].priority();
1682 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1685 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1683 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); 1686 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin);
1684 1687
1685 priority = tiling->TileAt(0, 1)->priority(); 1688 priority = prioritized_tiles[tiling->TileAt(0, 1)].priority();
1686 EXPECT_GT(priority.distance_to_visible, 0.f); 1689 EXPECT_GT(priority.distance_to_visible, 0.f);
1687 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1690 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1688 1691
1689 // Right-side tiles will have a positive distance_to_visible 1692 // Right-side tiles will have a positive distance_to_visible
1690 // and an infinite time_to_visible. 1693 // and an infinite time_to_visible.
1691 priority = tiling->TileAt(1, 0)->priority(); 1694 priority = prioritized_tiles[tiling->TileAt(1, 0)].priority();
1692 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f); 1695 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f);
1693 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1696 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1694 1697
1695 priority = tiling->TileAt(1, 1)->priority(); 1698 priority = prioritized_tiles[tiling->TileAt(1, 1)].priority();
1696 EXPECT_GT(priority.distance_to_visible, 0.f); 1699 EXPECT_GT(priority.distance_to_visible, 0.f);
1697 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1700 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1698 } 1701 }
1699 1702
1700 TEST(ComputeTilePriorityRectsTest, BasicMotion) { 1703 TEST(ComputeTilePriorityRectsTest, BasicMotion) {
1701 // Test that time_to_visible is computed correctly when 1704 // Test that time_to_visible is computed correctly when
1702 // there is some motion. 1705 // there is some motion.
1703 FakePictureLayerTilingClient client; 1706 FakePictureLayerTilingClient client;
1704 1707
1705 gfx::Size device_viewport(800, 600); 1708 gfx::Size device_viewport(800, 600);
(...skipping 27 matching lines...) Expand all
1733 1736
1734 // previous ("last") frame 1737 // previous ("last") frame
1735 tiling->ComputeTilePriorityRects(viewport_in_layer_space, 1738 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1736 last_layer_contents_scale, 1739 last_layer_contents_scale,
1737 last_frame_time_in_seconds, Occlusion()); 1740 last_frame_time_in_seconds, Occlusion());
1738 1741
1739 // current frame 1742 // current frame
1740 tiling->ComputeTilePriorityRects(viewport_in_layer_space, 1743 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1741 current_layer_contents_scale, 1744 current_layer_contents_scale,
1742 current_frame_time_in_seconds, Occlusion()); 1745 current_frame_time_in_seconds, Occlusion());
1743 tiling->UpdateAllTilePrioritiesForTesting(); 1746 auto prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting();
1744 1747
1745 ASSERT_TRUE(tiling->TileAt(0, 0)); 1748 ASSERT_TRUE(tiling->TileAt(0, 0));
1746 ASSERT_TRUE(tiling->TileAt(0, 1)); 1749 ASSERT_TRUE(tiling->TileAt(0, 1));
1747 ASSERT_TRUE(tiling->TileAt(1, 0)); 1750 ASSERT_TRUE(tiling->TileAt(1, 0));
1748 ASSERT_TRUE(tiling->TileAt(1, 1)); 1751 ASSERT_TRUE(tiling->TileAt(1, 1));
1749 1752
1750 TilePriority priority = tiling->TileAt(0, 0)->priority(); 1753 TilePriority priority = prioritized_tiles[tiling->TileAt(0, 0)].priority();
1751 EXPECT_GT(priority.distance_to_visible, 0.f); 1754 EXPECT_GT(priority.distance_to_visible, 0.f);
1752 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1755 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1753 1756
1754 priority = tiling->TileAt(0, 1)->priority(); 1757 priority = prioritized_tiles[tiling->TileAt(0, 1)].priority();
1755 EXPECT_GT(priority.distance_to_visible, 0.f); 1758 EXPECT_GT(priority.distance_to_visible, 0.f);
1756 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1759 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1757 1760
1758 // time_to_visible for the right hand side layers needs an extra 0.099 1761 // time_to_visible for the right hand side layers needs an extra 0.099
1759 // seconds because this tile is 99 pixels further away. 1762 // seconds because this tile is 99 pixels further away.
1760 priority = tiling->TileAt(1, 0)->priority(); 1763 priority = prioritized_tiles[tiling->TileAt(1, 0)].priority();
1761 EXPECT_GT(priority.distance_to_visible, 0.f); 1764 EXPECT_GT(priority.distance_to_visible, 0.f);
1762 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1765 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1763 1766
1764 priority = tiling->TileAt(1, 1)->priority(); 1767 priority = prioritized_tiles[tiling->TileAt(1, 1)].priority();
1765 EXPECT_GT(priority.distance_to_visible, 0.f); 1768 EXPECT_GT(priority.distance_to_visible, 0.f);
1766 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1769 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1767 } 1770 }
1768 1771
1769 TEST(ComputeTilePriorityRectsTest, RotationMotion) { 1772 TEST(ComputeTilePriorityRectsTest, RotationMotion) {
1770 // Each tile of a layer may be affected differently by a transform; Check 1773 // Each tile of a layer may be affected differently by a transform; Check
1771 // that ComputeTilePriorityRects correctly accounts for the transform between 1774 // that ComputeTilePriorityRects correctly accounts for the transform between
1772 // layer space and screen space. 1775 // layer space and screen space.
1773 1776
1774 FakePictureLayerTilingClient client; 1777 FakePictureLayerTilingClient client;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1810 1813
1811 // previous ("last") frame 1814 // previous ("last") frame
1812 tiling->ComputeTilePriorityRects(viewport_in_layer_space, 1815 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1813 last_layer_contents_scale, 1816 last_layer_contents_scale,
1814 last_frame_time_in_seconds, Occlusion()); 1817 last_frame_time_in_seconds, Occlusion());
1815 1818
1816 // current frame 1819 // current frame
1817 tiling->ComputeTilePriorityRects(viewport_in_layer_space, 1820 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1818 current_layer_contents_scale, 1821 current_layer_contents_scale,
1819 current_frame_time_in_seconds, Occlusion()); 1822 current_frame_time_in_seconds, Occlusion());
1820 tiling->UpdateAllTilePrioritiesForTesting(); 1823 auto prioritized_tiles = tiling->UpdateAndGetAllPrioritizedTilesForTesting();
1821 1824
1822 ASSERT_TRUE(tiling->TileAt(0, 0)); 1825 ASSERT_TRUE(tiling->TileAt(0, 0));
1823 ASSERT_TRUE(tiling->TileAt(0, 1)); 1826 ASSERT_TRUE(tiling->TileAt(0, 1));
1824 ASSERT_TRUE(tiling->TileAt(1, 0)); 1827 ASSERT_TRUE(tiling->TileAt(1, 0));
1825 ASSERT_TRUE(tiling->TileAt(1, 1)); 1828 ASSERT_TRUE(tiling->TileAt(1, 1));
1826 1829
1827 TilePriority priority = tiling->TileAt(0, 0)->priority(); 1830 TilePriority priority = prioritized_tiles[tiling->TileAt(0, 0)].priority();
1828 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1831 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1829 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1832 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1830 1833
1831 priority = tiling->TileAt(0, 1)->priority(); 1834 priority = prioritized_tiles[tiling->TileAt(0, 1)].priority();
1832 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1835 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1833 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1836 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1834 1837
1835 priority = tiling->TileAt(1, 0)->priority(); 1838 priority = prioritized_tiles[tiling->TileAt(1, 0)].priority();
1836 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1839 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1837 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1840 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1838 } 1841 }
1839 1842
1840 TEST(PictureLayerTilingTest, RecycledTilesCleared) { 1843 TEST(PictureLayerTilingTest, RecycledTilesCleared) {
1841 // This test performs the following: 1844 // This test performs the following:
1842 // Setup: 1845 // Setup:
1843 // - Two tilings, one active one recycled with all tiles shared. 1846 // - Two tilings, one active one recycled with all tiles shared.
1844 // Procedure: 1847 // Procedure:
1845 // - Viewport moves somewhere far away and active tiling clears tiles. 1848 // - Viewport moves somewhere far away and active tiling clears tiles.
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
1966 tiling_->SetRasterSourceAndResize(pile); 1969 tiling_->SetRasterSourceAndResize(pile);
1967 1970
1968 // Tile size in the tiling should be resized to 250x200. 1971 // Tile size in the tiling should be resized to 250x200.
1969 EXPECT_EQ(250, tiling_->TilingDataForTesting().max_texture_size().width()); 1972 EXPECT_EQ(250, tiling_->TilingDataForTesting().max_texture_size().width());
1970 EXPECT_EQ(200, tiling_->TilingDataForTesting().max_texture_size().height()); 1973 EXPECT_EQ(200, tiling_->TilingDataForTesting().max_texture_size().height());
1971 EXPECT_EQ(0u, tiling_->AllTilesForTesting().size()); 1974 EXPECT_EQ(0u, tiling_->AllTilesForTesting().size());
1972 } 1975 }
1973 1976
1974 } // namespace 1977 } // namespace
1975 } // namespace cc 1978 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/picture_layer_tiling.cc ('k') | cc/resources/prioritized_tile.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698