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 "cc/resources/raster_worker_pool.h" | 5 #include "cc/resources/raster_worker_pool.h" |
6 | 6 |
7 #include "base/test/test_simple_task_runner.h" | 7 #include "base/test/test_simple_task_runner.h" |
8 #include "base/time/time.h" | 8 #include "base/time/time.h" |
9 #include "cc/debug/lap_timer.h" | 9 #include "cc/debug/lap_timer.h" |
10 #include "cc/output/context_provider.h" | 10 #include "cc/output/context_provider.h" |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 private: | 140 private: |
141 scoped_ptr<ScopedResource> resource_; | 141 scoped_ptr<ScopedResource> resource_; |
142 | 142 |
143 DISALLOW_COPY_AND_ASSIGN(PerfRasterTaskImpl); | 143 DISALLOW_COPY_AND_ASSIGN(PerfRasterTaskImpl); |
144 }; | 144 }; |
145 | 145 |
146 class RasterWorkerPoolPerfTestBase { | 146 class RasterWorkerPoolPerfTestBase { |
147 public: | 147 public: |
148 typedef std::vector<scoped_refptr<RasterTask> > RasterTaskVector; | 148 typedef std::vector<scoped_refptr<RasterTask> > RasterTaskVector; |
149 | 149 |
| 150 enum NamedTaskSet { |
| 151 HIGH_RESOLUTION_IN_NOW_BIN_ON_ACTIVE_TREE = 0, |
| 152 REQUIRED_FOR_ACTIVATION = 1, |
| 153 ALL = 2 |
| 154 }; |
| 155 |
150 RasterWorkerPoolPerfTestBase() | 156 RasterWorkerPoolPerfTestBase() |
151 : context_provider_(make_scoped_refptr(new PerfContextProvider)), | 157 : context_provider_(make_scoped_refptr(new PerfContextProvider)), |
152 task_runner_(new base::TestSimpleTaskRunner), | 158 task_runner_(new base::TestSimpleTaskRunner), |
153 task_graph_runner_(new TaskGraphRunner), | 159 task_graph_runner_(new TaskGraphRunner), |
154 timer_(kWarmupRuns, | 160 timer_(kWarmupRuns, |
155 base::TimeDelta::FromMilliseconds(kTimeLimitMillis), | 161 base::TimeDelta::FromMilliseconds(kTimeLimitMillis), |
156 kTimeCheckInterval) { | 162 kTimeCheckInterval) { |
157 output_surface_ = FakeOutputSurface::Create3d(context_provider_).Pass(); | 163 output_surface_ = FakeOutputSurface::Create3d(context_provider_).Pass(); |
158 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 164 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
159 | 165 |
(...skipping 29 matching lines...) Expand all Loading... |
189 ImageDecodeTask::Vector dependencies = image_decode_tasks; | 195 ImageDecodeTask::Vector dependencies = image_decode_tasks; |
190 raster_tasks->push_back( | 196 raster_tasks->push_back( |
191 new PerfRasterTaskImpl(resource.Pass(), &dependencies)); | 197 new PerfRasterTaskImpl(resource.Pass(), &dependencies)); |
192 } | 198 } |
193 } | 199 } |
194 | 200 |
195 void BuildRasterTaskQueue(RasterTaskQueue* queue, | 201 void BuildRasterTaskQueue(RasterTaskQueue* queue, |
196 const RasterTaskVector& raster_tasks) { | 202 const RasterTaskVector& raster_tasks) { |
197 for (size_t i = 0u; i < raster_tasks.size(); ++i) { | 203 for (size_t i = 0u; i < raster_tasks.size(); ++i) { |
198 bool required_for_activation = (i % 2) == 0; | 204 bool required_for_activation = (i % 2) == 0; |
199 queue->items.push_back(RasterTaskQueue::Item(raster_tasks[i].get(), | 205 TaskSetCollection task_set_collection; |
200 required_for_activation)); | 206 task_set_collection[ALL] = true; |
201 queue->required_for_activation_count += required_for_activation; | 207 task_set_collection[REQUIRED_FOR_ACTIVATION] = required_for_activation; |
| 208 queue->items.push_back( |
| 209 RasterTaskQueue::Item(raster_tasks[i].get(), task_set_collection)); |
202 } | 210 } |
203 } | 211 } |
204 | 212 |
205 protected: | 213 protected: |
206 scoped_refptr<ContextProvider> context_provider_; | 214 scoped_refptr<ContextProvider> context_provider_; |
207 FakeOutputSurfaceClient output_surface_client_; | 215 FakeOutputSurfaceClient output_surface_client_; |
208 scoped_ptr<FakeOutputSurface> output_surface_; | 216 scoped_ptr<FakeOutputSurface> output_surface_; |
209 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; | 217 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; |
210 scoped_ptr<ResourceProvider> resource_provider_; | 218 scoped_ptr<ResourceProvider> resource_provider_; |
211 scoped_ptr<ResourcePool> staging_resource_pool_; | 219 scoped_ptr<ResourcePool> staging_resource_pool_; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 raster_worker_pool_->AsRasterizer()->SetClient(this); | 263 raster_worker_pool_->AsRasterizer()->SetClient(this); |
256 } | 264 } |
257 | 265 |
258 // Overridden from testing::Test: | 266 // Overridden from testing::Test: |
259 virtual void TearDown() OVERRIDE { | 267 virtual void TearDown() OVERRIDE { |
260 raster_worker_pool_->AsRasterizer()->Shutdown(); | 268 raster_worker_pool_->AsRasterizer()->Shutdown(); |
261 raster_worker_pool_->AsRasterizer()->CheckForCompletedTasks(); | 269 raster_worker_pool_->AsRasterizer()->CheckForCompletedTasks(); |
262 } | 270 } |
263 | 271 |
264 // Overriden from RasterizerClient: | 272 // Overriden from RasterizerClient: |
265 virtual bool ShouldForceTasksRequiredForActivationToComplete() const | 273 virtual void DidFinishRunningTaskSet(TaskSet task_set) OVERRIDE { |
266 OVERRIDE { | 274 if (task_set == ALL) |
267 return false; | 275 raster_worker_pool_->AsRasterizer()->CheckForCompletedTasks(); |
268 } | 276 } |
269 virtual void DidFinishRunningTasks() OVERRIDE { | 277 virtual TaskSetCollection TasksThatShouldBeForcedToComplete() const OVERRIDE { |
270 raster_worker_pool_->AsRasterizer()->CheckForCompletedTasks(); | 278 return TaskSetCollection(); |
271 } | 279 } |
272 virtual void DidFinishRunningTasksRequiredForActivation() OVERRIDE {} | 280 virtual base::debug::TraceEventSyntheticDelay* SyntheticDelayForTaskSet( |
| 281 TaskSet task_set) const OVERRIDE { |
| 282 return NULL; |
| 283 } |
273 | 284 |
274 void RunMessageLoopUntilAllTasksHaveCompleted() { | 285 void RunMessageLoopUntilAllTasksHaveCompleted() { |
275 task_graph_runner_->RunUntilIdle(); | 286 task_graph_runner_->RunUntilIdle(); |
276 task_runner_->RunUntilIdle(); | 287 task_runner_->RunUntilIdle(); |
277 } | 288 } |
278 | 289 |
279 void RunScheduleTasksTest(const std::string& test_name, | 290 void RunScheduleTasksTest(const std::string& test_name, |
280 unsigned num_raster_tasks, | 291 unsigned num_raster_tasks, |
281 unsigned num_image_decode_tasks) { | 292 unsigned num_image_decode_tasks) { |
282 ImageDecodeTask::Vector image_decode_tasks; | 293 ImageDecodeTask::Vector image_decode_tasks; |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
465 RunBuildRasterTaskQueueTest("1_0", 1, 0); | 476 RunBuildRasterTaskQueueTest("1_0", 1, 0); |
466 RunBuildRasterTaskQueueTest("32_0", 32, 0); | 477 RunBuildRasterTaskQueueTest("32_0", 32, 0); |
467 RunBuildRasterTaskQueueTest("1_1", 1, 1); | 478 RunBuildRasterTaskQueueTest("1_1", 1, 1); |
468 RunBuildRasterTaskQueueTest("32_1", 32, 1); | 479 RunBuildRasterTaskQueueTest("32_1", 32, 1); |
469 RunBuildRasterTaskQueueTest("1_4", 1, 4); | 480 RunBuildRasterTaskQueueTest("1_4", 1, 4); |
470 RunBuildRasterTaskQueueTest("32_4", 32, 4); | 481 RunBuildRasterTaskQueueTest("32_4", 32, 4); |
471 } | 482 } |
472 | 483 |
473 } // namespace | 484 } // namespace |
474 } // namespace cc | 485 } // namespace cc |
OLD | NEW |