| 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 3fe5f4ac47fb704207c0bfd39391fbf3c8c98d1c..3d31e8ef5424cf76033958ffc1d32b581b1d02b0 100644
 | 
| --- a/cc/trees/layer_tree_host_impl.cc
 | 
| +++ b/cc/trees/layer_tree_host_impl.cc
 | 
| @@ -295,7 +295,7 @@ void LayerTreeHostImpl::BeginCommit() {
 | 
|    // Ensure all textures are returned so partial texture updates can happen
 | 
|    // during the commit. Impl-side-painting doesn't upload during commits, so
 | 
|    // is unaffected.
 | 
| -  if (!settings_.impl_side_painting)
 | 
| +  if (!settings_.impl_side_painting && output_surface_)
 | 
|      output_surface_->ForceReclaimResources();
 | 
|  
 | 
|    if (UsePendingTreeForSync())
 | 
| @@ -691,7 +691,7 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(
 | 
|          render_surface->contributes_to_drawn_surface() ||
 | 
|          render_surface_layer->HasCopyRequest();
 | 
|      if (should_draw_into_render_pass)
 | 
| -      render_surface_layer->render_surface()->AppendRenderPasses(frame);
 | 
| +      render_surface->AppendRenderPasses(frame);
 | 
|    }
 | 
|  
 | 
|    // When we are displaying the HUD, change the root damage rect to cover the
 | 
| @@ -1194,13 +1194,14 @@ void LayerTreeHostImpl::GetPictureLayerImplPairs(
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -void LayerTreeHostImpl::BuildRasterQueue(RasterTilePriorityQueue* queue,
 | 
| -                                         TreePriority tree_priority,
 | 
| -                                         RasterTilePriorityQueue::Type type) {
 | 
| +scoped_ptr<RasterTilePriorityQueue> LayerTreeHostImpl::BuildRasterQueue(
 | 
| +    TreePriority tree_priority,
 | 
| +    RasterTilePriorityQueue::Type type) {
 | 
|    TRACE_EVENT0("cc", "LayerTreeHostImpl::BuildRasterQueue");
 | 
|    picture_layer_pairs_.clear();
 | 
|    GetPictureLayerImplPairs(&picture_layer_pairs_, true);
 | 
| -  queue->Build(picture_layer_pairs_, tree_priority, type);
 | 
| +  scoped_ptr<RasterTilePriorityQueue> queue(RasterTilePriorityQueue::Create(
 | 
| +      picture_layer_pairs_, tree_priority, type));
 | 
|  
 | 
|    if (!queue->IsEmpty()) {
 | 
|      // Only checking the Top() tile here isn't a definite answer that there is
 | 
| @@ -1215,14 +1216,17 @@ void LayerTreeHostImpl::BuildRasterQueue(RasterTilePriorityQueue* queue,
 | 
|    } else {
 | 
|      required_for_draw_tile_is_top_of_raster_queue_ = false;
 | 
|    }
 | 
| +  return queue;
 | 
|  }
 | 
|  
 | 
| -void LayerTreeHostImpl::BuildEvictionQueue(EvictionTilePriorityQueue* queue,
 | 
| -                                           TreePriority tree_priority) {
 | 
| +scoped_ptr<EvictionTilePriorityQueue> LayerTreeHostImpl::BuildEvictionQueue(
 | 
| +    TreePriority tree_priority) {
 | 
|    TRACE_EVENT0("cc", "LayerTreeHostImpl::BuildEvictionQueue");
 | 
| +  scoped_ptr<EvictionTilePriorityQueue> queue(new EvictionTilePriorityQueue);
 | 
|    picture_layer_pairs_.clear();
 | 
|    GetPictureLayerImplPairs(&picture_layer_pairs_, false);
 | 
|    queue->Build(picture_layer_pairs_, tree_priority);
 | 
| +  return queue;
 | 
|  }
 | 
|  
 | 
|  const std::vector<PictureLayerImpl*>& LayerTreeHostImpl::GetPictureLayers()
 | 
| @@ -1592,7 +1596,7 @@ bool LayerTreeHostImpl::SwapBuffers(const LayerTreeHostImpl::FrameData& frame) {
 | 
|    active_tree()->FinishSwapPromises(&metadata);
 | 
|    for (size_t i = 0; i < metadata.latency_info.size(); i++) {
 | 
|      TRACE_EVENT_FLOW_STEP0(
 | 
| -        "input",
 | 
| +        "input,benchmark",
 | 
|          "LatencyInfo.Flow",
 | 
|          TRACE_ID_DONT_MANGLE(metadata.latency_info[i].trace_id),
 | 
|          "SwapBuffers");
 | 
| @@ -1969,9 +1973,7 @@ void LayerTreeHostImpl::CreateResourceAndTileTaskWorkerPool(
 | 
|    ContextProvider* context_provider = output_surface_->context_provider();
 | 
|    if (!context_provider) {
 | 
|      *resource_pool =
 | 
| -        ResourcePool::Create(resource_provider_.get(),
 | 
| -                             GL_TEXTURE_2D,
 | 
| -                             resource_provider_->best_texture_format());
 | 
| +        ResourcePool::Create(resource_provider_.get(), GL_TEXTURE_2D);
 | 
|  
 | 
|      *tile_task_worker_pool = BitmapTileTaskWorkerPool::Create(
 | 
|          task_runner, TileTaskWorkerPool::GetTaskGraphRunner(),
 | 
| @@ -1981,12 +1983,11 @@ void LayerTreeHostImpl::CreateResourceAndTileTaskWorkerPool(
 | 
|  
 | 
|    if (use_gpu_rasterization_) {
 | 
|      *resource_pool =
 | 
| -        ResourcePool::Create(resource_provider_.get(),
 | 
| -                             GL_TEXTURE_2D,
 | 
| -                             resource_provider_->best_texture_format());
 | 
| +        ResourcePool::Create(resource_provider_.get(), GL_TEXTURE_2D);
 | 
|  
 | 
|      *tile_task_worker_pool = GpuTileTaskWorkerPool::Create(
 | 
| -        task_runner, TileTaskWorkerPool::GetTaskGraphRunner());
 | 
| +        task_runner, TileTaskWorkerPool::GetTaskGraphRunner(),
 | 
| +        resource_provider_.get());
 | 
|      return;
 | 
|    }
 | 
|  
 | 
| @@ -2001,8 +2002,7 @@ void LayerTreeHostImpl::CreateResourceAndTileTaskWorkerPool(
 | 
|  
 | 
|      if (settings_.use_zero_copy || IsSynchronousSingleThreaded()) {
 | 
|        *resource_pool =
 | 
| -          ResourcePool::Create(resource_provider_.get(), image_target,
 | 
| -                               resource_provider_->best_texture_format());
 | 
| +          ResourcePool::Create(resource_provider_.get(), image_target);
 | 
|  
 | 
|        TaskGraphRunner* task_graph_runner;
 | 
|        if (IsSynchronousSingleThreaded()) {
 | 
| @@ -2021,11 +2021,9 @@ void LayerTreeHostImpl::CreateResourceAndTileTaskWorkerPool(
 | 
|      if (settings_.use_one_copy) {
 | 
|        // We need to create a staging resource pool when using copy rasterizer.
 | 
|        *staging_resource_pool =
 | 
| -          ResourcePool::Create(resource_provider_.get(), image_target,
 | 
| -                               resource_provider_->best_texture_format());
 | 
| +          ResourcePool::Create(resource_provider_.get(), image_target);
 | 
|        *resource_pool =
 | 
| -          ResourcePool::Create(resource_provider_.get(), GL_TEXTURE_2D,
 | 
| -                               resource_provider_->best_texture_format());
 | 
| +          ResourcePool::Create(resource_provider_.get(), GL_TEXTURE_2D);
 | 
|  
 | 
|        *tile_task_worker_pool = OneCopyTileTaskWorkerPool::Create(
 | 
|            task_runner, TileTaskWorkerPool::GetTaskGraphRunner(),
 | 
| @@ -2036,8 +2034,7 @@ void LayerTreeHostImpl::CreateResourceAndTileTaskWorkerPool(
 | 
|    }
 | 
|  
 | 
|    *resource_pool = ResourcePool::Create(
 | 
| -      resource_provider_.get(), GL_TEXTURE_2D,
 | 
| -      resource_provider_->memory_efficient_texture_format());
 | 
| +      resource_provider_.get(), GL_TEXTURE_2D);
 | 
|  
 | 
|    *tile_task_worker_pool = PixelBufferTileTaskWorkerPool::Create(
 | 
|        task_runner, TileTaskWorkerPool::GetTaskGraphRunner(), context_provider,
 | 
| 
 |