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

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

Issue 761903003: Update from https://crrev.com/306655 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years 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/resources/tile_manager.h ('k') | cc/resources/tile_manager_perftest.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/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 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 rasterizer_(rasterizer), 232 rasterizer_(rasterizer),
233 scheduled_raster_task_limit_(scheduled_raster_task_limit), 233 scheduled_raster_task_limit_(scheduled_raster_task_limit),
234 all_tiles_that_need_to_be_rasterized_are_scheduled_(true), 234 all_tiles_that_need_to_be_rasterized_are_scheduled_(true),
235 rendering_stats_instrumentation_(rendering_stats_instrumentation), 235 rendering_stats_instrumentation_(rendering_stats_instrumentation),
236 did_check_for_completed_tasks_since_last_schedule_tasks_(true), 236 did_check_for_completed_tasks_since_last_schedule_tasks_(true),
237 did_oom_on_last_assign_(false), 237 did_oom_on_last_assign_(false),
238 ready_to_activate_check_notifier_( 238 ready_to_activate_check_notifier_(
239 task_runner_.get(), 239 task_runner_.get(),
240 base::Bind(&TileManager::CheckIfReadyToActivate, 240 base::Bind(&TileManager::CheckIfReadyToActivate,
241 base::Unretained(this))), 241 base::Unretained(this))),
242 ready_to_draw_check_notifier_(task_runner_.get(), 242 ready_to_draw_check_notifier_(
243 base::Bind(&TileManager::CheckIfReadyToDraw, 243 task_runner_.get(),
244 base::Unretained(this))) { 244 base::Bind(&TileManager::CheckIfReadyToDraw, base::Unretained(this))),
245 did_notify_ready_to_activate_(false),
246 did_notify_ready_to_draw_(false) {
245 rasterizer_->SetClient(this); 247 rasterizer_->SetClient(this);
246 } 248 }
247 249
248 TileManager::~TileManager() { 250 TileManager::~TileManager() {
249 // Reset global state and manage. This should cause 251 // Reset global state and manage. This should cause
250 // our memory usage to drop to zero. 252 // our memory usage to drop to zero.
251 global_state_ = GlobalStateThatImpactsTilePriority(); 253 global_state_ = GlobalStateThatImpactsTilePriority();
252 254
253 RasterTaskQueue empty; 255 RasterTaskQueue empty;
254 rasterizer_->ScheduleTasks(&empty); 256 rasterizer_->ScheduleTasks(&empty);
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 rasterizer_->CheckForCompletedTasks(); 411 rasterizer_->CheckForCompletedTasks();
410 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; 412 did_check_for_completed_tasks_since_last_schedule_tasks_ = true;
411 } 413 }
412 414
413 FreeResourcesForReleasedTiles(); 415 FreeResourcesForReleasedTiles();
414 CleanUpReleasedTiles(); 416 CleanUpReleasedTiles();
415 417
416 TileVector tiles_that_need_to_be_rasterized; 418 TileVector tiles_that_need_to_be_rasterized;
417 AssignGpuMemoryToTiles(&tiles_that_need_to_be_rasterized); 419 AssignGpuMemoryToTiles(&tiles_that_need_to_be_rasterized);
418 420
419 // Finally, schedule rasterizer tasks. 421 // Schedule rasterizer tasks.
420 ScheduleTasks(tiles_that_need_to_be_rasterized); 422 ScheduleTasks(tiles_that_need_to_be_rasterized);
421 423
424 did_notify_ready_to_activate_ = false;
425 did_notify_ready_to_draw_ = false;
426
422 TRACE_EVENT_INSTANT1("cc", 427 TRACE_EVENT_INSTANT1("cc",
423 "DidManage", 428 "DidManage",
424 TRACE_EVENT_SCOPE_THREAD, 429 TRACE_EVENT_SCOPE_THREAD,
425 "state", 430 "state",
426 BasicStateAsValue()); 431 BasicStateAsValue());
427 432
428 TRACE_COUNTER_ID1("cc", 433 TRACE_COUNTER_ID1("cc",
429 "unused_memory_bytes", 434 "unused_memory_bytes",
430 this, 435 this,
431 resource_pool_->total_memory_usage_bytes() - 436 resource_pool_->total_memory_usage_bytes() -
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 880
876 return true; 881 return true;
877 } 882 }
878 883
879 void TileManager::CheckIfReadyToActivate() { 884 void TileManager::CheckIfReadyToActivate() {
880 TRACE_EVENT0("cc", "TileManager::CheckIfReadyToActivate"); 885 TRACE_EVENT0("cc", "TileManager::CheckIfReadyToActivate");
881 886
882 rasterizer_->CheckForCompletedTasks(); 887 rasterizer_->CheckForCompletedTasks();
883 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; 888 did_check_for_completed_tasks_since_last_schedule_tasks_ = true;
884 889
885 if (IsReadyToActivate()) 890 if (did_notify_ready_to_activate_)
886 client_->NotifyReadyToActivate(); 891 return;
892 if (!IsReadyToActivate())
893 return;
894
895 client_->NotifyReadyToActivate();
896 did_notify_ready_to_activate_ = true;
887 } 897 }
888 898
889 void TileManager::CheckIfReadyToDraw() { 899 void TileManager::CheckIfReadyToDraw() {
890 TRACE_EVENT0("cc", "TileManager::CheckIfReadyToDraw"); 900 TRACE_EVENT0("cc", "TileManager::CheckIfReadyToDraw");
891 901
892 rasterizer_->CheckForCompletedTasks(); 902 rasterizer_->CheckForCompletedTasks();
893 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; 903 did_check_for_completed_tasks_since_last_schedule_tasks_ = true;
894 904
895 if (IsReadyToDraw()) 905 if (did_notify_ready_to_draw_)
896 client_->NotifyReadyToDraw(); 906 return;
907 if (!IsReadyToDraw())
908 return;
909
910 client_->NotifyReadyToDraw();
911 did_notify_ready_to_draw_ = true;
897 } 912 }
898 913
899 TileManager::MemoryUsage::MemoryUsage() : memory_bytes_(0), resource_count_(0) { 914 TileManager::MemoryUsage::MemoryUsage() : memory_bytes_(0), resource_count_(0) {
900 } 915 }
901 916
902 TileManager::MemoryUsage::MemoryUsage(int64 memory_bytes, int resource_count) 917 TileManager::MemoryUsage::MemoryUsage(int64 memory_bytes, int resource_count)
903 : memory_bytes_(memory_bytes), resource_count_(resource_count) { 918 : memory_bytes_(memory_bytes), resource_count_(resource_count) {
904 } 919 }
905 920
906 // static 921 // static
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
940 result -= other; 955 result -= other;
941 return result; 956 return result;
942 } 957 }
943 958
944 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const { 959 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const {
945 return memory_bytes_ > limit.memory_bytes_ || 960 return memory_bytes_ > limit.memory_bytes_ ||
946 resource_count_ > limit.resource_count_; 961 resource_count_ > limit.resource_count_;
947 } 962 }
948 963
949 } // namespace cc 964 } // namespace cc
OLDNEW
« no previous file with comments | « cc/resources/tile_manager.h ('k') | cc/resources/tile_manager_perftest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698