summaryrefslogtreecommitdiff
path: root/chromium/cc/resources/tile_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/cc/resources/tile_manager.h')
-rw-r--r--chromium/cc/resources/tile_manager.h51
1 files changed, 41 insertions, 10 deletions
diff --git a/chromium/cc/resources/tile_manager.h b/chromium/cc/resources/tile_manager.h
index 2e226c9999d..3f262bcf28d 100644
--- a/chromium/cc/resources/tile_manager.h
+++ b/chromium/cc/resources/tile_manager.h
@@ -52,7 +52,8 @@ class CC_EXPORT TileManager : public RasterWorkerPoolClient {
ResourceProvider* resource_provider,
size_t num_raster_threads,
RenderingStatsInstrumentation* rendering_stats_instrumentation,
- bool use_map_image);
+ bool use_map_image,
+ size_t max_transfer_buffer_usage_bytes);
virtual ~TileManager();
const GlobalStateThatImpactsTilePriority& GlobalState() const {
@@ -69,14 +70,32 @@ class CC_EXPORT TileManager : public RasterWorkerPoolClient {
scoped_ptr<base::Value> AllTilesAsValue() const;
void GetMemoryStats(size_t* memory_required_bytes,
size_t* memory_nice_to_have_bytes,
+ size_t* memory_allocated_bytes,
size_t* memory_used_bytes) const;
const MemoryHistory::Entry& memory_stats_from_last_assign() const {
return memory_stats_from_last_assign_;
}
- bool AreTilesRequiredForActivationReady() const {
- return all_tiles_required_for_activation_have_been_initialized_;
+ void InitializeTilesWithResourcesForTesting(
+ const std::vector<Tile*>& tiles,
+ ResourceProvider* resource_provider) {
+ for (size_t i = 0; i < tiles.size(); ++i) {
+ ManagedTileState& mts = tiles[i]->managed_state();
+ ManagedTileState::TileVersion& tile_version =
+ mts.tile_versions[HIGH_QUALITY_NO_LCD_RASTER_MODE];
+
+ tile_version.resource_ = make_scoped_ptr(
+ new ResourcePool::Resource(resource_provider,
+ gfx::Size(1, 1),
+ resource_provider->best_texture_format()));
+
+ bytes_releasable_ += BytesConsumedIfAllocated(tiles[i]);
+ ++resources_releasable_;
+ }
+ }
+ RasterWorkerPool* RasterWorkerPoolForTesting() {
+ return raster_worker_pool_.get();
}
protected:
@@ -84,13 +103,13 @@ class CC_EXPORT TileManager : public RasterWorkerPoolClient {
ResourceProvider* resource_provider,
scoped_ptr<RasterWorkerPool> raster_worker_pool,
size_t num_raster_threads,
- RenderingStatsInstrumentation* rendering_stats_instrumentation,
- GLenum texture_format);
+ RenderingStatsInstrumentation* rendering_stats_instrumentation);
// Methods called by Tile
friend class Tile;
void RegisterTile(Tile* tile);
void UnregisterTile(Tile* tile);
+ void DidChangeTilePriority(Tile* tile);
// Overriden from RasterWorkerPoolClient:
virtual bool ShouldForceTasksRequiredForActivationToComplete() const
@@ -109,7 +128,6 @@ class CC_EXPORT TileManager : public RasterWorkerPoolClient {
PrioritizedTileSet* tiles,
TileVector* tiles_that_need_to_be_rasterized);
void GetTilesWithAssignedBins(PrioritizedTileSet* tiles);
- void GetPrioritizedTileSet(PrioritizedTileSet* tiles);
private:
void OnImageDecodeTaskCompleted(
@@ -123,8 +141,12 @@ class CC_EXPORT TileManager : public RasterWorkerPoolClient {
const PicturePileImpl::Analysis& analysis,
bool was_canceled);
+ inline size_t BytesConsumedIfAllocated(const Tile* tile) const {
+ return Resource::MemorySizeBytes(tile->size(),
+ raster_worker_pool_->GetResourceFormat());
+ }
+
RasterMode DetermineRasterMode(const Tile* tile) const;
- void CleanUpUnusedImageDecodeTasks();
void FreeResourceForTile(Tile* tile, RasterMode mode);
void FreeResourcesForTile(Tile* tile);
void FreeUnusedResourcesForTile(Tile* tile);
@@ -132,6 +154,7 @@ class CC_EXPORT TileManager : public RasterWorkerPoolClient {
Tile* tile, skia::LazyPixelRef* pixel_ref);
RasterWorkerPool::RasterTask CreateRasterTask(Tile* tile);
scoped_ptr<base::Value> GetMemoryRequirementsAsValue() const;
+ PrioritizedTileSet* GetPrioritizedTileSet();
TileManagerClient* client_;
scoped_ptr<ResourcePool> resource_pool_;
@@ -142,10 +165,16 @@ class CC_EXPORT TileManager : public RasterWorkerPoolClient {
TileMap tiles_;
PrioritizedTileSet prioritized_tiles_;
+ bool prioritized_tiles_dirty_;
bool all_tiles_that_need_to_be_rasterized_have_memory_;
bool all_tiles_required_for_activation_have_memory_;
- bool all_tiles_required_for_activation_have_been_initialized_;
+
+ size_t memory_required_bytes_;
+ size_t memory_nice_to_have_bytes_;
+
+ size_t bytes_releasable_;
+ size_t resources_releasable_;
bool ever_exceeded_memory_budget_;
MemoryHistory::Entry memory_stats_from_last_assign_;
@@ -153,13 +182,15 @@ class CC_EXPORT TileManager : public RasterWorkerPoolClient {
RenderingStatsInstrumentation* rendering_stats_instrumentation_;
bool did_initialize_visible_tile_;
-
- GLenum texture_format_;
+ bool did_check_for_completed_tasks_since_last_schedule_tasks_;
typedef base::hash_map<uint32_t, RasterWorkerPool::Task> PixelRefTaskMap;
typedef base::hash_map<int, PixelRefTaskMap> LayerPixelRefTaskMap;
LayerPixelRefTaskMap image_decode_tasks_;
+ typedef base::hash_map<int, int> LayerCountMap;
+ LayerCountMap used_layer_counts_;
+
RasterTaskCompletionStats update_visible_tiles_stats_;
DISALLOW_COPY_AND_ASSIGN(TileManager);