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

Side by Side Diff: cc/resources/tile_manager.cc

Issue 20017005: gpu: Refactor GpuMemoryBuffer framework for multi-process support. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/resources/tile_manager.h" 5 #include "cc/resources/tile_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <string> 9 #include <string>
10 10
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 bool use_map_image) { 123 bool use_map_image) {
124 return make_scoped_ptr( 124 return make_scoped_ptr(
125 new TileManager(client, 125 new TileManager(client,
126 resource_provider, 126 resource_provider,
127 use_map_image ? 127 use_map_image ?
128 ImageRasterWorkerPool::Create( 128 ImageRasterWorkerPool::Create(
129 resource_provider, num_raster_threads) : 129 resource_provider, num_raster_threads) :
130 PixelBufferRasterWorkerPool::Create( 130 PixelBufferRasterWorkerPool::Create(
131 resource_provider, num_raster_threads), 131 resource_provider, num_raster_threads),
132 num_raster_threads, 132 num_raster_threads,
133 rendering_stats_instrumentation, 133 rendering_stats_instrumentation));
134 resource_provider->best_texture_format()));
135 } 134 }
136 135
137 TileManager::TileManager( 136 TileManager::TileManager(
138 TileManagerClient* client, 137 TileManagerClient* client,
139 ResourceProvider* resource_provider, 138 ResourceProvider* resource_provider,
140 scoped_ptr<RasterWorkerPool> raster_worker_pool, 139 scoped_ptr<RasterWorkerPool> raster_worker_pool,
141 size_t num_raster_threads, 140 size_t num_raster_threads,
142 RenderingStatsInstrumentation* rendering_stats_instrumentation, 141 RenderingStatsInstrumentation* rendering_stats_instrumentation)
143 GLenum texture_format)
144 : client_(client), 142 : client_(client),
145 resource_pool_(ResourcePool::Create(resource_provider)), 143 resource_pool_(ResourcePool::Create(resource_provider)),
146 raster_worker_pool_(raster_worker_pool.Pass()), 144 raster_worker_pool_(raster_worker_pool.Pass()),
147 all_tiles_that_need_to_be_rasterized_have_memory_(true), 145 all_tiles_that_need_to_be_rasterized_have_memory_(true),
148 all_tiles_required_for_activation_have_memory_(true), 146 all_tiles_required_for_activation_have_memory_(true),
149 all_tiles_required_for_activation_have_been_initialized_(true), 147 all_tiles_required_for_activation_have_been_initialized_(true),
150 ever_exceeded_memory_budget_(false), 148 ever_exceeded_memory_budget_(false),
151 rendering_stats_instrumentation_(rendering_stats_instrumentation), 149 rendering_stats_instrumentation_(rendering_stats_instrumentation),
152 did_initialize_visible_tile_(false), 150 did_initialize_visible_tile_(false) {
153 texture_format_(texture_format) {
154 raster_worker_pool_->SetClient(this); 151 raster_worker_pool_->SetClient(this);
155 } 152 }
156 153
157 TileManager::~TileManager() { 154 TileManager::~TileManager() {
158 // Reset global state and manage. This should cause 155 // Reset global state and manage. This should cause
159 // our memory usage to drop to zero. 156 // our memory usage to drop to zero.
160 global_state_ = GlobalStateThatImpactsTilePriority(); 157 global_state_ = GlobalStateThatImpactsTilePriority();
161 158
162 // Clear |prioritized_tiles_| so that tiles kept alive by it can be freed. 159 // Clear |prioritized_tiles_| so that tiles kept alive by it can be freed.
163 prioritized_tiles_.Clear(); 160 prioritized_tiles_.Clear();
(...skipping 560 matching lines...) Expand 10 before | Expand all | Expand 10 after
724 base::Bind(&TileManager::OnImageDecodeTaskCompleted, 721 base::Bind(&TileManager::OnImageDecodeTaskCompleted,
725 base::Unretained(this), 722 base::Unretained(this),
726 tile->layer_id(), 723 tile->layer_id(),
727 base::Unretained(pixel_ref))); 724 base::Unretained(pixel_ref)));
728 } 725 }
729 726
730 RasterWorkerPool::RasterTask TileManager::CreateRasterTask(Tile* tile) { 727 RasterWorkerPool::RasterTask TileManager::CreateRasterTask(Tile* tile) {
731 ManagedTileState& mts = tile->managed_state(); 728 ManagedTileState& mts = tile->managed_state();
732 729
733 scoped_ptr<ResourcePool::Resource> resource = 730 scoped_ptr<ResourcePool::Resource> resource =
734 resource_pool_->AcquireResource(tile->tile_size_.size(), 731 resource_pool_->AcquireResource(
735 texture_format_); 732 tile->tile_size_.size(),
733 raster_worker_pool_->GetResourceFormat());
736 const Resource* const_resource = resource.get(); 734 const Resource* const_resource = resource.get();
737 735
738 // Create and queue all image decode tasks that this tile depends on. 736 // Create and queue all image decode tasks that this tile depends on.
739 RasterWorkerPool::Task::Set decode_tasks; 737 RasterWorkerPool::Task::Set decode_tasks;
740 PixelRefTaskMap& existing_pixel_refs = image_decode_tasks_[tile->layer_id()]; 738 PixelRefTaskMap& existing_pixel_refs = image_decode_tasks_[tile->layer_id()];
741 for (PicturePileImpl::PixelRefIterator iter(tile->content_rect(), 739 for (PicturePileImpl::PixelRefIterator iter(tile->content_rect(),
742 tile->contents_scale(), 740 tile->contents_scale(),
743 tile->picture_pile()); 741 tile->picture_pile());
744 iter; ++iter) { 742 iter; ++iter) {
745 skia::LazyPixelRef* pixel_ref = *iter; 743 skia::LazyPixelRef* pixel_ref = *iter;
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
838 tile_version.set_use_resource(); 836 tile_version.set_use_resource();
839 tile_version.resource_ = resource.Pass(); 837 tile_version.resource_ = resource.Pass();
840 } 838 }
841 839
842 FreeUnusedResourcesForTile(tile); 840 FreeUnusedResourcesForTile(tile);
843 if (tile->priority(ACTIVE_TREE).distance_to_visible_in_pixels == 0) 841 if (tile->priority(ACTIVE_TREE).distance_to_visible_in_pixels == 0)
844 did_initialize_visible_tile_ = true; 842 did_initialize_visible_tile_ = true;
845 } 843 }
846 844
847 } // namespace cc 845 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698