| 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/debug/trace_event_synthetic_delay.h" | 7 #include "base/debug/trace_event_synthetic_delay.h" |
| 8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
| 9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 366 void RunOnOriginThread() const { | 366 void RunOnOriginThread() const { |
| 367 on_raster_finished_callback_.Run(this); | 367 on_raster_finished_callback_.Run(this); |
| 368 } | 368 } |
| 369 | 369 |
| 370 scoped_refptr<base::MessageLoopProxy> origin_loop_; | 370 scoped_refptr<base::MessageLoopProxy> origin_loop_; |
| 371 const Callback on_raster_finished_callback_; | 371 const Callback on_raster_finished_callback_; |
| 372 | 372 |
| 373 DISALLOW_COPY_AND_ASSIGN(RasterFinishedWorkerPoolTaskImpl); | 373 DISALLOW_COPY_AND_ASSIGN(RasterFinishedWorkerPoolTaskImpl); |
| 374 }; | 374 }; |
| 375 | 375 |
| 376 const int kDefaultNumRasterThreads = 1; |
| 377 |
| 378 int g_num_raster_threads = 0; |
| 379 |
| 376 class RasterRequiredForActivationFinishedWorkerPoolTaskImpl | 380 class RasterRequiredForActivationFinishedWorkerPoolTaskImpl |
| 377 : public RasterFinishedWorkerPoolTaskImpl { | 381 : public RasterFinishedWorkerPoolTaskImpl { |
| 378 public: | 382 public: |
| 379 RasterRequiredForActivationFinishedWorkerPoolTaskImpl( | 383 RasterRequiredForActivationFinishedWorkerPoolTaskImpl( |
| 380 const Callback& on_raster_finished_callback, | 384 const Callback& on_raster_finished_callback, |
| 381 size_t tasks_required_for_activation_count) | 385 size_t tasks_required_for_activation_count) |
| 382 : RasterFinishedWorkerPoolTaskImpl(on_raster_finished_callback), | 386 : RasterFinishedWorkerPoolTaskImpl(on_raster_finished_callback), |
| 383 tasks_required_for_activation_count_( | 387 tasks_required_for_activation_count_( |
| 384 tasks_required_for_activation_count) { | 388 tasks_required_for_activation_count) { |
| 385 if (tasks_required_for_activation_count_) { | 389 if (tasks_required_for_activation_count_) { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 403 private: | 407 private: |
| 404 virtual ~RasterRequiredForActivationFinishedWorkerPoolTaskImpl() {} | 408 virtual ~RasterRequiredForActivationFinishedWorkerPoolTaskImpl() {} |
| 405 | 409 |
| 406 base::TimeTicks activation_delay_end_time_; | 410 base::TimeTicks activation_delay_end_time_; |
| 407 const size_t tasks_required_for_activation_count_; | 411 const size_t tasks_required_for_activation_count_; |
| 408 | 412 |
| 409 DISALLOW_COPY_AND_ASSIGN( | 413 DISALLOW_COPY_AND_ASSIGN( |
| 410 RasterRequiredForActivationFinishedWorkerPoolTaskImpl); | 414 RasterRequiredForActivationFinishedWorkerPoolTaskImpl); |
| 411 }; | 415 }; |
| 412 | 416 |
| 413 const char* kWorkerThreadNamePrefix = "CompositorRaster"; | |
| 414 | 417 |
| 415 } // namespace | 418 } // namespace |
| 416 | 419 |
| 417 namespace internal { | 420 namespace internal { |
| 418 | 421 |
| 419 RasterWorkerPoolTask::RasterWorkerPoolTask(const Resource* resource, | 422 RasterWorkerPoolTask::RasterWorkerPoolTask(const Resource* resource, |
| 420 TaskVector* dependencies, | 423 TaskVector* dependencies, |
| 421 bool use_gpu_rasterization) | 424 bool use_gpu_rasterization) |
| 422 : did_run_(false), | 425 : did_run_(false), |
| 423 did_complete_(false), | 426 did_complete_(false), |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 549 SkPixelRef* pixel_ref, | 552 SkPixelRef* pixel_ref, |
| 550 int layer_id, | 553 int layer_id, |
| 551 RenderingStatsInstrumentation* stats_instrumentation, | 554 RenderingStatsInstrumentation* stats_instrumentation, |
| 552 const Task::Reply& reply) { | 555 const Task::Reply& reply) { |
| 553 return Task(new ImageDecodeWorkerPoolTaskImpl(pixel_ref, | 556 return Task(new ImageDecodeWorkerPoolTaskImpl(pixel_ref, |
| 554 layer_id, | 557 layer_id, |
| 555 stats_instrumentation, | 558 stats_instrumentation, |
| 556 reply)); | 559 reply)); |
| 557 } | 560 } |
| 558 | 561 |
| 562 // static |
| 563 void RasterWorkerPool::SetNumRasterThreads(int num_threads) { |
| 564 DCHECK_LT(0, num_threads); |
| 565 DCHECK_EQ(0, g_num_raster_threads); |
| 566 |
| 567 g_num_raster_threads = num_threads; |
| 568 } |
| 569 |
| 570 // static |
| 571 int WorkerPool::GetNumRasterThreads() { |
| 572 if (!g_num_raster_threads) |
| 573 g_num_raster_threads = kDefaultNumRasterThreads; |
| 574 |
| 575 return g_num_raster_threads; |
| 576 } |
| 577 |
| 559 RasterWorkerPool::RasterWorkerPool(ResourceProvider* resource_provider, | 578 RasterWorkerPool::RasterWorkerPool(ResourceProvider* resource_provider, |
| 560 ContextProvider* context_provider, | 579 ContextProvider* context_provider) |
| 561 size_t num_threads) | 580 : client_(NULL), |
| 562 : WorkerPool(num_threads, kWorkerThreadNamePrefix), | |
| 563 client_(NULL), | |
| 564 resource_provider_(resource_provider), | 581 resource_provider_(resource_provider), |
| 565 context_provider_(context_provider), | 582 context_provider_(context_provider), |
| 566 weak_ptr_factory_(this) { | 583 weak_ptr_factory_(this) { |
| 567 } | 584 } |
| 568 | 585 |
| 569 RasterWorkerPool::~RasterWorkerPool() { | 586 RasterWorkerPool::~RasterWorkerPool() { |
| 570 } | 587 } |
| 571 | 588 |
| 572 void RasterWorkerPool::SetClient(RasterWorkerPoolClient* client) { | 589 void RasterWorkerPool::SetClient(RasterWorkerPoolClient* client) { |
| 573 client_ = client; | 590 client_ = client; |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 730 | 747 |
| 731 internal::GraphNode* decode_node = CreateGraphNodeForTask( | 748 internal::GraphNode* decode_node = CreateGraphNodeForTask( |
| 732 decode_task, priority, graph); | 749 decode_task, priority, graph); |
| 733 decode_node->add_dependent(raster_node); | 750 decode_node->add_dependent(raster_node); |
| 734 } | 751 } |
| 735 | 752 |
| 736 return raster_node; | 753 return raster_node; |
| 737 } | 754 } |
| 738 | 755 |
| 739 } // namespace cc | 756 } // namespace cc |
| OLD | NEW |