| Index: cc/trees/layer_tree_host_impl.cc
|
| diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
|
| index fd0d1d33705358b45ce314d2e4b49c4cbb6193ff..309184981f156fff06f278600522cf0ccfde5878 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -45,6 +45,7 @@
|
| #include "cc/quads/shared_quad_state.h"
|
| #include "cc/quads/solid_color_draw_quad.h"
|
| #include "cc/quads/texture_draw_quad.h"
|
| +#include "cc/resources/eviction_tile_priority_queue.h"
|
| #include "cc/resources/gpu_raster_worker_pool.h"
|
| #include "cc/resources/image_copy_raster_worker_pool.h"
|
| #include "cc/resources/image_raster_worker_pool.h"
|
| @@ -52,6 +53,7 @@
|
| #include "cc/resources/picture_layer_tiling.h"
|
| #include "cc/resources/pixel_buffer_raster_worker_pool.h"
|
| #include "cc/resources/prioritized_resource_manager.h"
|
| +#include "cc/resources/raster_tile_priority_queue.h"
|
| #include "cc/resources/raster_worker_pool.h"
|
| #include "cc/resources/resource_pool.h"
|
| #include "cc/resources/texture_mailbox_deleter.h"
|
| @@ -1247,7 +1249,8 @@ void LayerTreeHostImpl::DidInitializeVisibleTile() {
|
| client_->DidInitializeVisibleTileOnImplThread();
|
| }
|
|
|
| -const std::vector<PictureLayerImpl*>& LayerTreeHostImpl::GetPictureLayers() {
|
| +const std::vector<PictureLayerImpl*>& LayerTreeHostImpl::GetPictureLayers()
|
| + const {
|
| return picture_layers_;
|
| }
|
|
|
| @@ -1273,6 +1276,20 @@ void LayerTreeHostImpl::NotifyTileStateChanged(const Tile* tile) {
|
| }
|
| }
|
|
|
| +void LayerTreeHostImpl::BuildRasterQueue(RasterTilePriorityQueue* queue,
|
| + TreePriority tree_priority) {
|
| + std::vector<PairedPictureLayer> paired_layers;
|
| + GetPairedPictureLayers(&paired_layers);
|
| + queue->BuildQueue(paired_layers, tree_priority);
|
| +}
|
| +
|
| +void LayerTreeHostImpl::BuildEvictionQueue(EvictionTilePriorityQueue* queue,
|
| + TreePriority tree_priority) {
|
| + std::vector<PairedPictureLayer> paired_layers;
|
| + GetPairedPictureLayers(&paired_layers);
|
| + queue->BuildQueue(paired_layers, tree_priority);
|
| +}
|
| +
|
| void LayerTreeHostImpl::SetMemoryPolicy(const ManagedMemoryPolicy& policy) {
|
| SetManagedMemoryPolicy(policy, zero_budget_);
|
| }
|
| @@ -2000,6 +2017,49 @@ void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) {
|
| SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget);
|
| }
|
|
|
| +void LayerTreeHostImpl::GetPairedPictureLayers(
|
| + std::vector<PairedPictureLayer>* paired_layers) const {
|
| + const std::vector<PictureLayerImpl*>& layers = GetPictureLayers();
|
| +
|
| + paired_layers->clear();
|
| + // Reserve a maximum possible paired layers.
|
| + paired_layers->reserve(layers.size());
|
| +
|
| + for (std::vector<PictureLayerImpl*>::const_iterator it = layers.begin();
|
| + it != layers.end();
|
| + ++it) {
|
| + PictureLayerImpl* layer = *it;
|
| +
|
| + // TODO(vmpstr): Iterators and should handle this instead. crbug.com/381704
|
| + if (!layer->HasValidTilePriorities())
|
| + continue;
|
| +
|
| + PictureLayerImpl* twin_layer = layer->GetTwinLayer();
|
| +
|
| + // Ignore the twin layer when tile priorities are invalid.
|
| + // TODO(vmpstr): Iterators should handle this instead. crbug.com/381704
|
| + if (twin_layer && !twin_layer->HasValidTilePriorities())
|
| + twin_layer = NULL;
|
| +
|
| + PairedPictureLayer paired_layer;
|
| + WhichTree tree = layer->GetTree();
|
| +
|
| + // If the current tree is ACTIVE_TREE, then always generate a paired_layer.
|
| + // If current tree is PENDING_TREE, then only generate a paired_layer if
|
| + // there is no twin layer.
|
| + if (tree == ACTIVE_TREE) {
|
| + DCHECK(!twin_layer || twin_layer->GetTree() == PENDING_TREE);
|
| + paired_layer.active_layer = layer;
|
| + paired_layer.pending_layer = twin_layer;
|
| + paired_layers->push_back(paired_layer);
|
| + } else if (!twin_layer) {
|
| + paired_layer.active_layer = NULL;
|
| + paired_layer.pending_layer = layer;
|
| + paired_layers->push_back(paired_layer);
|
| + }
|
| + }
|
| +}
|
| +
|
| bool LayerTreeHostImpl::InitializeRenderer(
|
| scoped_ptr<OutputSurface> output_surface) {
|
| TRACE_EVENT0("cc", "LayerTreeHostImpl::InitializeRenderer");
|
|
|