OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 | 7 |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
10 #include "base/thread_task_runner_handle.h" | 10 #include "base/thread_task_runner_handle.h" |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 EXPECT_EQ(all_tiles, required_for_draw_tiles); | 243 EXPECT_EQ(all_tiles, required_for_draw_tiles); |
244 | 244 |
245 Region invalidation(gfx::Rect(0, 0, 500, 500)); | 245 Region invalidation(gfx::Rect(0, 0, 500, 500)); |
246 | 246 |
247 // Invalidate the pending tree. | 247 // Invalidate the pending tree. |
248 pending_layer_->set_invalidation(invalidation); | 248 pending_layer_->set_invalidation(invalidation); |
249 pending_layer_->HighResTiling()->Invalidate(invalidation); | 249 pending_layer_->HighResTiling()->Invalidate(invalidation); |
250 | 250 |
251 // Renew all of the tile priorities. | 251 // Renew all of the tile priorities. |
252 gfx::Rect viewport(50, 50, 100, 100); | 252 gfx::Rect viewport(50, 50, 100, 100); |
253 pending_layer_->HighResTiling()->ComputeTilePriorityRects(viewport, 1.0f, 1.0, | 253 pending_layer_->picture_layer_tiling_set()->UpdateTilePriorities( |
254 Occlusion()); | 254 viewport, 1.0f, 1.0, Occlusion(), true); |
255 active_layer_->HighResTiling()->ComputeTilePriorityRects(viewport, 1.0f, 1.0, | 255 active_layer_->picture_layer_tiling_set()->UpdateTilePriorities( |
256 Occlusion()); | 256 viewport, 1.0f, 1.0, Occlusion(), true); |
257 active_layer_->LowResTiling()->ComputeTilePriorityRects(viewport, 1.0f, 1.0, | |
258 Occlusion()); | |
259 | 257 |
260 // Populate all tiles directly from the tilings. | 258 // Populate all tiles directly from the tilings. |
261 all_tiles.clear(); | 259 all_tiles.clear(); |
262 std::set<Tile*> high_res_tiles; | 260 std::set<Tile*> high_res_tiles; |
263 std::vector<Tile*> pending_high_res_tiles = | 261 std::vector<Tile*> pending_high_res_tiles = |
264 pending_layer_->HighResTiling()->AllTilesForTesting(); | 262 pending_layer_->HighResTiling()->AllTilesForTesting(); |
265 for (size_t i = 0; i < pending_high_res_tiles.size(); ++i) { | 263 for (size_t i = 0; i < pending_high_res_tiles.size(); ++i) { |
266 all_tiles.insert(pending_high_res_tiles[i]); | 264 all_tiles.insert(pending_high_res_tiles[i]); |
267 high_res_tiles.insert(pending_high_res_tiles[i]); | 265 high_res_tiles.insert(pending_high_res_tiles[i]); |
268 } | 266 } |
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
775 Region invalidation(gfx::Rect(0, 0, 500, 500)); | 773 Region invalidation(gfx::Rect(0, 0, 500, 500)); |
776 | 774 |
777 // Invalidate the pending tree. | 775 // Invalidate the pending tree. |
778 pending_layer_->set_invalidation(invalidation); | 776 pending_layer_->set_invalidation(invalidation); |
779 pending_layer_->HighResTiling()->Invalidate(invalidation); | 777 pending_layer_->HighResTiling()->Invalidate(invalidation); |
780 pending_layer_->HighResTiling()->CreateMissingTilesInLiveTilesRect(); | 778 pending_layer_->HighResTiling()->CreateMissingTilesInLiveTilesRect(); |
781 EXPECT_FALSE(pending_layer_->LowResTiling()); | 779 EXPECT_FALSE(pending_layer_->LowResTiling()); |
782 | 780 |
783 // Renew all of the tile priorities. | 781 // Renew all of the tile priorities. |
784 gfx::Rect viewport(50, 50, 100, 100); | 782 gfx::Rect viewport(50, 50, 100, 100); |
785 pending_layer_->HighResTiling()->ComputeTilePriorityRects(viewport, 1.0f, 1.0, | 783 pending_layer_->picture_layer_tiling_set()->UpdateTilePriorities( |
786 Occlusion()); | 784 viewport, 1.0f, 1.0, Occlusion(), true); |
787 active_layer_->HighResTiling()->ComputeTilePriorityRects(viewport, 1.0f, 1.0, | 785 active_layer_->picture_layer_tiling_set()->UpdateTilePriorities( |
788 Occlusion()); | 786 viewport, 1.0f, 1.0, Occlusion(), true); |
789 active_layer_->LowResTiling()->ComputeTilePriorityRects(viewport, 1.0f, 1.0, | |
790 Occlusion()); | |
791 | 787 |
792 // Populate all tiles directly from the tilings. | 788 // Populate all tiles directly from the tilings. |
793 all_tiles.clear(); | 789 all_tiles.clear(); |
794 std::vector<Tile*> pending_high_res_tiles = | 790 std::vector<Tile*> pending_high_res_tiles = |
795 pending_layer_->HighResTiling()->AllTilesForTesting(); | 791 pending_layer_->HighResTiling()->AllTilesForTesting(); |
796 for (size_t i = 0; i < pending_high_res_tiles.size(); ++i) | 792 for (size_t i = 0; i < pending_high_res_tiles.size(); ++i) |
797 all_tiles.insert(pending_high_res_tiles[i]); | 793 all_tiles.insert(pending_high_res_tiles[i]); |
798 | 794 |
799 std::vector<Tile*> active_high_res_tiles = | 795 std::vector<Tile*> active_high_res_tiles = |
800 active_layer_->HighResTiling()->AllTilesForTesting(); | 796 active_layer_->HighResTiling()->AllTilesForTesting(); |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
937 ++tile_count; | 933 ++tile_count; |
938 EXPECT_TRUE(raster_queue->Top().tile()); | 934 EXPECT_TRUE(raster_queue->Top().tile()); |
939 all_tiles.insert(raster_queue->Top().tile()); | 935 all_tiles.insert(raster_queue->Top().tile()); |
940 raster_queue->Pop(); | 936 raster_queue->Pop(); |
941 } | 937 } |
942 EXPECT_EQ(tile_count, all_tiles.size()); | 938 EXPECT_EQ(tile_count, all_tiles.size()); |
943 EXPECT_EQ(32u, tile_count); | 939 EXPECT_EQ(32u, tile_count); |
944 | 940 |
945 // Renew all of the tile priorities. | 941 // Renew all of the tile priorities. |
946 gfx::Rect viewport(layer_bounds); | 942 gfx::Rect viewport(layer_bounds); |
947 pending_layer_->HighResTiling()->ComputeTilePriorityRects(viewport, 1.0f, 1.0, | 943 pending_layer_->picture_layer_tiling_set()->UpdateTilePriorities( |
948 Occlusion()); | 944 viewport, 1.0f, 1.0, Occlusion(), true); |
949 pending_child_layer->HighResTiling()->ComputeTilePriorityRects( | 945 pending_child_layer->picture_layer_tiling_set()->UpdateTilePriorities( |
950 viewport, 1.0f, 1.0, Occlusion()); | 946 viewport, 1.0f, 1.0, Occlusion(), true); |
951 | 947 |
952 active_layer_->HighResTiling()->ComputeTilePriorityRects(viewport, 1.0f, 1.0, | 948 active_layer_->picture_layer_tiling_set()->UpdateTilePriorities( |
953 Occlusion()); | 949 viewport, 1.0f, 1.0, Occlusion(), true); |
954 active_layer_->LowResTiling()->ComputeTilePriorityRects(viewport, 1.0f, 1.0, | 950 active_child_layer->picture_layer_tiling_set()->UpdateTilePriorities( |
955 Occlusion()); | 951 viewport, 1.0f, 1.0, Occlusion(), true); |
956 active_child_layer->HighResTiling()->ComputeTilePriorityRects( | |
957 viewport, 1.0f, 1.0, Occlusion()); | |
958 active_child_layer->LowResTiling()->ComputeTilePriorityRects( | |
959 viewport, 1.0f, 1.0, Occlusion()); | |
960 | 952 |
961 // Populate all tiles directly from the tilings. | 953 // Populate all tiles directly from the tilings. |
962 all_tiles.clear(); | 954 all_tiles.clear(); |
963 std::vector<Tile*> pending_high_res_tiles = | 955 std::vector<Tile*> pending_high_res_tiles = |
964 pending_layer_->HighResTiling()->AllTilesForTesting(); | 956 pending_layer_->HighResTiling()->AllTilesForTesting(); |
965 all_tiles.insert(pending_high_res_tiles.begin(), | 957 all_tiles.insert(pending_high_res_tiles.begin(), |
966 pending_high_res_tiles.end()); | 958 pending_high_res_tiles.end()); |
967 | 959 |
968 // Set all tiles on the pending_child_layer as occluded on the pending tree. | 960 // Set all tiles on the pending_child_layer as occluded on the pending tree. |
969 std::vector<Tile*> pending_child_high_res_tiles = | 961 std::vector<Tile*> pending_child_high_res_tiles = |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1041 host_impl_.pending_tree()->BuildPropertyTreesForTesting(); | 1033 host_impl_.pending_tree()->BuildPropertyTreesForTesting(); |
1042 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); | 1034 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); |
1043 | 1035 |
1044 pending_child_layer->OnOpacityAnimated(0.0); | 1036 pending_child_layer->OnOpacityAnimated(0.0); |
1045 | 1037 |
1046 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 1038 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
1047 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); | 1039 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); |
1048 | 1040 |
1049 // Renew all of the tile priorities. | 1041 // Renew all of the tile priorities. |
1050 gfx::Rect viewport(layer_bounds); | 1042 gfx::Rect viewport(layer_bounds); |
1051 pending_layer_->HighResTiling()->ComputeTilePriorityRects(viewport, 1.0f, 1.0, | 1043 pending_layer_->picture_layer_tiling_set()->UpdateTilePriorities( |
1052 Occlusion()); | 1044 viewport, 1.0f, 1.0, Occlusion(), true); |
1053 pending_child_layer->HighResTiling()->ComputeTilePriorityRects( | 1045 pending_child_layer->picture_layer_tiling_set()->UpdateTilePriorities( |
1054 viewport, 1.0f, 1.0, Occlusion()); | 1046 viewport, 1.0f, 1.0, Occlusion(), true); |
1055 | 1047 |
1056 // Populate all tiles directly from the tilings. | 1048 // Populate all tiles directly from the tilings. |
1057 std::set<Tile*> all_pending_tiles; | 1049 std::set<Tile*> all_pending_tiles; |
1058 std::vector<Tile*> pending_high_res_tiles = | 1050 std::vector<Tile*> pending_high_res_tiles = |
1059 pending_layer_->HighResTiling()->AllTilesForTesting(); | 1051 pending_layer_->HighResTiling()->AllTilesForTesting(); |
1060 all_pending_tiles.insert(pending_high_res_tiles.begin(), | 1052 all_pending_tiles.insert(pending_high_res_tiles.begin(), |
1061 pending_high_res_tiles.end()); | 1053 pending_high_res_tiles.end()); |
1062 EXPECT_EQ(16u, pending_high_res_tiles.size()); | 1054 EXPECT_EQ(16u, pending_high_res_tiles.size()); |
1063 | 1055 |
1064 std::set<Tile*> all_pending_child_tiles; | 1056 std::set<Tile*> all_pending_child_tiles; |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1197 EXPECT_EQ(16u, tile_count); | 1189 EXPECT_EQ(16u, tile_count); |
1198 } | 1190 } |
1199 | 1191 |
1200 TEST_F(TileManagerTilePriorityQueueTest, | 1192 TEST_F(TileManagerTilePriorityQueueTest, |
1201 RasterTilePriorityQueueStaticViewport) { | 1193 RasterTilePriorityQueueStaticViewport) { |
1202 FakePictureLayerTilingClient client; | 1194 FakePictureLayerTilingClient client; |
1203 | 1195 |
1204 gfx::Rect viewport(50, 50, 500, 500); | 1196 gfx::Rect viewport(50, 50, 500, 500); |
1205 gfx::Size layer_bounds(1600, 1600); | 1197 gfx::Size layer_bounds(1600, 1600); |
1206 | 1198 |
1207 float inset = PictureLayerTiling::CalculateSoonBorderDistance(viewport, 1.0f); | 1199 const int soon_border_outset = 312; |
1208 gfx::Rect soon_rect = viewport; | 1200 gfx::Rect soon_rect = viewport; |
1209 soon_rect.Inset(-inset, -inset); | 1201 soon_rect.Inset(-soon_border_outset, -soon_border_outset); |
1210 | 1202 |
1211 client.SetTileSize(gfx::Size(30, 30)); | 1203 client.SetTileSize(gfx::Size(30, 30)); |
1212 LayerTreeSettings settings; | 1204 LayerTreeSettings settings; |
1213 | 1205 |
1214 std::unique_ptr<PictureLayerTilingSet> tiling_set = | 1206 std::unique_ptr<PictureLayerTilingSet> tiling_set = |
1215 PictureLayerTilingSet::Create( | 1207 PictureLayerTilingSet::Create( |
1216 ACTIVE_TREE, &client, settings.tiling_interest_area_padding, | 1208 ACTIVE_TREE, &client, settings.tiling_interest_area_padding, |
1217 settings.skewport_target_time_in_seconds, | 1209 settings.skewport_target_time_in_seconds, |
1218 settings.skewport_extrapolation_limit_in_content_pixels); | 1210 settings.skewport_extrapolation_limit_in_screen_pixels); |
1219 | 1211 |
1220 scoped_refptr<FakeRasterSource> raster_source = | 1212 scoped_refptr<FakeRasterSource> raster_source = |
1221 FakeRasterSource::CreateFilled(layer_bounds); | 1213 FakeRasterSource::CreateFilled(layer_bounds); |
1222 PictureLayerTiling* tiling = tiling_set->AddTiling(1.0f, raster_source); | 1214 PictureLayerTiling* tiling = tiling_set->AddTiling(1.0f, raster_source); |
1223 tiling->set_resolution(HIGH_RESOLUTION); | 1215 tiling->set_resolution(HIGH_RESOLUTION); |
1224 | 1216 |
1225 tiling_set->UpdateTilePriorities(viewport, 1.0f, 1.0, Occlusion(), true); | 1217 tiling_set->UpdateTilePriorities(viewport, 1.0f, 1.0, Occlusion(), true); |
1226 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); | 1218 std::vector<Tile*> all_tiles = tiling->AllTilesForTesting(); |
1227 // Sanity check. | 1219 // Sanity check. |
1228 EXPECT_EQ(3364u, all_tiles.size()); | 1220 EXPECT_EQ(3364u, all_tiles.size()); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1318 gfx::Rect moved_viewport(50, 0, 100, 500); | 1310 gfx::Rect moved_viewport(50, 0, 100, 500); |
1319 gfx::Size layer_bounds(1000, 1000); | 1311 gfx::Size layer_bounds(1000, 1000); |
1320 | 1312 |
1321 client.SetTileSize(gfx::Size(30, 30)); | 1313 client.SetTileSize(gfx::Size(30, 30)); |
1322 LayerTreeSettings settings; | 1314 LayerTreeSettings settings; |
1323 | 1315 |
1324 std::unique_ptr<PictureLayerTilingSet> tiling_set = | 1316 std::unique_ptr<PictureLayerTilingSet> tiling_set = |
1325 PictureLayerTilingSet::Create( | 1317 PictureLayerTilingSet::Create( |
1326 ACTIVE_TREE, &client, settings.tiling_interest_area_padding, | 1318 ACTIVE_TREE, &client, settings.tiling_interest_area_padding, |
1327 settings.skewport_target_time_in_seconds, | 1319 settings.skewport_target_time_in_seconds, |
1328 settings.skewport_extrapolation_limit_in_content_pixels); | 1320 settings.skewport_extrapolation_limit_in_screen_pixels); |
1329 | 1321 |
1330 scoped_refptr<FakeRasterSource> raster_source = | 1322 scoped_refptr<FakeRasterSource> raster_source = |
1331 FakeRasterSource::CreateFilled(layer_bounds); | 1323 FakeRasterSource::CreateFilled(layer_bounds); |
1332 PictureLayerTiling* tiling = tiling_set->AddTiling(1.0f, raster_source); | 1324 PictureLayerTiling* tiling = tiling_set->AddTiling(1.0f, raster_source); |
1333 tiling->set_resolution(HIGH_RESOLUTION); | 1325 tiling->set_resolution(HIGH_RESOLUTION); |
1334 | 1326 |
1335 tiling_set->UpdateTilePriorities(viewport, 1.0f, 1.0, Occlusion(), true); | 1327 tiling_set->UpdateTilePriorities(viewport, 1.0f, 1.0, Occlusion(), true); |
1336 tiling_set->UpdateTilePriorities(moved_viewport, 1.0f, 2.0, Occlusion(), | 1328 tiling_set->UpdateTilePriorities(moved_viewport, 1.0f, 2.0, Occlusion(), |
1337 true); | 1329 true); |
1338 | 1330 |
1339 float inset = | 1331 const int soon_border_outset = 312; |
1340 PictureLayerTiling::CalculateSoonBorderDistance(moved_viewport, 1.0f); | |
1341 gfx::Rect soon_rect = moved_viewport; | 1332 gfx::Rect soon_rect = moved_viewport; |
1342 soon_rect.Inset(-inset, -inset); | 1333 soon_rect.Inset(-soon_border_outset, -soon_border_outset); |
1343 | 1334 |
1344 // There are 3 bins in TilePriority. | 1335 // There are 3 bins in TilePriority. |
1345 bool have_tiles[3] = {}; | 1336 bool have_tiles[3] = {}; |
1346 PrioritizedTile last_tile; | 1337 PrioritizedTile last_tile; |
1347 int eventually_bin_order_correct_count = 0; | 1338 int eventually_bin_order_correct_count = 0; |
1348 int eventually_bin_order_incorrect_count = 0; | 1339 int eventually_bin_order_incorrect_count = 0; |
1349 std::unique_ptr<TilingSetRasterQueueAll> queue( | 1340 std::unique_ptr<TilingSetRasterQueueAll> queue( |
1350 new TilingSetRasterQueueAll(tiling_set.get(), false)); | 1341 new TilingSetRasterQueueAll(tiling_set.get(), false)); |
1351 for (; !queue->IsEmpty(); queue->Pop()) { | 1342 for (; !queue->IsEmpty(); queue->Pop()) { |
1352 if (!last_tile.tile()) | 1343 if (!last_tile.tile()) |
(...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2098 | 2089 |
2099 // Ensures that the tile manager does not attempt to reuse tiles when partial | 2090 // Ensures that the tile manager does not attempt to reuse tiles when partial |
2100 // raster is disabled. | 2091 // raster is disabled. |
2101 TEST_F(TileManagerTest, PartialRasterSuccessfullyDisabled) { | 2092 TEST_F(TileManagerTest, PartialRasterSuccessfullyDisabled) { |
2102 RunPartialRasterCheck(std::move(host_impl_), | 2093 RunPartialRasterCheck(std::move(host_impl_), |
2103 false /* partial_raster_enabled */); | 2094 false /* partial_raster_enabled */); |
2104 } | 2095 } |
2105 | 2096 |
2106 } // namespace | 2097 } // namespace |
2107 } // namespace cc | 2098 } // namespace cc |
OLD | NEW |