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 #ifndef CC_RESOURCES_RASTER_WORKER_POOL_H_ | 5 #ifndef CC_RESOURCES_RASTER_WORKER_POOL_H_ |
6 #define CC_RESOURCES_RASTER_WORKER_POOL_H_ | 6 #define CC_RESOURCES_RASTER_WORKER_POOL_H_ |
7 | 7 |
8 #include <deque> | 8 #include <deque> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 // Force a check for completed tasks. | 234 // Force a check for completed tasks. |
235 virtual void CheckForCompletedTasks() = 0; | 235 virtual void CheckForCompletedTasks() = 0; |
236 | 236 |
237 // Returns the target that needs to be used for raster task resources. | 237 // Returns the target that needs to be used for raster task resources. |
238 virtual unsigned GetResourceTarget() const = 0; | 238 virtual unsigned GetResourceTarget() const = 0; |
239 | 239 |
240 // Returns the format that needs to be used for raster task resources. | 240 // Returns the format that needs to be used for raster task resources. |
241 virtual ResourceFormat GetResourceFormat() const = 0; | 241 virtual ResourceFormat GetResourceFormat() const = 0; |
242 | 242 |
243 protected: | 243 protected: |
244 typedef internal::TaskGraphRunner::TaskGraph TaskGraph; | |
245 typedef std::vector<scoped_refptr<internal::WorkerPoolTask> > TaskVector; | 244 typedef std::vector<scoped_refptr<internal::WorkerPoolTask> > TaskVector; |
246 typedef std::deque<scoped_refptr<internal::WorkerPoolTask> > TaskDeque; | 245 typedef std::deque<scoped_refptr<internal::WorkerPoolTask> > TaskDeque; |
247 typedef std::vector<scoped_refptr<internal::RasterWorkerPoolTask> > | 246 typedef std::vector<scoped_refptr<internal::RasterWorkerPoolTask> > |
248 RasterTaskVector; | 247 RasterTaskVector; |
249 typedef base::hash_set<internal::RasterWorkerPoolTask*> RasterTaskSet; | 248 typedef base::hash_set<internal::RasterWorkerPoolTask*> RasterTaskSet; |
250 | 249 |
251 RasterWorkerPool(ResourceProvider* resource_provider, | 250 RasterWorkerPool(ResourceProvider* resource_provider, |
252 ContextProvider* context_provider); | 251 ContextProvider* context_provider); |
253 | 252 |
254 virtual void OnRasterTasksFinished() = 0; | 253 virtual void OnRasterTasksFinished() = 0; |
255 virtual void OnRasterTasksRequiredForActivationFinished() = 0; | 254 virtual void OnRasterTasksRequiredForActivationFinished() = 0; |
256 | 255 |
257 void SetRasterTasks(RasterTask::Queue* queue); | 256 void SetRasterTasks(RasterTask::Queue* queue); |
258 bool IsRasterTaskRequiredForActivation(internal::RasterWorkerPoolTask* task) | 257 bool IsRasterTaskRequiredForActivation(internal::RasterWorkerPoolTask* task) |
259 const; | 258 const; |
260 void SetTaskGraph(TaskGraph* graph); | 259 void SetTaskGraph(internal::TaskGraph* graph); |
261 void CollectCompletedWorkerPoolTasks(internal::Task::Vector* completed_tasks); | 260 void CollectCompletedWorkerPoolTasks(internal::Task::Vector* completed_tasks); |
262 | 261 |
263 // Run raster tasks that use GPU on current thread. | 262 // Run raster tasks that use GPU on current thread. |
264 void RunGpuRasterTasks(const RasterTaskVector& tasks); | 263 void RunGpuRasterTasks(const RasterTaskVector& tasks); |
265 void CheckForCompletedGpuRasterTasks(); | 264 void CheckForCompletedGpuRasterTasks(); |
266 | 265 |
267 RasterWorkerPoolClient* client() const { return client_; } | 266 RasterWorkerPoolClient* client() const { return client_; } |
268 ResourceProvider* resource_provider() const { return resource_provider_; } | 267 ResourceProvider* resource_provider() const { return resource_provider_; } |
269 ContextProvider* context_provider() const { return context_provider_; } | 268 ContextProvider* context_provider() const { return context_provider_; } |
270 const RasterTaskVector& raster_tasks() const { return raster_tasks_; } | 269 const RasterTaskVector& raster_tasks() const { return raster_tasks_; } |
(...skipping 10 matching lines...) Expand all Loading... |
281 raster_required_for_activation_finished_task; | 280 raster_required_for_activation_finished_task; |
282 } | 281 } |
283 | 282 |
284 scoped_refptr<internal::WorkerPoolTask> CreateRasterFinishedTask(); | 283 scoped_refptr<internal::WorkerPoolTask> CreateRasterFinishedTask(); |
285 scoped_refptr<internal::WorkerPoolTask> | 284 scoped_refptr<internal::WorkerPoolTask> |
286 CreateRasterRequiredForActivationFinishedTask( | 285 CreateRasterRequiredForActivationFinishedTask( |
287 size_t tasks_required_for_activation_count); | 286 size_t tasks_required_for_activation_count); |
288 | 287 |
289 scoped_ptr<base::Value> ScheduledStateAsValue() const; | 288 scoped_ptr<base::Value> ScheduledStateAsValue() const; |
290 | 289 |
291 static internal::GraphNode* CreateGraphNodeForTask( | 290 static void InsertNodeForTask(internal::TaskGraph* graph, |
| 291 internal::WorkerPoolTask* task, |
| 292 unsigned priority, |
| 293 size_t dependencies); |
| 294 |
| 295 static void InsertNodeForRasterTask( |
| 296 internal::TaskGraph* graph, |
292 internal::WorkerPoolTask* task, | 297 internal::WorkerPoolTask* task, |
293 unsigned priority, | 298 const internal::Task::Vector& decode_tasks, |
294 TaskGraph* graph); | 299 unsigned priority); |
295 | 300 |
296 static internal::GraphNode* CreateGraphNodeForRasterTask( | 301 static unsigned kRasterFinishedTaskPriority; |
297 internal::WorkerPoolTask* raster_task, | 302 static unsigned kRasterRequiredForActivationFinishedTaskPriority; |
298 const internal::Task::Vector& decode_tasks, | 303 static unsigned kRasterTaskPriorityBase; |
299 unsigned priority, | |
300 TaskGraph* graph); | |
301 | 304 |
302 private: | 305 private: |
303 void OnRasterFinished(const internal::WorkerPoolTask* source); | 306 void OnRasterFinished(const internal::WorkerPoolTask* source); |
304 void OnRasterRequiredForActivationFinished( | 307 void OnRasterRequiredForActivationFinished( |
305 const internal::WorkerPoolTask* source); | 308 const internal::WorkerPoolTask* source); |
306 | 309 |
307 internal::NamespaceToken namespace_token_; | 310 internal::NamespaceToken namespace_token_; |
308 RasterWorkerPoolClient* client_; | 311 RasterWorkerPoolClient* client_; |
309 ResourceProvider* resource_provider_; | 312 ResourceProvider* resource_provider_; |
310 ContextProvider* context_provider_; | 313 ContextProvider* context_provider_; |
311 RasterTask::Queue::TaskVector raster_tasks_; | 314 RasterTask::Queue::TaskVector raster_tasks_; |
312 RasterTask::Queue::TaskSet raster_tasks_required_for_activation_; | 315 RasterTask::Queue::TaskSet raster_tasks_required_for_activation_; |
313 TaskDeque completed_gpu_raster_tasks_; | 316 TaskDeque completed_gpu_raster_tasks_; |
314 | 317 |
315 scoped_refptr<internal::WorkerPoolTask> raster_finished_task_; | 318 scoped_refptr<internal::WorkerPoolTask> raster_finished_task_; |
316 scoped_refptr<internal::WorkerPoolTask> | 319 scoped_refptr<internal::WorkerPoolTask> |
317 raster_required_for_activation_finished_task_; | 320 raster_required_for_activation_finished_task_; |
318 base::WeakPtrFactory<RasterWorkerPool> weak_ptr_factory_; | 321 base::WeakPtrFactory<RasterWorkerPool> weak_ptr_factory_; |
319 }; | 322 }; |
320 | 323 |
321 } // namespace cc | 324 } // namespace cc |
322 | 325 |
323 #endif // CC_RESOURCES_RASTER_WORKER_POOL_H_ | 326 #endif // CC_RESOURCES_RASTER_WORKER_POOL_H_ |
OLD | NEW |