| Index: cc/resources/tiling_set_eviction_queue.h
|
| diff --git a/cc/resources/tiling_set_eviction_queue.h b/cc/resources/tiling_set_eviction_queue.h
|
| deleted file mode 100644
|
| index 58e5a7d743e4e8e82e4590558ebfc48f311feadf..0000000000000000000000000000000000000000
|
| --- a/cc/resources/tiling_set_eviction_queue.h
|
| +++ /dev/null
|
| @@ -1,203 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef CC_RESOURCES_TILING_SET_EVICTION_QUEUE_H_
|
| -#define CC_RESOURCES_TILING_SET_EVICTION_QUEUE_H_
|
| -
|
| -#include <vector>
|
| -
|
| -#include "cc/base/cc_export.h"
|
| -#include "cc/resources/picture_layer_tiling_set.h"
|
| -#include "cc/resources/prioritized_tile.h"
|
| -
|
| -namespace cc {
|
| -
|
| -// This eviction queue returned tiles from all tilings in a tiling set in
|
| -// the order in which the tiles should be evicted. It can be thought of as the
|
| -// following:
|
| -// for all phases:
|
| -// for all ordered tilings:
|
| -// yield the next tile for the given phase from the given tiling
|
| -//
|
| -// Phases are the following (in order in which they are processed):
|
| -// EVENTUALLY_RECT - Tiles in the eventually region of the tiling.
|
| -// SOON_BORDER_RECT - Tiles in the prepainting skirt of the tiling.
|
| -// SKEWPORT_RECT - Tiles in the skewport of the tiling.
|
| -// PENDING_VISIBLE_RECT - Tiles that will be visible upon activation, not
|
| -// required for activation.
|
| -// PENDING_VISIBLE_RECT_REQUIRED_FOR_ACTIVATION - Tiles that will be visible
|
| -// upon activation, required for activation.
|
| -// VISIBLE_RECT_OCCLUDED - Occluded, not required for activation, visible tiles.
|
| -// VISIBLE_RECT_UNOCCLUDED - Unoccluded, not required for activation, visible
|
| -// tiles.
|
| -// VISIBLE_RECT_REQUIRED_FOR_ACTIVATION_OCCLUDED - Occluded, but required for
|
| -// activation, visible tiles. This can happen when an active tree tile is
|
| -// occluded, but is not occluded on the pending tree (and is required for
|
| -// activation).
|
| -// VISIBLE_RECT_REQUIRED_FOR_ACTIVATION_UNOCCLUDED - Unoccluded, required for
|
| -// activation, tiles.
|
| -//
|
| -// The tilings are ordered as follows. Suppose we have tilings with the scales
|
| -// below:
|
| -// 2.0 1.5 1.0(HR) 0.8 0.5 0.25(LR) 0.2 0.1
|
| -// With HR referring to high res tiling and LR referring to low res tiling,
|
| -// then tilings are processed in this order:
|
| -// 2.0 1.5 0.1 0.2 0.5 0.8 0.25(LR) 1.0(HR).
|
| -//
|
| -// To put it differently:
|
| -// 1. Process the highest scale tiling down to, but not including, high res
|
| -// tiling.
|
| -// 2. Process the lowest scale tiling up to, but not including, the low res
|
| -// tiling. In cases without a low res tiling, this is an empty set.
|
| -// 3. Process low res tiling up to high res tiling, including neither high
|
| -// nor low res tilings. In cases without a low res tiling, this set
|
| -// includes all tilings with a lower scale than the high res tiling.
|
| -// 4. Process the low res tiling.
|
| -// 5. Process the high res tiling.
|
| -//
|
| -// Additional notes:
|
| -// Since eventually the tiles are considered to have the priority which is the
|
| -// higher of the two trees, we might visit a tile that should actually be
|
| -// returned by its twin. In those situations, the tiles are not returned. That
|
| -// is, since the twin has higher priority, it should return it when it gets to
|
| -// it. This ensures that we don't block raster because we've returned a tile
|
| -// with low priority on one tree, but high combined priority.
|
| -class CC_EXPORT TilingSetEvictionQueue {
|
| - public:
|
| - explicit TilingSetEvictionQueue(PictureLayerTilingSet* tiling_set);
|
| - ~TilingSetEvictionQueue();
|
| -
|
| - const PrioritizedTile& Top() const;
|
| - void Pop();
|
| - bool IsEmpty() const;
|
| -
|
| - private:
|
| - enum Phase {
|
| - EVENTUALLY_RECT,
|
| - SOON_BORDER_RECT,
|
| - SKEWPORT_RECT,
|
| - PENDING_VISIBLE_RECT,
|
| - PENDING_VISIBLE_RECT_REQUIRED_FOR_ACTIVATION,
|
| - VISIBLE_RECT_OCCLUDED,
|
| - VISIBLE_RECT_UNOCCLUDED,
|
| - VISIBLE_RECT_REQUIRED_FOR_ACTIVATION_OCCLUDED,
|
| - VISIBLE_RECT_REQUIRED_FOR_ACTIVATION_UNOCCLUDED
|
| - };
|
| -
|
| - void GenerateTilingOrder(PictureLayerTilingSet* tiling_set);
|
| -
|
| - // Helper base class for individual region iterators.
|
| - class EvictionRectIterator {
|
| - public:
|
| - EvictionRectIterator();
|
| - EvictionRectIterator(
|
| - std::vector<PictureLayerTiling*>* tilings,
|
| - WhichTree tree,
|
| - PictureLayerTiling::PriorityRectType priority_rect_type);
|
| -
|
| - bool done() const { return !prioritized_tile_.tile(); }
|
| - const PrioritizedTile& operator*() const { return prioritized_tile_; }
|
| -
|
| - protected:
|
| - ~EvictionRectIterator() = default;
|
| -
|
| - template <typename TilingIteratorType>
|
| - bool AdvanceToNextTile(TilingIteratorType* iterator);
|
| - template <typename TilingIteratorType>
|
| - bool GetFirstTileAndCheckIfValid(TilingIteratorType* iterator);
|
| -
|
| - PrioritizedTile prioritized_tile_;
|
| - std::vector<PictureLayerTiling*>* tilings_;
|
| - WhichTree tree_;
|
| - PictureLayerTiling::PriorityRectType priority_rect_type_;
|
| - size_t tiling_index_;
|
| - };
|
| -
|
| - class PendingVisibleTilingIterator : public EvictionRectIterator {
|
| - public:
|
| - PendingVisibleTilingIterator() = default;
|
| - PendingVisibleTilingIterator(std::vector<PictureLayerTiling*>* tilings,
|
| - WhichTree tree,
|
| - bool return_required_for_activation_tiles);
|
| -
|
| - PendingVisibleTilingIterator& operator++();
|
| -
|
| - private:
|
| - bool TileMatchesRequiredFlags(const PrioritizedTile& tile) const;
|
| -
|
| - TilingData::DifferenceIterator iterator_;
|
| - bool return_required_for_activation_tiles_;
|
| - };
|
| -
|
| - class VisibleTilingIterator : public EvictionRectIterator {
|
| - public:
|
| - VisibleTilingIterator() = default;
|
| - VisibleTilingIterator(std::vector<PictureLayerTiling*>* tilings,
|
| - WhichTree tree,
|
| - bool return_occluded_tiles,
|
| - bool return_required_for_activation_tiles);
|
| -
|
| - VisibleTilingIterator& operator++();
|
| -
|
| - private:
|
| - bool TileMatchesRequiredFlags(const PrioritizedTile& tile) const;
|
| -
|
| - TilingData::Iterator iterator_;
|
| - bool return_occluded_tiles_;
|
| - bool return_required_for_activation_tiles_;
|
| - };
|
| -
|
| - class SkewportTilingIterator : public EvictionRectIterator {
|
| - public:
|
| - SkewportTilingIterator() = default;
|
| - SkewportTilingIterator(std::vector<PictureLayerTiling*>* tilings,
|
| - WhichTree tree);
|
| -
|
| - SkewportTilingIterator& operator++();
|
| -
|
| - private:
|
| - TilingData::ReverseSpiralDifferenceIterator iterator_;
|
| - };
|
| -
|
| - class SoonBorderTilingIterator : public EvictionRectIterator {
|
| - public:
|
| - SoonBorderTilingIterator() = default;
|
| - SoonBorderTilingIterator(std::vector<PictureLayerTiling*>* tilings,
|
| - WhichTree tree);
|
| -
|
| - SoonBorderTilingIterator& operator++();
|
| -
|
| - private:
|
| - TilingData::ReverseSpiralDifferenceIterator iterator_;
|
| - };
|
| -
|
| - class EventuallyTilingIterator : public EvictionRectIterator {
|
| - public:
|
| - EventuallyTilingIterator() = default;
|
| - EventuallyTilingIterator(std::vector<PictureLayerTiling*>* tilings,
|
| - WhichTree tree);
|
| -
|
| - EventuallyTilingIterator& operator++();
|
| -
|
| - private:
|
| - TilingData::ReverseSpiralDifferenceIterator iterator_;
|
| - };
|
| -
|
| - void AdvancePhase();
|
| -
|
| - WhichTree tree_;
|
| - Phase phase_;
|
| - PrioritizedTile current_tile_;
|
| - std::vector<PictureLayerTiling*> tilings_;
|
| -
|
| - EventuallyTilingIterator eventually_iterator_;
|
| - SoonBorderTilingIterator soon_iterator_;
|
| - SkewportTilingIterator skewport_iterator_;
|
| - PendingVisibleTilingIterator pending_visible_iterator_;
|
| - VisibleTilingIterator visible_iterator_;
|
| -};
|
| -
|
| -} // namespace cc
|
| -
|
| -#endif // CC_RESOURCES_TILING_SET_EVICTION_QUEUE_H_
|
|
|