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

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

Issue 1051993002: cc: Remove tile sharing from tilings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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_set.cc ('k') | cc/resources/raster_tile_priority_queue_all.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 "cc/resources/picture_layer_tiling.h"
6
7 #include <limits> 5 #include <limits>
8 #include <set> 6 #include <set>
9 7
10 #include "cc/base/math_util.h" 8 #include "cc/base/math_util.h"
9 #include "cc/resources/picture_layer_tiling.h"
11 #include "cc/resources/picture_layer_tiling_set.h" 10 #include "cc/resources/picture_layer_tiling_set.h"
12 #include "cc/test/fake_output_surface.h" 11 #include "cc/test/fake_output_surface.h"
13 #include "cc/test/fake_output_surface_client.h" 12 #include "cc/test/fake_output_surface_client.h"
14 #include "cc/test/fake_picture_layer_tiling_client.h" 13 #include "cc/test/fake_picture_layer_tiling_client.h"
15 #include "cc/test/fake_picture_pile_impl.h" 14 #include "cc/test/fake_picture_pile_impl.h"
16 #include "cc/test/test_context_provider.h" 15 #include "cc/test/test_context_provider.h"
17 #include "cc/test/test_shared_bitmap_manager.h" 16 #include "cc/test/test_shared_bitmap_manager.h"
18 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
19 #include "ui/gfx/geometry/quad_f.h" 18 #include "ui/gfx/geometry/quad_f.h"
20 #include "ui/gfx/geometry/rect_conversions.h" 19 #include "ui/gfx/geometry/rect_conversions.h"
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 float contents_scale, 81 float contents_scale,
83 const gfx::Size& layer_bounds) { 82 const gfx::Size& layer_bounds) {
84 client_.SetTileSize(tile_size); 83 client_.SetTileSize(tile_size);
85 client_.set_tree(PENDING_TREE); 84 client_.set_tree(PENDING_TREE);
86 scoped_refptr<FakePicturePileImpl> pile = 85 scoped_refptr<FakePicturePileImpl> pile =
87 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize(layer_bounds); 86 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize(layer_bounds);
88 tiling_ = TestablePictureLayerTiling::Create(contents_scale, pile, &client_, 87 tiling_ = TestablePictureLayerTiling::Create(contents_scale, pile, &client_,
89 LayerTreeSettings()); 88 LayerTreeSettings());
90 } 89 }
91 90
91 void InitializeActive(const gfx::Size& tile_size,
92 float contents_scale,
93 const gfx::Size& layer_bounds) {
94 client_.SetTileSize(tile_size);
95 client_.set_tree(ACTIVE_TREE);
96 scoped_refptr<FakePicturePileImpl> pile =
97 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize(layer_bounds);
98 tiling_ = TestablePictureLayerTiling::Create(contents_scale, pile, &client_,
99 LayerTreeSettings());
100 }
101
92 void SetLiveRectAndVerifyTiles(const gfx::Rect& live_tiles_rect) { 102 void SetLiveRectAndVerifyTiles(const gfx::Rect& live_tiles_rect) {
93 tiling_->SetLiveTilesRect(live_tiles_rect); 103 tiling_->SetLiveTilesRect(live_tiles_rect);
94 104
95 std::vector<Tile*> tiles = tiling_->AllTilesForTesting(); 105 std::vector<Tile*> tiles = tiling_->AllTilesForTesting();
96 for (std::vector<Tile*>::iterator iter = tiles.begin(); 106 for (std::vector<Tile*>::iterator iter = tiles.begin();
97 iter != tiles.end(); 107 iter != tiles.end();
98 ++iter) { 108 ++iter) {
99 EXPECT_TRUE(live_tiles_rect.Intersects((*iter)->content_rect())); 109 EXPECT_TRUE(live_tiles_rect.Intersects((*iter)->content_rect()));
100 } 110 }
101 } 111 }
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 192
183 private: 193 private:
184 DISALLOW_COPY_AND_ASSIGN(PictureLayerTilingIteratorTest); 194 DISALLOW_COPY_AND_ASSIGN(PictureLayerTilingIteratorTest);
185 }; 195 };
186 196
187 TEST_F(PictureLayerTilingIteratorTest, ResizeDeletesTiles) { 197 TEST_F(PictureLayerTilingIteratorTest, ResizeDeletesTiles) {
188 // Verifies that a resize with invalidation for newly exposed pixels will 198 // Verifies that a resize with invalidation for newly exposed pixels will
189 // deletes tiles that intersect that invalidation. 199 // deletes tiles that intersect that invalidation.
190 gfx::Size tile_size(100, 100); 200 gfx::Size tile_size(100, 100);
191 gfx::Size original_layer_size(10, 10); 201 gfx::Size original_layer_size(10, 10);
192 Initialize(tile_size, 1.f, original_layer_size); 202 InitializeActive(tile_size, 1.f, original_layer_size);
193 SetLiveRectAndVerifyTiles(gfx::Rect(original_layer_size)); 203 SetLiveRectAndVerifyTiles(gfx::Rect(original_layer_size));
194 204
195 // Tiling only has one tile, since its total size is less than one. 205 // Tiling only has one tile, since its total size is less than one.
196 EXPECT_TRUE(tiling_->TileAt(0, 0)); 206 EXPECT_TRUE(tiling_->TileAt(0, 0));
197 207
198 // Stop creating tiles so that any invalidations are left as holes. 208 // Stop creating tiles so that any invalidations are left as holes.
199 gfx::Size new_layer_size(200, 200); 209 gfx::Size new_layer_size(200, 200);
200 scoped_refptr<FakePicturePileImpl> pile = 210 scoped_refptr<FakePicturePileImpl> pile =
201 FakePicturePileImpl::CreateEmptyPileWithDefaultTileSize(new_layer_size); 211 FakePicturePileImpl::CreateEmptyPileWithDefaultTileSize(new_layer_size);
202 212
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 for (int j = 0; j < 4; ++j) 408 for (int j = 0; j < 4; ++j)
399 EXPECT_TRUE(tiling_->TileAt(i, j)) << i << "," << j; 409 EXPECT_TRUE(tiling_->TileAt(i, j)) << i << "," << j;
400 } 410 }
401 } 411 }
402 412
403 TEST_F(PictureLayerTilingIteratorTest, ResizeOverBorderPixelsDeletesTiles) { 413 TEST_F(PictureLayerTilingIteratorTest, ResizeOverBorderPixelsDeletesTiles) {
404 // Verifies that a resize with invalidation for newly exposed pixels will 414 // Verifies that a resize with invalidation for newly exposed pixels will
405 // deletes tiles that intersect that invalidation. 415 // deletes tiles that intersect that invalidation.
406 gfx::Size tile_size(100, 100); 416 gfx::Size tile_size(100, 100);
407 gfx::Size original_layer_size(99, 99); 417 gfx::Size original_layer_size(99, 99);
408 Initialize(tile_size, 1.f, original_layer_size); 418 InitializeActive(tile_size, 1.f, original_layer_size);
409 SetLiveRectAndVerifyTiles(gfx::Rect(original_layer_size)); 419 SetLiveRectAndVerifyTiles(gfx::Rect(original_layer_size));
410 420
411 // Tiling only has one tile, since its total size is less than one. 421 // Tiling only has one tile, since its total size is less than one.
412 EXPECT_TRUE(tiling_->TileAt(0, 0)); 422 EXPECT_TRUE(tiling_->TileAt(0, 0));
413 423
414 // Stop creating tiles so that any invalidations are left as holes. 424 // Stop creating tiles so that any invalidations are left as holes.
415 scoped_refptr<FakePicturePileImpl> pile = 425 scoped_refptr<FakePicturePileImpl> pile =
416 FakePicturePileImpl::CreateEmptyPileWithDefaultTileSize( 426 FakePicturePileImpl::CreateEmptyPileWithDefaultTileSize(
417 gfx::Size(200, 200)); 427 gfx::Size(200, 200));
418 tiling_->SetRasterSourceAndResize(pile); 428 tiling_->SetRasterSourceAndResize(pile);
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 806
797 // No movement in the viewport implies that tiles will either be NOW 807 // No movement in the viewport implies that tiles will either be NOW
798 // or EVENTUALLY, with the exception of tiles that are between 0 and 312 808 // or EVENTUALLY, with the exception of tiles that are between 0 and 312
799 // pixels away from the viewport, which will be in the SOON bin. 809 // pixels away from the viewport, which will be in the SOON bin.
800 bool have_now = false; 810 bool have_now = false;
801 bool have_eventually = false; 811 bool have_eventually = false;
802 bool have_soon = false; 812 bool have_soon = false;
803 for (int i = 0; i < 47; ++i) { 813 for (int i = 0; i < 47; ++i) {
804 for (int j = 0; j < 47; ++j) { 814 for (int j = 0; j < 47; ++j) {
805 Tile* tile = tiling->TileAt(i, j); 815 Tile* tile = tiling->TileAt(i, j);
806 TilePriority priority = tile->priority(ACTIVE_TREE); 816 TilePriority priority = tile->priority();
807 817
808 gfx::Rect tile_rect = tiling->TilingDataForTesting().TileBounds(i, j); 818 gfx::Rect tile_rect = tiling->TilingDataForTesting().TileBounds(i, j);
809 if (viewport_in_content_space.Intersects(tile_rect)) { 819 if (viewport_in_content_space.Intersects(tile_rect)) {
810 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 820 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
811 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 821 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
812 have_now = true; 822 have_now = true;
813 } else if (soon_rect_in_content_space.Intersects(tile_rect)) { 823 } else if (soon_rect_in_content_space.Intersects(tile_rect)) {
814 EXPECT_EQ(TilePriority::SOON, priority.priority_bin); 824 EXPECT_EQ(TilePriority::SOON, priority.priority_bin);
815 have_soon = true; 825 have_soon = true;
816 } else { 826 } else {
(...skipping 11 matching lines...) Expand all
828 // Spot check some distances. 838 // Spot check some distances.
829 // 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),
830 // 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
831 // 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
832 // 17 / 0.25 = 68 pixels. 842 // 17 / 0.25 = 68 pixels.
833 843
834 // 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
835 // 41,9 8x8 on all sides. 845 // 41,9 8x8 on all sides.
836 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");
837 847
838 TilePriority priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); 848 TilePriority priority = tiling->TileAt(5, 1)->priority();
839 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible); 849 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible);
840 850
841 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); 851 priority = tiling->TileAt(2, 5)->priority();
842 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible); 852 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible);
843 853
844 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); 854 priority = tiling->TileAt(3, 4)->priority();
845 EXPECT_FLOAT_EQ(40.f, priority.distance_to_visible); 855 EXPECT_FLOAT_EQ(40.f, priority.distance_to_visible);
846 856
847 // Move the viewport down 40 pixels. 857 // Move the viewport down 40 pixels.
848 viewport = gfx::Rect(0, 40, 100, 100); 858 viewport = gfx::Rect(0, 40, 100, 100);
849 viewport_in_content_space = 859 viewport_in_content_space =
850 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f)); 860 gfx::ToEnclosedRect(gfx::ScaleRect(viewport, 0.25f));
851 gfx::Rect skewport = tiling->ComputeSkewport(2.0, viewport_in_content_space); 861 gfx::Rect skewport = tiling->ComputeSkewport(2.0, viewport_in_content_space);
852 862
853 // Compute the soon border. 863 // Compute the soon border.
854 inset = PictureLayerTiling::CalculateSoonBorderDistance( 864 inset = PictureLayerTiling::CalculateSoonBorderDistance(
(...skipping 11 matching lines...) Expand all
866 876
867 have_now = false; 877 have_now = false;
868 have_eventually = false; 878 have_eventually = false;
869 have_soon = false; 879 have_soon = false;
870 880
871 // 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
872 // some EVENTUALLY tiles. 882 // some EVENTUALLY tiles.
873 for (int i = 0; i < 47; ++i) { 883 for (int i = 0; i < 47; ++i) {
874 for (int j = 0; j < 47; ++j) { 884 for (int j = 0; j < 47; ++j) {
875 Tile* tile = tiling->TileAt(i, j); 885 Tile* tile = tiling->TileAt(i, j);
876 TilePriority priority = tile->priority(ACTIVE_TREE); 886 TilePriority priority = tile->priority();
877 887
878 gfx::Rect tile_rect = tiling->TilingDataForTesting().TileBounds(i, j); 888 gfx::Rect tile_rect = tiling->TilingDataForTesting().TileBounds(i, j);
879 if (viewport_in_content_space.Intersects(tile_rect)) { 889 if (viewport_in_content_space.Intersects(tile_rect)) {
880 EXPECT_EQ(TilePriority::NOW, priority.priority_bin) << "i: " << i 890 EXPECT_EQ(TilePriority::NOW, priority.priority_bin) << "i: " << i
881 << " j: " << j; 891 << " j: " << j;
882 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible) << "i: " << i 892 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible) << "i: " << i
883 << " j: " << j; 893 << " j: " << j;
884 have_now = true; 894 have_now = true;
885 } else if (skewport.Intersects(tile_rect) || 895 } else if (skewport.Intersects(tile_rect) ||
886 soon_rect_in_content_space.Intersects(tile_rect)) { 896 soon_rect_in_content_space.Intersects(tile_rect)) {
887 EXPECT_EQ(TilePriority::SOON, priority.priority_bin) << "i: " << i 897 EXPECT_EQ(TilePriority::SOON, priority.priority_bin) << "i: " << i
888 << " j: " << j; 898 << " j: " << j;
889 EXPECT_GT(priority.distance_to_visible, 0.f) << "i: " << i 899 EXPECT_GT(priority.distance_to_visible, 0.f) << "i: " << i
890 << " j: " << j; 900 << " j: " << j;
891 have_soon = true; 901 have_soon = true;
892 } else { 902 } else {
893 EXPECT_EQ(TilePriority::EVENTUALLY, priority.priority_bin) 903 EXPECT_EQ(TilePriority::EVENTUALLY, priority.priority_bin)
894 << "i: " << i << " j: " << j; 904 << "i: " << i << " j: " << j;
895 EXPECT_GT(priority.distance_to_visible, 0.f) << "i: " << i 905 EXPECT_GT(priority.distance_to_visible, 0.f) << "i: " << i
896 << " j: " << j; 906 << " j: " << j;
897 have_eventually = true; 907 have_eventually = true;
898 } 908 }
899 } 909 }
900 } 910 }
901 911
902 EXPECT_TRUE(have_now); 912 EXPECT_TRUE(have_now);
903 EXPECT_TRUE(have_soon); 913 EXPECT_TRUE(have_soon);
904 EXPECT_TRUE(have_eventually); 914 EXPECT_TRUE(have_eventually);
905 915
906 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); 916 priority = tiling->TileAt(5, 1)->priority();
907 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible); 917 EXPECT_FLOAT_EQ(68.f, priority.distance_to_visible);
908 918
909 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); 919 priority = tiling->TileAt(2, 5)->priority();
910 EXPECT_FLOAT_EQ(28.f, priority.distance_to_visible); 920 EXPECT_FLOAT_EQ(28.f, priority.distance_to_visible);
911 921
912 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); 922 priority = tiling->TileAt(3, 4)->priority();
913 EXPECT_FLOAT_EQ(4.f, priority.distance_to_visible); 923 EXPECT_FLOAT_EQ(4.f, priority.distance_to_visible);
914 924
915 // Change the underlying layer scale. 925 // Change the underlying layer scale.
916 tiling->ComputeTilePriorityRects(viewport, 2.0f, 3.0, Occlusion()); 926 tiling->ComputeTilePriorityRects(viewport, 2.0f, 3.0, Occlusion());
917 tiling->UpdateAllTilePrioritiesForTesting(); 927 tiling->UpdateAllTilePrioritiesForTesting();
918 928
919 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); 929 priority = tiling->TileAt(5, 1)->priority();
920 EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible); 930 EXPECT_FLOAT_EQ(136.f, priority.distance_to_visible);
921 931
922 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); 932 priority = tiling->TileAt(2, 5)->priority();
923 EXPECT_FLOAT_EQ(56.f, priority.distance_to_visible); 933 EXPECT_FLOAT_EQ(56.f, priority.distance_to_visible);
924 934
925 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); 935 priority = tiling->TileAt(3, 4)->priority();
926 EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible); 936 EXPECT_FLOAT_EQ(8.f, priority.distance_to_visible);
927 937
928 // Test additional scales. 938 // Test additional scales.
929 tiling = TestablePictureLayerTiling::Create(0.2f, pile, &client, 939 tiling = TestablePictureLayerTiling::Create(0.2f, pile, &client,
930 LayerTreeSettings()); 940 LayerTreeSettings());
931 tiling->ComputeTilePriorityRects(viewport, 1.0f, 4.0, Occlusion()); 941 tiling->ComputeTilePriorityRects(viewport, 1.0f, 4.0, Occlusion());
932 tiling->UpdateAllTilePrioritiesForTesting(); 942 tiling->UpdateAllTilePrioritiesForTesting();
933 943
934 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); 944 priority = tiling->TileAt(5, 1)->priority();
935 EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible); 945 EXPECT_FLOAT_EQ(110.f, priority.distance_to_visible);
936 946
937 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); 947 priority = tiling->TileAt(2, 5)->priority();
938 EXPECT_FLOAT_EQ(70.f, priority.distance_to_visible); 948 EXPECT_FLOAT_EQ(70.f, priority.distance_to_visible);
939 949
940 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); 950 priority = tiling->TileAt(3, 4)->priority();
941 EXPECT_FLOAT_EQ(60.f, priority.distance_to_visible); 951 EXPECT_FLOAT_EQ(60.f, priority.distance_to_visible);
942 952
943 tiling->ComputeTilePriorityRects(viewport, 0.5f, 5.0, Occlusion()); 953 tiling->ComputeTilePriorityRects(viewport, 0.5f, 5.0, Occlusion());
944 tiling->UpdateAllTilePrioritiesForTesting(); 954 tiling->UpdateAllTilePrioritiesForTesting();
945 955
946 priority = tiling->TileAt(5, 1)->priority(ACTIVE_TREE); 956 priority = tiling->TileAt(5, 1)->priority();
947 EXPECT_FLOAT_EQ(55.f, priority.distance_to_visible); 957 EXPECT_FLOAT_EQ(55.f, priority.distance_to_visible);
948 958
949 priority = tiling->TileAt(2, 5)->priority(ACTIVE_TREE); 959 priority = tiling->TileAt(2, 5)->priority();
950 EXPECT_FLOAT_EQ(35.f, priority.distance_to_visible); 960 EXPECT_FLOAT_EQ(35.f, priority.distance_to_visible);
951 961
952 priority = tiling->TileAt(3, 4)->priority(ACTIVE_TREE); 962 priority = tiling->TileAt(3, 4)->priority();
953 EXPECT_FLOAT_EQ(30.f, priority.distance_to_visible); 963 EXPECT_FLOAT_EQ(30.f, priority.distance_to_visible);
954 } 964 }
955 965
956 TEST(PictureLayerTilingTest, ExpandRectEqual) { 966 TEST(PictureLayerTilingTest, ExpandRectEqual) {
957 gfx::Rect in(40, 50, 100, 200); 967 gfx::Rect in(40, 50, 100, 200);
958 gfx::Rect bounds(-1000, -1000, 10000, 10000); 968 gfx::Rect bounds(-1000, -1000, 10000, 10000);
959 int64 target_area = 100 * 200; 969 int64 target_area = 100 * 200;
960 gfx::Rect out = PictureLayerTiling::ExpandRectEquallyToAreaBoundedBy( 970 gfx::Rect out = PictureLayerTiling::ExpandRectEquallyToAreaBoundedBy(
961 in, target_area, bounds, NULL); 971 in, target_area, bounds, NULL);
962 EXPECT_EQ(in.ToString(), out.ToString()); 972 EXPECT_EQ(in.ToString(), out.ToString());
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
1310 tiling->ComputeTilePriorityRects(viewport_in_layer_space, 1320 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1311 current_layer_contents_scale, 1321 current_layer_contents_scale,
1312 current_frame_time_in_seconds, Occlusion()); 1322 current_frame_time_in_seconds, Occlusion());
1313 tiling->UpdateAllTilePrioritiesForTesting(); 1323 tiling->UpdateAllTilePrioritiesForTesting();
1314 1324
1315 ASSERT_TRUE(tiling->TileAt(0, 0)); 1325 ASSERT_TRUE(tiling->TileAt(0, 0));
1316 ASSERT_TRUE(tiling->TileAt(0, 1)); 1326 ASSERT_TRUE(tiling->TileAt(0, 1));
1317 ASSERT_TRUE(tiling->TileAt(1, 0)); 1327 ASSERT_TRUE(tiling->TileAt(1, 0));
1318 ASSERT_TRUE(tiling->TileAt(1, 1)); 1328 ASSERT_TRUE(tiling->TileAt(1, 1));
1319 1329
1320 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1330 TilePriority priority = tiling->TileAt(0, 0)->priority();
1321 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1331 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1322 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); 1332 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin);
1323 1333
1324 priority = tiling->TileAt(0, 1)->priority(ACTIVE_TREE); 1334 priority = tiling->TileAt(0, 1)->priority();
1325 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1335 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1326 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); 1336 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin);
1327 1337
1328 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); 1338 priority = tiling->TileAt(1, 0)->priority();
1329 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1339 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1330 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); 1340 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin);
1331 1341
1332 priority = tiling->TileAt(1, 1)->priority(ACTIVE_TREE); 1342 priority = tiling->TileAt(1, 1)->priority();
1333 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1343 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1334 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); 1344 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin);
1335 } 1345 }
1336 1346
1337 TEST(ComputeTilePriorityRectsTest, OffscreenTiles) { 1347 TEST(ComputeTilePriorityRectsTest, OffscreenTiles) {
1338 // The TilePriority of offscreen tiles (without movement) should have nonzero 1348 // The TilePriority of offscreen tiles (without movement) should have nonzero
1339 // distance_to_visible and infinite time_to_visible. 1349 // distance_to_visible and infinite time_to_visible.
1340 FakePictureLayerTilingClient client; 1350 FakePictureLayerTilingClient client;
1341 1351
1342 gfx::Size device_viewport(800, 600); 1352 gfx::Size device_viewport(800, 600);
(...skipping 23 matching lines...) Expand all
1366 tiling->ComputeTilePriorityRects(viewport_in_layer_space, 1376 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1367 current_layer_contents_scale, 1377 current_layer_contents_scale,
1368 current_frame_time_in_seconds, Occlusion()); 1378 current_frame_time_in_seconds, Occlusion());
1369 tiling->UpdateAllTilePrioritiesForTesting(); 1379 tiling->UpdateAllTilePrioritiesForTesting();
1370 1380
1371 ASSERT_TRUE(tiling->TileAt(0, 0)); 1381 ASSERT_TRUE(tiling->TileAt(0, 0));
1372 ASSERT_TRUE(tiling->TileAt(0, 1)); 1382 ASSERT_TRUE(tiling->TileAt(0, 1));
1373 ASSERT_TRUE(tiling->TileAt(1, 0)); 1383 ASSERT_TRUE(tiling->TileAt(1, 0));
1374 ASSERT_TRUE(tiling->TileAt(1, 1)); 1384 ASSERT_TRUE(tiling->TileAt(1, 1));
1375 1385
1376 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1386 TilePriority priority = tiling->TileAt(0, 0)->priority();
1377 EXPECT_GT(priority.distance_to_visible, 0.f); 1387 EXPECT_GT(priority.distance_to_visible, 0.f);
1378 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1388 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1379 1389
1380 priority = tiling->TileAt(0, 1)->priority(ACTIVE_TREE); 1390 priority = tiling->TileAt(0, 1)->priority();
1381 EXPECT_GT(priority.distance_to_visible, 0.f); 1391 EXPECT_GT(priority.distance_to_visible, 0.f);
1382 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1392 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1383 1393
1384 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); 1394 priority = tiling->TileAt(1, 0)->priority();
1385 EXPECT_GT(priority.distance_to_visible, 0.f); 1395 EXPECT_GT(priority.distance_to_visible, 0.f);
1386 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1396 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1387 1397
1388 priority = tiling->TileAt(1, 1)->priority(ACTIVE_TREE); 1398 priority = tiling->TileAt(1, 1)->priority();
1389 EXPECT_GT(priority.distance_to_visible, 0.f); 1399 EXPECT_GT(priority.distance_to_visible, 0.f);
1390 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1400 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1391 1401
1392 // Furthermore, in this scenario tiles on the right hand side should have a 1402 // Furthermore, in this scenario tiles on the right hand side should have a
1393 // larger distance to visible. 1403 // larger distance to visible.
1394 TilePriority left = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1404 TilePriority left = tiling->TileAt(0, 0)->priority();
1395 TilePriority right = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); 1405 TilePriority right = tiling->TileAt(1, 0)->priority();
1396 EXPECT_GT(right.distance_to_visible, left.distance_to_visible); 1406 EXPECT_GT(right.distance_to_visible, left.distance_to_visible);
1397 1407
1398 left = tiling->TileAt(0, 1)->priority(ACTIVE_TREE); 1408 left = tiling->TileAt(0, 1)->priority();
1399 right = tiling->TileAt(1, 1)->priority(ACTIVE_TREE); 1409 right = tiling->TileAt(1, 1)->priority();
1400 EXPECT_GT(right.distance_to_visible, left.distance_to_visible); 1410 EXPECT_GT(right.distance_to_visible, left.distance_to_visible);
1401 } 1411 }
1402 1412
1403 TEST(ComputeTilePriorityRectsTest, PartiallyOffscreenLayer) { 1413 TEST(ComputeTilePriorityRectsTest, PartiallyOffscreenLayer) {
1404 // Sanity check that a layer with some tiles visible and others offscreen has 1414 // Sanity check that a layer with some tiles visible and others offscreen has
1405 // correct TilePriorities for each tile. 1415 // correct TilePriorities for each tile.
1406 FakePictureLayerTilingClient client; 1416 FakePictureLayerTilingClient client;
1407 1417
1408 gfx::Size device_viewport(800, 600); 1418 gfx::Size device_viewport(800, 600);
1409 gfx::Size last_layer_bounds(200, 200); 1419 gfx::Size last_layer_bounds(200, 200);
(...skipping 22 matching lines...) Expand all
1432 tiling->ComputeTilePriorityRects(viewport_in_layer_space, 1442 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1433 current_layer_contents_scale, 1443 current_layer_contents_scale,
1434 current_frame_time_in_seconds, Occlusion()); 1444 current_frame_time_in_seconds, Occlusion());
1435 tiling->UpdateAllTilePrioritiesForTesting(); 1445 tiling->UpdateAllTilePrioritiesForTesting();
1436 1446
1437 ASSERT_TRUE(tiling->TileAt(0, 0)); 1447 ASSERT_TRUE(tiling->TileAt(0, 0));
1438 ASSERT_TRUE(tiling->TileAt(0, 1)); 1448 ASSERT_TRUE(tiling->TileAt(0, 1));
1439 ASSERT_TRUE(tiling->TileAt(1, 0)); 1449 ASSERT_TRUE(tiling->TileAt(1, 0));
1440 ASSERT_TRUE(tiling->TileAt(1, 1)); 1450 ASSERT_TRUE(tiling->TileAt(1, 1));
1441 1451
1442 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1452 TilePriority priority = tiling->TileAt(0, 0)->priority();
1443 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1453 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1444 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); 1454 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin);
1445 1455
1446 priority = tiling->TileAt(0, 1)->priority(ACTIVE_TREE); 1456 priority = tiling->TileAt(0, 1)->priority();
1447 EXPECT_GT(priority.distance_to_visible, 0.f); 1457 EXPECT_GT(priority.distance_to_visible, 0.f);
1448 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1458 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1449 1459
1450 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); 1460 priority = tiling->TileAt(1, 0)->priority();
1451 EXPECT_GT(priority.distance_to_visible, 0.f); 1461 EXPECT_GT(priority.distance_to_visible, 0.f);
1452 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1462 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1453 1463
1454 priority = tiling->TileAt(1, 1)->priority(ACTIVE_TREE); 1464 priority = tiling->TileAt(1, 1)->priority();
1455 EXPECT_GT(priority.distance_to_visible, 0.f); 1465 EXPECT_GT(priority.distance_to_visible, 0.f);
1456 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1466 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1457 } 1467 }
1458 1468
1459 TEST(ComputeTilePriorityRectsTest, PartiallyOffscreenRotatedLayer) { 1469 TEST(ComputeTilePriorityRectsTest, PartiallyOffscreenRotatedLayer) {
1460 // Each tile of a layer may be affected differently by a transform; Check 1470 // Each tile of a layer may be affected differently by a transform; Check
1461 // that ComputeTilePriorityRects correctly accounts for the transform between 1471 // that ComputeTilePriorityRects correctly accounts for the transform between
1462 // layer space and screen space. 1472 // layer space and screen space.
1463 FakePictureLayerTilingClient client; 1473 FakePictureLayerTilingClient client;
1464 1474
(...skipping 27 matching lines...) Expand all
1492 tiling->ComputeTilePriorityRects(viewport_in_layer_space, 1502 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1493 current_layer_contents_scale, 1503 current_layer_contents_scale,
1494 current_frame_time_in_seconds, Occlusion()); 1504 current_frame_time_in_seconds, Occlusion());
1495 tiling->UpdateAllTilePrioritiesForTesting(); 1505 tiling->UpdateAllTilePrioritiesForTesting();
1496 1506
1497 ASSERT_TRUE(tiling->TileAt(0, 0)); 1507 ASSERT_TRUE(tiling->TileAt(0, 0));
1498 ASSERT_TRUE(tiling->TileAt(0, 1)); 1508 ASSERT_TRUE(tiling->TileAt(0, 1));
1499 ASSERT_TRUE(tiling->TileAt(1, 0)); 1509 ASSERT_TRUE(tiling->TileAt(1, 0));
1500 ASSERT_TRUE(tiling->TileAt(1, 1)); 1510 ASSERT_TRUE(tiling->TileAt(1, 1));
1501 1511
1502 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1512 TilePriority priority = tiling->TileAt(0, 0)->priority();
1503 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1513 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1504 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1514 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1505 1515
1506 priority = tiling->TileAt(0, 1)->priority(ACTIVE_TREE); 1516 priority = tiling->TileAt(0, 1)->priority();
1507 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1517 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1508 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1518 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1509 1519
1510 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); 1520 priority = tiling->TileAt(1, 0)->priority();
1511 EXPECT_GT(priority.distance_to_visible, 0.f); 1521 EXPECT_GT(priority.distance_to_visible, 0.f);
1512 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1522 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1513 1523
1514 priority = tiling->TileAt(1, 1)->priority(ACTIVE_TREE); 1524 priority = tiling->TileAt(1, 1)->priority();
1515 EXPECT_GT(priority.distance_to_visible, 0.f); 1525 EXPECT_GT(priority.distance_to_visible, 0.f);
1516 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1526 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1517 1527
1518 // Furthermore, in this scenario the bottom-right tile should have the larger 1528 // Furthermore, in this scenario the bottom-right tile should have the larger
1519 // distance to visible. 1529 // distance to visible.
1520 TilePriority top_left = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1530 TilePriority top_left = tiling->TileAt(0, 0)->priority();
1521 TilePriority top_right = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); 1531 TilePriority top_right = tiling->TileAt(1, 0)->priority();
1522 TilePriority bottom_right = tiling->TileAt(1, 1)->priority(ACTIVE_TREE); 1532 TilePriority bottom_right = tiling->TileAt(1, 1)->priority();
1523 EXPECT_GT(top_right.distance_to_visible, top_left.distance_to_visible); 1533 EXPECT_GT(top_right.distance_to_visible, top_left.distance_to_visible);
1524 1534
1525 EXPECT_EQ(bottom_right.distance_to_visible, top_right.distance_to_visible); 1535 EXPECT_EQ(bottom_right.distance_to_visible, top_right.distance_to_visible);
1526 } 1536 }
1527 1537
1528 TEST(ComputeTilePriorityRectsTest, PerspectiveLayer) { 1538 TEST(ComputeTilePriorityRectsTest, PerspectiveLayer) {
1529 // Perspective transforms need to take a different code path. 1539 // Perspective transforms need to take a different code path.
1530 // This test checks tile priorities of a perspective layer. 1540 // This test checks tile priorities of a perspective layer.
1531 FakePictureLayerTilingClient client; 1541 FakePictureLayerTilingClient client;
1532 1542
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1578 current_frame_time_in_seconds, Occlusion()); 1588 current_frame_time_in_seconds, Occlusion());
1579 tiling->UpdateAllTilePrioritiesForTesting(); 1589 tiling->UpdateAllTilePrioritiesForTesting();
1580 1590
1581 ASSERT_TRUE(tiling->TileAt(0, 0)); 1591 ASSERT_TRUE(tiling->TileAt(0, 0));
1582 ASSERT_TRUE(tiling->TileAt(0, 1)); 1592 ASSERT_TRUE(tiling->TileAt(0, 1));
1583 ASSERT_TRUE(tiling->TileAt(1, 0)); 1593 ASSERT_TRUE(tiling->TileAt(1, 0));
1584 ASSERT_TRUE(tiling->TileAt(1, 1)); 1594 ASSERT_TRUE(tiling->TileAt(1, 1));
1585 1595
1586 // All tiles will have a positive distance_to_visible 1596 // All tiles will have a positive distance_to_visible
1587 // and an infinite time_to_visible. 1597 // and an infinite time_to_visible.
1588 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1598 TilePriority priority = tiling->TileAt(0, 0)->priority();
1589 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f); 1599 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f);
1590 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1600 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1591 1601
1592 priority = tiling->TileAt(0, 1)->priority(ACTIVE_TREE); 1602 priority = tiling->TileAt(0, 1)->priority();
1593 EXPECT_GT(priority.distance_to_visible, 0.f); 1603 EXPECT_GT(priority.distance_to_visible, 0.f);
1594 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1604 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1595 1605
1596 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); 1606 priority = tiling->TileAt(1, 0)->priority();
1597 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f); 1607 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f);
1598 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1608 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1599 1609
1600 priority = tiling->TileAt(1, 1)->priority(ACTIVE_TREE); 1610 priority = tiling->TileAt(1, 1)->priority();
1601 EXPECT_GT(priority.distance_to_visible, 0.f); 1611 EXPECT_GT(priority.distance_to_visible, 0.f);
1602 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1612 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1603 1613
1604 // Furthermore, in this scenario the top-left distance_to_visible 1614 // Furthermore, in this scenario the top-left distance_to_visible
1605 // will be smallest, followed by top-right. The bottom layers 1615 // will be smallest, followed by top-right. The bottom layers
1606 // will of course be further than the top layers. 1616 // will of course be further than the top layers.
1607 TilePriority top_left = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1617 TilePriority top_left = tiling->TileAt(0, 0)->priority();
1608 TilePriority top_right = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); 1618 TilePriority top_right = tiling->TileAt(1, 0)->priority();
1609 TilePriority bottom_left = tiling->TileAt(0, 1)->priority(ACTIVE_TREE); 1619 TilePriority bottom_left = tiling->TileAt(0, 1)->priority();
1610 TilePriority bottom_right = tiling->TileAt(1, 1)->priority(ACTIVE_TREE); 1620 TilePriority bottom_right = tiling->TileAt(1, 1)->priority();
1611 1621
1612 EXPECT_GT(bottom_right.distance_to_visible, top_right.distance_to_visible); 1622 EXPECT_GT(bottom_right.distance_to_visible, top_right.distance_to_visible);
1613 1623
1614 EXPECT_GT(bottom_left.distance_to_visible, top_left.distance_to_visible); 1624 EXPECT_GT(bottom_left.distance_to_visible, top_left.distance_to_visible);
1615 } 1625 }
1616 1626
1617 TEST(ComputeTilePriorityRectsTest, PerspectiveLayerClippedByW) { 1627 TEST(ComputeTilePriorityRectsTest, PerspectiveLayerClippedByW) {
1618 // Perspective transforms need to take a different code path. 1628 // Perspective transforms need to take a different code path.
1619 // This test checks tile priorities of a perspective layer. 1629 // This test checks tile priorities of a perspective layer.
1620 FakePictureLayerTilingClient client; 1630 FakePictureLayerTilingClient client;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1672 current_frame_time_in_seconds, Occlusion()); 1682 current_frame_time_in_seconds, Occlusion());
1673 tiling->UpdateAllTilePrioritiesForTesting(); 1683 tiling->UpdateAllTilePrioritiesForTesting();
1674 1684
1675 ASSERT_TRUE(tiling->TileAt(0, 0)); 1685 ASSERT_TRUE(tiling->TileAt(0, 0));
1676 ASSERT_TRUE(tiling->TileAt(0, 1)); 1686 ASSERT_TRUE(tiling->TileAt(0, 1));
1677 ASSERT_TRUE(tiling->TileAt(1, 0)); 1687 ASSERT_TRUE(tiling->TileAt(1, 0));
1678 ASSERT_TRUE(tiling->TileAt(1, 1)); 1688 ASSERT_TRUE(tiling->TileAt(1, 1));
1679 1689
1680 // Left-side tiles will be clipped by the transform, so we have to assume 1690 // Left-side tiles will be clipped by the transform, so we have to assume
1681 // they are visible just in case. 1691 // they are visible just in case.
1682 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1692 TilePriority priority = tiling->TileAt(0, 0)->priority();
1683 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1693 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1684 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin); 1694 EXPECT_FLOAT_EQ(TilePriority::NOW, priority.priority_bin);
1685 1695
1686 priority = tiling->TileAt(0, 1)->priority(ACTIVE_TREE); 1696 priority = tiling->TileAt(0, 1)->priority();
1687 EXPECT_GT(priority.distance_to_visible, 0.f); 1697 EXPECT_GT(priority.distance_to_visible, 0.f);
1688 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1698 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1689 1699
1690 // Right-side tiles will have a positive distance_to_visible 1700 // Right-side tiles will have a positive distance_to_visible
1691 // and an infinite time_to_visible. 1701 // and an infinite time_to_visible.
1692 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); 1702 priority = tiling->TileAt(1, 0)->priority();
1693 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f); 1703 EXPECT_FLOAT_EQ(priority.distance_to_visible, 0.f);
1694 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1704 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1695 1705
1696 priority = tiling->TileAt(1, 1)->priority(ACTIVE_TREE); 1706 priority = tiling->TileAt(1, 1)->priority();
1697 EXPECT_GT(priority.distance_to_visible, 0.f); 1707 EXPECT_GT(priority.distance_to_visible, 0.f);
1698 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1708 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1699 } 1709 }
1700 1710
1701 TEST(ComputeTilePriorityRectsTest, BasicMotion) { 1711 TEST(ComputeTilePriorityRectsTest, BasicMotion) {
1702 // Test that time_to_visible is computed correctly when 1712 // Test that time_to_visible is computed correctly when
1703 // there is some motion. 1713 // there is some motion.
1704 FakePictureLayerTilingClient client; 1714 FakePictureLayerTilingClient client;
1705 1715
1706 gfx::Size device_viewport(800, 600); 1716 gfx::Size device_viewport(800, 600);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1741 tiling->ComputeTilePriorityRects(viewport_in_layer_space, 1751 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1742 current_layer_contents_scale, 1752 current_layer_contents_scale,
1743 current_frame_time_in_seconds, Occlusion()); 1753 current_frame_time_in_seconds, Occlusion());
1744 tiling->UpdateAllTilePrioritiesForTesting(); 1754 tiling->UpdateAllTilePrioritiesForTesting();
1745 1755
1746 ASSERT_TRUE(tiling->TileAt(0, 0)); 1756 ASSERT_TRUE(tiling->TileAt(0, 0));
1747 ASSERT_TRUE(tiling->TileAt(0, 1)); 1757 ASSERT_TRUE(tiling->TileAt(0, 1));
1748 ASSERT_TRUE(tiling->TileAt(1, 0)); 1758 ASSERT_TRUE(tiling->TileAt(1, 0));
1749 ASSERT_TRUE(tiling->TileAt(1, 1)); 1759 ASSERT_TRUE(tiling->TileAt(1, 1));
1750 1760
1751 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1761 TilePriority priority = tiling->TileAt(0, 0)->priority();
1752 EXPECT_GT(priority.distance_to_visible, 0.f); 1762 EXPECT_GT(priority.distance_to_visible, 0.f);
1753 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1763 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1754 1764
1755 priority = tiling->TileAt(0, 1)->priority(ACTIVE_TREE); 1765 priority = tiling->TileAt(0, 1)->priority();
1756 EXPECT_GT(priority.distance_to_visible, 0.f); 1766 EXPECT_GT(priority.distance_to_visible, 0.f);
1757 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1767 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1758 1768
1759 // time_to_visible for the right hand side layers needs an extra 0.099 1769 // time_to_visible for the right hand side layers needs an extra 0.099
1760 // seconds because this tile is 99 pixels further away. 1770 // seconds because this tile is 99 pixels further away.
1761 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); 1771 priority = tiling->TileAt(1, 0)->priority();
1762 EXPECT_GT(priority.distance_to_visible, 0.f); 1772 EXPECT_GT(priority.distance_to_visible, 0.f);
1763 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1773 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1764 1774
1765 priority = tiling->TileAt(1, 1)->priority(ACTIVE_TREE); 1775 priority = tiling->TileAt(1, 1)->priority();
1766 EXPECT_GT(priority.distance_to_visible, 0.f); 1776 EXPECT_GT(priority.distance_to_visible, 0.f);
1767 EXPECT_NE(TilePriority::NOW, priority.priority_bin); 1777 EXPECT_NE(TilePriority::NOW, priority.priority_bin);
1768 } 1778 }
1769 1779
1770 TEST(ComputeTilePriorityRectsTest, RotationMotion) { 1780 TEST(ComputeTilePriorityRectsTest, RotationMotion) {
1771 // Each tile of a layer may be affected differently by a transform; Check 1781 // Each tile of a layer may be affected differently by a transform; Check
1772 // that ComputeTilePriorityRects correctly accounts for the transform between 1782 // that ComputeTilePriorityRects correctly accounts for the transform between
1773 // layer space and screen space. 1783 // layer space and screen space.
1774 1784
1775 FakePictureLayerTilingClient client; 1785 FakePictureLayerTilingClient client;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1819 tiling->ComputeTilePriorityRects(viewport_in_layer_space, 1829 tiling->ComputeTilePriorityRects(viewport_in_layer_space,
1820 current_layer_contents_scale, 1830 current_layer_contents_scale,
1821 current_frame_time_in_seconds, Occlusion()); 1831 current_frame_time_in_seconds, Occlusion());
1822 tiling->UpdateAllTilePrioritiesForTesting(); 1832 tiling->UpdateAllTilePrioritiesForTesting();
1823 1833
1824 ASSERT_TRUE(tiling->TileAt(0, 0)); 1834 ASSERT_TRUE(tiling->TileAt(0, 0));
1825 ASSERT_TRUE(tiling->TileAt(0, 1)); 1835 ASSERT_TRUE(tiling->TileAt(0, 1));
1826 ASSERT_TRUE(tiling->TileAt(1, 0)); 1836 ASSERT_TRUE(tiling->TileAt(1, 0));
1827 ASSERT_TRUE(tiling->TileAt(1, 1)); 1837 ASSERT_TRUE(tiling->TileAt(1, 1));
1828 1838
1829 TilePriority priority = tiling->TileAt(0, 0)->priority(ACTIVE_TREE); 1839 TilePriority priority = tiling->TileAt(0, 0)->priority();
1830 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1840 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1831 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1841 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1832 1842
1833 priority = tiling->TileAt(0, 1)->priority(ACTIVE_TREE); 1843 priority = tiling->TileAt(0, 1)->priority();
1834 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1844 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1835 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1845 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1836 1846
1837 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); 1847 priority = tiling->TileAt(1, 0)->priority();
1838 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); 1848 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible);
1839 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); 1849 EXPECT_EQ(TilePriority::NOW, priority.priority_bin);
1840 } 1850 }
1841 1851
1842 TEST(PictureLayerTilingTest, RecycledTilesCleared) { 1852 TEST(PictureLayerTilingTest, RecycledTilesCleared) {
1843 // This test performs the following: 1853 // This test performs the following:
1844 // Setup: 1854 // Setup:
1845 // - Two tilings, one active one recycled with all tiles shared. 1855 // - Two tilings, one active one recycled with all tiles shared.
1846 // Procedure: 1856 // Procedure:
1847 // - Viewport moves somewhere far away and active tiling clears tiles. 1857 // - Viewport moves somewhere far away and active tiling clears tiles.
(...skipping 30 matching lines...) Expand all
1878 1888
1879 // Create all tiles on the second tiling. All tiles should be shared. 1889 // Create all tiles on the second tiling. All tiles should be shared.
1880 recycle_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f, 1890 recycle_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f,
1881 1.0f, Occlusion()); 1891 1.0f, Occlusion());
1882 1892
1883 // Set the second tiling as recycled. 1893 // Set the second tiling as recycled.
1884 active_client.set_twin_tiling(NULL); 1894 active_client.set_twin_tiling(NULL);
1885 active_client.set_recycled_twin_tiling(recycle_tiling.get()); 1895 active_client.set_recycled_twin_tiling(recycle_tiling.get());
1886 recycle_client.set_twin_tiling(NULL); 1896 recycle_client.set_twin_tiling(NULL);
1887 1897
1888 // Verify that tiles exist and are shared.
1889 EXPECT_TRUE(active_tiling->TileAt(0, 0)); 1898 EXPECT_TRUE(active_tiling->TileAt(0, 0));
1890 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); 1899 EXPECT_FALSE(recycle_tiling->TileAt(0, 0));
1891 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0));
1892 1900
1893 // Move the viewport far away from the (0, 0) tile. 1901 // Move the viewport far away from the (0, 0) tile.
1894 active_tiling->ComputeTilePriorityRects(gfx::Rect(9000, 9000, 100, 100), 1.0f, 1902 active_tiling->ComputeTilePriorityRects(gfx::Rect(9000, 9000, 100, 100), 1.0f,
1895 2.0, Occlusion()); 1903 2.0, Occlusion());
1896 // Ensure the tile was deleted on both tilings. 1904 // Ensure the tile was deleted.
1897 EXPECT_FALSE(active_tiling->TileAt(0, 0)); 1905 EXPECT_FALSE(active_tiling->TileAt(0, 0));
1898 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); 1906 EXPECT_FALSE(recycle_tiling->TileAt(0, 0));
1899 1907
1900 // Move the viewport back to (0, 0) tile. 1908 // Move the viewport back to (0, 0) tile.
1901 active_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f, 3.0, 1909 active_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f, 3.0,
1902 Occlusion()); 1910 Occlusion());
1903 1911
1904 // Ensure that we now have a tile here on both tilings again. 1912 // Ensure that we now have a tile here on both active.
1905 EXPECT_TRUE(active_tiling->TileAt(0, 0)); 1913 EXPECT_TRUE(active_tiling->TileAt(0, 0));
1906 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); 1914 EXPECT_FALSE(recycle_tiling->TileAt(0, 0));
1907 } 1915 }
1908 1916
1909 TEST(PictureLayerTilingTest, RecycledTilesClearedOnReset) { 1917 TEST(PictureLayerTilingTest, RecycledTilesClearedOnReset) {
1910 FakePictureLayerTilingClient active_client; 1918 FakePictureLayerTilingClient active_client;
1911 active_client.SetTileSize(gfx::Size(100, 100)); 1919 active_client.SetTileSize(gfx::Size(100, 100));
1912 active_client.set_tree(ACTIVE_TREE); 1920 active_client.set_tree(ACTIVE_TREE);
1913 1921
1914 scoped_refptr<FakePicturePileImpl> pile = 1922 scoped_refptr<FakePicturePileImpl> pile =
1915 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize( 1923 FakePicturePileImpl::CreateFilledPileWithDefaultTileSize(
1916 gfx::Size(100, 100)); 1924 gfx::Size(100, 100));
(...skipping 19 matching lines...) Expand all
1936 1944
1937 // Create all tiles on the recycle tiling. All tiles should be shared. 1945 // Create all tiles on the recycle tiling. All tiles should be shared.
1938 recycle_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f, 1946 recycle_tiling->ComputeTilePriorityRects(gfx::Rect(0, 0, 100, 100), 1.0f,
1939 1.0f, Occlusion()); 1947 1.0f, Occlusion());
1940 1948
1941 // Set the second tiling as recycled. 1949 // Set the second tiling as recycled.
1942 active_client.set_twin_tiling(NULL); 1950 active_client.set_twin_tiling(NULL);
1943 active_client.set_recycled_twin_tiling(recycle_tiling.get()); 1951 active_client.set_recycled_twin_tiling(recycle_tiling.get());
1944 recycle_client.set_twin_tiling(NULL); 1952 recycle_client.set_twin_tiling(NULL);
1945 1953
1946 // Verify that tiles exist and are shared.
1947 EXPECT_TRUE(active_tiling->TileAt(0, 0)); 1954 EXPECT_TRUE(active_tiling->TileAt(0, 0));
1948 EXPECT_TRUE(recycle_tiling->TileAt(0, 0)); 1955 EXPECT_FALSE(recycle_tiling->TileAt(0, 0));
1949 EXPECT_EQ(active_tiling->TileAt(0, 0), recycle_tiling->TileAt(0, 0));
1950 1956
1951 // Reset the active tiling. The recycle tiles should be released too. 1957 // Reset the active tiling. The recycle tiles should be released too.
1952 active_tiling->Reset(); 1958 active_tiling->Reset();
1953 EXPECT_FALSE(active_tiling->TileAt(0, 0)); 1959 EXPECT_FALSE(active_tiling->TileAt(0, 0));
1954 EXPECT_FALSE(recycle_tiling->TileAt(0, 0)); 1960 EXPECT_FALSE(recycle_tiling->TileAt(0, 0));
1955 } 1961 }
1956 1962
1957 TEST_F(PictureLayerTilingIteratorTest, ResizeTilesAndUpdateToCurrent) { 1963 TEST_F(PictureLayerTilingIteratorTest, ResizeTilesAndUpdateToCurrent) {
1958 // The tiling has four rows and three columns. 1964 // The tiling has four rows and three columns.
1959 Initialize(gfx::Size(150, 100), 1.f, gfx::Size(250, 150)); 1965 Initialize(gfx::Size(150, 100), 1.f, gfx::Size(250, 150));
(...skipping 16 matching lines...) Expand all
1976 tiling_->SetRasterSourceAndResize(pile); 1982 tiling_->SetRasterSourceAndResize(pile);
1977 1983
1978 // Tile size in the tiling should be resized to 250x200. 1984 // Tile size in the tiling should be resized to 250x200.
1979 EXPECT_EQ(250, tiling_->TilingDataForTesting().max_texture_size().width()); 1985 EXPECT_EQ(250, tiling_->TilingDataForTesting().max_texture_size().width());
1980 EXPECT_EQ(200, tiling_->TilingDataForTesting().max_texture_size().height()); 1986 EXPECT_EQ(200, tiling_->TilingDataForTesting().max_texture_size().height());
1981 EXPECT_EQ(0u, tiling_->AllRefTilesForTesting().size()); 1987 EXPECT_EQ(0u, tiling_->AllRefTilesForTesting().size());
1982 } 1988 }
1983 1989
1984 } // namespace 1990 } // namespace
1985 } // namespace cc 1991 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/picture_layer_tiling_set.cc ('k') | cc/resources/raster_tile_priority_queue_all.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698