| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/layers/picture_layer_impl.h" | 5 #include "cc/layers/picture_layer_impl.h" |
| 6 | 6 |
| 7 #include "cc/debug/lap_timer.h" | 7 #include "cc/debug/lap_timer.h" |
| 8 #include "cc/test/fake_impl_proxy.h" | 8 #include "cc/test/fake_impl_proxy.h" |
| 9 #include "cc/test/fake_layer_tree_host_impl.h" | 9 #include "cc/test/fake_layer_tree_host_impl.h" |
| 10 #include "cc/test/fake_output_surface.h" | 10 #include "cc/test/fake_output_surface.h" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 scoped_ptr<FakePictureLayerImpl> pending_layer = | 60 scoped_ptr<FakePictureLayerImpl> pending_layer = |
| 61 FakePictureLayerImpl::CreateWithRasterSource(pending_tree, 7, pile); | 61 FakePictureLayerImpl::CreateWithRasterSource(pending_tree, 7, pile); |
| 62 pending_layer->SetDrawsContent(true); | 62 pending_layer->SetDrawsContent(true); |
| 63 pending_tree->SetRootLayer(pending_layer.Pass()); | 63 pending_tree->SetRootLayer(pending_layer.Pass()); |
| 64 | 64 |
| 65 pending_layer_ = static_cast<FakePictureLayerImpl*>( | 65 pending_layer_ = static_cast<FakePictureLayerImpl*>( |
| 66 host_impl_.pending_tree()->LayerById(7)); | 66 host_impl_.pending_tree()->LayerById(7)); |
| 67 pending_layer_->DoPostCommitInitializationIfNeeded(); | 67 pending_layer_->DoPostCommitInitializationIfNeeded(); |
| 68 } | 68 } |
| 69 | 69 |
| 70 void RunRasterIteratorConstructAndIterateTest( | 70 void RunRasterQueueConstructAndIterateTest(const std::string& test_name, |
| 71 const std::string& test_name, | 71 int num_tiles, |
| 72 int num_tiles, | 72 const gfx::Size& viewport_size) { |
| 73 const gfx::Size& viewport_size) { | |
| 74 host_impl_.SetViewportSize(viewport_size); | 73 host_impl_.SetViewportSize(viewport_size); |
| 75 host_impl_.pending_tree()->UpdateDrawProperties(); | 74 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 76 | 75 |
| 77 timer_.Reset(); | 76 timer_.Reset(); |
| 78 do { | 77 do { |
| 79 int count = num_tiles; | 78 int count = num_tiles; |
| 80 PictureLayerImpl::LayerRasterTileIterator it(pending_layer_, false); | 79 scoped_ptr<TilingSetRasterQueue> queue = |
| 80 pending_layer_->CreateRasterQueue(false); |
| 81 while (count--) { | 81 while (count--) { |
| 82 ASSERT_TRUE(it) << "count: " << count; | 82 ASSERT_TRUE(!queue->IsEmpty()) << "count: " << count; |
| 83 ASSERT_TRUE(*it != nullptr) << "count: " << count; | 83 ASSERT_TRUE(queue->Top() != nullptr) << "count: " << count; |
| 84 ++it; | 84 queue->Pop(); |
| 85 } | 85 } |
| 86 timer_.NextLap(); | 86 timer_.NextLap(); |
| 87 } while (!timer_.HasTimeLimitExpired()); | 87 } while (!timer_.HasTimeLimitExpired()); |
| 88 | 88 |
| 89 perf_test::PrintResult("layer_raster_tile_iterator_construct_and_iterate", | 89 perf_test::PrintResult("layer_raster_tile_iterator_construct_and_iterate", |
| 90 "", | 90 "", |
| 91 test_name, | 91 test_name, |
| 92 timer_.LapsPerSecond(), | 92 timer_.LapsPerSecond(), |
| 93 "runs/s", | 93 "runs/s", |
| 94 true); | 94 true); |
| 95 } | 95 } |
| 96 | 96 |
| 97 void RunRasterIteratorConstructTest(const std::string& test_name, | 97 void RunRasterQueueConstructTest(const std::string& test_name, |
| 98 const gfx::Rect& viewport) { | 98 const gfx::Rect& viewport) { |
| 99 host_impl_.SetViewportSize(viewport.size()); | 99 host_impl_.SetViewportSize(viewport.size()); |
| 100 pending_layer_->SetScrollOffset( | 100 pending_layer_->SetScrollOffset( |
| 101 gfx::ScrollOffset(viewport.x(), viewport.y())); | 101 gfx::ScrollOffset(viewport.x(), viewport.y())); |
| 102 host_impl_.pending_tree()->UpdateDrawProperties(); | 102 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 103 | 103 |
| 104 timer_.Reset(); | 104 timer_.Reset(); |
| 105 do { | 105 do { |
| 106 PictureLayerImpl::LayerRasterTileIterator it(pending_layer_, false); | 106 scoped_ptr<TilingSetRasterQueue> queue = |
| 107 pending_layer_->CreateRasterQueue(false); |
| 107 timer_.NextLap(); | 108 timer_.NextLap(); |
| 108 } while (!timer_.HasTimeLimitExpired()); | 109 } while (!timer_.HasTimeLimitExpired()); |
| 109 | 110 |
| 110 perf_test::PrintResult("layer_raster_tile_iterator_construct", | 111 perf_test::PrintResult("layer_raster_tile_iterator_construct", |
| 111 "", | 112 "", |
| 112 test_name, | 113 test_name, |
| 113 timer_.LapsPerSecond(), | 114 timer_.LapsPerSecond(), |
| 114 "runs/s", | 115 "runs/s", |
| 115 true); | 116 true); |
| 116 } | 117 } |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 TestSharedBitmapManager shared_bitmap_manager_; | 180 TestSharedBitmapManager shared_bitmap_manager_; |
| 180 FakeImplProxy proxy_; | 181 FakeImplProxy proxy_; |
| 181 FakeLayerTreeHostImpl host_impl_; | 182 FakeLayerTreeHostImpl host_impl_; |
| 182 FakePictureLayerImpl* pending_layer_; | 183 FakePictureLayerImpl* pending_layer_; |
| 183 LapTimer timer_; | 184 LapTimer timer_; |
| 184 | 185 |
| 185 private: | 186 private: |
| 186 DISALLOW_COPY_AND_ASSIGN(PictureLayerImplPerfTest); | 187 DISALLOW_COPY_AND_ASSIGN(PictureLayerImplPerfTest); |
| 187 }; | 188 }; |
| 188 | 189 |
| 190 // TODO(vmpstr): Rename these tests once the perf numbers are in. |
| 189 TEST_F(PictureLayerImplPerfTest, LayerRasterTileIteratorConstructAndIterate) { | 191 TEST_F(PictureLayerImplPerfTest, LayerRasterTileIteratorConstructAndIterate) { |
| 190 SetupPendingTree(gfx::Size(10000, 10000), gfx::Size(256, 256)); | 192 SetupPendingTree(gfx::Size(10000, 10000), gfx::Size(256, 256)); |
| 191 | 193 |
| 192 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 194 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; |
| 193 | 195 |
| 194 pending_layer_->AddTiling(low_res_factor); | 196 pending_layer_->AddTiling(low_res_factor); |
| 195 pending_layer_->AddTiling(0.3f); | 197 pending_layer_->AddTiling(0.3f); |
| 196 pending_layer_->AddTiling(0.7f); | 198 pending_layer_->AddTiling(0.7f); |
| 197 pending_layer_->AddTiling(1.0f); | 199 pending_layer_->AddTiling(1.0f); |
| 198 pending_layer_->AddTiling(2.0f); | 200 pending_layer_->AddTiling(2.0f); |
| 199 | 201 |
| 200 RunRasterIteratorConstructAndIterateTest( | 202 RunRasterQueueConstructAndIterateTest("32_100x100", 32, gfx::Size(100, 100)); |
| 201 "32_100x100", 32, gfx::Size(100, 100)); | 203 RunRasterQueueConstructAndIterateTest("32_500x500", 32, gfx::Size(500, 500)); |
| 202 RunRasterIteratorConstructAndIterateTest( | 204 RunRasterQueueConstructAndIterateTest("64_100x100", 64, gfx::Size(100, 100)); |
| 203 "32_500x500", 32, gfx::Size(500, 500)); | 205 RunRasterQueueConstructAndIterateTest("64_500x500", 64, gfx::Size(500, 500)); |
| 204 RunRasterIteratorConstructAndIterateTest( | |
| 205 "64_100x100", 64, gfx::Size(100, 100)); | |
| 206 RunRasterIteratorConstructAndIterateTest( | |
| 207 "64_500x500", 64, gfx::Size(500, 500)); | |
| 208 } | 206 } |
| 209 | 207 |
| 208 // TODO(vmpstr): Rename these tests once the perf numbers are in. |
| 210 TEST_F(PictureLayerImplPerfTest, LayerRasterTileIteratorConstruct) { | 209 TEST_F(PictureLayerImplPerfTest, LayerRasterTileIteratorConstruct) { |
| 211 SetupPendingTree(gfx::Size(10000, 10000), gfx::Size(256, 256)); | 210 SetupPendingTree(gfx::Size(10000, 10000), gfx::Size(256, 256)); |
| 212 | 211 |
| 213 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 212 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; |
| 214 | 213 |
| 215 pending_layer_->AddTiling(low_res_factor); | 214 pending_layer_->AddTiling(low_res_factor); |
| 216 pending_layer_->AddTiling(0.3f); | 215 pending_layer_->AddTiling(0.3f); |
| 217 pending_layer_->AddTiling(0.7f); | 216 pending_layer_->AddTiling(0.7f); |
| 218 pending_layer_->AddTiling(1.0f); | 217 pending_layer_->AddTiling(1.0f); |
| 219 pending_layer_->AddTiling(2.0f); | 218 pending_layer_->AddTiling(2.0f); |
| 220 | 219 |
| 221 RunRasterIteratorConstructTest("0_0_100x100", gfx::Rect(0, 0, 100, 100)); | 220 RunRasterQueueConstructTest("0_0_100x100", gfx::Rect(0, 0, 100, 100)); |
| 222 RunRasterIteratorConstructTest("5000_0_100x100", | 221 RunRasterQueueConstructTest("5000_0_100x100", gfx::Rect(5000, 0, 100, 100)); |
| 223 gfx::Rect(5000, 0, 100, 100)); | 222 RunRasterQueueConstructTest("9999_0_100x100", gfx::Rect(9999, 0, 100, 100)); |
| 224 RunRasterIteratorConstructTest("9999_0_100x100", | |
| 225 gfx::Rect(9999, 0, 100, 100)); | |
| 226 } | 223 } |
| 227 | 224 |
| 228 // TODO(e_hakkinen): Rename these tests once the perf numbers are in. | 225 // TODO(e_hakkinen): Rename these tests once the perf numbers are in. |
| 229 TEST_F(PictureLayerImplPerfTest, LayerEvictionTileIteratorConstructAndIterate) { | 226 TEST_F(PictureLayerImplPerfTest, LayerEvictionTileIteratorConstructAndIterate) { |
| 230 SetupPendingTree(gfx::Size(10000, 10000), gfx::Size(256, 256)); | 227 SetupPendingTree(gfx::Size(10000, 10000), gfx::Size(256, 256)); |
| 231 | 228 |
| 232 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 229 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; |
| 233 | 230 |
| 234 std::vector<Tile*> all_tiles; | 231 std::vector<Tile*> all_tiles; |
| 235 AddTiling(low_res_factor, pending_layer_, &all_tiles); | 232 AddTiling(low_res_factor, pending_layer_, &all_tiles); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 ASSERT_TRUE(host_impl_.tile_manager() != nullptr); | 264 ASSERT_TRUE(host_impl_.tile_manager() != nullptr); |
| 268 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); | 265 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); |
| 269 | 266 |
| 270 RunEvictionQueueConstructTest("0_0_100x100", gfx::Rect(0, 0, 100, 100)); | 267 RunEvictionQueueConstructTest("0_0_100x100", gfx::Rect(0, 0, 100, 100)); |
| 271 RunEvictionQueueConstructTest("5000_0_100x100", gfx::Rect(5000, 0, 100, 100)); | 268 RunEvictionQueueConstructTest("5000_0_100x100", gfx::Rect(5000, 0, 100, 100)); |
| 272 RunEvictionQueueConstructTest("9999_0_100x100", gfx::Rect(9999, 0, 100, 100)); | 269 RunEvictionQueueConstructTest("9999_0_100x100", gfx::Rect(9999, 0, 100, 100)); |
| 273 } | 270 } |
| 274 | 271 |
| 275 } // namespace | 272 } // namespace |
| 276 } // namespace cc | 273 } // namespace cc |
| OLD | NEW |