diff options
author | alokp@chromium.org <alokp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-22 21:49:53 +0000 |
---|---|---|
committer | alokp@chromium.org <alokp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-22 21:49:53 +0000 |
commit | ced667b36d45920b5172beb646d83e761884295b (patch) | |
tree | 664ea4cd0fa13f818ea2fadb40d96faffe6a2569 /cc/resources | |
parent | 93acb8f029f144a941f48873df214c38259df70e (diff) | |
download | chromium_src-ced667b36d45920b5172beb646d83e761884295b.zip chromium_src-ced667b36d45920b5172beb646d83e761884295b.tar.gz chromium_src-ced667b36d45920b5172beb646d83e761884295b.tar.bz2 |
cc: Get rid of rasterizer delegate.
It is not needed anymore now that we do not support hybrid rasterization. Gpu-rasterization flag is per page instead of per layer.
BUG=367200
Review URL: https://codereview.chromium.org/296453009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@272335 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/resources')
-rw-r--r-- | cc/resources/rasterizer_delegate.cc | 89 | ||||
-rw-r--r-- | cc/resources/rasterizer_delegate.h | 46 | ||||
-rw-r--r-- | cc/resources/tile_manager.cc | 45 | ||||
-rw-r--r-- | cc/resources/tile_manager.h | 19 | ||||
-rw-r--r-- | cc/resources/tile_manager_perftest.cc | 3 |
5 files changed, 21 insertions, 181 deletions
diff --git a/cc/resources/rasterizer_delegate.cc b/cc/resources/rasterizer_delegate.cc deleted file mode 100644 index dcceb1f..0000000 --- a/cc/resources/rasterizer_delegate.cc +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "cc/resources/rasterizer_delegate.h" - -#include "base/debug/trace_event.h" - -namespace cc { - -RasterizerDelegate::RasterizerDelegate(RasterizerClient* client, - Rasterizer** rasterizers, - size_t num_rasterizers) - : client_(client), - rasterizers_(rasterizers, rasterizers + num_rasterizers), - did_finish_running_tasks_pending_count_(0u), - did_finish_running_tasks_required_for_activation_pending_count_(0u) { - DCHECK(client_); - for (RasterizerVector::iterator it = rasterizers_.begin(); - it != rasterizers_.end(); - ++it) - (*it)->SetClient(this); -} - -RasterizerDelegate::~RasterizerDelegate() {} - -// static -scoped_ptr<RasterizerDelegate> RasterizerDelegate::Create( - RasterizerClient* client, - Rasterizer** rasterizers, - size_t num_rasterizers) { - return make_scoped_ptr( - new RasterizerDelegate(client, rasterizers, num_rasterizers)); -} - -void RasterizerDelegate::Shutdown() { - for (RasterizerVector::iterator it = rasterizers_.begin(); - it != rasterizers_.end(); - ++it) - (*it)->Shutdown(); -} - -void RasterizerDelegate::ScheduleTasks(RasterTaskQueue* queue) { - for (size_t i = 0; i < rasterizers_.size(); ++i) - rasterizers_[i]->ScheduleTasks(&queue[i]); - - did_finish_running_tasks_pending_count_ = rasterizers_.size(); - did_finish_running_tasks_required_for_activation_pending_count_ = - rasterizers_.size(); -} - -void RasterizerDelegate::CheckForCompletedTasks() { - for (RasterizerVector::iterator it = rasterizers_.begin(); - it != rasterizers_.end(); - ++it) - (*it)->CheckForCompletedTasks(); -} - -bool RasterizerDelegate::ShouldForceTasksRequiredForActivationToComplete() - const { - return client_->ShouldForceTasksRequiredForActivationToComplete(); -} - -void RasterizerDelegate::DidFinishRunningTasks() { - TRACE_EVENT1("cc", - "RasterizerDelegate::DidFinishRunningTasks", - "pending_count", - did_finish_running_tasks_pending_count_); - - DCHECK_LT(0u, did_finish_running_tasks_pending_count_); - if (--did_finish_running_tasks_pending_count_) - return; - client_->DidFinishRunningTasks(); -} - -void RasterizerDelegate::DidFinishRunningTasksRequiredForActivation() { - TRACE_EVENT1("cc", - "RasterizerDelegate::DidFinishRunningTasksRequiredForActivation", - "pending_count", - did_finish_running_tasks_required_for_activation_pending_count_); - - DCHECK_LT(0u, - did_finish_running_tasks_required_for_activation_pending_count_); - if (--did_finish_running_tasks_required_for_activation_pending_count_) - return; - client_->DidFinishRunningTasksRequiredForActivation(); -} - -} // namespace cc diff --git a/cc/resources/rasterizer_delegate.h b/cc/resources/rasterizer_delegate.h deleted file mode 100644 index f9209637..0000000 --- a/cc/resources/rasterizer_delegate.h +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CC_RESOURCES_RASTERIZER_DELEGATE_H_ -#define CC_RESOURCES_RASTERIZER_DELEGATE_H_ - -#include <vector> - -#include "cc/resources/rasterizer.h" - -namespace cc { - -class RasterizerDelegate : public RasterizerClient { - public: - virtual ~RasterizerDelegate(); - - static scoped_ptr<RasterizerDelegate> Create(RasterizerClient* client, - Rasterizer** rasterizers, - size_t num_rasterizers); - - void SetClient(RasterizerClient* client); - void Shutdown(); - void ScheduleTasks(RasterTaskQueue* queue); - void CheckForCompletedTasks(); - - // Overriden from RasterizerClient: - virtual bool ShouldForceTasksRequiredForActivationToComplete() const OVERRIDE; - virtual void DidFinishRunningTasks() OVERRIDE; - virtual void DidFinishRunningTasksRequiredForActivation() OVERRIDE; - - private: - RasterizerDelegate(RasterizerClient* client, - Rasterizer** rasterizers, - size_t num_rasterizers); - - RasterizerClient* client_; - typedef std::vector<Rasterizer*> RasterizerVector; - RasterizerVector rasterizers_; - size_t did_finish_running_tasks_pending_count_; - size_t did_finish_running_tasks_required_for_activation_pending_count_; -}; - -} // namespace cc - -#endif // CC_RESOURCES_RASTERIZER_DELEGATE_H_ diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc index 82b6bf4..2b3e652 100644 --- a/cc/resources/tile_manager.cc +++ b/cc/resources/tile_manager.cc @@ -367,13 +367,11 @@ scoped_ptr<TileManager> TileManager::Create( TileManagerClient* client, ResourcePool* resource_pool, Rasterizer* rasterizer, - Rasterizer* gpu_rasterizer, bool use_rasterize_on_demand, RenderingStatsInstrumentation* rendering_stats_instrumentation) { return make_scoped_ptr(new TileManager(client, resource_pool, rasterizer, - gpu_rasterizer, use_rasterize_on_demand, rendering_stats_instrumentation)); } @@ -382,11 +380,11 @@ TileManager::TileManager( TileManagerClient* client, ResourcePool* resource_pool, Rasterizer* rasterizer, - Rasterizer* gpu_rasterizer, bool use_rasterize_on_demand, RenderingStatsInstrumentation* rendering_stats_instrumentation) : client_(client), resource_pool_(resource_pool), + rasterizer_(rasterizer), prioritized_tiles_dirty_(false), all_tiles_that_need_to_be_rasterized_have_memory_(true), all_tiles_required_for_activation_have_memory_(true), @@ -399,12 +397,7 @@ 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) { - Rasterizer* rasterizers[NUM_RASTERIZER_TYPES] = { - rasterizer, // RASTERIZER_TYPE_DEFAULT - gpu_rasterizer, // RASTERIZER_TYPE_GPU - }; - rasterizer_delegate_ = - RasterizerDelegate::Create(this, rasterizers, arraysize(rasterizers)); + rasterizer_->SetClient(this); } TileManager::~TileManager() { @@ -415,14 +408,14 @@ TileManager::~TileManager() { CleanUpReleasedTiles(); DCHECK_EQ(0u, tiles_.size()); - RasterTaskQueue empty[NUM_RASTERIZER_TYPES]; - rasterizer_delegate_->ScheduleTasks(empty); + RasterTaskQueue empty; + rasterizer_->ScheduleTasks(&empty); orphan_raster_tasks_.clear(); // This should finish all pending tasks and release any uninitialized // resources. - rasterizer_delegate_->Shutdown(); - rasterizer_delegate_->CheckForCompletedTasks(); + rasterizer_->Shutdown(); + rasterizer_->CheckForCompletedTasks(); DCHECK_EQ(0u, bytes_releasable_); DCHECK_EQ(0u, resources_releasable_); @@ -500,7 +493,7 @@ void TileManager::DidFinishRunningTasks() { !memory_usage_above_limit) return; - rasterizer_delegate_->CheckForCompletedTasks(); + rasterizer_->CheckForCompletedTasks(); did_check_for_completed_tasks_since_last_schedule_tasks_ = true; TileVector tiles_that_need_to_be_rasterized; @@ -707,7 +700,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_) { - rasterizer_delegate_->CheckForCompletedTasks(); + rasterizer_->CheckForCompletedTasks(); did_check_for_completed_tasks_since_last_schedule_tasks_ = true; } @@ -736,7 +729,7 @@ void TileManager::ManageTiles(const GlobalStateThatImpactsTilePriority& state) { bool TileManager::UpdateVisibleTiles() { TRACE_EVENT0("cc", "TileManager::UpdateVisibleTiles"); - rasterizer_delegate_->CheckForCompletedTasks(); + rasterizer_->CheckForCompletedTasks(); did_check_for_completed_tasks_since_last_schedule_tasks_ = true; TRACE_EVENT_INSTANT1( @@ -1013,8 +1006,7 @@ void TileManager::ScheduleTasks( DCHECK(did_check_for_completed_tasks_since_last_schedule_tasks_); - for (size_t i = 0; i < NUM_RASTERIZER_TYPES; ++i) - raster_queue_[i].Reset(); + raster_queue_.Reset(); // Build a new task queue containing all task currently needed. Tasks // are added in order of priority, highest priority task first. @@ -1032,12 +1024,9 @@ void TileManager::ScheduleTasks( if (!tile_version.raster_task_) tile_version.raster_task_ = CreateRasterTask(tile); - size_t pool_type = tile->use_gpu_rasterization() ? RASTERIZER_TYPE_GPU - : RASTERIZER_TYPE_DEFAULT; - - raster_queue_[pool_type].items.push_back(RasterTaskQueue::Item( + raster_queue_.items.push_back(RasterTaskQueue::Item( tile_version.raster_task_.get(), tile->required_for_activation())); - raster_queue_[pool_type].required_for_activation_count += + raster_queue_.required_for_activation_count += tile->required_for_activation(); } @@ -1048,7 +1037,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_|. - rasterizer_delegate_->ScheduleTasks(raster_queue_); + rasterizer_->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 @@ -1633,11 +1622,9 @@ bool TileManager::EvictionTileIterator::EvictionOrderComparator::operator()( return a_priority.IsHigherPriorityThan(b_priority); } -void TileManager::SetRasterizersForTesting(Rasterizer* rasterizer, - Rasterizer* gpu_rasterizer) { - Rasterizer* rasterizers[2] = {rasterizer, gpu_rasterizer}; - rasterizer_delegate_ = - RasterizerDelegate::Create(this, rasterizers, arraysize(rasterizers)); +void TileManager::SetRasterizerForTesting(Rasterizer* rasterizer) { + rasterizer_ = rasterizer; + rasterizer_->SetClient(this); } } // namespace cc diff --git a/cc/resources/tile_manager.h b/cc/resources/tile_manager.h index ea22fd8..cdc7d1e 100644 --- a/cc/resources/tile_manager.h +++ b/cc/resources/tile_manager.h @@ -22,12 +22,10 @@ #include "cc/resources/picture_pile_impl.h" #include "cc/resources/prioritized_tile_set.h" #include "cc/resources/rasterizer.h" -#include "cc/resources/rasterizer_delegate.h" #include "cc/resources/resource_pool.h" #include "cc/resources/tile.h" namespace cc { -class RasterizerDelegate; class ResourceProvider; class CC_EXPORT TileManagerClient { @@ -158,7 +156,6 @@ class CC_EXPORT TileManager : public RasterizerClient, TileManagerClient* client, ResourcePool* resource_pool, Rasterizer* rasterizer, - Rasterizer* gpu_rasterizer, bool use_rasterize_on_demand, RenderingStatsInstrumentation* rendering_stats_instrumentation); virtual ~TileManager(); @@ -225,8 +222,7 @@ class CC_EXPORT TileManager : public RasterizerClient, } } - void SetRasterizersForTesting(Rasterizer* rasterizer, - Rasterizer* gpu_rasterizer); + void SetRasterizerForTesting(Rasterizer* rasterizer); void CleanUpReleasedTilesForTesting() { CleanUpReleasedTiles(); } @@ -234,7 +230,6 @@ class CC_EXPORT TileManager : public RasterizerClient, TileManager(TileManagerClient* client, ResourcePool* resource_pool, Rasterizer* rasterizer, - Rasterizer* gpu_rasterizer, bool use_rasterize_on_demand, RenderingStatsInstrumentation* rendering_stats_instrumentation); @@ -264,12 +259,6 @@ class CC_EXPORT TileManager : public RasterizerClient, void GetTilesWithAssignedBins(PrioritizedTileSet* tiles); private: - enum RasterizerType { - RASTERIZER_TYPE_DEFAULT, - RASTERIZER_TYPE_GPU, - NUM_RASTERIZER_TYPES - }; - void OnImageDecodeTaskCompleted(int layer_id, SkPixelRef* pixel_ref, bool was_canceled); @@ -296,7 +285,7 @@ class CC_EXPORT TileManager : public RasterizerClient, TileManagerClient* client_; ResourcePool* resource_pool_; - scoped_ptr<RasterizerDelegate> rasterizer_delegate_; + Rasterizer* rasterizer_; GlobalStateThatImpactsTilePriority global_state_; typedef base::hash_map<Tile::Id, Tile*> TileMap; @@ -338,8 +327,8 @@ class CC_EXPORT TileManager : public RasterizerClient, ResourceFormat resource_format_; - // Queues used when scheduling raster tasks. - RasterTaskQueue raster_queue_[NUM_RASTERIZER_TYPES]; + // Queue used when scheduling raster tasks. + RasterTaskQueue raster_queue_; std::vector<scoped_refptr<RasterTask> > orphan_raster_tasks_; diff --git a/cc/resources/tile_manager_perftest.cc b/cc/resources/tile_manager_perftest.cc index 7f427fb6..22e7c66 100644 --- a/cc/resources/tile_manager_perftest.cc +++ b/cc/resources/tile_manager_perftest.cc @@ -116,8 +116,7 @@ class TileManagerPerfTest : public testing::Test, public TileManagerClient { virtual void InitializeRenderer() { host_impl_.InitializeRenderer( FakeOutputSurface::Create3d().PassAs<OutputSurface>()); - tile_manager()->SetRasterizersForTesting(g_fake_rasterizer.Pointer(), - g_fake_rasterizer.Pointer()); + tile_manager()->SetRasterizerForTesting(g_fake_rasterizer.Pointer()); } void SetupDefaultTrees(const gfx::Size& layer_bounds) { |