tile_manager.h revision 868fa2fe829687343ffae624259930155e16dbd8
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) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/hash_tables.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/values.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/debug/rendering_stats_instrumentation.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/memory_history.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/picture_pile_impl.h" 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "cc/resources/raster_worker_pool.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/resource_pool.h" 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/tile_priority.h" 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ResourceProvider; 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class Tile; 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class TileVersion; 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 27868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Low quality implies no lcd test; 28868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// high quality implies lcd text. 29868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Note that the order of these matters, from "better" to "worse" in terms of 30868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// quality. 31868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)enum TileRasterMode { 32868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) HIGH_QUALITY_RASTER_MODE = 0, 33868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) HIGH_QUALITY_NO_LCD_RASTER_MODE = 1, 34868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) LOW_QUALITY_RASTER_MODE = 2, 35868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) NUM_RASTER_MODES = 3 36868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}; 37868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CC_EXPORT TileManagerClient { 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void DidInitializeVisibleTile() = 0; 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual bool 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ShouldForceTileUploadsRequiredForActivationToComplete() const = 0; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~TileManagerClient() {} 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Tile manager classifying tiles into a few basic 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// bins: 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)enum TileManagerBin { 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NOW_BIN = 0, // Needed ASAP. 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SOON_BIN = 1, // Impl-side version of prepainting. 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EVENTUALLY_BIN = 2, // Nice to have, if we've got memory and time. 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NEVER_BIN = 3, // Dont bother. 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NUM_BINS = 4 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Be sure to update TileManagerBinAsValue when adding new fields. 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_ptr<base::Value> TileManagerBinAsValue( 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TileManagerBin bin); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)enum TileManagerBinPriority { 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) HIGH_PRIORITY_BIN = 0, 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) LOW_PRIORITY_BIN = 1, 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NUM_BIN_PRIORITIES = 2 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_ptr<base::Value> TileManagerBinPriorityAsValue( 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TileManagerBinPriority bin); 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// This class manages tiles, deciding which should get rasterized and which 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// should no longer have any memory assigned to them. Tile objects are "owned" 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// by layers; they automatically register with the manager when they are 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// created, and unregister from the manager when they are deleted. 73868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class CC_EXPORT TileManager { 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 75868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) typedef base::hash_set<uint32_t> PixelRefSet; 76868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 7790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) static scoped_ptr<TileManager> Create( 7890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) TileManagerClient* client, 7990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ResourceProvider* resource_provider, 8090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) size_t num_raster_threads, 8190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool use_color_estimator, 8290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) RenderingStatsInstrumentation* rendering_stats_instrumentation, 8390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool use_map_image); 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~TileManager(); 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GlobalStateThatImpactsTilePriority& GlobalState() const { 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return global_state_; 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetGlobalState(const GlobalStateThatImpactsTilePriority& state); 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void ManageTiles(); 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void CheckForCompletedTileUploads(); 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<base::Value> BasicStateAsValue() const; 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<base::Value> AllTilesAsValue() const; 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void GetMemoryStats(size_t* memory_required_bytes, 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) size_t* memory_nice_to_have_bytes, 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) size_t* memory_used_bytes) const; 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const MemoryHistory::Entry& memory_stats_from_last_assign() const { 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return memory_stats_from_last_assign_; 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool AreTilesRequiredForActivationReady() const { 10590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return tiles_that_need_to_be_initialized_for_activation_.empty(); 10690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 10790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 10990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) TileManager(TileManagerClient* client, 11090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ResourceProvider* resource_provider, 11190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) scoped_ptr<RasterWorkerPool> raster_worker_pool, 11290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) size_t num_raster_threads, 11390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool use_color_estimator, 114868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) RenderingStatsInstrumentation* rendering_stats_instrumentation); 11590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Methods called by Tile 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) friend class Tile; 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RegisterTile(Tile* tile); 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UnregisterTile(Tile* tile); 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Virtual for test 122868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual void ScheduleTasks(); 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Data that is passed to raster tasks. 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) struct RasterTaskMetadata { 127b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) scoped_ptr<base::Value> AsValue() const; 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool is_tile_in_pending_tree_now_bin; 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TileResolution tile_resolution; 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int layer_id; 131b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) const void* tile_id; 13290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) int source_frame_number; 133868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) TileRasterMode raster_mode; 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void AssignBinsToTiles(); 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SortTiles(); 138868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) TileRasterMode DetermineRasterMode(const Tile* tile) const; 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void AssignGpuMemoryToTiles(); 140868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void FreeResourceForTile(Tile* tile, TileRasterMode mode); 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void FreeResourcesForTile(Tile* tile); 142868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) void FreeUnusedResourcesForTile(Tile* tile); 143868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) RasterWorkerPool::Task CreateImageDecodeTask( 144868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Tile* tile, skia::LazyPixelRef* pixel_ref); 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnImageDecodeTaskCompleted( 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<Tile> tile, 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) uint32_t pixel_ref_id); 148868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) RasterTaskMetadata GetRasterTaskMetadata(const Tile& tile) const; 149868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) RasterWorkerPool::RasterTask CreateRasterTask( 150868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Tile* tile, 151868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) PixelRefSet* decoded_images); 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void OnRasterTaskCompleted( 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<Tile> tile, 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<ResourcePool::Resource> resource, 155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PicturePileImpl::Analysis* analysis, 156868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) TileRasterMode raster_mode, 157868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) bool was_canceled); 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void DidFinishTileInitialization(Tile* tile); 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void DidTileTreeBinChange(Tile* tile, 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TileManagerBin new_tree_bin, 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WhichTree tree); 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<Value> GetMemoryRequirementsAsValue() const; 16390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void AddRequiredTileForActivation(Tile* tile); 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 165868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) static void RunImageDecodeTask( 166868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) skia::LazyPixelRef* pixel_ref, 167868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) int layer_id, 168868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) RenderingStatsInstrumentation* stats_instrumentation); 169868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) static bool RunAnalyzeAndRasterTask( 170868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const base::Callback<void(PicturePileImpl* picture_pile)>& analyze_task, 171868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) const RasterWorkerPool::RasterTask::Callback& raster_task, 172868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SkDevice* device, 173c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PicturePileImpl* picture_pile); 174c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static void RunAnalyzeTask( 175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PicturePileImpl::Analysis* analysis, 176c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Rect rect, 177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) float contents_scale, 178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool use_color_estimator, 179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const RasterTaskMetadata& metadata, 180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) RenderingStatsInstrumentation* stats_instrumentation, 181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PicturePileImpl* picture_pile); 182868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) static bool RunRasterTask( 183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) PicturePileImpl::Analysis* analysis, 184c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Rect rect, 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float contents_scale, 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const RasterTaskMetadata& metadata, 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RenderingStatsInstrumentation* stats_instrumentation, 188868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) SkDevice* device, 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PicturePileImpl* picture_pile); 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TileManagerClient* client_; 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<ResourcePool> resource_pool_; 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<RasterWorkerPool> raster_worker_pool_; 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GlobalStateThatImpactsTilePriority global_state_; 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef std::vector<Tile*> TileVector; 197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TileVector tiles_; 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TileVector tiles_that_need_to_be_rasterized_; 19990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef std::set<Tile*> TileSet; 20090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) TileSet tiles_that_need_to_be_initialized_for_activation_; 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) typedef base::hash_map<uint32_t, RasterWorkerPool::Task> PixelRefMap; 203868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) PixelRefMap pending_decode_tasks_; 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool ever_exceeded_memory_budget_; 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MemoryHistory::Entry memory_stats_from_last_assign_; 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RenderingStatsInstrumentation* rendering_stats_instrumentation_; 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool use_color_estimator_; 211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool did_initialize_visible_tile_; 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TileManager); 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace cc 2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CC_RESOURCES_TILE_MANAGER_H_ 219