Index: cc/tile_manager.h |
diff --git a/cc/tile_manager.h b/cc/tile_manager.h |
deleted file mode 100644 |
index 4da9d4b0154be831125ba4f972afc86904408634..0000000000000000000000000000000000000000 |
--- a/cc/tile_manager.h |
+++ /dev/null |
@@ -1,231 +0,0 @@ |
-// Copyright 2012 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_TILE_MANAGER_H_ |
-#define CC_TILE_MANAGER_H_ |
- |
-#include <list> |
-#include <queue> |
-#include <set> |
-#include <vector> |
- |
-#include "base/hash_tables.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/values.h" |
-#include "cc/base/worker_pool.h" |
-#include "cc/debug/rendering_stats.h" |
-#include "cc/memory_history.h" |
-#include "cc/picture_pile_impl.h" |
-#include "cc/resource_pool.h" |
-#include "cc/tile_priority.h" |
- |
-namespace cc { |
-class RasterWorkerPool; |
-class ResourceProvider; |
-class Tile; |
-class TileVersion; |
- |
-class CC_EXPORT TileManagerClient { |
- public: |
- virtual void ScheduleManageTiles() = 0; |
- virtual void DidInitializeVisibleTile() = 0; |
- |
- protected: |
- virtual ~TileManagerClient() {} |
-}; |
- |
-// Tile manager classifying tiles into a few basic |
-// bins: |
-enum TileManagerBin { |
- NOW_BIN = 0, // Needed ASAP. |
- SOON_BIN = 1, // Impl-side version of prepainting. |
- EVENTUALLY_BIN = 2, // Nice to have, if we've got memory and time. |
- NEVER_BIN = 3, // Dont bother. |
- NUM_BINS = 4 |
- // Be sure to update TileManagerBinAsValue when adding new fields. |
-}; |
-scoped_ptr<base::Value> TileManagerBinAsValue( |
- TileManagerBin bin); |
- |
-enum TileManagerBinPriority { |
- HIGH_PRIORITY_BIN = 0, |
- LOW_PRIORITY_BIN = 1, |
- NUM_BIN_PRIORITIES = 2 |
-}; |
-scoped_ptr<base::Value> TileManagerBinPriorityAsValue( |
- TileManagerBinPriority bin); |
- |
-enum TileRasterState { |
- IDLE_STATE = 0, |
- WAITING_FOR_RASTER_STATE = 1, |
- RASTER_STATE = 2, |
- UPLOAD_STATE = 3, |
- FORCED_UPLOAD_COMPLETION_STATE = 4, |
- NUM_STATES = 5 |
-}; |
-scoped_ptr<base::Value> TileRasterStateAsValue( |
- TileRasterState bin); |
- |
-// This class manages tiles, deciding which should get rasterized and which |
-// should no longer have any memory assigned to them. Tile objects are "owned" |
-// by layers; they automatically register with the manager when they are |
-// created, and unregister from the manager when they are deleted. |
-class CC_EXPORT TileManager : public WorkerPoolClient { |
- public: |
- TileManager(TileManagerClient* client, |
- ResourceProvider *resource_provider, |
- size_t num_raster_threads, |
- bool use_cheapess_estimator, |
- bool use_color_estimator, |
- bool prediction_benchmarking); |
- virtual ~TileManager(); |
- |
- const GlobalStateThatImpactsTilePriority& GlobalState() const { |
- return global_state_; |
- } |
- void SetGlobalState(const GlobalStateThatImpactsTilePriority& state); |
- |
- void ManageTiles(); |
- void CheckForCompletedTileUploads(); |
- void AbortPendingTileUploads(); |
- void ForceTileUploadToComplete(Tile* tile); |
- void DidCompleteFrame(); |
- |
- scoped_ptr<base::Value> BasicStateAsValue() const; |
- scoped_ptr<base::Value> AllTilesAsValue() const; |
- void GetMemoryStats(size_t* memoryRequiredBytes, |
- size_t* memoryNiceToHaveBytes, |
- size_t* memoryUsedBytes) const; |
- void SetRecordRenderingStats(bool record_rendering_stats); |
- void GetRenderingStats(RenderingStats* stats); |
- bool HasPendingWorkScheduled(WhichTree tree) const; |
- |
- const MemoryHistory::Entry& memory_stats_from_last_assign() const { |
- return memory_stats_from_last_assign_; |
- } |
- |
- // Overridden from WorkerPoolClient: |
- virtual void DidFinishDispatchingWorkerPoolCompletionCallbacks() OVERRIDE; |
- |
- protected: |
- // Methods called by Tile |
- friend class Tile; |
- void RegisterTile(Tile* tile); |
- void UnregisterTile(Tile* tile); |
- void WillModifyTilePriority( |
- Tile* tile, WhichTree tree, const TilePriority& new_priority) { |
- // TODO(nduca): Do something smarter if reprioritization turns out to be |
- // costly. |
- ScheduleManageTiles(); |
- } |
- |
- private: |
- |
- // Data that is passed to raster tasks. |
- struct RasterTaskMetadata { |
- bool prediction_benchmarking; |
- bool is_tile_in_pending_tree_now_bin; |
- TileResolution tile_resolution; |
- int layer_id; |
- }; |
- |
- RasterTaskMetadata GetRasterTaskMetadata(const Tile& tile) const; |
- |
- void SortTiles(); |
- void AssignGpuMemoryToTiles(); |
- void FreeResourcesForTile(Tile* tile); |
- void ScheduleManageTiles() { |
- if (manage_tiles_pending_) |
- return; |
- client_->ScheduleManageTiles(); |
- manage_tiles_pending_ = true; |
- } |
- void DispatchMoreTasks(); |
- void AnalyzeTile(Tile* tile); |
- void GatherPixelRefsForTile(Tile* tile); |
- void DispatchImageDecodeTasksForTile(Tile* tile); |
- void DispatchOneImageDecodeTask( |
- scoped_refptr<Tile> tile, skia::LazyPixelRef* pixel_ref); |
- void OnImageDecodeTaskCompleted( |
- scoped_refptr<Tile> tile, |
- uint32_t pixel_ref_id); |
- bool CanDispatchRasterTask(Tile* tile) const; |
- scoped_ptr<ResourcePool::Resource> PrepareTileForRaster(Tile* tile); |
- void DispatchOneRasterTask(scoped_refptr<Tile> tile); |
- void OnRasterTaskCompleted( |
- scoped_refptr<Tile> tile, |
- scoped_ptr<ResourcePool::Resource> resource, |
- int manage_tiles_call_count_when_dispatched); |
- void DidFinishTileInitialization(Tile* tile); |
- void DidTileRasterStateChange(Tile* tile, TileRasterState state); |
- void DidTileTreeBinChange(Tile* tile, |
- TileManagerBin new_tree_bin, |
- WhichTree tree); |
- scoped_ptr<Value> GetMemoryRequirementsAsValue() const; |
- |
- static void RunRasterTask(uint8* buffer, |
- const gfx::Rect& rect, |
- float contents_scale, |
- const RasterTaskMetadata& metadata, |
- PicturePileImpl* picture_pile, |
- RenderingStats* stats); |
- static void RunImageDecodeTask(skia::LazyPixelRef* pixel_ref, |
- RenderingStats* stats); |
- |
- static void RecordCheapnessPredictorResults(bool is_predicted_cheap, |
- bool is_actually_cheap); |
- static void RecordSolidColorPredictorResults(const SkColor* actual_colors, |
- size_t color_count, |
- bool is_predicted_solid, |
- SkColor predicted_color, |
- bool is_predicted_transparent); |
- |
- TileManagerClient* client_; |
- scoped_ptr<ResourcePool> resource_pool_; |
- scoped_ptr<RasterWorkerPool> raster_worker_pool_; |
- bool manage_tiles_pending_; |
- int manage_tiles_call_count_; |
- |
- GlobalStateThatImpactsTilePriority global_state_; |
- |
- typedef std::vector<Tile*> TileVector; |
- typedef std::set<Tile*> TileSet; |
- TileSet all_tiles_; |
- TileVector live_or_allocated_tiles_; |
- TileVector tiles_that_need_to_be_rasterized_; |
- |
- typedef std::list<Tile*> TileList; |
- // Tiles with image decoding tasks. These tiles need to be rasterized |
- // when all the image decoding tasks finish. |
- TileList tiles_with_image_decoding_tasks_; |
- |
- typedef base::hash_map<uint32_t, skia::LazyPixelRef*> PixelRefMap; |
- PixelRefMap pending_decode_tasks_; |
- |
- typedef std::queue<scoped_refptr<Tile> > TileQueue; |
- TileQueue tiles_with_pending_upload_; |
- size_t bytes_pending_upload_; |
- bool has_performed_uploads_since_last_flush_; |
- bool ever_exceeded_memory_budget_; |
- MemoryHistory::Entry memory_stats_from_last_assign_; |
- |
- bool record_rendering_stats_; |
- RenderingStats rendering_stats_; |
- |
- bool use_cheapness_estimator_; |
- bool use_color_estimator_; |
- bool did_schedule_cheap_tasks_; |
- bool allow_cheap_tasks_; |
- int raster_state_count_[NUM_STATES][NUM_TREES][NUM_BINS]; |
- bool prediction_benchmarking_; |
- |
- size_t pending_tasks_; |
- size_t max_pending_tasks_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TileManager); |
-}; |
- |
-} // namespace cc |
- |
-#endif // CC_TILE_MANAGER_H_ |