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 { REQUIRED_FOR_ACTIVATION = 0, ALL = 1 }; |
| 151 |
150 RasterWorkerPoolPerfTestBase() | 152 RasterWorkerPoolPerfTestBase() |
151 : context_provider_(make_scoped_refptr(new PerfContextProvider)), | 153 : context_provider_(make_scoped_refptr(new PerfContextProvider)), |
152 task_runner_(new base::TestSimpleTaskRunner), | 154 task_runner_(new base::TestSimpleTaskRunner), |
153 task_graph_runner_(new TaskGraphRunner), | 155 task_graph_runner_(new TaskGraphRunner), |
154 timer_(kWarmupRuns, | 156 timer_(kWarmupRuns, |
155 base::TimeDelta::FromMilliseconds(kTimeLimitMillis), | 157 base::TimeDelta::FromMilliseconds(kTimeLimitMillis), |
156 kTimeCheckInterval) { | 158 kTimeCheckInterval) { |
157 output_surface_ = FakeOutputSurface::Create3d(context_provider_).Pass(); | 159 output_surface_ = FakeOutputSurface::Create3d(context_provider_).Pass(); |
158 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 160 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
159 | 161 |
(...skipping 29 matching lines...) Expand all Loading... |
189 ImageDecodeTask::Vector dependencies = image_decode_tasks; | 191 ImageDecodeTask::Vector dependencies = image_decode_tasks; |
190 raster_tasks->push_back( | 192 raster_tasks->push_back( |
191 new PerfRasterTaskImpl(resource.Pass(), &dependencies)); | 193 new PerfRasterTaskImpl(resource.Pass(), &dependencies)); |
192 } | 194 } |
193 } | 195 } |
194 | 196 |
195 void BuildRasterTaskQueue(RasterTaskQueue* queue, | 197 void BuildRasterTaskQueue(RasterTaskQueue* queue, |
196 const RasterTaskVector& raster_tasks) { | 198 const RasterTaskVector& raster_tasks) { |
197 for (size_t i = 0u; i < raster_tasks.size(); ++i) { | 199 for (size_t i = 0u; i < raster_tasks.size(); ++i) { |
198 bool required_for_activation = (i % 2) == 0; | 200 bool required_for_activation = (i % 2) == 0; |
199 queue->items.push_back(RasterTaskQueue::Item(raster_tasks[i].get(), | 201 TaskSetCollection task_set_collection; |
200 required_for_activation)); | 202 task_set_collection[ALL] = true; |
| 203 task_set_collection[REQUIRED_FOR_ACTIVATION] = required_for_activation; |
| 204 queue->items.push_back( |
| 205 RasterTaskQueue::Item(raster_tasks[i].get(), task_set_collection)); |
201 } | 206 } |
202 } | 207 } |
203 | 208 |
204 protected: | 209 protected: |
205 scoped_refptr<ContextProvider> context_provider_; | 210 scoped_refptr<ContextProvider> context_provider_; |
206 FakeOutputSurfaceClient output_surface_client_; | 211 FakeOutputSurfaceClient output_surface_client_; |
207 scoped_ptr<FakeOutputSurface> output_surface_; | 212 scoped_ptr<FakeOutputSurface> output_surface_; |
208 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; | 213 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; |
209 scoped_ptr<ResourceProvider> resource_provider_; | 214 scoped_ptr<ResourceProvider> resource_provider_; |
210 scoped_ptr<ResourcePool> staging_resource_pool_; | 215 scoped_ptr<ResourcePool> staging_resource_pool_; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 raster_worker_pool_->AsRasterizer()->SetClient(this); | 259 raster_worker_pool_->AsRasterizer()->SetClient(this); |
255 } | 260 } |
256 | 261 |
257 // Overridden from testing::Test: | 262 // Overridden from testing::Test: |
258 virtual void TearDown() OVERRIDE { | 263 virtual void TearDown() OVERRIDE { |
259 raster_worker_pool_->AsRasterizer()->Shutdown(); | 264 raster_worker_pool_->AsRasterizer()->Shutdown(); |
260 raster_worker_pool_->AsRasterizer()->CheckForCompletedTasks(); | 265 raster_worker_pool_->AsRasterizer()->CheckForCompletedTasks(); |
261 } | 266 } |
262 | 267 |
263 // Overriden from RasterizerClient: | 268 // Overriden from RasterizerClient: |
264 virtual bool ShouldForceTasksRequiredForActivationToComplete() const | 269 virtual void DidFinishRunningTasks(TaskSet task_set) OVERRIDE { |
265 OVERRIDE { | |
266 return false; | |
267 } | |
268 virtual void DidFinishRunningTasks() OVERRIDE { | |
269 raster_worker_pool_->AsRasterizer()->CheckForCompletedTasks(); | 270 raster_worker_pool_->AsRasterizer()->CheckForCompletedTasks(); |
270 } | 271 } |
271 virtual void DidFinishRunningTasksRequiredForActivation() OVERRIDE {} | 272 virtual TaskSetCollection TasksThatShouldBeForcedToComplete() const OVERRIDE { |
| 273 return TaskSetCollection(); |
| 274 } |
272 | 275 |
273 void RunMessageLoopUntilAllTasksHaveCompleted() { | 276 void RunMessageLoopUntilAllTasksHaveCompleted() { |
274 task_graph_runner_->RunUntilIdle(); | 277 task_graph_runner_->RunUntilIdle(); |
275 task_runner_->RunUntilIdle(); | 278 task_runner_->RunUntilIdle(); |
276 } | 279 } |
277 | 280 |
278 void RunScheduleTasksTest(const std::string& test_name, | 281 void RunScheduleTasksTest(const std::string& test_name, |
279 unsigned num_raster_tasks, | 282 unsigned num_raster_tasks, |
280 unsigned num_image_decode_tasks) { | 283 unsigned num_image_decode_tasks) { |
281 ImageDecodeTask::Vector image_decode_tasks; | 284 ImageDecodeTask::Vector image_decode_tasks; |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
464 RunBuildRasterTaskQueueTest("1_0", 1, 0); | 467 RunBuildRasterTaskQueueTest("1_0", 1, 0); |
465 RunBuildRasterTaskQueueTest("32_0", 32, 0); | 468 RunBuildRasterTaskQueueTest("32_0", 32, 0); |
466 RunBuildRasterTaskQueueTest("1_1", 1, 1); | 469 RunBuildRasterTaskQueueTest("1_1", 1, 1); |
467 RunBuildRasterTaskQueueTest("32_1", 32, 1); | 470 RunBuildRasterTaskQueueTest("32_1", 32, 1); |
468 RunBuildRasterTaskQueueTest("1_4", 1, 4); | 471 RunBuildRasterTaskQueueTest("1_4", 1, 4); |
469 RunBuildRasterTaskQueueTest("32_4", 32, 4); | 472 RunBuildRasterTaskQueueTest("32_4", 32, 4); |
470 } | 473 } |
471 | 474 |
472 } // namespace | 475 } // namespace |
473 } // namespace cc | 476 } // namespace cc |
OLD | NEW |