| 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/tile_task_worker_pool.h" | 5 #include "cc/resources/tile_task_worker_pool.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/cancelable_callback.h" | 10 #include "base/cancelable_callback.h" |
| 11 #include "cc/base/unique_notifier.h" |
| 11 #include "cc/resources/bitmap_tile_task_worker_pool.h" | 12 #include "cc/resources/bitmap_tile_task_worker_pool.h" |
| 12 #include "cc/resources/gpu_tile_task_worker_pool.h" | 13 #include "cc/resources/gpu_tile_task_worker_pool.h" |
| 13 #include "cc/resources/one_copy_tile_task_worker_pool.h" | 14 #include "cc/resources/one_copy_tile_task_worker_pool.h" |
| 14 #include "cc/resources/picture_pile.h" | 15 #include "cc/resources/picture_pile.h" |
| 15 #include "cc/resources/picture_pile_impl.h" | 16 #include "cc/resources/picture_pile_impl.h" |
| 16 #include "cc/resources/pixel_buffer_tile_task_worker_pool.h" | 17 #include "cc/resources/pixel_buffer_tile_task_worker_pool.h" |
| 17 #include "cc/resources/raster_buffer.h" | 18 #include "cc/resources/raster_buffer.h" |
| 18 #include "cc/resources/resource_pool.h" | 19 #include "cc/resources/resource_pool.h" |
| 19 #include "cc/resources/resource_provider.h" | 20 #include "cc/resources/resource_provider.h" |
| 20 #include "cc/resources/scoped_resource.h" | 21 #include "cc/resources/scoped_resource.h" |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 unsigned id; | 119 unsigned id; |
| 119 bool canceled; | 120 bool canceled; |
| 120 }; | 121 }; |
| 121 | 122 |
| 122 typedef std::vector<scoped_refptr<RasterTask>> RasterTaskVector; | 123 typedef std::vector<scoped_refptr<RasterTask>> RasterTaskVector; |
| 123 | 124 |
| 124 enum NamedTaskSet { ALL, REQUIRED_FOR_ACTIVATION, REQUIRED_FOR_DRAW }; | 125 enum NamedTaskSet { ALL, REQUIRED_FOR_ACTIVATION, REQUIRED_FOR_DRAW }; |
| 125 | 126 |
| 126 TileTaskWorkerPoolTest() | 127 TileTaskWorkerPoolTest() |
| 127 : context_provider_(TestContextProvider::Create()), | 128 : context_provider_(TestContextProvider::Create()), |
| 129 all_tile_tasks_finished_( |
| 130 base::MessageLoopProxy::current().get(), |
| 131 base::Bind(&TileTaskWorkerPoolTest::AllTileTasksFinished, |
| 132 base::Unretained(this))), |
| 128 timeout_seconds_(5), | 133 timeout_seconds_(5), |
| 129 timed_out_(false) {} | 134 timed_out_(false) {} |
| 130 | 135 |
| 131 // Overridden from testing::Test: | 136 // Overridden from testing::Test: |
| 132 void SetUp() override { | 137 void SetUp() override { |
| 133 switch (GetParam()) { | 138 switch (GetParam()) { |
| 134 case TILE_TASK_WORKER_POOL_TYPE_PIXEL_BUFFER: | 139 case TILE_TASK_WORKER_POOL_TYPE_PIXEL_BUFFER: |
| 135 Create3dOutputSurfaceAndResourceProvider(); | 140 Create3dOutputSurfaceAndResourceProvider(); |
| 136 tile_task_worker_pool_ = PixelBufferTileTaskWorkerPool::Create( | 141 tile_task_worker_pool_ = PixelBufferTileTaskWorkerPool::Create( |
| 137 base::MessageLoopProxy::current().get(), | 142 base::MessageLoopProxy::current().get(), |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 | 174 |
| 170 DCHECK(tile_task_worker_pool_); | 175 DCHECK(tile_task_worker_pool_); |
| 171 tile_task_worker_pool_->AsTileTaskRunner()->SetClient(this); | 176 tile_task_worker_pool_->AsTileTaskRunner()->SetClient(this); |
| 172 } | 177 } |
| 173 | 178 |
| 174 void TearDown() override { | 179 void TearDown() override { |
| 175 tile_task_worker_pool_->AsTileTaskRunner()->Shutdown(); | 180 tile_task_worker_pool_->AsTileTaskRunner()->Shutdown(); |
| 176 tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks(); | 181 tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks(); |
| 177 } | 182 } |
| 178 | 183 |
| 184 void AllTileTasksFinished() { |
| 185 tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks(); |
| 186 base::MessageLoop::current()->Quit(); |
| 187 } |
| 188 |
| 179 // Overriden from TileTaskWorkerPoolClient: | 189 // Overriden from TileTaskWorkerPoolClient: |
| 180 void DidFinishRunningTileTasks(TaskSet task_set) override { | 190 void DidFinishRunningTileTasks(TaskSet task_set) override { |
| 181 if (task_set == ALL) { | 191 if (task_set == ALL) |
| 182 tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks(); | 192 all_tile_tasks_finished_.Schedule(); |
| 183 base::MessageLoop::current()->Quit(); | |
| 184 } | |
| 185 } | 193 } |
| 194 |
| 186 TaskSetCollection TasksThatShouldBeForcedToComplete() const override { | 195 TaskSetCollection TasksThatShouldBeForcedToComplete() const override { |
| 187 return TaskSetCollection(); | 196 return TaskSetCollection(); |
| 188 } | 197 } |
| 189 | 198 |
| 190 void RunMessageLoopUntilAllTasksHaveCompleted() { | 199 void RunMessageLoopUntilAllTasksHaveCompleted() { |
| 191 if (timeout_seconds_) { | 200 if (timeout_seconds_) { |
| 192 timeout_.Reset(base::Bind(&TileTaskWorkerPoolTest::OnTimeout, | 201 timeout_.Reset(base::Bind(&TileTaskWorkerPoolTest::OnTimeout, |
| 193 base::Unretained(this))); | 202 base::Unretained(this))); |
| 194 base::MessageLoopProxy::current()->PostDelayedTask( | 203 base::MessageLoopProxy::current()->PostDelayedTask( |
| 195 FROM_HERE, timeout_.callback(), | 204 FROM_HERE, timeout_.callback(), |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 protected: | 299 protected: |
| 291 scoped_refptr<TestContextProvider> context_provider_; | 300 scoped_refptr<TestContextProvider> context_provider_; |
| 292 FakeOutputSurfaceClient output_surface_client_; | 301 FakeOutputSurfaceClient output_surface_client_; |
| 293 scoped_ptr<FakeOutputSurface> output_surface_; | 302 scoped_ptr<FakeOutputSurface> output_surface_; |
| 294 scoped_ptr<ResourceProvider> resource_provider_; | 303 scoped_ptr<ResourceProvider> resource_provider_; |
| 295 scoped_ptr<ResourcePool> staging_resource_pool_; | 304 scoped_ptr<ResourcePool> staging_resource_pool_; |
| 296 scoped_ptr<TileTaskWorkerPool> tile_task_worker_pool_; | 305 scoped_ptr<TileTaskWorkerPool> tile_task_worker_pool_; |
| 297 TestGpuMemoryBufferManager gpu_memory_buffer_manager_; | 306 TestGpuMemoryBufferManager gpu_memory_buffer_manager_; |
| 298 TestSharedBitmapManager shared_bitmap_manager_; | 307 TestSharedBitmapManager shared_bitmap_manager_; |
| 299 base::CancelableClosure timeout_; | 308 base::CancelableClosure timeout_; |
| 309 UniqueNotifier all_tile_tasks_finished_; |
| 300 int timeout_seconds_; | 310 int timeout_seconds_; |
| 301 bool timed_out_; | 311 bool timed_out_; |
| 302 RasterTaskVector tasks_; | 312 RasterTaskVector tasks_; |
| 303 std::vector<RasterTaskResult> completed_tasks_; | 313 std::vector<RasterTaskResult> completed_tasks_; |
| 304 }; | 314 }; |
| 305 | 315 |
| 306 TEST_P(TileTaskWorkerPoolTest, Basic) { | 316 TEST_P(TileTaskWorkerPoolTest, Basic) { |
| 307 AppendTask(0u); | 317 AppendTask(0u); |
| 308 AppendTask(1u); | 318 AppendTask(1u); |
| 309 ScheduleTasks(); | 319 ScheduleTasks(); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 379 TileTaskWorkerPoolTests, | 389 TileTaskWorkerPoolTests, |
| 380 TileTaskWorkerPoolTest, | 390 TileTaskWorkerPoolTest, |
| 381 ::testing::Values(TILE_TASK_WORKER_POOL_TYPE_PIXEL_BUFFER, | 391 ::testing::Values(TILE_TASK_WORKER_POOL_TYPE_PIXEL_BUFFER, |
| 382 TILE_TASK_WORKER_POOL_TYPE_ZERO_COPY, | 392 TILE_TASK_WORKER_POOL_TYPE_ZERO_COPY, |
| 383 TILE_TASK_WORKER_POOL_TYPE_ONE_COPY, | 393 TILE_TASK_WORKER_POOL_TYPE_ONE_COPY, |
| 384 TILE_TASK_WORKER_POOL_TYPE_GPU, | 394 TILE_TASK_WORKER_POOL_TYPE_GPU, |
| 385 TILE_TASK_WORKER_POOL_TYPE_BITMAP)); | 395 TILE_TASK_WORKER_POOL_TYPE_BITMAP)); |
| 386 | 396 |
| 387 } // namespace | 397 } // namespace |
| 388 } // namespace cc | 398 } // namespace cc |
| OLD | NEW |