OLD | NEW |
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 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 Rasterizer* rasterizer, |
| 212 GpuRasterizer* gpu_rasterizer, |
212 RenderingStatsInstrumentation* rendering_stats_instrumentation, | 213 RenderingStatsInstrumentation* rendering_stats_instrumentation, |
213 size_t scheduled_raster_task_limit) { | 214 size_t scheduled_raster_task_limit) { |
214 return make_scoped_ptr(new TileManager(client, | 215 return make_scoped_ptr(new TileManager( |
215 task_runner, | 216 client, task_runner, resource_pool, rasterizer, gpu_rasterizer, |
216 resource_pool, | 217 rendering_stats_instrumentation, scheduled_raster_task_limit)); |
217 rasterizer, | |
218 rendering_stats_instrumentation, | |
219 scheduled_raster_task_limit)); | |
220 } | 218 } |
221 | 219 |
222 TileManager::TileManager( | 220 TileManager::TileManager( |
223 TileManagerClient* client, | 221 TileManagerClient* client, |
224 const scoped_refptr<base::SequencedTaskRunner>& task_runner, | 222 const scoped_refptr<base::SequencedTaskRunner>& task_runner, |
225 ResourcePool* resource_pool, | 223 ResourcePool* resource_pool, |
226 Rasterizer* rasterizer, | 224 Rasterizer* rasterizer, |
| 225 GpuRasterizer* gpu_rasterizer, |
227 RenderingStatsInstrumentation* rendering_stats_instrumentation, | 226 RenderingStatsInstrumentation* rendering_stats_instrumentation, |
228 size_t scheduled_raster_task_limit) | 227 size_t scheduled_raster_task_limit) |
229 : client_(client), | 228 : client_(client), |
230 task_runner_(task_runner), | 229 task_runner_(task_runner), |
231 resource_pool_(resource_pool), | 230 resource_pool_(resource_pool), |
232 rasterizer_(rasterizer), | 231 rasterizer_(rasterizer), |
| 232 gpu_rasterizer_(gpu_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_(task_runner_.get(), |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 | 322 |
323 // When OOM, keep re-assigning memory until we reach a steady state | 323 // When OOM, keep re-assigning memory until we reach a steady state |
324 // where top-priority tiles are initialized. | 324 // where top-priority tiles are initialized. |
325 if (all_tiles_that_need_to_be_rasterized_are_scheduled_ && | 325 if (all_tiles_that_need_to_be_rasterized_are_scheduled_ && |
326 !memory_usage_above_limit) | 326 !memory_usage_above_limit) |
327 return; | 327 return; |
328 | 328 |
329 rasterizer_->CheckForCompletedTasks(); | 329 rasterizer_->CheckForCompletedTasks(); |
330 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; | 330 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; |
331 | 331 |
| 332 client_->BuildRasterQueue(&raster_priority_queue_, |
| 333 global_state_.tree_priority); |
332 TileVector tiles_that_need_to_be_rasterized; | 334 TileVector tiles_that_need_to_be_rasterized; |
333 AssignGpuMemoryToTiles(&tiles_that_need_to_be_rasterized); | 335 AssignGpuMemoryToTiles(&tiles_that_need_to_be_rasterized, |
| 336 scheduled_raster_task_limit_); |
| 337 raster_priority_queue_.Reset(); |
334 | 338 |
335 // |tiles_that_need_to_be_rasterized| will be empty when we reach a | 339 // |tiles_that_need_to_be_rasterized| will be empty when we reach a |
336 // steady memory state. Keep scheduling tasks until we reach this state. | 340 // steady memory state. Keep scheduling tasks until we reach this state. |
337 if (!tiles_that_need_to_be_rasterized.empty()) { | 341 if (!tiles_that_need_to_be_rasterized.empty()) { |
338 ScheduleTasks(tiles_that_need_to_be_rasterized); | 342 ScheduleTasks(tiles_that_need_to_be_rasterized); |
339 return; | 343 return; |
340 } | 344 } |
341 | 345 |
342 FreeResourcesForReleasedTiles(); | 346 FreeResourcesForReleasedTiles(); |
343 | 347 |
344 resource_pool_->ReduceResourceUsage(); | 348 resource_pool_->ReduceResourceUsage(); |
345 | 349 |
346 // We don't reserve memory for required-for-activation tiles during | 350 // We don't reserve memory for required-for-activation tiles during |
347 // accelerated gestures, so we just postpone activation when we don't | 351 // accelerated gestures, so we just postpone activation when we don't |
348 // have these tiles, and activate after the accelerated gesture. | 352 // have these tiles, and activate after the accelerated gesture. |
349 // Likewise if we don't allow any tiles (as is the case when we're | 353 // Likewise if we don't allow any tiles (as is the case when we're |
350 // invisible), if we have tiles that aren't ready, then we shouldn't | 354 // invisible), if we have tiles that aren't ready, then we shouldn't |
351 // activate as activation can cause checkerboards. | 355 // activate as activation can cause checkerboards. |
352 bool allow_rasterize_on_demand = | 356 bool allow_rasterize_on_demand = |
353 global_state_.tree_priority != SMOOTHNESS_TAKES_PRIORITY && | 357 global_state_.tree_priority != SMOOTHNESS_TAKES_PRIORITY && |
354 global_state_.memory_limit_policy != ALLOW_NOTHING; | 358 global_state_.memory_limit_policy != ALLOW_NOTHING; |
355 | 359 |
356 // Use on-demand raster for any required-for-activation tiles that have | 360 // Use on-demand raster for any required-for-activation tiles that have |
357 // not | 361 // not been been assigned memory after reaching a steady memory |
358 // been been assigned memory after reaching a steady memory state. This | 362 // state. This ensures that we activate even when OOM. Note that we have |
359 // ensures that we activate even when OOM. Note that we have to rebuilt | 363 // to rebuilt the queue in case the last AssignGpuMemoryToTiles evicted |
360 // the | 364 // some tiles that would otherwise not be picked up by the old raster |
361 // queue in case the last AssignGpuMemoryToTiles evicted some tiles that | 365 // queue. |
362 // would otherwise not be picked up by the old raster queue. | |
363 client_->BuildRasterQueue(&raster_priority_queue_, | 366 client_->BuildRasterQueue(&raster_priority_queue_, |
364 global_state_.tree_priority); | 367 global_state_.tree_priority); |
365 bool ready_to_activate = true; | 368 bool ready_to_activate = true; |
366 while (!raster_priority_queue_.IsEmpty()) { | 369 while (!raster_priority_queue_.IsEmpty()) { |
367 Tile* tile = raster_priority_queue_.Top(); | 370 Tile* tile = raster_priority_queue_.Top(); |
368 ManagedTileState& mts = tile->managed_state(); | 371 ManagedTileState& mts = tile->managed_state(); |
369 | 372 |
370 if (tile->required_for_activation() && !mts.draw_info.IsReadyToDraw()) { | 373 if (tile->required_for_activation() && !mts.draw_info.IsReadyToDraw()) { |
371 // If we can't raster on demand, give up early (and don't activate). | 374 // If we can't raster on demand, give up early (and don't activate). |
372 if (!allow_rasterize_on_demand) { | 375 if (!allow_rasterize_on_demand) { |
(...skipping 18 matching lines...) Expand all Loading... |
391 ready_to_activate_check_notifier_.Schedule(); | 394 ready_to_activate_check_notifier_.Schedule(); |
392 return; | 395 return; |
393 case REQUIRED_FOR_DRAW: | 396 case REQUIRED_FOR_DRAW: |
394 ready_to_draw_check_notifier_.Schedule(); | 397 ready_to_draw_check_notifier_.Schedule(); |
395 return; | 398 return; |
396 } | 399 } |
397 | 400 |
398 NOTREACHED(); | 401 NOTREACHED(); |
399 } | 402 } |
400 | 403 |
| 404 void TileManager::RasterizeTiles( |
| 405 const GlobalStateThatImpactsTilePriority& state) { |
| 406 DCHECK(gpu_rasterizer_); |
| 407 TRACE_EVENT0("cc", "TileManager::RasterizeTiles"); |
| 408 |
| 409 global_state_ = state; |
| 410 |
| 411 FreeResourcesForReleasedTiles(); |
| 412 CleanUpReleasedTiles(); |
| 413 |
| 414 client_->BuildRasterQueue(&raster_priority_queue_, |
| 415 global_state_.tree_priority); |
| 416 TileVector tiles_that_need_to_be_rasterized; |
| 417 AssignGpuMemoryToTiles(&tiles_that_need_to_be_rasterized, |
| 418 std::numeric_limits<size_t>::max()); |
| 419 |
| 420 // We must reduce the amount of unused resoruces before calling |
| 421 // RunTasks to prevent usage from rising above limits. |
| 422 resource_pool_->ReduceResourceUsage(); |
| 423 |
| 424 // Run and complete all raster task synchronously. |
| 425 gpu_rasterizer_->RasterizeTiles(tiles_that_need_to_be_rasterized, |
| 426 resource_pool_, this); |
| 427 |
| 428 // Use on-demand raster for any tiles that have not been been assigned |
| 429 // memory. This ensures that we draw even when OOM. |
| 430 while (!raster_priority_queue_.IsEmpty()) { |
| 431 Tile* tile = raster_priority_queue_.Top(); |
| 432 ManagedTileState& mts = tile->managed_state(); |
| 433 |
| 434 if (!mts.draw_info.IsReadyToDraw()) { |
| 435 mts.draw_info.set_rasterize_on_demand(); |
| 436 client_->NotifyTileStateChanged(tile); |
| 437 } |
| 438 raster_priority_queue_.Pop(); |
| 439 } |
| 440 raster_priority_queue_.Reset(); |
| 441 |
| 442 if (IsReadyToDraw()) |
| 443 client_->NotifyReadyToDraw(); |
| 444 |
| 445 TRACE_EVENT_INSTANT1("cc", "DidRasterize", TRACE_EVENT_SCOPE_THREAD, "state", |
| 446 BasicStateAsValue()); |
| 447 |
| 448 TRACE_COUNTER_ID1("cc", "unused_memory_bytes", this, |
| 449 resource_pool_->total_memory_usage_bytes() - |
| 450 resource_pool_->acquired_memory_usage_bytes()); |
| 451 } |
| 452 |
401 void TileManager::ManageTiles(const GlobalStateThatImpactsTilePriority& state) { | 453 void TileManager::ManageTiles(const GlobalStateThatImpactsTilePriority& state) { |
402 TRACE_EVENT0("cc", "TileManager::ManageTiles"); | 454 TRACE_EVENT0("cc", "TileManager::ManageTiles"); |
403 | 455 |
404 global_state_ = state; | 456 global_state_ = state; |
405 | 457 |
406 // We need to call CheckForCompletedTasks() once in-between each call | 458 // We need to call CheckForCompletedTasks() once in-between each call |
407 // to ScheduleTasks() to prevent canceled tasks from being scheduled. | 459 // to ScheduleTasks() to prevent canceled tasks from being scheduled. |
408 if (!did_check_for_completed_tasks_since_last_schedule_tasks_) { | 460 if (!did_check_for_completed_tasks_since_last_schedule_tasks_) { |
409 rasterizer_->CheckForCompletedTasks(); | 461 rasterizer_->CheckForCompletedTasks(); |
410 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; | 462 did_check_for_completed_tasks_since_last_schedule_tasks_ = true; |
411 } | 463 } |
412 | 464 |
413 FreeResourcesForReleasedTiles(); | 465 FreeResourcesForReleasedTiles(); |
414 CleanUpReleasedTiles(); | 466 CleanUpReleasedTiles(); |
415 | 467 |
| 468 client_->BuildRasterQueue(&raster_priority_queue_, |
| 469 global_state_.tree_priority); |
416 TileVector tiles_that_need_to_be_rasterized; | 470 TileVector tiles_that_need_to_be_rasterized; |
417 AssignGpuMemoryToTiles(&tiles_that_need_to_be_rasterized); | 471 AssignGpuMemoryToTiles(&tiles_that_need_to_be_rasterized, |
| 472 scheduled_raster_task_limit_); |
| 473 raster_priority_queue_.Reset(); |
418 | 474 |
419 // Finally, schedule rasterizer tasks. | 475 // Finally, schedule rasterizer tasks. |
420 ScheduleTasks(tiles_that_need_to_be_rasterized); | 476 ScheduleTasks(tiles_that_need_to_be_rasterized); |
421 | 477 |
422 TRACE_EVENT_INSTANT1("cc", | 478 TRACE_EVENT_INSTANT1("cc", |
423 "DidManage", | 479 "DidManage", |
424 TRACE_EVENT_SCOPE_THREAD, | 480 TRACE_EVENT_SCOPE_THREAD, |
425 "state", | 481 "state", |
426 BasicStateAsValue()); | 482 BasicStateAsValue()); |
427 | 483 |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
524 return priority.priority_bin > TilePriority::SOON; | 580 return priority.priority_bin > TilePriority::SOON; |
525 case ALLOW_ANYTHING: | 581 case ALLOW_ANYTHING: |
526 return priority.distance_to_visible == | 582 return priority.distance_to_visible == |
527 std::numeric_limits<float>::infinity(); | 583 std::numeric_limits<float>::infinity(); |
528 } | 584 } |
529 NOTREACHED(); | 585 NOTREACHED(); |
530 return true; | 586 return true; |
531 } | 587 } |
532 | 588 |
533 void TileManager::AssignGpuMemoryToTiles( | 589 void TileManager::AssignGpuMemoryToTiles( |
534 TileVector* tiles_that_need_to_be_rasterized) { | 590 TileVector* tiles_that_need_to_be_rasterized, |
| 591 size_t scheduled_raster_task_limit) { |
535 TRACE_EVENT_BEGIN0("cc", "TileManager::AssignGpuMemoryToTiles"); | 592 TRACE_EVENT_BEGIN0("cc", "TileManager::AssignGpuMemoryToTiles"); |
536 | 593 |
537 // Maintain the list of released resources that can potentially be re-used | 594 // Maintain the list of released resources that can potentially be re-used |
538 // or deleted. | 595 // or deleted. |
539 // If this operation becomes expensive too, only do this after some | 596 // If this operation becomes expensive too, only do this after some |
540 // resource(s) was returned. Note that in that case, one also need to | 597 // resource(s) was returned. Note that in that case, one also need to |
541 // invalidate when releasing some resource from the pool. | 598 // invalidate when releasing some resource from the pool. |
542 resource_pool_->CheckBusyResources(false); | 599 resource_pool_->CheckBusyResources(false); |
543 | 600 |
544 // Now give memory out to the tiles until we're out, and build | 601 // Now give memory out to the tiles until we're out, and build |
545 // the needs-to-be-rasterized queue. | 602 // the needs-to-be-rasterized queue. |
546 unsigned schedule_priority = 1u; | 603 unsigned schedule_priority = 1u; |
547 all_tiles_that_need_to_be_rasterized_are_scheduled_ = true; | 604 all_tiles_that_need_to_be_rasterized_are_scheduled_ = true; |
548 bool had_enough_memory_to_schedule_tiles_needed_now = true; | 605 bool had_enough_memory_to_schedule_tiles_needed_now = true; |
549 | 606 |
550 MemoryUsage hard_memory_limit(global_state_.hard_memory_limit_in_bytes, | 607 MemoryUsage hard_memory_limit(global_state_.hard_memory_limit_in_bytes, |
551 global_state_.num_resources_limit); | 608 global_state_.num_resources_limit); |
552 MemoryUsage soft_memory_limit(global_state_.soft_memory_limit_in_bytes, | 609 MemoryUsage soft_memory_limit(global_state_.soft_memory_limit_in_bytes, |
553 global_state_.num_resources_limit); | 610 global_state_.num_resources_limit); |
554 MemoryUsage memory_usage(resource_pool_->acquired_memory_usage_bytes(), | 611 MemoryUsage memory_usage(resource_pool_->acquired_memory_usage_bytes(), |
555 resource_pool_->acquired_resource_count()); | 612 resource_pool_->acquired_resource_count()); |
556 | 613 |
557 eviction_priority_queue_is_up_to_date_ = false; | 614 eviction_priority_queue_is_up_to_date_ = false; |
558 client_->BuildRasterQueue(&raster_priority_queue_, | |
559 global_state_.tree_priority); | |
560 | 615 |
561 while (!raster_priority_queue_.IsEmpty()) { | 616 while (!raster_priority_queue_.IsEmpty()) { |
562 Tile* tile = raster_priority_queue_.Top(); | 617 Tile* tile = raster_priority_queue_.Top(); |
563 TilePriority priority = tile->combined_priority(); | 618 TilePriority priority = tile->combined_priority(); |
564 | 619 |
565 if (TilePriorityViolatesMemoryPolicy(priority)) { | 620 if (TilePriorityViolatesMemoryPolicy(priority)) { |
566 TRACE_EVENT_INSTANT0( | 621 TRACE_EVENT_INSTANT0( |
567 "cc", | 622 "cc", |
568 "TileManager::AssignGpuMemory tile violates memory policy", | 623 "TileManager::AssignGpuMemory tile violates memory policy", |
569 TRACE_EVENT_SCOPE_THREAD); | 624 TRACE_EVENT_SCOPE_THREAD); |
570 break; | 625 break; |
571 } | 626 } |
572 | 627 |
573 // We won't be able to schedule this tile, so break out early. | 628 // We won't be able to schedule this tile, so break out early. |
574 if (tiles_that_need_to_be_rasterized->size() >= | 629 if (tiles_that_need_to_be_rasterized->size() >= |
575 scheduled_raster_task_limit_) { | 630 scheduled_raster_task_limit) { |
576 all_tiles_that_need_to_be_rasterized_are_scheduled_ = false; | 631 all_tiles_that_need_to_be_rasterized_are_scheduled_ = false; |
577 break; | 632 break; |
578 } | 633 } |
579 | 634 |
580 ManagedTileState& mts = tile->managed_state(); | 635 ManagedTileState& mts = tile->managed_state(); |
581 mts.scheduled_priority = schedule_priority++; | 636 mts.scheduled_priority = schedule_priority++; |
582 mts.resolution = priority.resolution; | 637 mts.resolution = priority.resolution; |
583 | 638 |
584 DCHECK(mts.draw_info.mode() == | 639 DCHECK(mts.draw_info.mode() == |
585 ManagedTileState::DrawInfo::PICTURE_PILE_MODE || | 640 ManagedTileState::DrawInfo::PICTURE_PILE_MODE || |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
630 UMA_HISTOGRAM_BOOLEAN("TileManager.ExceededMemoryBudget", | 685 UMA_HISTOGRAM_BOOLEAN("TileManager.ExceededMemoryBudget", |
631 !had_enough_memory_to_schedule_tiles_needed_now); | 686 !had_enough_memory_to_schedule_tiles_needed_now); |
632 did_oom_on_last_assign_ = !had_enough_memory_to_schedule_tiles_needed_now; | 687 did_oom_on_last_assign_ = !had_enough_memory_to_schedule_tiles_needed_now; |
633 | 688 |
634 memory_stats_from_last_assign_.total_budget_in_bytes = | 689 memory_stats_from_last_assign_.total_budget_in_bytes = |
635 global_state_.hard_memory_limit_in_bytes; | 690 global_state_.hard_memory_limit_in_bytes; |
636 memory_stats_from_last_assign_.total_bytes_used = memory_usage.memory_bytes(); | 691 memory_stats_from_last_assign_.total_bytes_used = memory_usage.memory_bytes(); |
637 memory_stats_from_last_assign_.had_enough_memory = | 692 memory_stats_from_last_assign_.had_enough_memory = |
638 had_enough_memory_to_schedule_tiles_needed_now; | 693 had_enough_memory_to_schedule_tiles_needed_now; |
639 | 694 |
640 raster_priority_queue_.Reset(); | |
641 | |
642 TRACE_EVENT_END2("cc", | 695 TRACE_EVENT_END2("cc", |
643 "TileManager::AssignGpuMemoryToTiles", | 696 "TileManager::AssignGpuMemoryToTiles", |
644 "all_tiles_that_need_to_be_rasterized_are_scheduled", | 697 "all_tiles_that_need_to_be_rasterized_are_scheduled", |
645 all_tiles_that_need_to_be_rasterized_are_scheduled_, | 698 all_tiles_that_need_to_be_rasterized_are_scheduled_, |
646 "had_enough_memory_to_schedule_tiles_needed_now", | 699 "had_enough_memory_to_schedule_tiles_needed_now", |
647 had_enough_memory_to_schedule_tiles_needed_now); | 700 had_enough_memory_to_schedule_tiles_needed_now); |
648 } | 701 } |
649 | 702 |
650 void TileManager::FreeResourcesForTile(Tile* tile) { | 703 void TileManager::FreeResourcesForTile(Tile* tile) { |
651 ManagedTileState& mts = tile->managed_state(); | 704 ManagedTileState& mts = tile->managed_state(); |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
787 return; | 840 return; |
788 | 841 |
789 PixelRefTaskMap& pixel_ref_tasks = layer_it->second; | 842 PixelRefTaskMap& pixel_ref_tasks = layer_it->second; |
790 PixelRefTaskMap::iterator task_it = | 843 PixelRefTaskMap::iterator task_it = |
791 pixel_ref_tasks.find(pixel_ref->getGenerationID()); | 844 pixel_ref_tasks.find(pixel_ref->getGenerationID()); |
792 | 845 |
793 if (task_it != pixel_ref_tasks.end()) | 846 if (task_it != pixel_ref_tasks.end()) |
794 pixel_ref_tasks.erase(task_it); | 847 pixel_ref_tasks.erase(task_it); |
795 } | 848 } |
796 | 849 |
| 850 void TileManager::CompleteRasterTask( |
| 851 Tile::Id tile_id, |
| 852 scoped_ptr<ScopedResource> resource, |
| 853 const RasterSource::SolidColorAnalysis& analysis) { |
| 854 OnRasterTaskCompleted(tile_id, resource.Pass(), analysis, false); |
| 855 } |
| 856 |
797 void TileManager::OnRasterTaskCompleted( | 857 void TileManager::OnRasterTaskCompleted( |
798 Tile::Id tile_id, | 858 Tile::Id tile_id, |
799 scoped_ptr<ScopedResource> resource, | 859 scoped_ptr<ScopedResource> resource, |
800 const RasterSource::SolidColorAnalysis& analysis, | 860 const RasterSource::SolidColorAnalysis& analysis, |
801 bool was_canceled) { | 861 bool was_canceled) { |
802 DCHECK(tiles_.find(tile_id) != tiles_.end()); | 862 DCHECK(tiles_.find(tile_id) != tiles_.end()); |
803 | 863 |
804 Tile* tile = tiles_[tile_id]; | 864 Tile* tile = tiles_[tile_id]; |
805 ManagedTileState& mts = tile->managed_state(); | 865 ManagedTileState& mts = tile->managed_state(); |
806 DCHECK(mts.raster_task.get()); | 866 DCHECK(mts.raster_task.get()); |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
940 result -= other; | 1000 result -= other; |
941 return result; | 1001 return result; |
942 } | 1002 } |
943 | 1003 |
944 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const { | 1004 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const { |
945 return memory_bytes_ > limit.memory_bytes_ || | 1005 return memory_bytes_ > limit.memory_bytes_ || |
946 resource_count_ > limit.resource_count_; | 1006 resource_count_ > limit.resource_count_; |
947 } | 1007 } |
948 | 1008 |
949 } // namespace cc | 1009 } // namespace cc |
OLD | NEW |