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

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

Issue 786583002: cc: Renaming Rasterizer and RasterWorkerPool interfaces (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test. Update include files alphabetic orders. 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
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
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/debug/trace_event_argument.h" 12 #include "base/debug/trace_event_argument.h"
13 #include "base/json/json_writer.h" 13 #include "base/json/json_writer.h"
14 #include "base/logging.h" 14 #include "base/logging.h"
15 #include "base/metrics/histogram.h" 15 #include "base/metrics/histogram.h"
16 #include "cc/debug/devtools_instrumentation.h" 16 #include "cc/debug/devtools_instrumentation.h"
17 #include "cc/debug/frame_viewer_instrumentation.h" 17 #include "cc/debug/frame_viewer_instrumentation.h"
18 #include "cc/debug/traced_value.h" 18 #include "cc/debug/traced_value.h"
19 #include "cc/layers/picture_layer_impl.h" 19 #include "cc/layers/picture_layer_impl.h"
20 #include "cc/resources/raster_buffer.h" 20 #include "cc/resources/raster_buffer.h"
21 #include "cc/resources/rasterizer.h"
22 #include "cc/resources/tile.h" 21 #include "cc/resources/tile.h"
22 #include "cc/resources/tile_task_runner.h"
23 #include "ui/gfx/geometry/rect_conversions.h" 23 #include "ui/gfx/geometry/rect_conversions.h"
24 24
25 namespace cc { 25 namespace cc {
26 namespace { 26 namespace {
27 27
28 // Flag to indicate whether we should try and detect that 28 // Flag to indicate whether we should try and detect that
29 // a tile is of solid color. 29 // a tile is of solid color.
30 const bool kUseColorEstimator = true; 30 const bool kUseColorEstimator = true;
31 31
32 class RasterTaskImpl : public RasterTask { 32 class RasterTaskImpl : public RasterTask {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 66
67 if (analyze_picture_) { 67 if (analyze_picture_) {
68 Analyze(raster_source_.get()); 68 Analyze(raster_source_.get());
69 if (analysis_.is_solid_color) 69 if (analysis_.is_solid_color)
70 return; 70 return;
71 } 71 }
72 72
73 Raster(raster_source_.get()); 73 Raster(raster_source_.get());
74 } 74 }
75 75
76 // Overridden from RasterizerTask: 76 // Overridden from TileTask:
77 void ScheduleOnOriginThread(RasterizerTaskClient* client) override { 77 void ScheduleOnOriginThread(TileTaskClient* client) override {
78 DCHECK(!raster_buffer_); 78 DCHECK(!raster_buffer_);
79 raster_buffer_ = client->AcquireBufferForRaster(resource()); 79 raster_buffer_ = client->AcquireBufferForRaster(resource());
80 } 80 }
81 void CompleteOnOriginThread(RasterizerTaskClient* client) override { 81 void CompleteOnOriginThread(TileTaskClient* client) override {
82 client->ReleaseBufferForRaster(raster_buffer_.Pass()); 82 client->ReleaseBufferForRaster(raster_buffer_.Pass());
83 } 83 }
84 void RunReplyOnOriginThread() override { 84 void RunReplyOnOriginThread() override {
85 DCHECK(!raster_buffer_); 85 DCHECK(!raster_buffer_);
86 reply_.Run(analysis_, !HasFinishedRunning()); 86 reply_.Run(analysis_, !HasFinishedRunning());
87 } 87 }
88 88
89 protected: 89 protected:
90 ~RasterTaskImpl() override { DCHECK(!raster_buffer_); } 90 ~RasterTaskImpl() override { DCHECK(!raster_buffer_); }
91 91
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 void RunOnWorkerThread() override { 151 void RunOnWorkerThread() override {
152 TRACE_EVENT0("cc", "ImageDecodeTaskImpl::RunOnWorkerThread"); 152 TRACE_EVENT0("cc", "ImageDecodeTaskImpl::RunOnWorkerThread");
153 153
154 devtools_instrumentation::ScopedImageDecodeTask image_decode_task( 154 devtools_instrumentation::ScopedImageDecodeTask image_decode_task(
155 pixel_ref_.get()); 155 pixel_ref_.get());
156 // This will cause the image referred to by pixel ref to be decoded. 156 // This will cause the image referred to by pixel ref to be decoded.
157 pixel_ref_->lockPixels(); 157 pixel_ref_->lockPixels();
158 pixel_ref_->unlockPixels(); 158 pixel_ref_->unlockPixels();
159 } 159 }
160 160
161 // Overridden from RasterizerTask: 161 // Overridden from TileTask:
162 void ScheduleOnOriginThread(RasterizerTaskClient* client) override {} 162 void ScheduleOnOriginThread(TileTaskClient* client) override {}
163 void CompleteOnOriginThread(RasterizerTaskClient* client) override {} 163 void CompleteOnOriginThread(TileTaskClient* client) override {}
164 void RunReplyOnOriginThread() override { reply_.Run(!HasFinishedRunning()); } 164 void RunReplyOnOriginThread() override { reply_.Run(!HasFinishedRunning()); }
165 165
166 protected: 166 protected:
167 ~ImageDecodeTaskImpl() override {} 167 ~ImageDecodeTaskImpl() override {}
168 168
169 private: 169 private:
170 skia::RefPtr<SkPixelRef> pixel_ref_; 170 skia::RefPtr<SkPixelRef> pixel_ref_;
171 int layer_id_; 171 int layer_id_;
172 RenderingStatsInstrumentation* rendering_stats_; 172 RenderingStatsInstrumentation* rendering_stats_;
173 const base::Callback<void(bool was_canceled)> reply_; 173 const base::Callback<void(bool was_canceled)> reply_;
(...skipping 27 matching lines...) Expand all
201 state->SetInteger("completed_count", stats.completed_count); 201 state->SetInteger("completed_count", stats.completed_count);
202 state->SetInteger("canceled_count", stats.canceled_count); 202 state->SetInteger("canceled_count", stats.canceled_count);
203 return state; 203 return state;
204 } 204 }
205 205
206 // static 206 // static
207 scoped_ptr<TileManager> TileManager::Create( 207 scoped_ptr<TileManager> TileManager::Create(
208 TileManagerClient* client, 208 TileManagerClient* client,
209 base::SequencedTaskRunner* task_runner, 209 base::SequencedTaskRunner* task_runner,
210 ResourcePool* resource_pool, 210 ResourcePool* resource_pool,
211 Rasterizer* rasterizer, 211 TileTaskRunner* tile_task_runner,
212 RenderingStatsInstrumentation* rendering_stats_instrumentation, 212 RenderingStatsInstrumentation* rendering_stats_instrumentation,
213 size_t scheduled_raster_task_limit) { 213 size_t scheduled_raster_task_limit) {
214 return make_scoped_ptr(new TileManager(client, 214 return make_scoped_ptr(new TileManager(
215 task_runner, 215 client, task_runner, resource_pool, tile_task_runner,
216 resource_pool, 216 rendering_stats_instrumentation, scheduled_raster_task_limit));
217 rasterizer,
218 rendering_stats_instrumentation,
219 scheduled_raster_task_limit));
220 } 217 }
221 218
222 TileManager::TileManager( 219 TileManager::TileManager(
223 TileManagerClient* client, 220 TileManagerClient* client,
224 const scoped_refptr<base::SequencedTaskRunner>& task_runner, 221 const scoped_refptr<base::SequencedTaskRunner>& task_runner,
225 ResourcePool* resource_pool, 222 ResourcePool* resource_pool,
226 Rasterizer* rasterizer, 223 TileTaskRunner* tile_task_runner,
227 RenderingStatsInstrumentation* rendering_stats_instrumentation, 224 RenderingStatsInstrumentation* rendering_stats_instrumentation,
228 size_t scheduled_raster_task_limit) 225 size_t scheduled_raster_task_limit)
229 : client_(client), 226 : client_(client),
230 task_runner_(task_runner), 227 task_runner_(task_runner),
231 resource_pool_(resource_pool), 228 resource_pool_(resource_pool),
232 rasterizer_(rasterizer), 229 tile_task_runner_(tile_task_runner),
233 scheduled_raster_task_limit_(scheduled_raster_task_limit), 230 scheduled_raster_task_limit_(scheduled_raster_task_limit),
234 all_tiles_that_need_to_be_rasterized_are_scheduled_(true), 231 all_tiles_that_need_to_be_rasterized_are_scheduled_(true),
235 rendering_stats_instrumentation_(rendering_stats_instrumentation), 232 rendering_stats_instrumentation_(rendering_stats_instrumentation),
236 did_check_for_completed_tasks_since_last_schedule_tasks_(true), 233 did_check_for_completed_tasks_since_last_schedule_tasks_(true),
237 did_oom_on_last_assign_(false), 234 did_oom_on_last_assign_(false),
238 ready_to_activate_check_notifier_( 235 ready_to_activate_check_notifier_(
239 task_runner_.get(), 236 task_runner_.get(),
240 base::Bind(&TileManager::CheckIfReadyToActivate, 237 base::Bind(&TileManager::CheckIfReadyToActivate,
241 base::Unretained(this))), 238 base::Unretained(this))),
242 ready_to_draw_check_notifier_( 239 ready_to_draw_check_notifier_(
243 task_runner_.get(), 240 task_runner_.get(),
244 base::Bind(&TileManager::CheckIfReadyToDraw, base::Unretained(this))), 241 base::Bind(&TileManager::CheckIfReadyToDraw, base::Unretained(this))),
245 did_notify_ready_to_activate_(false), 242 did_notify_ready_to_activate_(false),
246 did_notify_ready_to_draw_(false) { 243 did_notify_ready_to_draw_(false) {
247 rasterizer_->SetClient(this); 244 tile_task_runner_->SetClient(this);
248 } 245 }
249 246
250 TileManager::~TileManager() { 247 TileManager::~TileManager() {
251 // Reset global state and manage. This should cause 248 // Reset global state and manage. This should cause
252 // our memory usage to drop to zero. 249 // our memory usage to drop to zero.
253 global_state_ = GlobalStateThatImpactsTilePriority(); 250 global_state_ = GlobalStateThatImpactsTilePriority();
254 251
255 RasterTaskQueue empty; 252 TileTaskQueue empty;
256 rasterizer_->ScheduleTasks(&empty); 253 tile_task_runner_->ScheduleTasks(&empty);
257 orphan_raster_tasks_.clear(); 254 orphan_raster_tasks_.clear();
258 255
259 // This should finish all pending tasks and release any uninitialized 256 // This should finish all pending tasks and release any uninitialized
260 // resources. 257 // resources.
261 rasterizer_->Shutdown(); 258 tile_task_runner_->Shutdown();
262 rasterizer_->CheckForCompletedTasks(); 259 tile_task_runner_->CheckForCompletedTasks();
263 260
264 FreeResourcesForReleasedTiles(); 261 FreeResourcesForReleasedTiles();
265 CleanUpReleasedTiles(); 262 CleanUpReleasedTiles();
266 } 263 }
267 264
268 void TileManager::Release(Tile* tile) { 265 void TileManager::Release(Tile* tile) {
269 released_tiles_.push_back(tile); 266 released_tiles_.push_back(tile);
270 } 267 }
271 268
272 TaskSetCollection TileManager::TasksThatShouldBeForcedToComplete() const { 269 TaskSetCollection TileManager::TasksThatShouldBeForcedToComplete() const {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 if (--layer_it->second == 0) { 302 if (--layer_it->second == 0) {
306 used_layer_counts_.erase(layer_it); 303 used_layer_counts_.erase(layer_it);
307 image_decode_tasks_.erase(tile->layer_id()); 304 image_decode_tasks_.erase(tile->layer_id());
308 } 305 }
309 306
310 delete tile; 307 delete tile;
311 it = released_tiles_.erase(it); 308 it = released_tiles_.erase(it);
312 } 309 }
313 } 310 }
314 311
315 void TileManager::DidFinishRunningTasks(TaskSet task_set) { 312 void TileManager::DidFinishRunningTileTasks(TaskSet task_set) {
316 TRACE_EVENT1("cc", "TileManager::DidFinishRunningTasks", "task_set", 313 TRACE_EVENT1("cc", "TileManager::DidFinishRunningTileTasks", "task_set",
317 TaskSetName(task_set)); 314 TaskSetName(task_set));
318 315
319 switch (task_set) { 316 switch (task_set) {
320 case ALL: { 317 case ALL: {
321 bool memory_usage_above_limit = 318 bool memory_usage_above_limit =
322 resource_pool_->total_memory_usage_bytes() > 319 resource_pool_->total_memory_usage_bytes() >
323 global_state_.soft_memory_limit_in_bytes; 320 global_state_.soft_memory_limit_in_bytes;
324 321
325 // When OOM, keep re-assigning memory until we reach a steady state 322 // When OOM, keep re-assigning memory until we reach a steady state
326 // where top-priority tiles are initialized. 323 // where top-priority tiles are initialized.
327 if (all_tiles_that_need_to_be_rasterized_are_scheduled_ && 324 if (all_tiles_that_need_to_be_rasterized_are_scheduled_ &&
328 !memory_usage_above_limit) 325 !memory_usage_above_limit)
329 return; 326 return;
330 327
331 rasterizer_->CheckForCompletedTasks(); 328 tile_task_runner_->CheckForCompletedTasks();
332 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; 329 did_check_for_completed_tasks_since_last_schedule_tasks_ = true;
333 330
334 TileVector tiles_that_need_to_be_rasterized; 331 TileVector tiles_that_need_to_be_rasterized;
335 AssignGpuMemoryToTiles(&tiles_that_need_to_be_rasterized); 332 AssignGpuMemoryToTiles(&tiles_that_need_to_be_rasterized);
336 333
337 // |tiles_that_need_to_be_rasterized| will be empty when we reach a 334 // |tiles_that_need_to_be_rasterized| will be empty when we reach a
338 // steady memory state. Keep scheduling tasks until we reach this state. 335 // steady memory state. Keep scheduling tasks until we reach this state.
339 if (!tiles_that_need_to_be_rasterized.empty()) { 336 if (!tiles_that_need_to_be_rasterized.empty()) {
340 ScheduleTasks(tiles_that_need_to_be_rasterized); 337 ScheduleTasks(tiles_that_need_to_be_rasterized);
341 return; 338 return;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 } 398 }
402 399
403 void TileManager::ManageTiles(const GlobalStateThatImpactsTilePriority& state) { 400 void TileManager::ManageTiles(const GlobalStateThatImpactsTilePriority& state) {
404 TRACE_EVENT0("cc", "TileManager::ManageTiles"); 401 TRACE_EVENT0("cc", "TileManager::ManageTiles");
405 402
406 global_state_ = state; 403 global_state_ = state;
407 404
408 // We need to call CheckForCompletedTasks() once in-between each call 405 // We need to call CheckForCompletedTasks() once in-between each call
409 // to ScheduleTasks() to prevent canceled tasks from being scheduled. 406 // to ScheduleTasks() to prevent canceled tasks from being scheduled.
410 if (!did_check_for_completed_tasks_since_last_schedule_tasks_) { 407 if (!did_check_for_completed_tasks_since_last_schedule_tasks_) {
411 rasterizer_->CheckForCompletedTasks(); 408 tile_task_runner_->CheckForCompletedTasks();
412 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; 409 did_check_for_completed_tasks_since_last_schedule_tasks_ = true;
413 } 410 }
414 411
415 FreeResourcesForReleasedTiles(); 412 FreeResourcesForReleasedTiles();
416 CleanUpReleasedTiles(); 413 CleanUpReleasedTiles();
417 414
418 TileVector tiles_that_need_to_be_rasterized; 415 TileVector tiles_that_need_to_be_rasterized;
419 AssignGpuMemoryToTiles(&tiles_that_need_to_be_rasterized); 416 AssignGpuMemoryToTiles(&tiles_that_need_to_be_rasterized);
420 417
421 // Schedule rasterizer tasks. 418 // Schedule tile tasks.
422 ScheduleTasks(tiles_that_need_to_be_rasterized); 419 ScheduleTasks(tiles_that_need_to_be_rasterized);
423 420
424 did_notify_ready_to_activate_ = false; 421 did_notify_ready_to_activate_ = false;
425 did_notify_ready_to_draw_ = false; 422 did_notify_ready_to_draw_ = false;
426 423
427 TRACE_EVENT_INSTANT1("cc", 424 TRACE_EVENT_INSTANT1("cc",
428 "DidManage", 425 "DidManage",
429 TRACE_EVENT_SCOPE_THREAD, 426 TRACE_EVENT_SCOPE_THREAD,
430 "state", 427 "state",
431 BasicStateAsValue()); 428 BasicStateAsValue());
432 429
433 TRACE_COUNTER_ID1("cc", 430 TRACE_COUNTER_ID1("cc",
434 "unused_memory_bytes", 431 "unused_memory_bytes",
435 this, 432 this,
436 resource_pool_->total_memory_usage_bytes() - 433 resource_pool_->total_memory_usage_bytes() -
437 resource_pool_->acquired_memory_usage_bytes()); 434 resource_pool_->acquired_memory_usage_bytes());
438 } 435 }
439 436
440 void TileManager::UpdateVisibleTiles() { 437 void TileManager::UpdateVisibleTiles() {
441 TRACE_EVENT0("cc", "TileManager::UpdateVisibleTiles"); 438 TRACE_EVENT0("cc", "TileManager::UpdateVisibleTiles");
442 439
443 rasterizer_->CheckForCompletedTasks(); 440 tile_task_runner_->CheckForCompletedTasks();
444 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; 441 did_check_for_completed_tasks_since_last_schedule_tasks_ = true;
445 442
446 TRACE_EVENT_INSTANT1( 443 TRACE_EVENT_INSTANT1(
447 "cc", 444 "cc",
448 "DidUpdateVisibleTiles", 445 "DidUpdateVisibleTiles",
449 TRACE_EVENT_SCOPE_THREAD, 446 TRACE_EVENT_SCOPE_THREAD,
450 "stats", 447 "stats",
451 RasterTaskCompletionStatsAsValue(update_visible_tiles_stats_)); 448 RasterTaskCompletionStatsAsValue(update_visible_tiles_stats_));
452 update_visible_tiles_stats_ = RasterTaskCompletionStats(); 449 update_visible_tiles_stats_ = RasterTaskCompletionStats();
453 } 450 }
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
691 if (!mts.raster_task.get()) 688 if (!mts.raster_task.get())
692 mts.raster_task = CreateRasterTask(tile); 689 mts.raster_task = CreateRasterTask(tile);
693 690
694 TaskSetCollection task_sets; 691 TaskSetCollection task_sets;
695 if (tile->required_for_activation()) 692 if (tile->required_for_activation())
696 task_sets.set(REQUIRED_FOR_ACTIVATION); 693 task_sets.set(REQUIRED_FOR_ACTIVATION);
697 if (tile->required_for_draw()) 694 if (tile->required_for_draw())
698 task_sets.set(REQUIRED_FOR_DRAW); 695 task_sets.set(REQUIRED_FOR_DRAW);
699 task_sets.set(ALL); 696 task_sets.set(ALL);
700 raster_queue_.items.push_back( 697 raster_queue_.items.push_back(
701 RasterTaskQueue::Item(mts.raster_task.get(), task_sets)); 698 TileTaskQueue::Item(mts.raster_task.get(), task_sets));
702 } 699 }
703 700
704 // We must reduce the amount of unused resoruces before calling 701 // We must reduce the amount of unused resoruces before calling
705 // ScheduleTasks to prevent usage from rising above limits. 702 // ScheduleTasks to prevent usage from rising above limits.
706 resource_pool_->ReduceResourceUsage(); 703 resource_pool_->ReduceResourceUsage();
707 704
708 // Schedule running of |raster_queue_|. This replaces any previously 705 // Schedule running of |raster_queue_|. This replaces any previously
709 // scheduled tasks and effectively cancels all tasks not present 706 // scheduled tasks and effectively cancels all tasks not present
710 // in |raster_queue_|. 707 // in |raster_queue_|.
711 rasterizer_->ScheduleTasks(&raster_queue_); 708 tile_task_runner_->ScheduleTasks(&raster_queue_);
712 709
713 // It's now safe to clean up orphan tasks as raster worker pool is not 710 // It's now safe to clean up orphan tasks as raster worker pool is not
714 // allowed to keep around unreferenced raster tasks after ScheduleTasks() has 711 // allowed to keep around unreferenced raster tasks after ScheduleTasks() has
715 // been called. 712 // been called.
716 orphan_raster_tasks_.clear(); 713 orphan_raster_tasks_.clear();
717 714
718 did_check_for_completed_tasks_since_last_schedule_tasks_ = false; 715 did_check_for_completed_tasks_since_last_schedule_tasks_ = false;
719 } 716 }
720 717
721 scoped_refptr<ImageDecodeTask> TileManager::CreateImageDecodeTask( 718 scoped_refptr<ImageDecodeTask> TileManager::CreateImageDecodeTask(
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 layer_id, 843 layer_id,
847 source_frame_number, 844 source_frame_number,
848 flags)); 845 flags));
849 DCHECK(tiles_.find(tile->id()) == tiles_.end()); 846 DCHECK(tiles_.find(tile->id()) == tiles_.end());
850 847
851 tiles_[tile->id()] = tile.get(); 848 tiles_[tile->id()] = tile.get();
852 used_layer_counts_[tile->layer_id()]++; 849 used_layer_counts_[tile->layer_id()]++;
853 return tile; 850 return tile;
854 } 851 }
855 852
856 void TileManager::SetRasterizerForTesting(Rasterizer* rasterizer) { 853 void TileManager::SetTileTaskRunnerForTesting(
857 rasterizer_ = rasterizer; 854 TileTaskRunner* tile_task_runner) {
858 rasterizer_->SetClient(this); 855 tile_task_runner_ = tile_task_runner;
856 tile_task_runner_->SetClient(this);
859 } 857 }
860 858
861 bool TileManager::IsReadyToActivate() const { 859 bool TileManager::IsReadyToActivate() const {
862 TRACE_EVENT0("cc", "TileManager::IsReadyToActivate"); 860 TRACE_EVENT0("cc", "TileManager::IsReadyToActivate");
863 const std::vector<PictureLayerImpl*>& layers = client_->GetPictureLayers(); 861 const std::vector<PictureLayerImpl*>& layers = client_->GetPictureLayers();
864 862
865 for (const auto& layer : layers) { 863 for (const auto& layer : layers) {
866 if (!layer->AllTilesRequiredForActivationAreReadyToDraw()) 864 if (!layer->AllTilesRequiredForActivationAreReadyToDraw())
867 return false; 865 return false;
868 } 866 }
869 867
870 return true; 868 return true;
871 } 869 }
872 870
873 bool TileManager::IsReadyToDraw() const { 871 bool TileManager::IsReadyToDraw() const {
874 const std::vector<PictureLayerImpl*>& layers = client_->GetPictureLayers(); 872 const std::vector<PictureLayerImpl*>& layers = client_->GetPictureLayers();
875 873
876 for (const auto& layer : layers) { 874 for (const auto& layer : layers) {
877 if (!layer->AllTilesRequiredForDrawAreReadyToDraw()) 875 if (!layer->AllTilesRequiredForDrawAreReadyToDraw())
878 return false; 876 return false;
879 } 877 }
880 878
881 return true; 879 return true;
882 } 880 }
883 881
884 void TileManager::CheckIfReadyToActivate() { 882 void TileManager::CheckIfReadyToActivate() {
885 TRACE_EVENT0("cc", "TileManager::CheckIfReadyToActivate"); 883 TRACE_EVENT0("cc", "TileManager::CheckIfReadyToActivate");
886 884
887 rasterizer_->CheckForCompletedTasks(); 885 tile_task_runner_->CheckForCompletedTasks();
888 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; 886 did_check_for_completed_tasks_since_last_schedule_tasks_ = true;
889 887
890 if (did_notify_ready_to_activate_) 888 if (did_notify_ready_to_activate_)
891 return; 889 return;
892 if (!IsReadyToActivate()) 890 if (!IsReadyToActivate())
893 return; 891 return;
894 892
895 client_->NotifyReadyToActivate(); 893 client_->NotifyReadyToActivate();
896 did_notify_ready_to_activate_ = true; 894 did_notify_ready_to_activate_ = true;
897 } 895 }
898 896
899 void TileManager::CheckIfReadyToDraw() { 897 void TileManager::CheckIfReadyToDraw() {
900 TRACE_EVENT0("cc", "TileManager::CheckIfReadyToDraw"); 898 TRACE_EVENT0("cc", "TileManager::CheckIfReadyToDraw");
901 899
902 rasterizer_->CheckForCompletedTasks(); 900 tile_task_runner_->CheckForCompletedTasks();
903 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; 901 did_check_for_completed_tasks_since_last_schedule_tasks_ = true;
904 902
905 if (did_notify_ready_to_draw_) 903 if (did_notify_ready_to_draw_)
906 return; 904 return;
907 if (!IsReadyToDraw()) 905 if (!IsReadyToDraw())
908 return; 906 return;
909 907
910 client_->NotifyReadyToDraw(); 908 client_->NotifyReadyToDraw();
911 did_notify_ready_to_draw_ = true; 909 did_notify_ready_to_draw_ = true;
912 } 910 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
955 result -= other; 953 result -= other;
956 return result; 954 return result;
957 } 955 }
958 956
959 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const { 957 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const {
960 return memory_bytes_ > limit.memory_bytes_ || 958 return memory_bytes_ > limit.memory_bytes_ ||
961 resource_count_ > limit.resource_count_; 959 resource_count_ > limit.resource_count_;
962 } 960 }
963 961
964 } // namespace cc 962 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698