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 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 bool TileManager::FreeTileResourcesWithLowerPriorityUntilUsageIsWithinLimit( | 493 bool TileManager::FreeTileResourcesWithLowerPriorityUntilUsageIsWithinLimit( |
494 const MemoryUsage& limit, | 494 const MemoryUsage& limit, |
495 const TilePriority& other_priority, | 495 const TilePriority& other_priority, |
496 MemoryUsage* usage) { | 496 MemoryUsage* usage) { |
497 while (usage->Exceeds(limit)) { | 497 while (usage->Exceeds(limit)) { |
498 RebuildEvictionQueueIfNeeded(); | 498 RebuildEvictionQueueIfNeeded(); |
499 if (eviction_priority_queue_.IsEmpty()) | 499 if (eviction_priority_queue_.IsEmpty()) |
500 return false; | 500 return false; |
501 | 501 |
502 Tile* tile = eviction_priority_queue_.Top(); | 502 Tile* tile = eviction_priority_queue_.Top(); |
503 if (!other_priority.IsHigherPriorityThan( | 503 if (!other_priority.IsHigherPriorityThan(tile->combined_priority())) |
504 tile->priority_for_tree_priority(global_state_.tree_priority))) { | |
505 return false; | 504 return false; |
506 } | |
507 | 505 |
508 *usage -= MemoryUsage::FromTile(tile); | 506 *usage -= MemoryUsage::FromTile(tile); |
509 FreeResourcesForTileAndNotifyClientIfTileWasReadyToDraw(tile); | 507 FreeResourcesForTileAndNotifyClientIfTileWasReadyToDraw(tile); |
510 eviction_priority_queue_.Pop(); | 508 eviction_priority_queue_.Pop(); |
511 } | 509 } |
512 return true; | 510 return true; |
513 } | 511 } |
514 | 512 |
515 bool TileManager::TilePriorityViolatesMemoryPolicy( | 513 bool TileManager::TilePriorityViolatesMemoryPolicy( |
516 const TilePriority& priority) { | 514 const TilePriority& priority) { |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
553 MemoryUsage memory_usage(resource_pool_->acquired_memory_usage_bytes(), | 551 MemoryUsage memory_usage(resource_pool_->acquired_memory_usage_bytes(), |
554 resource_pool_->acquired_resource_count()); | 552 resource_pool_->acquired_resource_count()); |
555 | 553 |
556 eviction_priority_queue_is_up_to_date_ = false; | 554 eviction_priority_queue_is_up_to_date_ = false; |
557 raster_priority_queue_.Reset(); | 555 raster_priority_queue_.Reset(); |
558 client_->BuildRasterQueue(&raster_priority_queue_, | 556 client_->BuildRasterQueue(&raster_priority_queue_, |
559 global_state_.tree_priority); | 557 global_state_.tree_priority); |
560 | 558 |
561 while (!raster_priority_queue_.IsEmpty()) { | 559 while (!raster_priority_queue_.IsEmpty()) { |
562 Tile* tile = raster_priority_queue_.Top(); | 560 Tile* tile = raster_priority_queue_.Top(); |
563 TilePriority priority = | 561 TilePriority priority = tile->combined_priority(); |
564 tile->priority_for_tree_priority(global_state_.tree_priority); | |
565 | 562 |
566 if (TilePriorityViolatesMemoryPolicy(priority)) | 563 if (TilePriorityViolatesMemoryPolicy(priority)) |
567 break; | 564 break; |
568 | 565 |
569 // We won't be able to schedule this tile, so break out early. | 566 // We won't be able to schedule this tile, so break out early. |
570 if (tiles_that_need_to_be_rasterized->size() >= | 567 if (tiles_that_need_to_be_rasterized->size() >= |
571 kScheduledRasterTasksLimit) { | 568 kScheduledRasterTasksLimit) { |
572 all_tiles_that_need_to_be_rasterized_are_scheduled_ = false; | 569 all_tiles_that_need_to_be_rasterized_are_scheduled_ = false; |
573 break; | 570 break; |
574 } | 571 } |
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
908 result -= other; | 905 result -= other; |
909 return result; | 906 return result; |
910 } | 907 } |
911 | 908 |
912 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const { | 909 bool TileManager::MemoryUsage::Exceeds(const MemoryUsage& limit) const { |
913 return memory_bytes_ > limit.memory_bytes_ || | 910 return memory_bytes_ > limit.memory_bytes_ || |
914 resource_count_ > limit.resource_count_; | 911 resource_count_ > limit.resource_count_; |
915 } | 912 } |
916 | 913 |
917 } // namespace cc | 914 } // namespace cc |
OLD | NEW |