| 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 5be44c4b9627adcf6e1e62788183111f2e931ff0..e8fb10ad66ffbbf07970613761f526e6a0cf78aa 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -50,6 +50,7 @@
|
| #include "cc/resources/pixel_buffer_raster_worker_pool.h"
|
| #include "cc/resources/prioritized_resource_manager.h"
|
| #include "cc/resources/raster_worker_pool.h"
|
| +#include "cc/resources/resource_pool.h"
|
| #include "cc/resources/texture_mailbox_deleter.h"
|
| #include "cc/resources/ui_resource_bitmap.h"
|
| #include "cc/scheduler/delay_based_time_source.h"
|
| @@ -307,6 +308,7 @@ LayerTreeHostImpl::~LayerTreeHostImpl() {
|
| pending_tree_.reset();
|
| active_tree_.reset();
|
| tile_manager_.reset();
|
| + resource_pool_.reset();
|
| raster_worker_pool_.reset();
|
| direct_raster_worker_pool_.reset();
|
| }
|
| @@ -1190,6 +1192,15 @@ void LayerTreeHostImpl::UpdateTileManagerMemoryPolicy(
|
| gpu::MemoryAllocation::CUTOFF_ALLOW_NOTHING);
|
| global_tile_state_.num_resources_limit = policy.num_resources_limit;
|
|
|
| + DCHECK(resource_pool_);
|
| + resource_pool_->CheckBusyResources();
|
| + // Soft limit is used for resource pool such that memory returns to soft
|
| + // limit after going over.
|
| + resource_pool_->SetResourceUsageLimits(
|
| + global_tile_state_.soft_memory_limit_in_bytes,
|
| + global_tile_state_.unused_memory_limit_in_bytes,
|
| + global_tile_state_.num_resources_limit);
|
| +
|
| DidModifyTilePriorities();
|
| }
|
|
|
| @@ -1303,11 +1314,10 @@ void LayerTreeHostImpl::ReclaimResources(const CompositorFrameAck* ack) {
|
| // In OOM, we now might be able to release more resources that were held
|
| // because they were exported.
|
| if (tile_manager_) {
|
| - DCHECK(tile_manager_->resource_pool());
|
| + DCHECK(resource_pool_);
|
|
|
| - // TODO(vmpstr): Move resource pool to be LTHI member.
|
| - tile_manager_->resource_pool()->CheckBusyResources();
|
| - tile_manager_->resource_pool()->ReduceResourceUsage();
|
| + resource_pool_->CheckBusyResources();
|
| + resource_pool_->ReduceResourceUsage();
|
| }
|
| // If we're not visible, we likely released resources, so we want to
|
| // aggressively flush here to make sure those DeleteTextures make it to the
|
| @@ -1797,23 +1807,30 @@ void LayerTreeHostImpl::CreateAndSetTileManager(
|
| DCHECK(proxy_->ImplThreadTaskRunner());
|
|
|
| if (using_map_image) {
|
| - raster_worker_pool_ = ImageRasterWorkerPool::Create(
|
| - proxy_->ImplThreadTaskRunner(),
|
| - RasterWorkerPool::GetTaskGraphRunner(),
|
| - resource_provider,
|
| - GetMapImageTextureTarget(context_provider));
|
| + raster_worker_pool_ =
|
| + ImageRasterWorkerPool::Create(proxy_->ImplThreadTaskRunner(),
|
| + RasterWorkerPool::GetTaskGraphRunner(),
|
| + resource_provider);
|
| + resource_pool_ =
|
| + ResourcePool::Create(resource_provider,
|
| + GetMapImageTextureTarget(context_provider),
|
| + resource_provider->best_texture_format());
|
| } else {
|
| raster_worker_pool_ = PixelBufferRasterWorkerPool::Create(
|
| proxy_->ImplThreadTaskRunner(),
|
| RasterWorkerPool::GetTaskGraphRunner(),
|
| resource_provider,
|
| GetMaxTransferBufferUsageBytes(context_provider));
|
| + resource_pool_ = ResourcePool::Create(
|
| + resource_provider,
|
| + GL_TEXTURE_2D,
|
| + resource_provider->memory_efficient_texture_format());
|
| }
|
| direct_raster_worker_pool_ = DirectRasterWorkerPool::Create(
|
| proxy_->ImplThreadTaskRunner(), resource_provider, context_provider);
|
| tile_manager_ =
|
| TileManager::Create(this,
|
| - resource_provider,
|
| + resource_pool_.get(),
|
| raster_worker_pool_->AsRasterizer(),
|
| direct_raster_worker_pool_->AsRasterizer(),
|
| GetMaxRasterTasksUsageBytes(context_provider),
|
| @@ -1842,6 +1859,7 @@ bool LayerTreeHostImpl::InitializeRenderer(
|
| // Note: order is important here.
|
| renderer_.reset();
|
| tile_manager_.reset();
|
| + resource_pool_.reset();
|
| raster_worker_pool_.reset();
|
| direct_raster_worker_pool_.reset();
|
| resource_provider_.reset();
|
| @@ -1969,6 +1987,7 @@ void LayerTreeHostImpl::ReleaseGL() {
|
| ReleaseTreeResources();
|
| renderer_.reset();
|
| tile_manager_.reset();
|
| + resource_pool_.reset();
|
| raster_worker_pool_.reset();
|
| direct_raster_worker_pool_.reset();
|
| resource_provider_->InitializeSoftware();
|
|
|