OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/resources/picture_layer_tiling.h" | 5 #include "cc/resources/picture_layer_tiling.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "cc/base/math_util.h" | 10 #include "cc/base/math_util.h" |
(...skipping 1024 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1035 scoped_ptr<FakeOutputSurface> output_surface = FakeOutputSurface::Create3d(); | 1035 scoped_ptr<FakeOutputSurface> output_surface = FakeOutputSurface::Create3d(); |
1036 CHECK(output_surface->BindToClient(&output_surface_client)); | 1036 CHECK(output_surface->BindToClient(&output_surface_client)); |
1037 TestSharedBitmapManager shared_bitmap_manager; | 1037 TestSharedBitmapManager shared_bitmap_manager; |
1038 scoped_ptr<ResourceProvider> resource_provider = ResourceProvider::Create( | 1038 scoped_ptr<ResourceProvider> resource_provider = ResourceProvider::Create( |
1039 output_surface.get(), &shared_bitmap_manager, 0, false, 1, false); | 1039 output_surface.get(), &shared_bitmap_manager, 0, false, 1, false); |
1040 | 1040 |
1041 FakePictureLayerTilingClient client(resource_provider.get()); | 1041 FakePictureLayerTilingClient client(resource_provider.get()); |
1042 scoped_ptr<TestablePictureLayerTiling> tiling; | 1042 scoped_ptr<TestablePictureLayerTiling> tiling; |
1043 | 1043 |
1044 gfx::Rect viewport(50, 50, 100, 100); | 1044 gfx::Rect viewport(50, 50, 100, 100); |
1045 gfx::Size layer_bounds(200, 200); | 1045 gfx::Size layer_bounds(2000, 2000); |
1046 | 1046 |
1047 client.SetTileSize(gfx::Size(30, 30)); | 1047 client.SetTileSize(gfx::Size(30, 30)); |
1048 client.set_tree(ACTIVE_TREE); | 1048 client.set_tree(ACTIVE_TREE); |
1049 | 1049 |
1050 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 1050 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
1051 tiling->UpdateTilePriorities( | 1051 tiling->UpdateTilePriorities( |
1052 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); | 1052 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); |
1053 | 1053 |
1054 PictureLayerTiling::TilingRasterTileIterator empty_iterator; | 1054 PictureLayerTiling::TilingRasterTileIterator empty_iterator; |
1055 EXPECT_FALSE(empty_iterator); | 1055 EXPECT_FALSE(empty_iterator); |
1056 | 1056 |
1057 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); | 1057 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); |
1058 | 1058 |
1059 PictureLayerTiling::TilingEvictionTileIterator it(tiling.get(), | 1059 PictureLayerTiling::TilingEvictionTileIterator it( |
1060 SMOOTHNESS_TAKES_PRIORITY); | 1060 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, TilePriority::NOW, false); |
1061 | 1061 |
1062 // Tiles don't have resources to evict. | 1062 // Tiles don't have resources to evict. |
1063 EXPECT_FALSE(it); | 1063 EXPECT_FALSE(it); |
1064 | 1064 |
1065 // Sanity check. | 1065 // Sanity check. |
1066 EXPECT_EQ(64u, all_tiles.size()); | 1066 EXPECT_EQ(5184u, all_tiles.size()); |
1067 | 1067 |
1068 client.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); | 1068 client.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); |
1069 | 1069 |
1070 std::set<Tile*> all_tiles_set(all_tiles.begin(), all_tiles.end()); | 1070 std::set<Tile*> all_tiles_set(all_tiles.begin(), all_tiles.end()); |
1071 | 1071 |
| 1072 std::set<Tile*> eviction_tiles; |
| 1073 |
1072 it = PictureLayerTiling::TilingEvictionTileIterator( | 1074 it = PictureLayerTiling::TilingEvictionTileIterator( |
1073 tiling.get(), SMOOTHNESS_TAKES_PRIORITY); | 1075 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, TilePriority::EVENTUALLY, false); |
1074 EXPECT_TRUE(it); | 1076 EXPECT_TRUE(it); |
1075 | |
1076 std::set<Tile*> eviction_tiles; | |
1077 Tile* last_tile = *it; | |
1078 for (; it; ++it) { | 1077 for (; it; ++it) { |
1079 Tile* tile = *it; | 1078 Tile* tile = *it; |
1080 EXPECT_TRUE(tile); | 1079 EXPECT_TRUE(tile); |
1081 EXPECT_LE(tile->priority(ACTIVE_TREE).priority_bin, | 1080 EXPECT_EQ(TilePriority::EVENTUALLY, |
1082 last_tile->priority(ACTIVE_TREE).priority_bin); | 1081 tile->priority(ACTIVE_TREE).priority_bin); |
1083 if (tile->priority(ACTIVE_TREE).priority_bin == | 1082 EXPECT_FALSE(tile->required_for_activation()); |
1084 last_tile->priority(ACTIVE_TREE).priority_bin) { | |
1085 EXPECT_LE(tile->priority(ACTIVE_TREE).distance_to_visible, | |
1086 last_tile->priority(ACTIVE_TREE).distance_to_visible); | |
1087 } | |
1088 last_tile = tile; | |
1089 eviction_tiles.insert(tile); | 1083 eviction_tiles.insert(tile); |
1090 } | 1084 } |
1091 | 1085 |
| 1086 it = PictureLayerTiling::TilingEvictionTileIterator( |
| 1087 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, TilePriority::SOON, false); |
| 1088 EXPECT_TRUE(it); |
| 1089 for (; it; ++it) { |
| 1090 Tile* tile = *it; |
| 1091 EXPECT_TRUE(tile); |
| 1092 EXPECT_EQ(TilePriority::SOON, tile->priority(ACTIVE_TREE).priority_bin); |
| 1093 EXPECT_FALSE(tile->required_for_activation()); |
| 1094 eviction_tiles.insert(tile); |
| 1095 } |
| 1096 |
| 1097 it = PictureLayerTiling::TilingEvictionTileIterator( |
| 1098 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, TilePriority::NOW, false); |
| 1099 EXPECT_TRUE(it); |
| 1100 for (; it; ++it) { |
| 1101 Tile* tile = *it; |
| 1102 EXPECT_TRUE(tile); |
| 1103 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); |
| 1104 EXPECT_FALSE(tile->required_for_activation()); |
| 1105 eviction_tiles.insert(tile); |
| 1106 } |
| 1107 |
| 1108 it = PictureLayerTiling::TilingEvictionTileIterator( |
| 1109 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, TilePriority::NOW, true); |
| 1110 EXPECT_FALSE(it); |
| 1111 |
1092 EXPECT_GT(all_tiles_set.size(), 0u); | 1112 EXPECT_GT(all_tiles_set.size(), 0u); |
1093 EXPECT_EQ(all_tiles_set, eviction_tiles); | 1113 EXPECT_EQ(all_tiles_set, eviction_tiles); |
1094 } | 1114 } |
1095 | 1115 |
1096 TEST_F(PictureLayerTilingIteratorTest, TilesExist) { | 1116 TEST_F(PictureLayerTilingIteratorTest, TilesExist) { |
1097 gfx::Size layer_bounds(1099, 801); | 1117 gfx::Size layer_bounds(1099, 801); |
1098 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1118 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
1099 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1119 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
1100 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1120 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1101 | 1121 |
(...skipping 759 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1861 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1881 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
1862 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); | 1882 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); |
1863 | 1883 |
1864 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); | 1884 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); |
1865 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1885 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
1866 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); | 1886 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); |
1867 } | 1887 } |
1868 | 1888 |
1869 } // namespace | 1889 } // namespace |
1870 } // namespace cc | 1890 } // namespace cc |
OLD | NEW |