1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CC_TREES_MANAGED_MEMORY_POLICY_H_ 6 #define CC_TREES_MANAGED_MEMORY_POLICY_H_ 7 8 #include <stddef.h> 9 10 #include "cc/cc_export.h" 11 #include "cc/tiles/tile_priority.h" 12 #include "gpu/command_buffer/common/gpu_memory_allocation.h" 13 14 namespace cc { 15 16 namespace proto { 17 class ManagedMemoryPolicy; 18 } // namespace proto 19 20 struct CC_EXPORT ManagedMemoryPolicy { 21 static const size_t kDefaultNumResourcesLimit; 22 23 explicit ManagedMemoryPolicy(size_t bytes_limit_when_visible); 24 explicit ManagedMemoryPolicy(const gpu::MemoryAllocation& allocation); 25 ManagedMemoryPolicy( 26 size_t bytes_limit_when_visible, 27 gpu::MemoryAllocation::PriorityCutoff priority_cutoff_when_visible, 28 size_t num_resources_limit); 29 bool operator==(const ManagedMemoryPolicy&) const; 30 bool operator!=(const ManagedMemoryPolicy&) const; 31 32 size_t bytes_limit_when_visible; 33 gpu::MemoryAllocation::PriorityCutoff priority_cutoff_when_visible; 34 size_t num_resources_limit; 35 36 static TileMemoryLimitPolicy PriorityCutoffToTileMemoryLimitPolicy( 37 gpu::MemoryAllocation::PriorityCutoff priority_cutoff); 38 }; 39 40 } // namespace cc 41 42 #endif // CC_TREES_MANAGED_MEMORY_POLICY_H_ 43