| // Copyright 2013 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "cc/output/managed_memory_policy.h" | 
 |  | 
 | #include "base/logging.h" | 
 | #include "cc/resources/priority_calculator.h" | 
 |  | 
 | namespace cc { | 
 |  | 
 | const size_t ManagedMemoryPolicy::kDefaultNumResourcesLimit = 10 * 1000 * 1000; | 
 |  | 
 | using gpu::MemoryAllocation; | 
 |  | 
 | ManagedMemoryPolicy::ManagedMemoryPolicy(size_t bytes_limit_when_visible) | 
 |     : bytes_limit_when_visible(bytes_limit_when_visible), | 
 |       priority_cutoff_when_visible(MemoryAllocation::CUTOFF_ALLOW_EVERYTHING), | 
 |       num_resources_limit(kDefaultNumResourcesLimit) {} | 
 |  | 
 | ManagedMemoryPolicy::ManagedMemoryPolicy( | 
 |     const gpu::MemoryAllocation& allocation) | 
 |     : bytes_limit_when_visible(allocation.bytes_limit_when_visible), | 
 |       priority_cutoff_when_visible(allocation.priority_cutoff_when_visible), | 
 |       num_resources_limit(kDefaultNumResourcesLimit) {} | 
 |  | 
 | ManagedMemoryPolicy::ManagedMemoryPolicy( | 
 |     size_t bytes_limit_when_visible, | 
 |     MemoryAllocation::PriorityCutoff priority_cutoff_when_visible, | 
 |     size_t num_resources_limit) | 
 |     : bytes_limit_when_visible(bytes_limit_when_visible), | 
 |       priority_cutoff_when_visible(priority_cutoff_when_visible), | 
 |       num_resources_limit(num_resources_limit) {} | 
 |  | 
 | bool ManagedMemoryPolicy::operator==(const ManagedMemoryPolicy& other) const { | 
 |   return bytes_limit_when_visible == other.bytes_limit_when_visible && | 
 |          priority_cutoff_when_visible == other.priority_cutoff_when_visible && | 
 |          num_resources_limit == other.num_resources_limit; | 
 | } | 
 |  | 
 | bool ManagedMemoryPolicy::operator!=(const ManagedMemoryPolicy& other) const { | 
 |   return !(*this == other); | 
 | } | 
 |  | 
 | // static | 
 | int ManagedMemoryPolicy::PriorityCutoffToValue( | 
 |     MemoryAllocation::PriorityCutoff priority_cutoff) { | 
 |   switch (priority_cutoff) { | 
 |     case MemoryAllocation::CUTOFF_ALLOW_NOTHING: | 
 |       return PriorityCalculator::AllowNothingCutoff(); | 
 |     case MemoryAllocation::CUTOFF_ALLOW_REQUIRED_ONLY: | 
 |       return PriorityCalculator::AllowVisibleOnlyCutoff(); | 
 |     case MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE: | 
 |       return PriorityCalculator::AllowVisibleAndNearbyCutoff(); | 
 |     case MemoryAllocation::CUTOFF_ALLOW_EVERYTHING: | 
 |       return PriorityCalculator::AllowEverythingCutoff(); | 
 |   } | 
 |   NOTREACHED(); | 
 |   return PriorityCalculator::AllowNothingCutoff(); | 
 | } | 
 |  | 
 | // static | 
 | TileMemoryLimitPolicy | 
 | ManagedMemoryPolicy::PriorityCutoffToTileMemoryLimitPolicy( | 
 |     gpu::MemoryAllocation::PriorityCutoff priority_cutoff) { | 
 |   switch (priority_cutoff) { | 
 |     case MemoryAllocation::CUTOFF_ALLOW_NOTHING: | 
 |       return ALLOW_NOTHING; | 
 |     case MemoryAllocation::CUTOFF_ALLOW_REQUIRED_ONLY: | 
 |       return ALLOW_ABSOLUTE_MINIMUM; | 
 |     case MemoryAllocation::CUTOFF_ALLOW_NICE_TO_HAVE: | 
 |       return ALLOW_PREPAINT_ONLY; | 
 |     case MemoryAllocation::CUTOFF_ALLOW_EVERYTHING: | 
 |       return ALLOW_ANYTHING; | 
 |   } | 
 |   NOTREACHED(); | 
 |   return ALLOW_NOTHING; | 
 | } | 
 |  | 
 | }  // namespace cc |