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

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

Issue 1381163002: Add a flag to disable partial raster in renderer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: feedback + UT refactoring Created 5 years, 2 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
« no previous file with comments | « cc/tiles/tile_manager.h ('k') | cc/tiles/tile_manager_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/tiles/tile_manager.h" 5 #include "cc/tiles/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 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 base::saturated_cast<int>(stats.completed_count)); 180 base::saturated_cast<int>(stats.completed_count));
181 state->SetInteger("canceled_count", 181 state->SetInteger("canceled_count",
182 base::saturated_cast<int>(stats.canceled_count)); 182 base::saturated_cast<int>(stats.canceled_count));
183 return state; 183 return state;
184 } 184 }
185 185
186 // static 186 // static
187 scoped_ptr<TileManager> TileManager::Create( 187 scoped_ptr<TileManager> TileManager::Create(
188 TileManagerClient* client, 188 TileManagerClient* client,
189 base::SequencedTaskRunner* task_runner, 189 base::SequencedTaskRunner* task_runner,
190 size_t scheduled_raster_task_limit) { 190 size_t scheduled_raster_task_limit,
191 return make_scoped_ptr( 191 bool use_partial_raster) {
192 new TileManager(client, task_runner, scheduled_raster_task_limit)); 192 return make_scoped_ptr(new TileManager(
193 client, task_runner, scheduled_raster_task_limit, use_partial_raster));
193 } 194 }
194 195
195 TileManager::TileManager( 196 TileManager::TileManager(
196 TileManagerClient* client, 197 TileManagerClient* client,
197 const scoped_refptr<base::SequencedTaskRunner>& task_runner, 198 const scoped_refptr<base::SequencedTaskRunner>& task_runner,
198 size_t scheduled_raster_task_limit) 199 size_t scheduled_raster_task_limit,
200 bool use_partial_raster)
199 : client_(client), 201 : client_(client),
200 task_runner_(task_runner), 202 task_runner_(task_runner),
201 resource_pool_(nullptr), 203 resource_pool_(nullptr),
202 tile_task_runner_(nullptr), 204 tile_task_runner_(nullptr),
203 scheduled_raster_task_limit_(scheduled_raster_task_limit), 205 scheduled_raster_task_limit_(scheduled_raster_task_limit),
206 use_partial_raster_(use_partial_raster),
204 all_tiles_that_need_to_be_rasterized_are_scheduled_(true), 207 all_tiles_that_need_to_be_rasterized_are_scheduled_(true),
205 did_check_for_completed_tasks_since_last_schedule_tasks_(true), 208 did_check_for_completed_tasks_since_last_schedule_tasks_(true),
206 did_oom_on_last_assign_(false), 209 did_oom_on_last_assign_(false),
207 more_tiles_need_prepare_check_notifier_( 210 more_tiles_need_prepare_check_notifier_(
208 task_runner_.get(), 211 task_runner_.get(),
209 base::Bind(&TileManager::CheckIfMoreTilesNeedToBePrepared, 212 base::Bind(&TileManager::CheckIfMoreTilesNeedToBePrepared,
210 base::Unretained(this))), 213 base::Unretained(this))),
211 signals_check_notifier_(task_runner_.get(), 214 signals_check_notifier_(task_runner_.get(),
212 base::Bind(&TileManager::CheckAndIssueSignals, 215 base::Bind(&TileManager::CheckAndIssueSignals,
213 base::Unretained(this))), 216 base::Unretained(this))),
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 orphan_raster_tasks_.clear(); 655 orphan_raster_tasks_.clear();
653 656
654 did_check_for_completed_tasks_since_last_schedule_tasks_ = false; 657 did_check_for_completed_tasks_since_last_schedule_tasks_ = false;
655 } 658 }
656 659
657 scoped_refptr<RasterTask> TileManager::CreateRasterTask( 660 scoped_refptr<RasterTask> TileManager::CreateRasterTask(
658 const PrioritizedTile& prioritized_tile) { 661 const PrioritizedTile& prioritized_tile) {
659 Tile* tile = prioritized_tile.tile(); 662 Tile* tile = prioritized_tile.tile();
660 uint64_t resource_content_id = 0; 663 uint64_t resource_content_id = 0;
661 Resource* resource = nullptr; 664 Resource* resource = nullptr;
662 if (tile->invalidated_id()) { 665 if (use_partial_raster_ && tile->invalidated_id()) {
663 // TODO(danakj): For resources that are in use, we should still grab them 666 // TODO(danakj): For resources that are in use, we should still grab them
664 // and copy from them instead of rastering everything. crbug.com/492754 667 // and copy from them instead of rastering everything. crbug.com/492754
665 resource = 668 resource =
666 resource_pool_->TryAcquireResourceWithContentId(tile->invalidated_id()); 669 resource_pool_->TryAcquireResourceWithContentId(tile->invalidated_id());
667 } 670 }
668 if (resource) { 671 if (resource) {
669 resource_content_id = tile->invalidated_id(); 672 resource_content_id = tile->invalidated_id();
670 DCHECK_EQ(DetermineResourceFormat(tile), resource->format()); 673 DCHECK_EQ(DetermineResourceFormat(tile), resource->format());
671 DCHECK_EQ(tile->desired_texture_size().ToString(), 674 DCHECK_EQ(tile->desired_texture_size().ToString(),
672 resource->size().ToString()); 675 resource->size().ToString());
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 void TileManager::Signals::reset() { 1005 void TileManager::Signals::reset() {
1003 ready_to_activate = false; 1006 ready_to_activate = false;
1004 did_notify_ready_to_activate = false; 1007 did_notify_ready_to_activate = false;
1005 ready_to_draw = false; 1008 ready_to_draw = false;
1006 did_notify_ready_to_draw = false; 1009 did_notify_ready_to_draw = false;
1007 all_tile_tasks_completed = false; 1010 all_tile_tasks_completed = false;
1008 did_notify_all_tile_tasks_completed = false; 1011 did_notify_all_tile_tasks_completed = false;
1009 } 1012 }
1010 1013
1011 } // namespace cc 1014 } // namespace cc
OLDNEW
« no previous file with comments | « cc/tiles/tile_manager.h ('k') | cc/tiles/tile_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698