diff options
author | Zeno Albisser <zeno.albisser@theqtcompany.com> | 2014-12-05 15:04:29 +0100 |
---|---|---|
committer | Andras Becsi <andras.becsi@theqtcompany.com> | 2014-12-09 10:49:28 +0100 |
commit | af6588f8d723931a298c995fa97259bb7f7deb55 (patch) | |
tree | 060ca707847ba1735f01af2372e0d5e494dc0366 /chromium/cc/layers/picture_layer_impl.h | |
parent | 2fff84d821cc7b1c785f6404e0f8091333283e74 (diff) | |
download | qtwebengine-chromium-af6588f8d723931a298c995fa97259bb7f7deb55.tar.gz |
BASELINE: Update chromium to 40.0.2214.28 and ninja to 1.5.3.
Change-Id: I759465284fd64d59ad120219cbe257f7402c4181
Reviewed-by: Andras Becsi <andras.becsi@theqtcompany.com>
Diffstat (limited to 'chromium/cc/layers/picture_layer_impl.h')
-rw-r--r-- | chromium/cc/layers/picture_layer_impl.h | 139 |
1 files changed, 79 insertions, 60 deletions
diff --git a/chromium/cc/layers/picture_layer_impl.h b/chromium/cc/layers/picture_layer_impl.h index 6b1703e4a6e..024e31527e9 100644 --- a/chromium/cc/layers/picture_layer_impl.h +++ b/chromium/cc/layers/picture_layer_impl.h @@ -5,6 +5,7 @@ #ifndef CC_LAYERS_PICTURE_LAYER_IMPL_H_ #define CC_LAYERS_PICTURE_LAYER_IMPL_H_ +#include <set> #include <string> #include <vector> @@ -20,7 +21,6 @@ namespace cc { struct AppendQuadsData; -class QuadSink; class MicroBenchmarkImpl; class Tile; @@ -28,6 +28,15 @@ class CC_EXPORT PictureLayerImpl : public LayerImpl, NON_EXPORTED_BASE(public PictureLayerTilingClient) { public: + struct CC_EXPORT Pair { + Pair(); + Pair(PictureLayerImpl* active_layer, PictureLayerImpl* pending_layer); + ~Pair(); + + PictureLayerImpl* active; + PictureLayerImpl* pending; + }; + class CC_EXPORT LayerRasterTileIterator { public: LayerRasterTileIterator(); @@ -35,12 +44,15 @@ class CC_EXPORT PictureLayerImpl ~LayerRasterTileIterator(); Tile* operator*(); + const Tile* operator*() const; LayerRasterTileIterator& operator++(); operator bool() const; private: enum IteratorType { LOW_RES, HIGH_RES, NUM_ITERATORS }; + void AdvanceToNextStage(); + PictureLayerImpl* layer_; struct IterationStage { @@ -48,7 +60,7 @@ class CC_EXPORT PictureLayerImpl TilePriority::PriorityBin tile_type; }; - int current_stage_; + size_t current_stage_; // One low res stage, and three high res stages. IterationStage stages_[4]; @@ -63,71 +75,79 @@ class CC_EXPORT PictureLayerImpl ~LayerEvictionTileIterator(); Tile* operator*(); + const Tile* operator*() const; LayerEvictionTileIterator& operator++(); operator bool() const; private: - void AdvanceToNextIterator(); - bool IsCorrectType( - PictureLayerTiling::TilingEvictionTileIterator* it) const; + bool AdvanceToNextCategory(); + bool AdvanceToNextTilingRangeType(); + bool AdvanceToNextTiling(); - std::vector<PictureLayerTiling::TilingEvictionTileIterator> iterators_; - size_t iterator_index_; - TilePriority::PriorityBin iteration_stage_; - bool required_for_activation_; + PictureLayerTilingSet::TilingRange CurrentTilingRange() const; + size_t CurrentTilingIndex() const; PictureLayerImpl* layer_; + TreePriority tree_priority_; + + PictureLayerTiling::EvictionCategory current_category_; + PictureLayerTilingSet::TilingRangeType current_tiling_range_type_; + size_t current_tiling_; + PictureLayerTiling::TilingEvictionTileIterator current_iterator_; }; static scoped_ptr<PictureLayerImpl> Create(LayerTreeImpl* tree_impl, int id) { return make_scoped_ptr(new PictureLayerImpl(tree_impl, id)); } - virtual ~PictureLayerImpl(); + ~PictureLayerImpl() override; // LayerImpl overrides. - virtual const char* LayerTypeAsString() const OVERRIDE; - virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) - OVERRIDE; - virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE; - virtual void AppendQuads(QuadSink* quad_sink, - AppendQuadsData* append_quads_data) OVERRIDE; - virtual void UpdateTiles() OVERRIDE; - virtual void NotifyTileStateChanged(const Tile* tile) OVERRIDE; - virtual void DidBecomeActive() OVERRIDE; - virtual void DidBeginTracing() OVERRIDE; - virtual void ReleaseResources() OVERRIDE; - virtual skia::RefPtr<SkPicture> GetPicture() OVERRIDE; + const char* LayerTypeAsString() const override; + scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) override; + void PushPropertiesTo(LayerImpl* layer) override; + void AppendQuads(RenderPass* render_pass, + const Occlusion& occlusion_in_content_space, + AppendQuadsData* append_quads_data) override; + void UpdateTiles(const Occlusion& occlusion_in_content_space, + bool resourceless_software_draw) override; + void NotifyTileStateChanged(const Tile* tile) override; + void DidBecomeActive() override; + void DidBeginTracing() override; + void ReleaseResources() override; + skia::RefPtr<SkPicture> GetPicture() override; // PictureLayerTilingClient overrides. - virtual scoped_refptr<Tile> CreateTile( - PictureLayerTiling* tiling, - const gfx::Rect& content_rect) OVERRIDE; - virtual void UpdatePile(Tile* tile) OVERRIDE; - virtual gfx::Size CalculateTileSize( - const gfx::Size& content_bounds) const OVERRIDE; - virtual const Region* GetInvalidation() OVERRIDE; - virtual const PictureLayerTiling* GetTwinTiling( - const PictureLayerTiling* tiling) const OVERRIDE; - virtual size_t GetMaxTilesForInterestArea() const OVERRIDE; - virtual float GetSkewportTargetTimeInSeconds() const OVERRIDE; - virtual int GetSkewportExtrapolationLimitInContentPixels() const OVERRIDE; + scoped_refptr<Tile> CreateTile(PictureLayerTiling* tiling, + const gfx::Rect& content_rect) override; + RasterSource* GetRasterSource() override; + gfx::Size CalculateTileSize(const gfx::Size& content_bounds) const override; + const Region* GetPendingInvalidation() override; + const PictureLayerTiling* GetPendingOrActiveTwinTiling( + const PictureLayerTiling* tiling) const override; + PictureLayerTiling* GetRecycledTwinTiling( + const PictureLayerTiling* tiling) override; + size_t GetMaxTilesForInterestArea() const override; + float GetSkewportTargetTimeInSeconds() const override; + int GetSkewportExtrapolationLimitInContentPixels() const override; + WhichTree GetTree() const override; + bool RequiresHighResToDraw() const override; // PushPropertiesTo active tree => pending tree. void SyncTiling(const PictureLayerTiling* tiling); - // Mask-related functions - void SetIsMask(bool is_mask); - virtual ResourceProvider::ResourceId ContentsResourceId() const OVERRIDE; + // Mask-related functions. + void GetContentsResourceId(ResourceProvider::ResourceId* resource_id, + gfx::Size* resource_size) const override; - virtual size_t GPUMemoryUsageInBytes() const OVERRIDE; + size_t GPUMemoryUsageInBytes() const override; - virtual void RunMicroBenchmark(MicroBenchmarkImpl* benchmark) OVERRIDE; + void RunMicroBenchmark(MicroBenchmarkImpl* benchmark) override; // Functions used by tile manager. - PictureLayerImpl* GetTwinLayer() { return twin_layer_; } - WhichTree GetTree() const; + PictureLayerImpl* GetPendingOrActiveTwinLayer() const; bool IsOnActiveOrPendingTree() const; - bool HasValidTilePriorities() const; + // Virtual for testing. + virtual bool HasValidTilePriorities() const; bool AllTilesRequiredForActivationAreReadyToDraw() const; protected: @@ -139,7 +159,7 @@ class CC_EXPORT PictureLayerImpl void RemoveAllTilings(); void SyncFromActiveLayer(const PictureLayerImpl* other); void AddTilingsForRasterScale(); - void UpdateTilePriorities(); + void UpdateTilePriorities(const Occlusion& occlusion_in_content_space); virtual bool ShouldAdjustRasterScale() const; virtual void RecalculateRasterScales(); void CleanUpTilingsOnActiveLayer( @@ -147,13 +167,9 @@ class CC_EXPORT PictureLayerImpl float MinimumContentsScale() const; float SnappedContentsScale(float new_contents_scale); void ResetRasterScale(); - void MarkVisibleResourcesAsRequired() const; - bool MarkVisibleTilesAsRequired( - PictureLayerTiling* tiling, - const PictureLayerTiling* optional_twin_tiling, - float contents_scale, - const gfx::Rect& rect, - const Region& missing_region) const; + gfx::Rect GetViewportForTilePriorityInContentSpace() const; + PictureLayerImpl* GetRecycledTwinLayer() const; + void UpdatePile(scoped_refptr<PicturePileImpl> pile); void DoPostCommitInitializationIfNeeded() { if (needs_post_commit_initialization_) @@ -165,9 +181,11 @@ class CC_EXPORT PictureLayerImpl bool CanHaveTilingWithScale(float contents_scale) const; void SanityCheckTilingState() const; - virtual void GetDebugBorderProperties( - SkColor* color, float* width) const OVERRIDE; - virtual void AsValueInto(base::DictionaryValue* dict) const OVERRIDE; + bool ShouldAdjustRasterScaleDuringScaleAnimations() const; + + void GetDebugBorderProperties(SkColor* color, float* width) const override; + void GetAllTilesForTracing(std::set<const Tile*>* tiles) const override; + void AsValueInto(base::debug::TracedValue* dict) const override; virtual void UpdateIdealScales(); float MaximumTilingContentsScale() const; @@ -178,8 +196,6 @@ class CC_EXPORT PictureLayerImpl scoped_refptr<PicturePileImpl> pile_; Region invalidation_; - bool is_mask_; - float ideal_page_scale_; float ideal_device_scale_; float ideal_source_scale_; @@ -197,12 +213,15 @@ class CC_EXPORT PictureLayerImpl // A sanity state check to make sure UpdateTilePriorities only gets called // after a CalculateContentsScale/ManageTilings. bool should_update_tile_priorities_; - - // Save a copy of the visible rect and viewport size of the last frame that - // has a valid viewport for prioritizing tiles. + bool only_used_low_res_last_append_quads_; + + // Any draw properties derived from |transform|, |viewport|, and |clip| + // parameters in LayerTreeHostImpl::SetExternalDrawConstraints are not valid + // for prioritizing tiles during resourceless software draws. This is because + // resourceless software draws can have wildly different transforms/viewports + // from regular draws. Save a copy of the required draw properties of the last + // frame that has a valid viewport for prioritizing tiles. gfx::Rect visible_rect_for_tile_priority_; - gfx::Size viewport_size_for_tile_priority_; - gfx::Transform screen_space_transform_for_tile_priority_; friend class PictureLayer; DISALLOW_COPY_AND_ASSIGN(PictureLayerImpl); |