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

Unified Diff: cc/resources/tile_manager.h

Issue 18581004: cc: Remove tile ref counting in tile manager. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: ut compile fix Created 7 years, 5 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
« no previous file with comments | « cc/resources/tile.cc ('k') | cc/resources/tile_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/tile_manager.h
diff --git a/cc/resources/tile_manager.h b/cc/resources/tile_manager.h
index ab724fe1b544e857123cb3ddb2fffdd13574cd1e..de98a4a9ff13dcb366ff1664df6ad7a4f76d8fcc 100644
--- a/cc/resources/tile_manager.h
+++ b/cc/resources/tile_manager.h
@@ -18,11 +18,10 @@
#include "cc/resources/picture_pile_impl.h"
#include "cc/resources/raster_worker_pool.h"
#include "cc/resources/resource_pool.h"
+#include "cc/resources/tile.h"
namespace cc {
class ResourceProvider;
-class Tile;
-class TileVersion;
class CC_EXPORT TileManagerClient {
public:
@@ -66,8 +65,8 @@ class CC_EXPORT TileManager : public RasterWorkerPoolClient {
}
bool AreTilesRequiredForActivationReady() const {
- return tiles_that_need_to_be_initialized_for_activation_.empty() &&
- oom_tiles_that_need_to_be_initialized_for_activation_.empty();
+ return all_tiles_required_for_activation_have_been_initialized_ &&
+ all_tiles_required_for_activation_have_memory_;
}
protected:
@@ -89,14 +88,25 @@ class CC_EXPORT TileManager : public RasterWorkerPoolClient {
virtual void DidFinishedRunningTasks() OVERRIDE;
virtual void DidFinishedRunningTasksRequiredForActivation() OVERRIDE;
- // Virtual for test
- virtual void ScheduleTasks();
-
- const std::vector<Tile*>& tiles_that_need_to_be_rasterized() const {
- return tiles_that_need_to_be_rasterized_;
- }
+ typedef std::vector<Tile*> TileVector;
+ typedef std::vector<scoped_refptr<Tile> > TileRefVector;
+ typedef std::set<Tile*> TileSet;
- void ReassignGpuMemoryToOOMTilesRequiredForActivation();
+ // Virtual for test
+ virtual void ScheduleTasks(
+ const TileVector& tiles_that_need_to_be_rasterized);
+
+ void ReassignGpuMemoryToOOMTilesRequiredForActivation(
+ const TileRefVector& sorted_tiles,
+ TileVector* tiles_that_need_to_be_rasterized,
+ TileSet* oom_tiles_required_for_activation);
+ void AssignGpuMemoryToTiles(
+ const TileRefVector& sorted_tiles,
+ TileVector* tiles_that_need_to_be_rasterized,
+ TileSet* oom_tiles_required_for_activation);
+ void AssignBinsToTiles(TileRefVector* tiles);
+ void SortTiles(TileRefVector* tiles);
+ void GetSortedTiles(TileRefVector* tiles);
private:
void OnImageDecodeTaskCompleted(
@@ -104,41 +114,34 @@ class CC_EXPORT TileManager : public RasterWorkerPoolClient {
skia::LazyPixelRef* pixel_ref,
bool was_canceled);
void OnRasterTaskCompleted(
- scoped_refptr<Tile> tile,
+ Tile::Id tile,
scoped_ptr<ResourcePool::Resource> resource,
RasterMode raster_mode,
const PicturePileImpl::Analysis& analysis,
bool was_canceled);
- void AssignBinsToTiles();
- void SortTiles();
RasterMode DetermineRasterMode(const Tile* tile) const;
void CleanUpUnusedImageDecodeTasks();
- void AssignGpuMemoryToTiles();
void FreeResourceForTile(Tile* tile, RasterMode mode);
void FreeResourcesForTile(Tile* tile);
void FreeUnusedResourcesForTile(Tile* tile);
RasterWorkerPool::Task CreateImageDecodeTask(
Tile* tile, skia::LazyPixelRef* pixel_ref);
RasterWorkerPool::RasterTask CreateRasterTask(Tile* tile);
- void DidFinishTileInitialization(Tile* tile);
- void DidTileTreeBinChange(Tile* tile,
- ManagedTileBin new_tree_bin,
- WhichTree tree);
scoped_ptr<base::Value> GetMemoryRequirementsAsValue() const;
- void AddRequiredTileForActivation(Tile* tile);
TileManagerClient* client_;
scoped_ptr<ResourcePool> resource_pool_;
scoped_ptr<RasterWorkerPool> raster_worker_pool_;
GlobalStateThatImpactsTilePriority global_state_;
- typedef std::vector<Tile*> TileVector;
- TileVector tiles_;
- TileVector tiles_that_need_to_be_rasterized_;
- typedef std::set<Tile*> TileSet;
- TileSet tiles_that_need_to_be_initialized_for_activation_;
- TileSet oom_tiles_that_need_to_be_initialized_for_activation_;
+ typedef base::hash_map<Tile::Id, Tile*> TileMap;
+ TileMap tiles_;
+
+ TileRefVector sorted_tiles_;
+
+ bool all_tiles_required_for_activation_have_been_initialized_;
+ bool all_tiles_required_for_activation_have_memory_;
bool ever_exceeded_memory_budget_;
MemoryHistory::Entry memory_stats_from_last_assign_;
« no previous file with comments | « cc/resources/tile.cc ('k') | cc/resources/tile_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698