| 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 "base/lazy_instance.h" |
| 5 #include "base/location.h" | 6 #include "base/location.h" |
| 6 #include "base/thread_task_runner_handle.h" | 7 #include "base/thread_task_runner_handle.h" |
| 7 #include "base/time/time.h" | 8 #include "base/time/time.h" |
| 8 #include "cc/debug/lap_timer.h" | 9 #include "cc/debug/lap_timer.h" |
| 9 #include "cc/raster/raster_buffer.h" | 10 #include "cc/raster/raster_buffer.h" |
| 10 #include "cc/test/begin_frame_args_test.h" | 11 #include "cc/test/begin_frame_args_test.h" |
| 12 #include "cc/test/fake_display_list_raster_source.h" |
| 11 #include "cc/test/fake_impl_proxy.h" | 13 #include "cc/test/fake_impl_proxy.h" |
| 12 #include "cc/test/fake_layer_tree_host_impl.h" | 14 #include "cc/test/fake_layer_tree_host_impl.h" |
| 13 #include "cc/test/fake_output_surface.h" | 15 #include "cc/test/fake_output_surface.h" |
| 14 #include "cc/test/fake_output_surface_client.h" | 16 #include "cc/test/fake_output_surface_client.h" |
| 15 #include "cc/test/fake_picture_layer_impl.h" | 17 #include "cc/test/fake_picture_layer_impl.h" |
| 16 #include "cc/test/fake_picture_pile_impl.h" | |
| 17 #include "cc/test/fake_tile_manager.h" | 18 #include "cc/test/fake_tile_manager.h" |
| 18 #include "cc/test/fake_tile_manager_client.h" | 19 #include "cc/test/fake_tile_manager_client.h" |
| 19 #include "cc/test/test_shared_bitmap_manager.h" | 20 #include "cc/test/test_shared_bitmap_manager.h" |
| 20 #include "cc/test/test_task_graph_runner.h" | 21 #include "cc/test/test_task_graph_runner.h" |
| 21 #include "cc/test/test_tile_priorities.h" | 22 #include "cc/test/test_tile_priorities.h" |
| 22 #include "cc/tiles/tile.h" | 23 #include "cc/tiles/tile.h" |
| 23 #include "cc/tiles/tile_priority.h" | 24 #include "cc/tiles/tile_priority.h" |
| 24 #include "cc/trees/layer_tree_impl.h" | 25 #include "cc/trees/layer_tree_impl.h" |
| 25 | 26 |
| 26 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 SetTreePriority(SAME_PRIORITY_FOR_BOTH_TREES); | 119 SetTreePriority(SAME_PRIORITY_FOR_BOTH_TREES); |
| 119 } | 120 } |
| 120 | 121 |
| 121 virtual void InitializeRenderer() { | 122 virtual void InitializeRenderer() { |
| 122 host_impl_.InitializeRenderer(FakeOutputSurface::Create3d().Pass()); | 123 host_impl_.InitializeRenderer(FakeOutputSurface::Create3d().Pass()); |
| 123 tile_manager()->SetTileTaskRunnerForTesting( | 124 tile_manager()->SetTileTaskRunnerForTesting( |
| 124 g_fake_tile_task_runner.Pointer()); | 125 g_fake_tile_task_runner.Pointer()); |
| 125 } | 126 } |
| 126 | 127 |
| 127 void SetupDefaultTrees(const gfx::Size& layer_bounds) { | 128 void SetupDefaultTrees(const gfx::Size& layer_bounds) { |
| 128 scoped_refptr<FakePicturePileImpl> pending_pile = | 129 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = |
| 129 FakePicturePileImpl::CreateFilledPile(kDefaultTileSize, layer_bounds); | 130 FakeDisplayListRasterSource::CreateFilled(layer_bounds); |
| 130 scoped_refptr<FakePicturePileImpl> active_pile = | 131 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = |
| 131 FakePicturePileImpl::CreateFilledPile(kDefaultTileSize, layer_bounds); | 132 FakeDisplayListRasterSource::CreateFilled(layer_bounds); |
| 132 | 133 |
| 133 SetupTrees(pending_pile, active_pile); | 134 SetupTrees(pending_raster_source, active_raster_source); |
| 134 } | 135 } |
| 135 | 136 |
| 136 void ActivateTree() { | 137 void ActivateTree() { |
| 137 host_impl_.ActivateSyncTree(); | 138 host_impl_.ActivateSyncTree(); |
| 138 CHECK(!host_impl_.pending_tree()); | 139 CHECK(!host_impl_.pending_tree()); |
| 139 pending_root_layer_ = NULL; | 140 pending_root_layer_ = NULL; |
| 140 active_root_layer_ = static_cast<FakePictureLayerImpl*>( | 141 active_root_layer_ = static_cast<FakePictureLayerImpl*>( |
| 141 host_impl_.active_tree()->LayerById(id_)); | 142 host_impl_.active_tree()->LayerById(id_)); |
| 142 } | 143 } |
| 143 | 144 |
| 144 void SetupDefaultTreesWithFixedTileSize(const gfx::Size& layer_bounds, | 145 void SetupDefaultTreesWithFixedTileSize(const gfx::Size& layer_bounds, |
| 145 const gfx::Size& tile_size) { | 146 const gfx::Size& tile_size) { |
| 146 SetupDefaultTrees(layer_bounds); | 147 SetupDefaultTrees(layer_bounds); |
| 147 pending_root_layer_->set_fixed_tile_size(tile_size); | 148 pending_root_layer_->set_fixed_tile_size(tile_size); |
| 148 active_root_layer_->set_fixed_tile_size(tile_size); | 149 active_root_layer_->set_fixed_tile_size(tile_size); |
| 149 } | 150 } |
| 150 | 151 |
| 151 void SetupTrees(scoped_refptr<PicturePileImpl> pending_pile, | 152 void SetupTrees(scoped_refptr<RasterSource> pending_raster_source, |
| 152 scoped_refptr<PicturePileImpl> active_pile) { | 153 scoped_refptr<RasterSource> active_raster_source) { |
| 153 SetupPendingTree(active_pile); | 154 SetupPendingTree(active_raster_source); |
| 154 ActivateTree(); | 155 ActivateTree(); |
| 155 SetupPendingTree(pending_pile); | 156 SetupPendingTree(pending_raster_source); |
| 156 } | 157 } |
| 157 | 158 |
| 158 void SetupPendingTree(scoped_refptr<PicturePileImpl> pile) { | 159 void SetupPendingTree(scoped_refptr<RasterSource> raster_source) { |
| 159 host_impl_.CreatePendingTree(); | 160 host_impl_.CreatePendingTree(); |
| 160 LayerTreeImpl* pending_tree = host_impl_.pending_tree(); | 161 LayerTreeImpl* pending_tree = host_impl_.pending_tree(); |
| 161 // Clear recycled tree. | 162 // Clear recycled tree. |
| 162 pending_tree->DetachLayerTree(); | 163 pending_tree->DetachLayerTree(); |
| 163 | 164 |
| 164 scoped_ptr<FakePictureLayerImpl> pending_layer = | 165 scoped_ptr<FakePictureLayerImpl> pending_layer = |
| 165 FakePictureLayerImpl::CreateWithRasterSource(pending_tree, id_, pile); | 166 FakePictureLayerImpl::CreateWithRasterSource(pending_tree, id_, |
| 167 raster_source); |
| 166 pending_layer->SetDrawsContent(true); | 168 pending_layer->SetDrawsContent(true); |
| 167 pending_layer->SetHasRenderSurface(true); | 169 pending_layer->SetHasRenderSurface(true); |
| 168 pending_tree->SetRootLayer(pending_layer.Pass()); | 170 pending_tree->SetRootLayer(pending_layer.Pass()); |
| 169 | 171 |
| 170 pending_root_layer_ = static_cast<FakePictureLayerImpl*>( | 172 pending_root_layer_ = static_cast<FakePictureLayerImpl*>( |
| 171 host_impl_.pending_tree()->LayerById(id_)); | 173 host_impl_.pending_tree()->LayerById(id_)); |
| 172 } | 174 } |
| 173 | 175 |
| 174 void RunRasterQueueConstructTest(const std::string& test_name, | 176 void RunRasterQueueConstructTest(const std::string& test_name, |
| 175 int layer_count) { | 177 int layer_count) { |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 SetupDefaultTreesWithFixedTileSize(layer_bounds, | 339 SetupDefaultTreesWithFixedTileSize(layer_bounds, |
| 338 settings_.default_tile_size); | 340 settings_.default_tile_size); |
| 339 | 341 |
| 340 std::vector<FakePictureLayerImpl*> layers; | 342 std::vector<FakePictureLayerImpl*> layers; |
| 341 | 343 |
| 342 // Pending layer counts as one layer. | 344 // Pending layer counts as one layer. |
| 343 layers.push_back(pending_root_layer_); | 345 layers.push_back(pending_root_layer_); |
| 344 int next_id = id_ + 1; | 346 int next_id = id_ + 1; |
| 345 | 347 |
| 346 // Create the rest of the layers as children of the root layer. | 348 // Create the rest of the layers as children of the root layer. |
| 347 scoped_refptr<FakePicturePileImpl> pile = | 349 scoped_refptr<FakeDisplayListRasterSource> raster_source = |
| 348 FakePicturePileImpl::CreateFilledPile(kDefaultTileSize, layer_bounds); | 350 FakeDisplayListRasterSource::CreateFilled(layer_bounds); |
| 349 while (static_cast<int>(layers.size()) < layer_count) { | 351 while (static_cast<int>(layers.size()) < layer_count) { |
| 350 scoped_ptr<FakePictureLayerImpl> layer = | 352 scoped_ptr<FakePictureLayerImpl> layer = |
| 351 FakePictureLayerImpl::CreateWithRasterSource( | 353 FakePictureLayerImpl::CreateWithRasterSource( |
| 352 host_impl_.pending_tree(), next_id, pile); | 354 host_impl_.pending_tree(), next_id, raster_source); |
| 353 layer->SetBounds(layer_bounds); | 355 layer->SetBounds(layer_bounds); |
| 354 layer->SetDrawsContent(true); | 356 layer->SetDrawsContent(true); |
| 355 layers.push_back(layer.get()); | 357 layers.push_back(layer.get()); |
| 356 pending_root_layer_->AddChild(layer.Pass()); | 358 pending_root_layer_->AddChild(layer.Pass()); |
| 357 ++next_id; | 359 ++next_id; |
| 358 } | 360 } |
| 359 | 361 |
| 360 bool update_lcd_text = false; | 362 bool update_lcd_text = false; |
| 361 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); | 363 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); |
| 362 for (FakePictureLayerImpl* layer : layers) | 364 for (FakePictureLayerImpl* layer : layers) |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 TestTaskGraphRunner task_graph_runner_; | 412 TestTaskGraphRunner task_graph_runner_; |
| 411 TileMemoryLimitPolicy memory_limit_policy_; | 413 TileMemoryLimitPolicy memory_limit_policy_; |
| 412 int max_tiles_; | 414 int max_tiles_; |
| 413 int id_; | 415 int id_; |
| 414 FakeImplProxy proxy_; | 416 FakeImplProxy proxy_; |
| 415 FakeLayerTreeHostImpl host_impl_; | 417 FakeLayerTreeHostImpl host_impl_; |
| 416 FakePictureLayerImpl* pending_root_layer_; | 418 FakePictureLayerImpl* pending_root_layer_; |
| 417 FakePictureLayerImpl* active_root_layer_; | 419 FakePictureLayerImpl* active_root_layer_; |
| 418 LapTimer timer_; | 420 LapTimer timer_; |
| 419 LayerTreeSettings settings_; | 421 LayerTreeSettings settings_; |
| 420 | |
| 421 static const gfx::Size kDefaultTileSize; | |
| 422 }; | 422 }; |
| 423 | 423 |
| 424 const gfx::Size TileManagerPerfTest::kDefaultTileSize(100, 100); | |
| 425 | |
| 426 TEST_F(TileManagerPerfTest, PrepareTiles) { | 424 TEST_F(TileManagerPerfTest, PrepareTiles) { |
| 427 RunPrepareTilesTest("2_100", 2, 100); | 425 RunPrepareTilesTest("2_100", 2, 100); |
| 428 RunPrepareTilesTest("2_500", 2, 500); | 426 RunPrepareTilesTest("2_500", 2, 500); |
| 429 RunPrepareTilesTest("2_1000", 2, 1000); | 427 RunPrepareTilesTest("2_1000", 2, 1000); |
| 430 RunPrepareTilesTest("10_100", 10, 100); | 428 RunPrepareTilesTest("10_100", 10, 100); |
| 431 RunPrepareTilesTest("10_500", 10, 500); | 429 RunPrepareTilesTest("10_500", 10, 500); |
| 432 RunPrepareTilesTest("10_1000", 10, 1000); | 430 RunPrepareTilesTest("10_1000", 10, 1000); |
| 433 RunPrepareTilesTest("50_100", 100, 100); | 431 RunPrepareTilesTest("50_100", 100, 100); |
| 434 RunPrepareTilesTest("50_500", 100, 500); | 432 RunPrepareTilesTest("50_500", 100, 500); |
| 435 RunPrepareTilesTest("50_1000", 100, 1000); | 433 RunPrepareTilesTest("50_1000", 100, 1000); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 RunEvictionQueueConstructAndIterateTest("10_64", 10, 64); | 470 RunEvictionQueueConstructAndIterateTest("10_64", 10, 64); |
| 473 RunEvictionQueueConstructAndIterateTest("10_128", 10, 128); | 471 RunEvictionQueueConstructAndIterateTest("10_128", 10, 128); |
| 474 RunEvictionQueueConstructAndIterateTest("50_16", 50, 16); | 472 RunEvictionQueueConstructAndIterateTest("50_16", 50, 16); |
| 475 RunEvictionQueueConstructAndIterateTest("50_32", 50, 32); | 473 RunEvictionQueueConstructAndIterateTest("50_32", 50, 32); |
| 476 RunEvictionQueueConstructAndIterateTest("50_64", 50, 64); | 474 RunEvictionQueueConstructAndIterateTest("50_64", 50, 64); |
| 477 RunEvictionQueueConstructAndIterateTest("50_128", 50, 128); | 475 RunEvictionQueueConstructAndIterateTest("50_128", 50, 128); |
| 478 } | 476 } |
| 479 | 477 |
| 480 } // namespace | 478 } // namespace |
| 481 } // namespace cc | 479 } // namespace cc |
| OLD | NEW |