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

Side by Side Diff: cc/tiles/tile_manager_unittest.cc

Issue 1939963002: cc: Move prepaint region calculations to the tiling set. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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/tiles/picture_layer_tiling_unittest.cc ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('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 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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « cc/tiles/picture_layer_tiling_unittest.cc ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698