tile_manager.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CC_RESOURCES_TILE_MANAGER_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CC_RESOURCES_TILE_MANAGER_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <queue> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <set> 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <vector> 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/containers/hash_tables.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/values.h" 1568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "cc/base/ref_counted_managed.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/debug/rendering_stats_instrumentation.h" 177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "cc/resources/managed_tile_state.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/memory_history.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/picture_pile_impl.h" 20bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch#include "cc/resources/prioritized_tile_set.h" 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "cc/resources/raster_worker_pool.h" 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/resource_pool.h" 237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "cc/resources/tile.h" 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class RasterWorkerPoolDelegate; 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ResourceProvider; 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CC_EXPORT TileManagerClient { 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) virtual void NotifyReadyToActivate() = 0; 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~TileManagerClient() {} 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 37ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochstruct RasterTaskCompletionStats { 38ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch RasterTaskCompletionStats(); 39ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 40ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch size_t completed_count; 41ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch size_t canceled_count; 42ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}; 43ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochscoped_ptr<base::Value> RasterTaskCompletionStatsAsValue( 44ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const RasterTaskCompletionStats& stats); 45ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This class manages tiles, deciding which should get rasterized and which 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// should no longer have any memory assigned to them. Tile objects are "owned" 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// by layers; they automatically register with the manager when they are 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// created, and unregister from the manager when they are deleted. 5068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class CC_EXPORT TileManager : public RasterWorkerPoolClient, 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public RefCountedManager<Tile> { 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) static scoped_ptr<TileManager> Create( 5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) TileManagerClient* client, 55a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::SequencedTaskRunner* task_runner, 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ResourceProvider* resource_provider, 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ContextProvider* context_provider, 5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) RenderingStatsInstrumentation* rendering_stats_instrumentation, 5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool use_map_image, 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool use_rasterize_on_demand, 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) size_t max_transfer_buffer_usage_bytes, 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) size_t max_raster_usage_bytes, 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) unsigned map_image_texture_target); 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~TileManager(); 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) void ManageTiles(const GlobalStateThatImpactsTilePriority& state); 67ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 68ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Returns true when visible tiles have been initialized. 69ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch bool UpdateVisibleTiles(); 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) scoped_refptr<Tile> CreateTile(PicturePileImpl* picture_pile, 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Size& tile_size, 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& content_rect, 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& opaque_rect, 7568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) float contents_scale, 7668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) int layer_id, 7768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) int source_frame_number, 78a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int flags); 79a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<base::Value> BasicStateAsValue() const; 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<base::Value> AllTilesAsValue() const; 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void GetMemoryStats(size_t* memory_required_bytes, 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) size_t* memory_nice_to_have_bytes, 843551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) size_t* memory_allocated_bytes, 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) size_t* memory_used_bytes) const; 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const MemoryHistory::Entry& memory_stats_from_last_assign() const { 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return memory_stats_from_last_assign_; 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 913551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void InitializeTilesWithResourcesForTesting( 923551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::vector<Tile*>& tiles, 933551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ResourceProvider* resource_provider) { 943551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) for (size_t i = 0; i < tiles.size(); ++i) { 953551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ManagedTileState& mts = tiles[i]->managed_state(); 963551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ManagedTileState::TileVersion& tile_version = 973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) mts.tile_versions[HIGH_QUALITY_NO_LCD_RASTER_MODE]; 983551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) tile_version.resource_ = resource_pool_->AcquireResource(gfx::Size(1, 1)); 1003551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 10168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) bytes_releasable_ += BytesConsumedIfAllocated(tiles[i]); 1023551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) ++resources_releasable_; 1033551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 1043551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 1053551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 106f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void SetGlobalStateForTesting( 107f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const GlobalStateThatImpactsTilePriority& state) { 1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Soft limit is used for resource pool such that 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // memory returns to soft limit after going over. 110f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (state != global_state_) { 111f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) global_state_ = state; 112f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) prioritized_tiles_dirty_ = true; 113f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) resource_pool_->SetResourceUsageLimits( 1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) global_state_.soft_memory_limit_in_bytes, 115f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) global_state_.unused_memory_limit_in_bytes, 116f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) global_state_.num_resources_limit); 117f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 118f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 119f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 12190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) TileManager(TileManagerClient* client, 122a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::SequencedTaskRunner* task_runner, 12390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ResourceProvider* resource_provider, 1245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ContextProvider* context_provider, 12590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) scoped_ptr<RasterWorkerPool> raster_worker_pool, 1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<RasterWorkerPool> direct_raster_worker_pool, 127f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) size_t max_raster_usage_bytes, 1285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RenderingStatsInstrumentation* rendering_stats_instrumentation, 1295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool use_rasterize_on_demand); 13090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Methods called by Tile 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) friend class Tile; 1333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void DidChangeTilePriority(Tile* tile); 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 13568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) void CleanUpReleasedTiles(); 13668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Overriden from RefCountedManager<Tile>: 13868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) virtual void Release(Tile* tile) OVERRIDE; 13968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Overriden from RasterWorkerPoolClient: 1415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual bool ShouldForceTasksRequiredForActivationToComplete() const OVERRIDE; 1427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void DidFinishRunningTasks() OVERRIDE; 1437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void DidFinishRunningTasksRequiredForActivation() OVERRIDE; 1447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 1457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch typedef std::vector<Tile*> TileVector; 1467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch typedef std::set<Tile*> TileSet; 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Virtual for test 1497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual void ScheduleTasks( 1507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const TileVector& tiles_that_need_to_be_rasterized); 151eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void AssignGpuMemoryToTiles(PrioritizedTileSet* tiles, 1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) TileVector* tiles_that_need_to_be_rasterized); 154bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch void GetTilesWithAssignedBins(PrioritizedTileSet* tiles); 155eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 1575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) enum RasterWorkerPoolType { 1585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RASTER_WORKER_POOL_TYPE_DEFAULT, 1595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RASTER_WORKER_POOL_TYPE_DIRECT, 1605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) NUM_RASTER_WORKER_POOL_TYPES 1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) }; 1625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void OnImageDecodeTaskCompleted(int layer_id, 1645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SkPixelRef* pixel_ref, 1655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool was_canceled); 166a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void OnRasterTaskCompleted(Tile::Id tile, 167a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) scoped_ptr<ScopedResource> resource, 168a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) RasterMode raster_mode, 169a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const PicturePileImpl::Analysis& analysis, 170a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool was_canceled); 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 17268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) inline size_t BytesConsumedIfAllocated(const Tile* tile) const { 17368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return Resource::MemorySizeBytes(tile->size(), 17468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) raster_worker_pool_->GetResourceFormat()); 17568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) } 17668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1777d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void FreeResourceForTile(Tile* tile, RasterMode mode); 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void FreeResourcesForTile(Tile* tile); 179868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void FreeUnusedResourcesForTile(Tile* tile); 180a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_refptr<internal::WorkerPoolTask> CreateImageDecodeTask( 181a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) Tile* tile, 182a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) SkPixelRef* pixel_ref); 183a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) scoped_refptr<internal::RasterWorkerPoolTask> CreateRasterTask(Tile* tile); 184eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch scoped_ptr<base::Value> GetMemoryRequirementsAsValue() const; 18568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) void UpdatePrioritizedTileSetIfNeeded(); 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TileManagerClient* client_; 1885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ContextProvider* context_provider_; 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<ResourcePool> resource_pool_; 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<RasterWorkerPool> raster_worker_pool_; 1915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<RasterWorkerPool> direct_raster_worker_pool_; 1925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<RasterWorkerPoolDelegate> raster_worker_pool_delegate_; 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GlobalStateThatImpactsTilePriority global_state_; 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1957dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch typedef base::hash_map<Tile::Id, Tile*> TileMap; 1967dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch TileMap tiles_; 1977dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 198bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch PrioritizedTileSet prioritized_tiles_; 1993551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool prioritized_tiles_dirty_; 2007dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 201ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch bool all_tiles_that_need_to_be_rasterized_have_memory_; 2027dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch bool all_tiles_required_for_activation_have_memory_; 20358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 20458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) size_t memory_required_bytes_; 20558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) size_t memory_nice_to_have_bytes_; 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2073551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) size_t bytes_releasable_; 2083551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) size_t resources_releasable_; 209f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) size_t max_raster_usage_bytes_; 2103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool ever_exceeded_memory_budget_; 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MemoryHistory::Entry memory_stats_from_last_assign_; 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RenderingStatsInstrumentation* rendering_stats_instrumentation_; 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool did_initialize_visible_tile_; 217d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) bool did_check_for_completed_tasks_since_last_schedule_tasks_; 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 219a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) typedef base::hash_map<uint32_t, scoped_refptr<internal::WorkerPoolTask> > 220a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) PixelRefTaskMap; 2217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) typedef base::hash_map<int, PixelRefTaskMap> LayerPixelRefTaskMap; 2227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) LayerPixelRefTaskMap image_decode_tasks_; 2237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 22458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) typedef base::hash_map<int, int> LayerCountMap; 22558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) LayerCountMap used_layer_counts_; 22658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 227ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch RasterTaskCompletionStats update_visible_tiles_stats_; 228ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 22968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) std::vector<Tile*> released_tiles_; 2305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool use_rasterize_on_demand_; 2325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Queues used when scheduling raster tasks. 234a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) RasterTaskQueue raster_queue_[NUM_RASTER_WORKER_POOL_TYPES]; 235a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 236a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) std::vector<scoped_refptr<internal::Task> > orphan_raster_tasks_; 23768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TileManager); 2392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 2402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace cc 2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CC_RESOURCES_TILE_MANAGER_H_ 244