1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CC_RESOURCES_RASTER_TILE_PRIORITY_QUEUE_ALL_H_
6 #define CC_RESOURCES_RASTER_TILE_PRIORITY_QUEUE_ALL_H_
12 #include "cc/base/cc_export.h"
13 #include "cc/layers/picture_layer_impl.h"
14 #include "cc/resources/raster_tile_priority_queue.h"
15 #include "cc/resources/tile_priority.h"
16 #include "cc/resources/tiling_set_raster_queue_all.h"
20 class CC_EXPORT RasterTilePriorityQueueAll
: public RasterTilePriorityQueue
{
22 class PairedTilingSetQueue
{
24 PairedTilingSetQueue();
25 PairedTilingSetQueue(const PictureLayerImpl::Pair
& layer_pair
,
26 TreePriority tree_priority
);
27 ~PairedTilingSetQueue();
30 Tile
* Top(TreePriority tree_priority
);
31 void Pop(TreePriority tree_priority
);
33 WhichTree
NextTileIteratorTree(TreePriority tree_priority
) const;
34 void SkipTilesReturnedByTwin(TreePriority tree_priority
);
36 scoped_refptr
<base::debug::ConvertableToTraceFormat
> StateAsValue() const;
38 const TilingSetRasterQueueAll
* active_queue() const {
39 return active_queue_
.get();
41 const TilingSetRasterQueueAll
* pending_queue() const {
42 return pending_queue_
.get();
46 scoped_ptr
<TilingSetRasterQueueAll
> active_queue_
;
47 scoped_ptr
<TilingSetRasterQueueAll
> pending_queue_
;
48 bool has_both_layers_
;
50 // Set of returned tiles (excluding the current one) for DCHECKing.
51 std::set
<const Tile
*> returned_tiles_for_debug_
;
54 RasterTilePriorityQueueAll();
55 ~RasterTilePriorityQueueAll() override
;
57 bool IsEmpty() const override
;
62 friend class RasterTilePriorityQueue
;
64 void Build(const std::vector
<PictureLayerImpl::Pair
>& paired_layers
,
65 TreePriority tree_priority
);
67 // TODO(vmpstr): This is potentially unnecessary if it becomes the case that
68 // PairedTilingSetQueue is fast enough to copy. In that case, we can use
69 // objects directly (ie std::vector<PairedTilingSetQueue>.
70 ScopedPtrVector
<PairedTilingSetQueue
> paired_queues_
;
71 TreePriority tree_priority_
;
73 DISALLOW_COPY_AND_ASSIGN(RasterTilePriorityQueueAll
);
78 #endif // CC_RESOURCES_RASTER_TILE_PRIORITY_QUEUE_ALL_H_