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

Unified Diff: cc/resources/tile_manager.cc

Issue 228173002: cc: Separate RasterWorkerPool interface from implementation details. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Name interface Rasterizer instead and keep RasterWorkerPool name for the implementation Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698