Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2548)

Unified Diff: cc/trees/layer_tree_host_impl.cc

Issue 228183002: cc: Move ResourcePool ownership to LTHI. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698