| 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 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 scoped_ptr<TilingSetRasterQueue> queue = | 78 scoped_ptr<TilingSetRasterQueue> queue = |
| 79 pending_layer_->CreateRasterQueue(false); | 79 pending_layer_->CreateRasterQueue(false); |
| 80 while (count--) { | 80 while (count--) { |
| 81 ASSERT_TRUE(!queue->IsEmpty()) << "count: " << count; | 81 ASSERT_TRUE(!queue->IsEmpty()) << "count: " << count; |
| 82 ASSERT_TRUE(queue->Top() != nullptr) << "count: " << count; | 82 ASSERT_TRUE(queue->Top() != nullptr) << "count: " << count; |
| 83 queue->Pop(); | 83 queue->Pop(); |
| 84 } | 84 } |
| 85 timer_.NextLap(); | 85 timer_.NextLap(); |
| 86 } while (!timer_.HasTimeLimitExpired()); | 86 } while (!timer_.HasTimeLimitExpired()); |
| 87 | 87 |
| 88 perf_test::PrintResult("layer_raster_tile_iterator_construct_and_iterate", | 88 perf_test::PrintResult("tiling_set_raster_queue_construct_and_iterate", "", |
| 89 "", | 89 test_name, timer_.LapsPerSecond(), "runs/s", true); |
| 90 test_name, | |
| 91 timer_.LapsPerSecond(), | |
| 92 "runs/s", | |
| 93 true); | |
| 94 } | 90 } |
| 95 | 91 |
| 96 void RunRasterQueueConstructTest(const std::string& test_name, | 92 void RunRasterQueueConstructTest(const std::string& test_name, |
| 97 const gfx::Rect& viewport) { | 93 const gfx::Rect& viewport) { |
| 98 host_impl_.SetViewportSize(viewport.size()); | 94 host_impl_.SetViewportSize(viewport.size()); |
| 99 pending_layer_->SetScrollOffset( | 95 pending_layer_->SetScrollOffset( |
| 100 gfx::ScrollOffset(viewport.x(), viewport.y())); | 96 gfx::ScrollOffset(viewport.x(), viewport.y())); |
| 101 host_impl_.pending_tree()->UpdateDrawProperties(); | 97 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 102 | 98 |
| 103 timer_.Reset(); | 99 timer_.Reset(); |
| 104 do { | 100 do { |
| 105 scoped_ptr<TilingSetRasterQueue> queue = | 101 scoped_ptr<TilingSetRasterQueue> queue = |
| 106 pending_layer_->CreateRasterQueue(false); | 102 pending_layer_->CreateRasterQueue(false); |
| 107 timer_.NextLap(); | 103 timer_.NextLap(); |
| 108 } while (!timer_.HasTimeLimitExpired()); | 104 } while (!timer_.HasTimeLimitExpired()); |
| 109 | 105 |
| 110 perf_test::PrintResult("layer_raster_tile_iterator_construct", | 106 perf_test::PrintResult("tiling_set_raster_queue_construct", "", test_name, |
| 111 "", | 107 timer_.LapsPerSecond(), "runs/s", true); |
| 112 test_name, | |
| 113 timer_.LapsPerSecond(), | |
| 114 "runs/s", | |
| 115 true); | |
| 116 } | 108 } |
| 117 | 109 |
| 118 void RunEvictionQueueConstructAndIterateTest( | 110 void RunEvictionQueueConstructAndIterateTest( |
| 119 const std::string& test_name, | 111 const std::string& test_name, |
| 120 int num_tiles, | 112 int num_tiles, |
| 121 const gfx::Size& viewport_size) { | 113 const gfx::Size& viewport_size) { |
| 122 host_impl_.SetViewportSize(viewport_size); | 114 host_impl_.SetViewportSize(viewport_size); |
| 123 host_impl_.pending_tree()->UpdateDrawProperties(); | 115 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 124 | 116 |
| 125 TreePriority priorities[] = {SAME_PRIORITY_FOR_BOTH_TREES, | 117 TreePriority priorities[] = {SAME_PRIORITY_FOR_BOTH_TREES, |
| 126 SMOOTHNESS_TAKES_PRIORITY, | 118 SMOOTHNESS_TAKES_PRIORITY, |
| 127 NEW_CONTENT_TAKES_PRIORITY}; | 119 NEW_CONTENT_TAKES_PRIORITY}; |
| 128 int priority_count = 0; | 120 int priority_count = 0; |
| 129 timer_.Reset(); | 121 timer_.Reset(); |
| 130 do { | 122 do { |
| 131 int count = num_tiles; | 123 int count = num_tiles; |
| 132 scoped_ptr<TilingSetEvictionQueue> queue = | 124 scoped_ptr<TilingSetEvictionQueue> queue = |
| 133 pending_layer_->CreateEvictionQueue(priorities[priority_count]); | 125 pending_layer_->CreateEvictionQueue(priorities[priority_count]); |
| 134 while (count--) { | 126 while (count--) { |
| 135 ASSERT_TRUE(!queue->IsEmpty()) << "count: " << count; | 127 ASSERT_TRUE(!queue->IsEmpty()) << "count: " << count; |
| 136 ASSERT_TRUE(queue->Top() != nullptr) << "count: " << count; | 128 ASSERT_TRUE(queue->Top() != nullptr) << "count: " << count; |
| 137 queue->Pop(); | 129 queue->Pop(); |
| 138 } | 130 } |
| 139 priority_count = (priority_count + 1) % arraysize(priorities); | 131 priority_count = (priority_count + 1) % arraysize(priorities); |
| 140 timer_.NextLap(); | 132 timer_.NextLap(); |
| 141 } while (!timer_.HasTimeLimitExpired()); | 133 } while (!timer_.HasTimeLimitExpired()); |
| 142 | 134 |
| 143 perf_test::PrintResult("layer_eviction_tile_iterator_construct_and_iterate", | 135 perf_test::PrintResult("tiling_set_eviction_queue_construct_and_iterate", |
| 144 "", | 136 "", test_name, timer_.LapsPerSecond(), "runs/s", |
| 145 test_name, | |
| 146 timer_.LapsPerSecond(), | |
| 147 "runs/s", | |
| 148 true); | 137 true); |
| 149 } | 138 } |
| 150 | 139 |
| 151 void RunEvictionQueueConstructTest(const std::string& test_name, | 140 void RunEvictionQueueConstructTest(const std::string& test_name, |
| 152 const gfx::Rect& viewport) { | 141 const gfx::Rect& viewport) { |
| 153 host_impl_.SetViewportSize(viewport.size()); | 142 host_impl_.SetViewportSize(viewport.size()); |
| 154 pending_layer_->SetScrollOffset( | 143 pending_layer_->SetScrollOffset( |
| 155 gfx::ScrollOffset(viewport.x(), viewport.y())); | 144 gfx::ScrollOffset(viewport.x(), viewport.y())); |
| 156 host_impl_.pending_tree()->UpdateDrawProperties(); | 145 host_impl_.pending_tree()->UpdateDrawProperties(); |
| 157 | 146 |
| 158 TreePriority priorities[] = {SAME_PRIORITY_FOR_BOTH_TREES, | 147 TreePriority priorities[] = {SAME_PRIORITY_FOR_BOTH_TREES, |
| 159 SMOOTHNESS_TAKES_PRIORITY, | 148 SMOOTHNESS_TAKES_PRIORITY, |
| 160 NEW_CONTENT_TAKES_PRIORITY}; | 149 NEW_CONTENT_TAKES_PRIORITY}; |
| 161 int priority_count = 0; | 150 int priority_count = 0; |
| 162 timer_.Reset(); | 151 timer_.Reset(); |
| 163 do { | 152 do { |
| 164 scoped_ptr<TilingSetEvictionQueue> queue = | 153 scoped_ptr<TilingSetEvictionQueue> queue = |
| 165 pending_layer_->CreateEvictionQueue(priorities[priority_count]); | 154 pending_layer_->CreateEvictionQueue(priorities[priority_count]); |
| 166 priority_count = (priority_count + 1) % arraysize(priorities); | 155 priority_count = (priority_count + 1) % arraysize(priorities); |
| 167 timer_.NextLap(); | 156 timer_.NextLap(); |
| 168 } while (!timer_.HasTimeLimitExpired()); | 157 } while (!timer_.HasTimeLimitExpired()); |
| 169 | 158 |
| 170 perf_test::PrintResult("layer_eviction_tile_iterator_construct", | 159 perf_test::PrintResult("tiling_set_eviction_queue_construct", "", test_name, |
| 171 "", | 160 timer_.LapsPerSecond(), "runs/s", true); |
| 172 test_name, | |
| 173 timer_.LapsPerSecond(), | |
| 174 "runs/s", | |
| 175 true); | |
| 176 } | 161 } |
| 177 | 162 |
| 178 protected: | 163 protected: |
| 179 TestSharedBitmapManager shared_bitmap_manager_; | 164 TestSharedBitmapManager shared_bitmap_manager_; |
| 180 FakeImplProxy proxy_; | 165 FakeImplProxy proxy_; |
| 181 FakeLayerTreeHostImpl host_impl_; | 166 FakeLayerTreeHostImpl host_impl_; |
| 182 FakePictureLayerImpl* pending_layer_; | 167 FakePictureLayerImpl* pending_layer_; |
| 183 LapTimer timer_; | 168 LapTimer timer_; |
| 184 | 169 |
| 185 private: | 170 private: |
| 186 DISALLOW_COPY_AND_ASSIGN(PictureLayerImplPerfTest); | 171 DISALLOW_COPY_AND_ASSIGN(PictureLayerImplPerfTest); |
| 187 }; | 172 }; |
| 188 | 173 |
| 189 // TODO(vmpstr): Rename these tests once the perf numbers are in. | 174 TEST_F(PictureLayerImplPerfTest, TilingSetRasterQueueConstructAndIterate) { |
| 190 TEST_F(PictureLayerImplPerfTest, LayerRasterTileIteratorConstructAndIterate) { | |
| 191 SetupPendingTree(gfx::Size(10000, 10000), gfx::Size(256, 256)); | 175 SetupPendingTree(gfx::Size(10000, 10000), gfx::Size(256, 256)); |
| 192 | 176 |
| 193 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 177 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; |
| 194 | 178 |
| 195 pending_layer_->AddTiling(low_res_factor); | 179 pending_layer_->AddTiling(low_res_factor); |
| 196 pending_layer_->AddTiling(0.3f); | 180 pending_layer_->AddTiling(0.3f); |
| 197 pending_layer_->AddTiling(0.7f); | 181 pending_layer_->AddTiling(0.7f); |
| 198 pending_layer_->AddTiling(1.0f); | 182 pending_layer_->AddTiling(1.0f); |
| 199 pending_layer_->AddTiling(2.0f); | 183 pending_layer_->AddTiling(2.0f); |
| 200 | 184 |
| 201 RunRasterQueueConstructAndIterateTest("32_100x100", 32, gfx::Size(100, 100)); | 185 RunRasterQueueConstructAndIterateTest("32_100x100", 32, gfx::Size(100, 100)); |
| 202 RunRasterQueueConstructAndIterateTest("32_500x500", 32, gfx::Size(500, 500)); | 186 RunRasterQueueConstructAndIterateTest("32_500x500", 32, gfx::Size(500, 500)); |
| 203 RunRasterQueueConstructAndIterateTest("64_100x100", 64, gfx::Size(100, 100)); | 187 RunRasterQueueConstructAndIterateTest("64_100x100", 64, gfx::Size(100, 100)); |
| 204 RunRasterQueueConstructAndIterateTest("64_500x500", 64, gfx::Size(500, 500)); | 188 RunRasterQueueConstructAndIterateTest("64_500x500", 64, gfx::Size(500, 500)); |
| 205 } | 189 } |
| 206 | 190 |
| 207 // TODO(vmpstr): Rename these tests once the perf numbers are in. | 191 TEST_F(PictureLayerImplPerfTest, TilingSetRasterQueueConstruct) { |
| 208 TEST_F(PictureLayerImplPerfTest, LayerRasterTileIteratorConstruct) { | |
| 209 SetupPendingTree(gfx::Size(10000, 10000), gfx::Size(256, 256)); | 192 SetupPendingTree(gfx::Size(10000, 10000), gfx::Size(256, 256)); |
| 210 | 193 |
| 211 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; |
| 212 | 195 |
| 213 pending_layer_->AddTiling(low_res_factor); | 196 pending_layer_->AddTiling(low_res_factor); |
| 214 pending_layer_->AddTiling(0.3f); | 197 pending_layer_->AddTiling(0.3f); |
| 215 pending_layer_->AddTiling(0.7f); | 198 pending_layer_->AddTiling(0.7f); |
| 216 pending_layer_->AddTiling(1.0f); | 199 pending_layer_->AddTiling(1.0f); |
| 217 pending_layer_->AddTiling(2.0f); | 200 pending_layer_->AddTiling(2.0f); |
| 218 | 201 |
| 219 RunRasterQueueConstructTest("0_0_100x100", gfx::Rect(0, 0, 100, 100)); | 202 RunRasterQueueConstructTest("0_0_100x100", gfx::Rect(0, 0, 100, 100)); |
| 220 RunRasterQueueConstructTest("5000_0_100x100", gfx::Rect(5000, 0, 100, 100)); | 203 RunRasterQueueConstructTest("5000_0_100x100", gfx::Rect(5000, 0, 100, 100)); |
| 221 RunRasterQueueConstructTest("9999_0_100x100", gfx::Rect(9999, 0, 100, 100)); | 204 RunRasterQueueConstructTest("9999_0_100x100", gfx::Rect(9999, 0, 100, 100)); |
| 222 } | 205 } |
| 223 | 206 |
| 224 // TODO(e_hakkinen): Rename these tests once the perf numbers are in. | 207 TEST_F(PictureLayerImplPerfTest, TilingSetEvictionQueueConstructAndIterate) { |
| 225 TEST_F(PictureLayerImplPerfTest, LayerEvictionTileIteratorConstructAndIterate) { | |
| 226 SetupPendingTree(gfx::Size(10000, 10000), gfx::Size(256, 256)); | 208 SetupPendingTree(gfx::Size(10000, 10000), gfx::Size(256, 256)); |
| 227 | 209 |
| 228 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 210 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; |
| 229 | 211 |
| 230 std::vector<Tile*> all_tiles; | 212 std::vector<Tile*> all_tiles; |
| 231 AddTiling(low_res_factor, pending_layer_, &all_tiles); | 213 AddTiling(low_res_factor, pending_layer_, &all_tiles); |
| 232 AddTiling(0.3f, pending_layer_, &all_tiles); | 214 AddTiling(0.3f, pending_layer_, &all_tiles); |
| 233 AddTiling(0.7f, pending_layer_, &all_tiles); | 215 AddTiling(0.7f, pending_layer_, &all_tiles); |
| 234 AddTiling(1.0f, pending_layer_, &all_tiles); | 216 AddTiling(1.0f, pending_layer_, &all_tiles); |
| 235 AddTiling(2.0f, pending_layer_, &all_tiles); | 217 AddTiling(2.0f, pending_layer_, &all_tiles); |
| 236 | 218 |
| 237 ASSERT_TRUE(host_impl_.tile_manager() != nullptr); | 219 ASSERT_TRUE(host_impl_.tile_manager() != nullptr); |
| 238 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); | 220 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); |
| 239 | 221 |
| 240 RunEvictionQueueConstructAndIterateTest( | 222 RunEvictionQueueConstructAndIterateTest( |
| 241 "32_100x100", 32, gfx::Size(100, 100)); | 223 "32_100x100", 32, gfx::Size(100, 100)); |
| 242 RunEvictionQueueConstructAndIterateTest( | 224 RunEvictionQueueConstructAndIterateTest( |
| 243 "32_500x500", 32, gfx::Size(500, 500)); | 225 "32_500x500", 32, gfx::Size(500, 500)); |
| 244 RunEvictionQueueConstructAndIterateTest( | 226 RunEvictionQueueConstructAndIterateTest( |
| 245 "64_100x100", 64, gfx::Size(100, 100)); | 227 "64_100x100", 64, gfx::Size(100, 100)); |
| 246 RunEvictionQueueConstructAndIterateTest( | 228 RunEvictionQueueConstructAndIterateTest( |
| 247 "64_500x500", 64, gfx::Size(500, 500)); | 229 "64_500x500", 64, gfx::Size(500, 500)); |
| 248 } | 230 } |
| 249 | 231 |
| 250 // TODO(e_hakkinen): Rename these tests once the perf numbers are in. | 232 TEST_F(PictureLayerImplPerfTest, TilingSetEvictionQueueConstruct) { |
| 251 TEST_F(PictureLayerImplPerfTest, LayerEvictionTileIteratorConstruct) { | |
| 252 SetupPendingTree(gfx::Size(10000, 10000), gfx::Size(256, 256)); | 233 SetupPendingTree(gfx::Size(10000, 10000), gfx::Size(256, 256)); |
| 253 | 234 |
| 254 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 235 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; |
| 255 | 236 |
| 256 std::vector<Tile*> all_tiles; | 237 std::vector<Tile*> all_tiles; |
| 257 AddTiling(low_res_factor, pending_layer_, &all_tiles); | 238 AddTiling(low_res_factor, pending_layer_, &all_tiles); |
| 258 AddTiling(0.3f, pending_layer_, &all_tiles); | 239 AddTiling(0.3f, pending_layer_, &all_tiles); |
| 259 AddTiling(0.7f, pending_layer_, &all_tiles); | 240 AddTiling(0.7f, pending_layer_, &all_tiles); |
| 260 AddTiling(1.0f, pending_layer_, &all_tiles); | 241 AddTiling(1.0f, pending_layer_, &all_tiles); |
| 261 AddTiling(2.0f, pending_layer_, &all_tiles); | 242 AddTiling(2.0f, pending_layer_, &all_tiles); |
| 262 | 243 |
| 263 ASSERT_TRUE(host_impl_.tile_manager() != nullptr); | 244 ASSERT_TRUE(host_impl_.tile_manager() != nullptr); |
| 264 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); | 245 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(all_tiles); |
| 265 | 246 |
| 266 RunEvictionQueueConstructTest("0_0_100x100", gfx::Rect(0, 0, 100, 100)); | 247 RunEvictionQueueConstructTest("0_0_100x100", gfx::Rect(0, 0, 100, 100)); |
| 267 RunEvictionQueueConstructTest("5000_0_100x100", gfx::Rect(5000, 0, 100, 100)); | 248 RunEvictionQueueConstructTest("5000_0_100x100", gfx::Rect(5000, 0, 100, 100)); |
| 268 RunEvictionQueueConstructTest("9999_0_100x100", gfx::Rect(9999, 0, 100, 100)); | 249 RunEvictionQueueConstructTest("9999_0_100x100", gfx::Rect(9999, 0, 100, 100)); |
| 269 } | 250 } |
| 270 | 251 |
| 271 } // namespace | 252 } // namespace |
| 272 } // namespace cc | 253 } // namespace cc |
| OLD | NEW |