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 1018 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1029 scoped_ptr<FakeOutputSurface> output_surface = FakeOutputSurface::Create3d(); | 1029 scoped_ptr<FakeOutputSurface> output_surface = FakeOutputSurface::Create3d(); |
1030 CHECK(output_surface->BindToClient(&output_surface_client)); | 1030 CHECK(output_surface->BindToClient(&output_surface_client)); |
1031 TestSharedBitmapManager shared_bitmap_manager; | 1031 TestSharedBitmapManager shared_bitmap_manager; |
1032 scoped_ptr<ResourceProvider> resource_provider = ResourceProvider::Create( | 1032 scoped_ptr<ResourceProvider> resource_provider = ResourceProvider::Create( |
1033 output_surface.get(), &shared_bitmap_manager, 0, false, 1, false); | 1033 output_surface.get(), &shared_bitmap_manager, 0, false, 1, false); |
1034 | 1034 |
1035 FakePictureLayerTilingClient client(resource_provider.get()); | 1035 FakePictureLayerTilingClient client(resource_provider.get()); |
1036 scoped_ptr<TestablePictureLayerTiling> tiling; | 1036 scoped_ptr<TestablePictureLayerTiling> tiling; |
1037 | 1037 |
1038 gfx::Rect viewport(50, 50, 100, 100); | 1038 gfx::Rect viewport(50, 50, 100, 100); |
1039 gfx::Size layer_bounds(200, 200); | 1039 gfx::Size layer_bounds(2000, 2000); |
1040 | 1040 |
1041 client.SetTileSize(gfx::Size(30, 30)); | 1041 client.SetTileSize(gfx::Size(30, 30)); |
1042 | 1042 |
1043 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); | 1043 tiling = TestablePictureLayerTiling::Create(1.0f, layer_bounds, &client); |
1044 tiling->UpdateTilePriorities( | 1044 tiling->UpdateTilePriorities( |
1045 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); | 1045 ACTIVE_TREE, viewport, 1.0f, 1.0, NULL, NULL, gfx::Transform()); |
1046 | 1046 |
1047 PictureLayerTiling::TilingRasterTileIterator empty_iterator; | 1047 PictureLayerTiling::TilingRasterTileIterator empty_iterator; |
1048 EXPECT_FALSE(empty_iterator); | 1048 EXPECT_FALSE(empty_iterator); |
1049 | 1049 |
1050 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); | 1050 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); |
1051 | 1051 |
1052 PictureLayerTiling::TilingEvictionTileIterator it(tiling.get(), | 1052 PictureLayerTiling::TilingEvictionTileIterator it( |
1053 SMOOTHNESS_TAKES_PRIORITY); | 1053 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, TilePriority::NOW, false); |
1054 | 1054 |
1055 // Tiles don't have resources to evict. | 1055 // Tiles don't have resources to evict. |
1056 EXPECT_FALSE(it); | 1056 EXPECT_FALSE(it); |
1057 | 1057 |
1058 // Sanity check. | 1058 // Sanity check. |
1059 EXPECT_EQ(64u, all_tiles.size()); | 1059 EXPECT_EQ(5184u, all_tiles.size()); |
1060 | 1060 |
1061 client.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); | 1061 client.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); |
1062 | 1062 |
1063 std::set<Tile*> all_tiles_set(all_tiles.begin(), all_tiles.end()); | 1063 std::set<Tile*> all_tiles_set(all_tiles.begin(), all_tiles.end()); |
1064 | 1064 |
| 1065 std::set<Tile*> eviction_tiles; |
| 1066 |
1065 it = PictureLayerTiling::TilingEvictionTileIterator( | 1067 it = PictureLayerTiling::TilingEvictionTileIterator( |
1066 tiling.get(), SMOOTHNESS_TAKES_PRIORITY); | 1068 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, TilePriority::EVENTUALLY, false); |
1067 EXPECT_TRUE(it); | 1069 EXPECT_TRUE(it); |
1068 | |
1069 std::set<Tile*> eviction_tiles; | |
1070 Tile* last_tile = *it; | 1070 Tile* last_tile = *it; |
1071 for (; it; ++it) { | 1071 for (; it; ++it) { |
1072 Tile* tile = *it; | 1072 Tile* tile = *it; |
1073 EXPECT_TRUE(tile); | 1073 EXPECT_TRUE(tile); |
1074 EXPECT_LE(tile->priority(ACTIVE_TREE).priority_bin, | 1074 EXPECT_EQ(TilePriority::EVENTUALLY, |
1075 last_tile->priority(ACTIVE_TREE).priority_bin); | 1075 tile->priority(ACTIVE_TREE).priority_bin); |
1076 if (tile->priority(ACTIVE_TREE).priority_bin == | 1076 EXPECT_FALSE(tile->required_for_activation()); |
1077 last_tile->priority(ACTIVE_TREE).priority_bin) { | |
1078 EXPECT_LE(tile->priority(ACTIVE_TREE).distance_to_visible, | |
1079 last_tile->priority(ACTIVE_TREE).distance_to_visible); | |
1080 } | |
1081 last_tile = tile; | 1077 last_tile = tile; |
1082 eviction_tiles.insert(tile); | 1078 eviction_tiles.insert(tile); |
1083 } | 1079 } |
1084 | 1080 |
| 1081 it = PictureLayerTiling::TilingEvictionTileIterator( |
| 1082 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, TilePriority::SOON, false); |
| 1083 EXPECT_TRUE(it); |
| 1084 for (; it; ++it) { |
| 1085 Tile* tile = *it; |
| 1086 EXPECT_TRUE(tile); |
| 1087 EXPECT_EQ(TilePriority::SOON, tile->priority(ACTIVE_TREE).priority_bin); |
| 1088 EXPECT_FALSE(tile->required_for_activation()); |
| 1089 last_tile = tile; |
| 1090 eviction_tiles.insert(tile); |
| 1091 } |
| 1092 |
| 1093 it = PictureLayerTiling::TilingEvictionTileIterator( |
| 1094 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, TilePriority::NOW, false); |
| 1095 EXPECT_TRUE(it); |
| 1096 for (; it; ++it) { |
| 1097 Tile* tile = *it; |
| 1098 EXPECT_TRUE(tile); |
| 1099 EXPECT_EQ(TilePriority::NOW, tile->priority(ACTIVE_TREE).priority_bin); |
| 1100 EXPECT_FALSE(tile->required_for_activation()); |
| 1101 last_tile = tile; |
| 1102 eviction_tiles.insert(tile); |
| 1103 } |
| 1104 |
| 1105 it = PictureLayerTiling::TilingEvictionTileIterator( |
| 1106 tiling.get(), SMOOTHNESS_TAKES_PRIORITY, TilePriority::NOW, true); |
| 1107 EXPECT_FALSE(it); |
| 1108 |
1085 EXPECT_GT(all_tiles_set.size(), 0u); | 1109 EXPECT_GT(all_tiles_set.size(), 0u); |
1086 EXPECT_EQ(all_tiles_set, eviction_tiles); | 1110 EXPECT_EQ(all_tiles_set, eviction_tiles); |
1087 } | 1111 } |
1088 | 1112 |
1089 TEST_F(PictureLayerTilingIteratorTest, TilesExist) { | 1113 TEST_F(PictureLayerTilingIteratorTest, TilesExist) { |
1090 gfx::Size layer_bounds(1099, 801); | 1114 gfx::Size layer_bounds(1099, 801); |
1091 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); | 1115 Initialize(gfx::Size(100, 100), 1.f, layer_bounds); |
1092 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); | 1116 VerifyTilesExactlyCoverRect(1.f, gfx::Rect(layer_bounds)); |
1093 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); | 1117 VerifyTiles(1.f, gfx::Rect(layer_bounds), base::Bind(&TileExists, false)); |
1094 | 1118 |
(...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1840 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1864 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
1841 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); | 1865 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); |
1842 | 1866 |
1843 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); | 1867 priority = tiling->TileAt(1, 0)->priority(ACTIVE_TREE); |
1844 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); | 1868 EXPECT_FLOAT_EQ(0.f, priority.distance_to_visible); |
1845 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); | 1869 EXPECT_EQ(TilePriority::NOW, priority.priority_bin); |
1846 } | 1870 } |
1847 | 1871 |
1848 } // namespace | 1872 } // namespace |
1849 } // namespace cc | 1873 } // namespace cc |
OLD | NEW |