Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(336)

Side by Side Diff: cc/resources/tile_task_worker_pool_unittest.cc

Issue 839143002: Roll Chrome into Mojo. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Rebase Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/resources/tile_task_worker_pool_perftest.cc ('k') | cc/resources/tiling_set_raster_queue.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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"
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 : public testing::TestWithParam<TileTaskWorkerPoolType>, 115 : public testing::TestWithParam<TileTaskWorkerPoolType>,
116 public TileTaskRunnerClient { 116 public TileTaskRunnerClient {
117 public: 117 public:
118 struct RasterTaskResult { 118 struct RasterTaskResult {
119 unsigned id; 119 unsigned id;
120 bool canceled; 120 bool canceled;
121 }; 121 };
122 122
123 typedef std::vector<scoped_refptr<RasterTask>> RasterTaskVector; 123 typedef std::vector<scoped_refptr<RasterTask>> RasterTaskVector;
124 124
125 enum NamedTaskSet { ALL, REQUIRED_FOR_ACTIVATION, REQUIRED_FOR_DRAW }; 125 enum NamedTaskSet { REQUIRED_FOR_ACTIVATION, REQUIRED_FOR_DRAW, ALL };
126 126
127 TileTaskWorkerPoolTest() 127 TileTaskWorkerPoolTest()
128 : context_provider_(TestContextProvider::Create()), 128 : context_provider_(TestContextProvider::Create()),
129 all_tile_tasks_finished_( 129 all_tile_tasks_finished_(
130 base::MessageLoopProxy::current().get(), 130 base::MessageLoopProxy::current().get(),
131 base::Bind(&TileTaskWorkerPoolTest::AllTileTasksFinished, 131 base::Bind(&TileTaskWorkerPoolTest::AllTileTasksFinished,
132 base::Unretained(this))), 132 base::Unretained(this))),
133 timeout_seconds_(5), 133 timeout_seconds_(5),
134 timed_out_(false) {} 134 timed_out_(false) {}
135 135
(...skipping 18 matching lines...) Expand all
154 staging_resource_pool_ = ResourcePool::Create(resource_provider_.get(), 154 staging_resource_pool_ = ResourcePool::Create(resource_provider_.get(),
155 GL_TEXTURE_2D, RGBA_8888); 155 GL_TEXTURE_2D, RGBA_8888);
156 tile_task_worker_pool_ = OneCopyTileTaskWorkerPool::Create( 156 tile_task_worker_pool_ = OneCopyTileTaskWorkerPool::Create(
157 base::MessageLoopProxy::current().get(), 157 base::MessageLoopProxy::current().get(),
158 TileTaskWorkerPool::GetTaskGraphRunner(), context_provider_.get(), 158 TileTaskWorkerPool::GetTaskGraphRunner(), context_provider_.get(),
159 resource_provider_.get(), staging_resource_pool_.get()); 159 resource_provider_.get(), staging_resource_pool_.get());
160 break; 160 break;
161 case TILE_TASK_WORKER_POOL_TYPE_GPU: 161 case TILE_TASK_WORKER_POOL_TYPE_GPU:
162 Create3dOutputSurfaceAndResourceProvider(); 162 Create3dOutputSurfaceAndResourceProvider();
163 tile_task_worker_pool_ = GpuTileTaskWorkerPool::Create( 163 tile_task_worker_pool_ = GpuTileTaskWorkerPool::Create(
164 base::MessageLoopProxy::current().get(), context_provider_.get(), 164 base::MessageLoopProxy::current().get(),
165 resource_provider_.get(), false); 165 TileTaskWorkerPool::GetTaskGraphRunner());
166 break; 166 break;
167 case TILE_TASK_WORKER_POOL_TYPE_BITMAP: 167 case TILE_TASK_WORKER_POOL_TYPE_BITMAP:
168 CreateSoftwareOutputSurfaceAndResourceProvider(); 168 CreateSoftwareOutputSurfaceAndResourceProvider();
169 tile_task_worker_pool_ = BitmapTileTaskWorkerPool::Create( 169 tile_task_worker_pool_ = BitmapTileTaskWorkerPool::Create(
170 base::MessageLoopProxy::current().get(), 170 base::MessageLoopProxy::current().get(),
171 TileTaskWorkerPool::GetTaskGraphRunner(), resource_provider_.get()); 171 TileTaskWorkerPool::GetTaskGraphRunner(), resource_provider_.get());
172 break; 172 break;
173 } 173 }
174 174
175 DCHECK(tile_task_worker_pool_); 175 DCHECK(tile_task_worker_pool_);
176 tile_task_worker_pool_->AsTileTaskRunner()->SetClient(this); 176 tile_task_worker_pool_->AsTileTaskRunner()->SetClient(this);
177 } 177 }
178 178
179 void TearDown() override { 179 void TearDown() override {
180 tile_task_worker_pool_->AsTileTaskRunner()->Shutdown(); 180 tile_task_worker_pool_->AsTileTaskRunner()->Shutdown();
181 tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks(); 181 tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks();
182 } 182 }
183 183
184 void AllTileTasksFinished() { 184 void AllTileTasksFinished() {
185 tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks(); 185 tile_task_worker_pool_->AsTileTaskRunner()->CheckForCompletedTasks();
186 base::MessageLoop::current()->Quit(); 186 base::MessageLoop::current()->Quit();
187 } 187 }
188 188
189 // Overriden from TileTaskWorkerPoolClient: 189 // Overriden from TileTaskWorkerPoolClient:
190 void DidFinishRunningTileTasks(TaskSet task_set) override { 190 void DidFinishRunningTileTasks(TaskSet task_set) override {
191 if (task_set == ALL) 191 EXPECT_FALSE(completed_task_sets_[task_set]);
192 completed_task_sets_[task_set] = true;
193 if (task_set == ALL) {
194 EXPECT_TRUE((~completed_task_sets_).none());
192 all_tile_tasks_finished_.Schedule(); 195 all_tile_tasks_finished_.Schedule();
196 }
193 } 197 }
194 198
195 TaskSetCollection TasksThatShouldBeForcedToComplete() const override { 199 TaskSetCollection TasksThatShouldBeForcedToComplete() const override {
196 return TaskSetCollection(); 200 return TaskSetCollection();
197 } 201 }
198 202
199 void RunMessageLoopUntilAllTasksHaveCompleted() { 203 void RunMessageLoopUntilAllTasksHaveCompleted() {
200 if (timeout_seconds_) { 204 if (timeout_seconds_) {
201 timeout_.Reset(base::Bind(&TileTaskWorkerPoolTest::OnTimeout, 205 timeout_.Reset(base::Bind(&TileTaskWorkerPoolTest::OnTimeout,
202 base::Unretained(this))); 206 base::Unretained(this)));
203 base::MessageLoopProxy::current()->PostDelayedTask( 207 base::MessageLoopProxy::current()->PostDelayedTask(
204 FROM_HERE, timeout_.callback(), 208 FROM_HERE, timeout_.callback(),
205 base::TimeDelta::FromSeconds(timeout_seconds_)); 209 base::TimeDelta::FromSeconds(timeout_seconds_));
206 } 210 }
207 211
208 base::MessageLoop::current()->Run(); 212 base::MessageLoop::current()->Run();
209 213
210 timeout_.Cancel(); 214 timeout_.Cancel();
211 215
212 ASSERT_FALSE(timed_out_) << "Test timed out"; 216 ASSERT_FALSE(timed_out_) << "Test timed out";
213 } 217 }
214 218
215 void ScheduleTasks() { 219 void ScheduleTasks() {
216 TileTaskQueue queue; 220 TileTaskQueue queue;
217 221
218 for (RasterTaskVector::const_iterator it = tasks_.begin(); 222 for (RasterTaskVector::const_iterator it = tasks_.begin();
219 it != tasks_.end(); ++it) { 223 it != tasks_.end(); ++it) {
220 TaskSetCollection task_sets; 224 TaskSetCollection task_sets;
225 task_sets[REQUIRED_FOR_ACTIVATION] = true;
226 task_sets[REQUIRED_FOR_DRAW] = true;
221 task_sets[ALL] = true; 227 task_sets[ALL] = true;
222 queue.items.push_back(TileTaskQueue::Item(it->get(), task_sets)); 228 queue.items.push_back(TileTaskQueue::Item(it->get(), task_sets));
223 } 229 }
224 230
231 completed_task_sets_.reset();
225 tile_task_worker_pool_->AsTileTaskRunner()->ScheduleTasks(&queue); 232 tile_task_worker_pool_->AsTileTaskRunner()->ScheduleTasks(&queue);
226 } 233 }
227 234
228 void AppendTask(unsigned id, const gfx::Size& size) { 235 void AppendTask(unsigned id, const gfx::Size& size) {
229 scoped_ptr<ScopedResource> resource( 236 scoped_ptr<ScopedResource> resource(
230 ScopedResource::Create(resource_provider_.get())); 237 ScopedResource::Create(resource_provider_.get()));
231 resource->Allocate(size, ResourceProvider::TextureHintImmutable, RGBA_8888); 238 resource->Allocate(size, ResourceProvider::TextureHintImmutable, RGBA_8888);
232 const Resource* const_resource = resource.get(); 239 const Resource* const_resource = resource.get();
233 240
234 ImageDecodeTask::Vector empty; 241 ImageDecodeTask::Vector empty;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 scoped_ptr<ResourcePool> staging_resource_pool_; 311 scoped_ptr<ResourcePool> staging_resource_pool_;
305 scoped_ptr<TileTaskWorkerPool> tile_task_worker_pool_; 312 scoped_ptr<TileTaskWorkerPool> tile_task_worker_pool_;
306 TestGpuMemoryBufferManager gpu_memory_buffer_manager_; 313 TestGpuMemoryBufferManager gpu_memory_buffer_manager_;
307 TestSharedBitmapManager shared_bitmap_manager_; 314 TestSharedBitmapManager shared_bitmap_manager_;
308 base::CancelableClosure timeout_; 315 base::CancelableClosure timeout_;
309 UniqueNotifier all_tile_tasks_finished_; 316 UniqueNotifier all_tile_tasks_finished_;
310 int timeout_seconds_; 317 int timeout_seconds_;
311 bool timed_out_; 318 bool timed_out_;
312 RasterTaskVector tasks_; 319 RasterTaskVector tasks_;
313 std::vector<RasterTaskResult> completed_tasks_; 320 std::vector<RasterTaskResult> completed_tasks_;
321 TaskSetCollection completed_task_sets_;
314 }; 322 };
315 323
316 TEST_P(TileTaskWorkerPoolTest, Basic) { 324 TEST_P(TileTaskWorkerPoolTest, Basic) {
317 AppendTask(0u); 325 AppendTask(0u);
318 AppendTask(1u); 326 AppendTask(1u);
319 ScheduleTasks(); 327 ScheduleTasks();
320 328
321 RunMessageLoopUntilAllTasksHaveCompleted(); 329 RunMessageLoopUntilAllTasksHaveCompleted();
322 330
323 ASSERT_EQ(2u, completed_tasks().size()); 331 ASSERT_EQ(2u, completed_tasks().size());
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 TileTaskWorkerPoolTests, 397 TileTaskWorkerPoolTests,
390 TileTaskWorkerPoolTest, 398 TileTaskWorkerPoolTest,
391 ::testing::Values(TILE_TASK_WORKER_POOL_TYPE_PIXEL_BUFFER, 399 ::testing::Values(TILE_TASK_WORKER_POOL_TYPE_PIXEL_BUFFER,
392 TILE_TASK_WORKER_POOL_TYPE_ZERO_COPY, 400 TILE_TASK_WORKER_POOL_TYPE_ZERO_COPY,
393 TILE_TASK_WORKER_POOL_TYPE_ONE_COPY, 401 TILE_TASK_WORKER_POOL_TYPE_ONE_COPY,
394 TILE_TASK_WORKER_POOL_TYPE_GPU, 402 TILE_TASK_WORKER_POOL_TYPE_GPU,
395 TILE_TASK_WORKER_POOL_TYPE_BITMAP)); 403 TILE_TASK_WORKER_POOL_TYPE_BITMAP));
396 404
397 } // namespace 405 } // namespace
398 } // namespace cc 406 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/tile_task_worker_pool_perftest.cc ('k') | cc/resources/tiling_set_raster_queue.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698