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_LAYERS_PICTURE_LAYER_IMPL_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CC_LAYERS_PICTURE_LAYER_IMPL_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <set> 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <string> 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <vector> 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "cc/base/cc_export.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/base/scoped_ptr_vector.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/layers/layer_impl.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/picture_layer_tiling.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/picture_layer_tiling_set.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/picture_pile_impl.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "skia/ext/refptr.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "third_party/skia/include/core/SkPicture.h" 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct AppendQuadsData; 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class MicroBenchmarkImpl; 2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)class Tile; 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class CC_EXPORT PictureLayerImpl 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : public LayerImpl, 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NON_EXPORTED_BASE(public PictureLayerTilingClient) { 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) struct CC_EXPORT Pair { 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Pair(); 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) Pair(PictureLayerImpl* active_layer, PictureLayerImpl* pending_layer); 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ~Pair(); 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PictureLayerImpl* active; 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PictureLayerImpl* pending; 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }; 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) class CC_EXPORT LayerRasterTileIterator { 4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) public: 4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) LayerRasterTileIterator(); 4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) LayerRasterTileIterator(PictureLayerImpl* layer, bool prioritize_low_res); 4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ~LayerRasterTileIterator(); 4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) Tile* operator*(); 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const Tile* operator*() const; 4823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) LayerRasterTileIterator& operator++(); 4923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) operator bool() const; 5023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 5123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) private: 5223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) enum IteratorType { LOW_RES, HIGH_RES, NUM_ITERATORS }; 5323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void AdvanceToNextStage(); 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PictureLayerImpl* layer_; 5723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 5823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) struct IterationStage { 5923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) IteratorType iterator_type; 60e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch TilePriority::PriorityBin tile_type; 6123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) }; 6223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) size_t current_stage_; 6423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 6523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // One low res stage, and three high res stages. 6623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) IterationStage stages_[4]; 6723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PictureLayerTiling::TilingRasterTileIterator iterators_[NUM_ITERATORS]; 6823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) }; 6923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 70c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch class CC_EXPORT LayerEvictionTileIterator { 71c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch public: 72c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch LayerEvictionTileIterator(); 73a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch LayerEvictionTileIterator(PictureLayerImpl* layer, 74a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch TreePriority tree_priority); 75c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ~LayerEvictionTileIterator(); 76c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 77c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch Tile* operator*(); 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const Tile* operator*() const; 79c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch LayerEvictionTileIterator& operator++(); 80c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch operator bool() const; 81c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 82c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch private: 836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bool AdvanceToNextCategory(); 846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bool AdvanceToNextTilingRangeType(); 856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) bool AdvanceToNextTiling(); 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) PictureLayerTilingSet::TilingRange CurrentTilingRange() const; 886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) size_t CurrentTilingIndex() const; 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) PictureLayerImpl* layer_; 916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) TreePriority tree_priority_; 92c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 936e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) PictureLayerTiling::EvictionCategory current_category_; 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) PictureLayerTilingSet::TilingRangeType current_tiling_range_type_; 956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) size_t current_tiling_; 966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) PictureLayerTiling::TilingEvictionTileIterator current_iterator_; 97c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch }; 98c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static scoped_ptr<PictureLayerImpl> Create(LayerTreeImpl* tree_impl, int id) { 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return make_scoped_ptr(new PictureLayerImpl(tree_impl, id)); 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~PictureLayerImpl(); 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // LayerImpl overrides. 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual const char* LayerTypeAsString() const OVERRIDE; 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OVERRIDE; 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE; 109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void AppendQuads(RenderPass* render_pass, 110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const OcclusionTracker<LayerImpl>& occlusion_tracker, 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AppendQuadsData* append_quads_data) OVERRIDE; 11234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) virtual void UpdateTiles(const Occlusion& occlusion_in_content_space, 11334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) bool resourceless_software_draw) OVERRIDE; 114cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void NotifyTileStateChanged(const Tile* tile) OVERRIDE; 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void DidBecomeActive() OVERRIDE; 116868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual void DidBeginTracing() OVERRIDE; 1175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void ReleaseResources() OVERRIDE; 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual skia::RefPtr<SkPicture> GetPicture() OVERRIDE; 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // PictureLayerTilingClient overrides. 1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual scoped_refptr<Tile> CreateTile( 1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PictureLayerTiling* tiling, 1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& content_rect) OVERRIDE; 124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual PicturePileImpl* GetPile() OVERRIDE; 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual gfx::Size CalculateTileSize( 1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Size& content_bounds) const OVERRIDE; 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual const Region* GetInvalidation() OVERRIDE; 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual const PictureLayerTiling* GetTwinTiling( 129a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const PictureLayerTiling* tiling) const OVERRIDE; 1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual PictureLayerTiling* GetRecycledTwinTiling( 1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const PictureLayerTiling* tiling) OVERRIDE; 1325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual size_t GetMaxTilesForInterestArea() const OVERRIDE; 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual float GetSkewportTargetTimeInSeconds() const OVERRIDE; 1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual int GetSkewportExtrapolationLimitInContentPixels() const OVERRIDE; 1355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual WhichTree GetTree() const OVERRIDE; 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 13790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // PushPropertiesTo active tree => pending tree. 138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SyncTiling(const PictureLayerTiling* tiling); 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Mask-related functions. 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ResourceProvider::ResourceId ContentsResourceId() const OVERRIDE; 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 14390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual size_t GPUMemoryUsageInBytes() const OVERRIDE; 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 145f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void RunMicroBenchmark(MicroBenchmarkImpl* benchmark) OVERRIDE; 146f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 14723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Functions used by tile manager. 14823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) PictureLayerImpl* GetTwinLayer() { return twin_layer_; } 14923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) bool IsOnActiveOrPendingTree() const; 1506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Virtual for testing. 1516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual bool HasValidTilePriorities() const; 152cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool AllTilesRequiredForActivationAreReadyToDraw() const; 15323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 15523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) friend class LayerRasterTileIterator; 15623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PictureLayerImpl(LayerTreeImpl* tree_impl, int id); 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PictureLayerTiling* AddTiling(float contents_scale); 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void RemoveTiling(float contents_scale); 160f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void RemoveAllTilings(); 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SyncFromActiveLayer(const PictureLayerImpl* other); 1626d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) void AddTilingsForRasterScale(); 1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void UpdateTilePriorities(const Occlusion& occlusion_in_content_space); 1646d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) virtual bool ShouldAdjustRasterScale() const; 1656d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) virtual void RecalculateRasterScales(); 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void CleanUpTilingsOnActiveLayer( 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<PictureLayerTiling*> used_tilings); 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float MinimumContentsScale() const; 169f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) float SnappedContentsScale(float new_contents_scale); 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void ResetRasterScale(); 171010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void MarkVisibleResourcesAsRequired() const; 172a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool MarkVisibleTilesAsRequired( 173a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PictureLayerTiling* tiling, 174a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const PictureLayerTiling* optional_twin_tiling, 1755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Rect& rect, 176010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) const Region& missing_region) const; 17703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) gfx::Rect GetViewportForTilePriorityInContentSpace() const; 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci PictureLayerImpl* GetRecycledTwinLayer(); 1795b892326406927b709cdaf6c384d4ababf456332Ben Murdoch void UpdatePile(scoped_refptr<PicturePileImpl> pile); 180a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1813551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void DoPostCommitInitializationIfNeeded() { 1823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (needs_post_commit_initialization_) 1833551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) DoPostCommitInitialization(); 1843551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 1853551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void DoPostCommitInitialization(); 18690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 18790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool CanHaveTilings() const; 18890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool CanHaveTilingWithScale(float contents_scale) const; 189424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) void SanityCheckTilingState() const; 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 19103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bool ShouldAdjustRasterScaleDuringScaleAnimations() const; 19203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void GetDebugBorderProperties( 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SkColor* color, float* width) const OVERRIDE; 1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void GetAllTilesForTracing( 1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::set<const Tile*>* tiles) const OVERRIDE; 1975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void AsValueInto(base::debug::TracedValue* dict) const OVERRIDE; 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 199f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void UpdateIdealScales(); 200f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) float MaximumTilingContentsScale() const; 201f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 20290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) PictureLayerImpl* twin_layer_; 20390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PictureLayerTilingSet> tilings_; 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<PicturePileImpl> pile_; 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Region invalidation_; 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float ideal_page_scale_; 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float ideal_device_scale_; 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float ideal_source_scale_; 211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) float ideal_contents_scale_; 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float raster_page_scale_; 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float raster_device_scale_; 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) float raster_source_scale_; 216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) float raster_contents_scale_; 217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) float low_res_raster_contents_scale_; 218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 219010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) bool raster_source_scale_is_fixed_; 2206d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) bool was_screen_space_transform_animating_; 2213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool needs_post_commit_initialization_; 222d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // A sanity state check to make sure UpdateTilePriorities only gets called 223d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) // after a CalculateContentsScale/ManageTilings. 224d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) bool should_update_tile_priorities_; 22523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Save a copy of the visible rect and viewport size of the last frame that 2270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // has a valid viewport for prioritizing tiles. 2280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch gfx::Rect visible_rect_for_tile_priority_; 2295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) gfx::Rect viewport_rect_for_tile_priority_; 2300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch gfx::Transform screen_space_transform_for_tile_priority_; 2310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) friend class PictureLayer; 2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PictureLayerImpl); 2342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 2352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 236c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace cc 2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // CC_LAYERS_PICTURE_LAYER_IMPL_H_ 239