| Index: cc/resources/tile_manager.cc
|
| diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc
|
| index 76cdb968ab2548eab5a80c0a2db11aeac2f451d4..494453e9f50236dd5f4b5cff179940691dda2db2 100644
|
| --- a/cc/resources/tile_manager.cc
|
| +++ b/cc/resources/tile_manager.cc
|
| @@ -15,7 +15,8 @@
|
| #include "cc/debug/devtools_instrumentation.h"
|
| #include "cc/debug/traced_value.h"
|
| #include "cc/layers/picture_layer_impl.h"
|
| -#include "cc/resources/raster_worker_pool_delegate.h"
|
| +#include "cc/resources/raster_worker_pool.h"
|
| +#include "cc/resources/rasterizer_delegate.h"
|
| #include "cc/resources/tile.h"
|
| #include "skia/ext/paint_simplifier.h"
|
| #include "third_party/skia/include/core/SkBitmap.h"
|
| @@ -44,9 +45,9 @@ class DisableLCDTextFilter : public SkDrawFilter {
|
| }
|
| };
|
|
|
| -class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
|
| +class RasterTaskImpl : public internal::RasterTask {
|
| public:
|
| - RasterWorkerPoolTaskImpl(
|
| + RasterTaskImpl(
|
| const Resource* resource,
|
| PicturePileImpl* picture_pile,
|
| const gfx::Rect& content_rect,
|
| @@ -59,8 +60,8 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
|
| bool analyze_picture,
|
| RenderingStatsInstrumentation* rendering_stats,
|
| const base::Callback<void(const PicturePileImpl::Analysis&, bool)>& reply,
|
| - internal::WorkerPoolTask::Vector* dependencies)
|
| - : internal::RasterWorkerPoolTask(resource, dependencies),
|
| + internal::ImageDecodeTask::Vector* dependencies)
|
| + : internal::RasterTask(resource, dependencies),
|
| picture_pile_(picture_pile),
|
| content_rect_(content_rect),
|
| contents_scale_(contents_scale),
|
| @@ -76,7 +77,7 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
|
|
|
| // Overridden from internal::Task:
|
| virtual void RunOnWorkerThread() OVERRIDE {
|
| - TRACE_EVENT0("cc", "RasterWorkerPoolTaskImpl::RunOnWorkerThread");
|
| + TRACE_EVENT0("cc", "RasterizerTaskImpl::RunOnWorkerThread");
|
|
|
| DCHECK(picture_pile_);
|
| if (canvas_) {
|
| @@ -85,21 +86,21 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
|
| }
|
| }
|
|
|
| - // Overridden from internal::WorkerPoolTask:
|
| - virtual void ScheduleOnOriginThread(internal::WorkerPoolTaskClient* client)
|
| + // Overridden from internal::RasterizerTask:
|
| + virtual void ScheduleOnOriginThread(internal::RasterizerTaskClient* client)
|
| OVERRIDE {
|
| DCHECK(!canvas_);
|
| - canvas_ = client->AcquireCanvasForRaster(this, resource());
|
| + canvas_ = client->AcquireCanvasForRaster(this);
|
| }
|
| virtual void RunOnOriginThread() OVERRIDE {
|
| - TRACE_EVENT0("cc", "RasterWorkerPoolTaskImpl::RunOnOriginThread");
|
| + TRACE_EVENT0("cc", "RasterTaskImpl::RunOnOriginThread");
|
| if (canvas_)
|
| AnalyzeAndRaster(picture_pile_);
|
| }
|
| - virtual void CompleteOnOriginThread(internal::WorkerPoolTaskClient* client)
|
| + virtual void CompleteOnOriginThread(internal::RasterizerTaskClient* client)
|
| OVERRIDE {
|
| canvas_ = NULL;
|
| - client->ReleaseCanvasForRaster(this, resource());
|
| + client->ReleaseCanvasForRaster(this);
|
| }
|
| virtual void RunReplyOnOriginThread() OVERRIDE {
|
| DCHECK(!canvas_);
|
| @@ -107,7 +108,7 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
|
| }
|
|
|
| protected:
|
| - virtual ~RasterWorkerPoolTaskImpl() { DCHECK(!canvas_); }
|
| + virtual ~RasterTaskImpl() { DCHECK(!canvas_); }
|
|
|
| private:
|
| scoped_ptr<base::Value> DataAsValue() const {
|
| @@ -134,7 +135,7 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
|
|
|
| void Analyze(PicturePileImpl* picture_pile) {
|
| TRACE_EVENT1("cc",
|
| - "RasterWorkerPoolTaskImpl::Analyze",
|
| + "RasterTaskImpl::Analyze",
|
| "data",
|
| TracedValue::FromValue(DataAsValue().release()));
|
|
|
| @@ -154,7 +155,7 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
|
| void Raster(PicturePileImpl* picture_pile) {
|
| TRACE_EVENT2(
|
| "cc",
|
| - "RasterWorkerPoolTaskImpl::Raster",
|
| + "RasterTaskImpl::Raster",
|
| "data",
|
| TracedValue::FromValue(DataAsValue().release()),
|
| "raster_mode",
|
| @@ -218,16 +219,15 @@ class RasterWorkerPoolTaskImpl : public internal::RasterWorkerPoolTask {
|
| const base::Callback<void(const PicturePileImpl::Analysis&, bool)> reply_;
|
| SkCanvas* canvas_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(RasterWorkerPoolTaskImpl);
|
| + DISALLOW_COPY_AND_ASSIGN(RasterTaskImpl);
|
| };
|
|
|
| -class ImageDecodeWorkerPoolTaskImpl : public internal::WorkerPoolTask {
|
| +class ImageDecodeTaskImpl : public internal::ImageDecodeTask {
|
| public:
|
| - ImageDecodeWorkerPoolTaskImpl(
|
| - SkPixelRef* pixel_ref,
|
| - int layer_id,
|
| - RenderingStatsInstrumentation* rendering_stats,
|
| - const base::Callback<void(bool was_canceled)>& reply)
|
| + ImageDecodeTaskImpl(SkPixelRef* pixel_ref,
|
| + int layer_id,
|
| + RenderingStatsInstrumentation* rendering_stats,
|
| + const base::Callback<void(bool was_canceled)>& reply)
|
| : pixel_ref_(skia::SharePtr(pixel_ref)),
|
| layer_id_(layer_id),
|
| rendering_stats_(rendering_stats),
|
| @@ -235,25 +235,25 @@ class ImageDecodeWorkerPoolTaskImpl : public internal::WorkerPoolTask {
|
|
|
| // Overridden from internal::Task:
|
| virtual void RunOnWorkerThread() OVERRIDE {
|
| - TRACE_EVENT0("cc", "ImageDecodeWorkerPoolTaskImpl::RunOnWorkerThread");
|
| + TRACE_EVENT0("cc", "ImageDecodeTaskImpl::RunOnWorkerThread");
|
| Decode();
|
| }
|
|
|
| - // Overridden from internal::WorkerPoolTask:
|
| - virtual void ScheduleOnOriginThread(internal::WorkerPoolTaskClient* client)
|
| + // Overridden from internal::RasterizerTask:
|
| + virtual void ScheduleOnOriginThread(internal::RasterizerTaskClient* client)
|
| OVERRIDE {}
|
| virtual void RunOnOriginThread() OVERRIDE {
|
| - TRACE_EVENT0("cc", "ImageDecodeWorkerPoolTaskImpl::RunOnOriginThread");
|
| + TRACE_EVENT0("cc", "ImageDecodeTaskImpl::RunOnOriginThread");
|
| Decode();
|
| }
|
| - virtual void CompleteOnOriginThread(internal::WorkerPoolTaskClient* client)
|
| + virtual void CompleteOnOriginThread(internal::RasterizerTaskClient* client)
|
| OVERRIDE {}
|
| virtual void RunReplyOnOriginThread() OVERRIDE {
|
| reply_.Run(!HasFinishedRunning());
|
| }
|
|
|
| protected:
|
| - virtual ~ImageDecodeWorkerPoolTaskImpl() {}
|
| + virtual ~ImageDecodeTaskImpl() {}
|
|
|
| private:
|
| void Decode() {
|
| @@ -269,7 +269,7 @@ class ImageDecodeWorkerPoolTaskImpl : public internal::WorkerPoolTask {
|
| RenderingStatsInstrumentation* rendering_stats_;
|
| const base::Callback<void(bool was_canceled)> reply_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(ImageDecodeWorkerPoolTaskImpl);
|
| + DISALLOW_COPY_AND_ASSIGN(ImageDecodeTaskImpl);
|
| };
|
|
|
| const size_t kScheduledRasterTasksLimit = 32u;
|
| @@ -398,15 +398,15 @@ scoped_ptr<base::Value> RasterTaskCompletionStatsAsValue(
|
| scoped_ptr<TileManager> TileManager::Create(
|
| TileManagerClient* client,
|
| ResourceProvider* resource_provider,
|
| - RasterWorkerPool* raster_worker_pool,
|
| - RasterWorkerPool* gpu_raster_worker_pool,
|
| + Rasterizer* rasterizer,
|
| + Rasterizer* gpu_rasterizer,
|
| size_t max_raster_usage_bytes,
|
| bool use_rasterize_on_demand,
|
| RenderingStatsInstrumentation* rendering_stats_instrumentation) {
|
| return make_scoped_ptr(new TileManager(client,
|
| resource_provider,
|
| - raster_worker_pool,
|
| - gpu_raster_worker_pool,
|
| + rasterizer,
|
| + gpu_rasterizer,
|
| max_raster_usage_bytes,
|
| use_rasterize_on_demand,
|
| rendering_stats_instrumentation));
|
| @@ -415,16 +415,15 @@ scoped_ptr<TileManager> TileManager::Create(
|
| TileManager::TileManager(
|
| TileManagerClient* client,
|
| ResourceProvider* resource_provider,
|
| - RasterWorkerPool* raster_worker_pool,
|
| - RasterWorkerPool* gpu_raster_worker_pool,
|
| + Rasterizer* rasterizer,
|
| + Rasterizer* gpu_rasterizer,
|
| size_t max_raster_usage_bytes,
|
| bool use_rasterize_on_demand,
|
| RenderingStatsInstrumentation* rendering_stats_instrumentation)
|
| : client_(client),
|
| - resource_pool_(
|
| - ResourcePool::Create(resource_provider,
|
| - raster_worker_pool->GetResourceTarget(),
|
| - raster_worker_pool->GetResourceFormat())),
|
| + resource_pool_(ResourcePool::Create(resource_provider,
|
| + rasterizer->GetResourceTarget(),
|
| + rasterizer->GetResourceFormat())),
|
| prioritized_tiles_dirty_(false),
|
| all_tiles_that_need_to_be_rasterized_have_memory_(true),
|
| all_tiles_required_for_activation_have_memory_(true),
|
| @@ -438,13 +437,13 @@ TileManager::TileManager(
|
| did_initialize_visible_tile_(false),
|
| did_check_for_completed_tasks_since_last_schedule_tasks_(true),
|
| use_rasterize_on_demand_(use_rasterize_on_demand),
|
| - resource_format_(raster_worker_pool->GetResourceFormat()) {
|
| - RasterWorkerPool* raster_worker_pools[NUM_RASTER_WORKER_POOL_TYPES] = {
|
| - raster_worker_pool, // RASTER_WORKER_POOL_TYPE_DEFAULT
|
| - gpu_raster_worker_pool, // RASTER_WORKER_POOL_TYPE_GPU
|
| + resource_format_(rasterizer->GetResourceFormat()) {
|
| + Rasterizer* rasterizers[NUM_RASTERIZER_TYPES] = {
|
| + rasterizer, // RASTERIZER_TYPE_DEFAULT
|
| + gpu_rasterizer, // RASTERIZER_TYPE_GPU
|
| };
|
| - raster_worker_pool_delegate_ = RasterWorkerPoolDelegate::Create(
|
| - this, raster_worker_pools, arraysize(raster_worker_pools));
|
| + rasterizer_delegate_ =
|
| + RasterizerDelegate::Create(this, rasterizers, arraysize(rasterizers));
|
| }
|
|
|
| TileManager::~TileManager() {
|
| @@ -455,14 +454,14 @@ TileManager::~TileManager() {
|
| CleanUpReleasedTiles();
|
| DCHECK_EQ(0u, tiles_.size());
|
|
|
| - RasterTaskQueue empty[NUM_RASTER_WORKER_POOL_TYPES];
|
| - raster_worker_pool_delegate_->ScheduleTasks(empty);
|
| + RasterTaskQueue empty[NUM_RASTERIZER_TYPES];
|
| + rasterizer_delegate_->ScheduleTasks(empty);
|
| orphan_raster_tasks_.clear();
|
|
|
| // This should finish all pending tasks and release any uninitialized
|
| // resources.
|
| - raster_worker_pool_delegate_->Shutdown();
|
| - raster_worker_pool_delegate_->CheckForCompletedTasks();
|
| + rasterizer_delegate_->Shutdown();
|
| + rasterizer_delegate_->CheckForCompletedTasks();
|
|
|
| DCHECK_EQ(0u, bytes_releasable_);
|
| DCHECK_EQ(0u, resources_releasable_);
|
| @@ -540,7 +539,7 @@ void TileManager::DidFinishRunningTasks() {
|
| !memory_usage_above_limit)
|
| return;
|
|
|
| - raster_worker_pool_delegate_->CheckForCompletedTasks();
|
| + rasterizer_delegate_->CheckForCompletedTasks();
|
| did_check_for_completed_tasks_since_last_schedule_tasks_ = true;
|
|
|
| TileVector tiles_that_need_to_be_rasterized;
|
| @@ -735,7 +734,7 @@ void TileManager::ManageTiles(const GlobalStateThatImpactsTilePriority& state) {
|
| // We need to call CheckForCompletedTasks() once in-between each call
|
| // to ScheduleTasks() to prevent canceled tasks from being scheduled.
|
| if (!did_check_for_completed_tasks_since_last_schedule_tasks_) {
|
| - raster_worker_pool_delegate_->CheckForCompletedTasks();
|
| + rasterizer_delegate_->CheckForCompletedTasks();
|
| did_check_for_completed_tasks_since_last_schedule_tasks_ = true;
|
| }
|
|
|
| @@ -764,7 +763,7 @@ void TileManager::ManageTiles(const GlobalStateThatImpactsTilePriority& state) {
|
| bool TileManager::UpdateVisibleTiles() {
|
| TRACE_EVENT0("cc", "TileManager::UpdateVisibleTiles");
|
|
|
| - raster_worker_pool_delegate_->CheckForCompletedTasks();
|
| + rasterizer_delegate_->CheckForCompletedTasks();
|
| did_check_for_completed_tasks_since_last_schedule_tasks_ = true;
|
|
|
| TRACE_EVENT_INSTANT1(
|
| @@ -1050,7 +1049,7 @@ void TileManager::ScheduleTasks(
|
|
|
| DCHECK(did_check_for_completed_tasks_since_last_schedule_tasks_);
|
|
|
| - for (size_t i = 0; i < NUM_RASTER_WORKER_POOL_TYPES; ++i)
|
| + for (size_t i = 0; i < NUM_RASTERIZER_TYPES; ++i)
|
| raster_queue_[i].Reset();
|
|
|
| // Build a new task queue containing all task currently needed. Tasks
|
| @@ -1069,9 +1068,8 @@ void TileManager::ScheduleTasks(
|
| if (!tile_version.raster_task_)
|
| tile_version.raster_task_ = CreateRasterTask(tile);
|
|
|
| - size_t pool_type = tile->use_gpu_rasterization()
|
| - ? RASTER_WORKER_POOL_TYPE_GPU
|
| - : RASTER_WORKER_POOL_TYPE_DEFAULT;
|
| + size_t pool_type = tile->use_gpu_rasterization() ? RASTERIZER_TYPE_GPU
|
| + : RASTERIZER_TYPE_DEFAULT;
|
|
|
| raster_queue_[pool_type].items.push_back(RasterTaskQueue::Item(
|
| tile_version.raster_task_.get(), tile->required_for_activation()));
|
| @@ -1086,7 +1084,7 @@ void TileManager::ScheduleTasks(
|
| // Schedule running of |raster_tasks_|. This replaces any previously
|
| // scheduled tasks and effectively cancels all tasks not present
|
| // in |raster_tasks_|.
|
| - raster_worker_pool_delegate_->ScheduleTasks(raster_queue_);
|
| + rasterizer_delegate_->ScheduleTasks(raster_queue_);
|
|
|
| // It's now safe to clean up orphan tasks as raster worker pool is not
|
| // allowed to keep around unreferenced raster tasks after ScheduleTasks() has
|
| @@ -1096,10 +1094,10 @@ void TileManager::ScheduleTasks(
|
| did_check_for_completed_tasks_since_last_schedule_tasks_ = false;
|
| }
|
|
|
| -scoped_refptr<internal::WorkerPoolTask> TileManager::CreateImageDecodeTask(
|
| +scoped_refptr<internal::ImageDecodeTask> TileManager::CreateImageDecodeTask(
|
| Tile* tile,
|
| SkPixelRef* pixel_ref) {
|
| - return make_scoped_refptr(new ImageDecodeWorkerPoolTaskImpl(
|
| + return make_scoped_refptr(new ImageDecodeTaskImpl(
|
| pixel_ref,
|
| tile->layer_id(),
|
| rendering_stats_instrumentation_,
|
| @@ -1109,8 +1107,7 @@ scoped_refptr<internal::WorkerPoolTask> TileManager::CreateImageDecodeTask(
|
| base::Unretained(pixel_ref))));
|
| }
|
|
|
| -scoped_refptr<internal::RasterWorkerPoolTask> TileManager::CreateRasterTask(
|
| - Tile* tile) {
|
| +scoped_refptr<internal::RasterTask> TileManager::CreateRasterTask(Tile* tile) {
|
| ManagedTileState& mts = tile->managed_state();
|
|
|
| scoped_ptr<ScopedResource> resource =
|
| @@ -1118,7 +1115,7 @@ scoped_refptr<internal::RasterWorkerPoolTask> TileManager::CreateRasterTask(
|
| const ScopedResource* const_resource = resource.get();
|
|
|
| // Create and queue all image decode tasks that this tile depends on.
|
| - internal::WorkerPoolTask::Vector decode_tasks;
|
| + internal::ImageDecodeTask::Vector decode_tasks;
|
| PixelRefTaskMap& existing_pixel_refs = image_decode_tasks_[tile->layer_id()];
|
| for (PicturePileImpl::PixelRefIterator iter(
|
| tile->content_rect(), tile->contents_scale(), tile->picture_pile());
|
| @@ -1135,7 +1132,7 @@ scoped_refptr<internal::RasterWorkerPoolTask> TileManager::CreateRasterTask(
|
| }
|
|
|
| // Create and append new image decode task for this pixel ref.
|
| - scoped_refptr<internal::WorkerPoolTask> decode_task =
|
| + scoped_refptr<internal::ImageDecodeTask> decode_task =
|
| CreateImageDecodeTask(tile, pixel_ref);
|
| decode_tasks.push_back(decode_task);
|
| existing_pixel_refs[id] = decode_task;
|
| @@ -1159,24 +1156,24 @@ scoped_refptr<internal::RasterWorkerPoolTask> TileManager::CreateRasterTask(
|
| std::min(pile_size.width(), pile_size.height()) >=
|
| kMinDimensionsForAnalysis;
|
|
|
| - return make_scoped_refptr(new RasterWorkerPoolTaskImpl(
|
| - const_resource,
|
| - tile->picture_pile(),
|
| - tile->content_rect(),
|
| - tile->contents_scale(),
|
| - mts.raster_mode,
|
| - mts.resolution,
|
| - tile->layer_id(),
|
| - static_cast<const void*>(tile),
|
| - tile->source_frame_number(),
|
| - analyze_picture,
|
| - rendering_stats_instrumentation_,
|
| - base::Bind(&TileManager::OnRasterTaskCompleted,
|
| - base::Unretained(this),
|
| - tile->id(),
|
| - base::Passed(&resource),
|
| - mts.raster_mode),
|
| - &decode_tasks));
|
| + return make_scoped_refptr(
|
| + new RasterTaskImpl(const_resource,
|
| + tile->picture_pile(),
|
| + tile->content_rect(),
|
| + tile->contents_scale(),
|
| + mts.raster_mode,
|
| + mts.resolution,
|
| + tile->layer_id(),
|
| + static_cast<const void*>(tile),
|
| + tile->source_frame_number(),
|
| + analyze_picture,
|
| + rendering_stats_instrumentation_,
|
| + base::Bind(&TileManager::OnRasterTaskCompleted,
|
| + base::Unretained(this),
|
| + tile->id(),
|
| + base::Passed(&resource),
|
| + mts.raster_mode),
|
| + &decode_tasks));
|
| }
|
|
|
| void TileManager::OnImageDecodeTaskCompleted(int layer_id,
|
| @@ -1188,7 +1185,6 @@ void TileManager::OnImageDecodeTaskCompleted(int layer_id,
|
| return;
|
|
|
| LayerPixelRefTaskMap::iterator layer_it = image_decode_tasks_.find(layer_id);
|
| -
|
| if (layer_it == image_decode_tasks_.end())
|
| return;
|
|
|
|
|