Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(506)

Side by Side Diff: cc/layers/picture_layer_impl.h

Issue 367833003: cc: Start using raster/eviction iterators. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: perf test fix Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CC_LAYERS_PICTURE_LAYER_IMPL_H_ 5 #ifndef CC_LAYERS_PICTURE_LAYER_IMPL_H_
6 #define CC_LAYERS_PICTURE_LAYER_IMPL_H_ 6 #define CC_LAYERS_PICTURE_LAYER_IMPL_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "cc/base/cc_export.h" 11 #include "cc/base/cc_export.h"
12 #include "cc/base/scoped_ptr_vector.h" 12 #include "cc/base/scoped_ptr_vector.h"
13 #include "cc/layers/layer_impl.h" 13 #include "cc/layers/layer_impl.h"
14 #include "cc/resources/picture_layer_tiling.h" 14 #include "cc/resources/picture_layer_tiling.h"
15 #include "cc/resources/picture_layer_tiling_set.h" 15 #include "cc/resources/picture_layer_tiling_set.h"
16 #include "cc/resources/picture_pile_impl.h" 16 #include "cc/resources/picture_pile_impl.h"
17 #include "skia/ext/refptr.h" 17 #include "skia/ext/refptr.h"
18 #include "third_party/skia/include/core/SkPicture.h" 18 #include "third_party/skia/include/core/SkPicture.h"
19 19
20 namespace cc { 20 namespace cc {
21 21
22 struct AppendQuadsData; 22 struct AppendQuadsData;
23 class MicroBenchmarkImpl; 23 class MicroBenchmarkImpl;
24 class Tile; 24 class Tile;
25 25
26 class PictureLayerImpl;
27 struct CC_EXPORT PairedPictureLayer {
28 PairedPictureLayer();
29 ~PairedPictureLayer();
30
31 PictureLayerImpl* active_layer;
32 PictureLayerImpl* pending_layer;
33 };
34
26 class CC_EXPORT PictureLayerImpl 35 class CC_EXPORT PictureLayerImpl
27 : public LayerImpl, 36 : public LayerImpl,
28 NON_EXPORTED_BASE(public PictureLayerTilingClient) { 37 NON_EXPORTED_BASE(public PictureLayerTilingClient) {
29 public: 38 public:
30 class CC_EXPORT LayerRasterTileIterator { 39 class CC_EXPORT LayerRasterTileIterator {
31 public: 40 public:
32 LayerRasterTileIterator(); 41 LayerRasterTileIterator();
33 LayerRasterTileIterator(PictureLayerImpl* layer, bool prioritize_low_res); 42 LayerRasterTileIterator(PictureLayerImpl* layer, bool prioritize_low_res);
34 ~LayerRasterTileIterator(); 43 ~LayerRasterTileIterator();
35 44
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 const gfx::Rect& content_rect) OVERRIDE; 114 const gfx::Rect& content_rect) OVERRIDE;
106 virtual PicturePileImpl* GetPile() OVERRIDE; 115 virtual PicturePileImpl* GetPile() OVERRIDE;
107 virtual gfx::Size CalculateTileSize( 116 virtual gfx::Size CalculateTileSize(
108 const gfx::Size& content_bounds) const OVERRIDE; 117 const gfx::Size& content_bounds) const OVERRIDE;
109 virtual const Region* GetInvalidation() OVERRIDE; 118 virtual const Region* GetInvalidation() OVERRIDE;
110 virtual const PictureLayerTiling* GetTwinTiling( 119 virtual const PictureLayerTiling* GetTwinTiling(
111 const PictureLayerTiling* tiling) const OVERRIDE; 120 const PictureLayerTiling* tiling) const OVERRIDE;
112 virtual size_t GetMaxTilesForInterestArea() const OVERRIDE; 121 virtual size_t GetMaxTilesForInterestArea() const OVERRIDE;
113 virtual float GetSkewportTargetTimeInSeconds() const OVERRIDE; 122 virtual float GetSkewportTargetTimeInSeconds() const OVERRIDE;
114 virtual int GetSkewportExtrapolationLimitInContentPixels() const OVERRIDE; 123 virtual int GetSkewportExtrapolationLimitInContentPixels() const OVERRIDE;
124 virtual WhichTree GetTree() const OVERRIDE;
125 virtual bool RequiresHighResToDraw() const OVERRIDE;
115 126
116 // PushPropertiesTo active tree => pending tree. 127 // PushPropertiesTo active tree => pending tree.
117 void SyncTiling(const PictureLayerTiling* tiling); 128 void SyncTiling(const PictureLayerTiling* tiling);
118 129
119 // Mask-related functions 130 // Mask-related functions
120 void SetIsMask(bool is_mask); 131 void SetIsMask(bool is_mask);
121 virtual ResourceProvider::ResourceId ContentsResourceId() const OVERRIDE; 132 virtual ResourceProvider::ResourceId ContentsResourceId() const OVERRIDE;
122 133
123 virtual size_t GPUMemoryUsageInBytes() const OVERRIDE; 134 virtual size_t GPUMemoryUsageInBytes() const OVERRIDE;
124 135
125 virtual void RunMicroBenchmark(MicroBenchmarkImpl* benchmark) OVERRIDE; 136 virtual void RunMicroBenchmark(MicroBenchmarkImpl* benchmark) OVERRIDE;
126 137
127 // Functions used by tile manager. 138 // Functions used by tile manager.
128 PictureLayerImpl* GetTwinLayer() { return twin_layer_; } 139 PictureLayerImpl* GetTwinLayer() { return twin_layer_; }
129 WhichTree GetTree() const;
130 bool IsOnActiveOrPendingTree() const; 140 bool IsOnActiveOrPendingTree() const;
131 bool HasValidTilePriorities() const; 141 bool HasValidTilePriorities() const;
132 bool AllTilesRequiredForActivationAreReadyToDraw() const; 142 bool AllTilesRequiredForActivationAreReadyToDraw() const;
133 143
134 protected: 144 protected:
135 friend class LayerRasterTileIterator; 145 friend class LayerRasterTileIterator;
136 146
137 PictureLayerImpl(LayerTreeImpl* tree_impl, int id); 147 PictureLayerImpl(LayerTreeImpl* tree_impl, int id);
138 PictureLayerTiling* AddTiling(float contents_scale); 148 PictureLayerTiling* AddTiling(float contents_scale);
139 void RemoveTiling(float contents_scale); 149 void RemoveTiling(float contents_scale);
140 void RemoveAllTilings(); 150 void RemoveAllTilings();
141 void SyncFromActiveLayer(const PictureLayerImpl* other); 151 void SyncFromActiveLayer(const PictureLayerImpl* other);
142 void AddTilingsForRasterScale(); 152 void AddTilingsForRasterScale();
143 void UpdateTilePriorities( 153 void UpdateTilePriorities(
144 const OcclusionTracker<LayerImpl>* occlusion_tracker); 154 const OcclusionTracker<LayerImpl>* occlusion_tracker);
145 virtual bool ShouldAdjustRasterScale() const; 155 virtual bool ShouldAdjustRasterScale() const;
146 virtual void RecalculateRasterScales(); 156 virtual void RecalculateRasterScales();
147 void CleanUpTilingsOnActiveLayer( 157 void CleanUpTilingsOnActiveLayer(
148 std::vector<PictureLayerTiling*> used_tilings); 158 std::vector<PictureLayerTiling*> used_tilings);
149 float MinimumContentsScale() const; 159 float MinimumContentsScale() const;
150 float SnappedContentsScale(float new_contents_scale); 160 float SnappedContentsScale(float new_contents_scale);
151 void ResetRasterScale(); 161 void ResetRasterScale();
152 void MarkVisibleResourcesAsRequired() const;
153 bool MarkVisibleTilesAsRequired(
154 PictureLayerTiling* tiling,
155 const PictureLayerTiling* optional_twin_tiling,
156 float contents_scale,
157 const gfx::Rect& rect,
158 const Region& missing_region) const;
159 162
160 void DoPostCommitInitializationIfNeeded() { 163 void DoPostCommitInitializationIfNeeded() {
161 if (needs_post_commit_initialization_) 164 if (needs_post_commit_initialization_)
162 DoPostCommitInitialization(); 165 DoPostCommitInitialization();
163 } 166 }
164 void DoPostCommitInitialization(); 167 void DoPostCommitInitialization();
165 168
166 bool CanHaveTilings() const; 169 bool CanHaveTilings() const;
167 bool CanHaveTilingWithScale(float contents_scale) const; 170 bool CanHaveTilingWithScale(float contents_scale) const;
168 void SanityCheckTilingState() const; 171 void SanityCheckTilingState() const;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 gfx::Size viewport_size_for_tile_priority_; 209 gfx::Size viewport_size_for_tile_priority_;
207 gfx::Transform screen_space_transform_for_tile_priority_; 210 gfx::Transform screen_space_transform_for_tile_priority_;
208 211
209 friend class PictureLayer; 212 friend class PictureLayer;
210 DISALLOW_COPY_AND_ASSIGN(PictureLayerImpl); 213 DISALLOW_COPY_AND_ASSIGN(PictureLayerImpl);
211 }; 214 };
212 215
213 } // namespace cc 216 } // namespace cc
214 217
215 #endif // CC_LAYERS_PICTURE_LAYER_IMPL_H_ 218 #endif // CC_LAYERS_PICTURE_LAYER_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698