| 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 |