diff options
Diffstat (limited to 'chromium/cc/resources/tile_manager.h')
-rw-r--r-- | chromium/cc/resources/tile_manager.h | 51 |
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); |