| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/trees/layer_tree_host_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 1148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1159 client_->SendManagedMemoryStats(); | 1159 client_->SendManagedMemoryStats(); |
| 1160 | 1160 |
| 1161 UpdateTileManagerMemoryPolicy(policy); | 1161 UpdateTileManagerMemoryPolicy(policy); |
| 1162 } | 1162 } |
| 1163 | 1163 |
| 1164 void LayerTreeHostImpl::UpdateTileManagerMemoryPolicy( | 1164 void LayerTreeHostImpl::UpdateTileManagerMemoryPolicy( |
| 1165 const ManagedMemoryPolicy& policy) { | 1165 const ManagedMemoryPolicy& policy) { |
| 1166 if (!tile_manager_) | 1166 if (!tile_manager_) |
| 1167 return; | 1167 return; |
| 1168 | 1168 |
| 1169 // TODO(reveman): We should avoid keeping around unused resources if | |
| 1170 // possible. crbug.com/224475 | |
| 1171 global_tile_state_.hard_memory_limit_in_bytes = 0; | 1169 global_tile_state_.hard_memory_limit_in_bytes = 0; |
| 1172 global_tile_state_.soft_memory_limit_in_bytes = 0; | 1170 global_tile_state_.soft_memory_limit_in_bytes = 0; |
| 1173 if (visible_ && policy.bytes_limit_when_visible > 0) { | 1171 if (visible_ && policy.bytes_limit_when_visible > 0) { |
| 1174 global_tile_state_.hard_memory_limit_in_bytes = | 1172 global_tile_state_.hard_memory_limit_in_bytes = |
| 1175 policy.bytes_limit_when_visible; | 1173 policy.bytes_limit_when_visible; |
| 1176 global_tile_state_.soft_memory_limit_in_bytes = | 1174 global_tile_state_.soft_memory_limit_in_bytes = |
| 1177 (static_cast<int64>(global_tile_state_.hard_memory_limit_in_bytes) * | 1175 (static_cast<int64>(global_tile_state_.hard_memory_limit_in_bytes) * |
| 1178 settings_.max_memory_for_prepaint_percentage) / | 1176 settings_.max_memory_for_prepaint_percentage) / |
| 1179 100; | 1177 100; |
| 1180 } | 1178 } |
| 1181 // Unused limit is calculated from soft-limit, as hard-limit may | |
| 1182 // be very high and shouldn't typically be exceeded. | |
| 1183 global_tile_state_.unused_memory_limit_in_bytes = static_cast<size_t>( | |
| 1184 (static_cast<int64>(global_tile_state_.soft_memory_limit_in_bytes) * | |
| 1185 settings_.max_unused_resource_memory_percentage) / | |
| 1186 100); | |
| 1187 global_tile_state_.memory_limit_policy = | 1179 global_tile_state_.memory_limit_policy = |
| 1188 ManagedMemoryPolicy::PriorityCutoffToTileMemoryLimitPolicy( | 1180 ManagedMemoryPolicy::PriorityCutoffToTileMemoryLimitPolicy( |
| 1189 visible_ ? | 1181 visible_ ? |
| 1190 policy.priority_cutoff_when_visible : | 1182 policy.priority_cutoff_when_visible : |
| 1191 gpu::MemoryAllocation::CUTOFF_ALLOW_NOTHING); | 1183 gpu::MemoryAllocation::CUTOFF_ALLOW_NOTHING); |
| 1192 global_tile_state_.num_resources_limit = policy.num_resources_limit; | 1184 global_tile_state_.num_resources_limit = policy.num_resources_limit; |
| 1193 | 1185 |
| 1186 // TODO(reveman): We should avoid keeping around unused resources if |
| 1187 // possible. crbug.com/224475 |
| 1188 // Unused limit is calculated from soft-limit, as hard-limit may |
| 1189 // be very high and shouldn't typically be exceeded. |
| 1190 size_t unused_memory_limit_in_bytes = static_cast<size_t>( |
| 1191 (static_cast<int64>(global_tile_state_.soft_memory_limit_in_bytes) * |
| 1192 settings_.max_unused_resource_memory_percentage) / |
| 1193 100); |
| 1194 |
| 1194 DCHECK(resource_pool_); | 1195 DCHECK(resource_pool_); |
| 1195 resource_pool_->CheckBusyResources(); | 1196 resource_pool_->CheckBusyResources(); |
| 1196 // Soft limit is used for resource pool such that memory returns to soft | 1197 // Soft limit is used for resource pool such that memory returns to soft |
| 1197 // limit after going over. | 1198 // limit after going over. |
| 1198 resource_pool_->SetResourceUsageLimits( | 1199 resource_pool_->SetResourceUsageLimits( |
| 1199 global_tile_state_.soft_memory_limit_in_bytes, | 1200 global_tile_state_.soft_memory_limit_in_bytes, |
| 1200 global_tile_state_.unused_memory_limit_in_bytes, | 1201 unused_memory_limit_in_bytes, |
| 1201 global_tile_state_.num_resources_limit); | 1202 global_tile_state_.num_resources_limit); |
| 1202 | 1203 |
| 1203 DidModifyTilePriorities(); | 1204 DidModifyTilePriorities(); |
| 1204 } | 1205 } |
| 1205 | 1206 |
| 1206 void LayerTreeHostImpl::DidModifyTilePriorities() { | 1207 void LayerTreeHostImpl::DidModifyTilePriorities() { |
| 1207 DCHECK(settings_.impl_side_painting); | 1208 DCHECK(settings_.impl_side_painting); |
| 1208 // Mark priorities as dirty and schedule a ManageTiles(). | 1209 // Mark priorities as dirty and schedule a ManageTiles(). |
| 1209 tile_priorities_dirty_ = true; | 1210 tile_priorities_dirty_ = true; |
| 1210 client_->SetNeedsManageTilesOnImplThread(); | 1211 client_->SetNeedsManageTilesOnImplThread(); |
| (...skipping 1911 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3122 swap_promise_monitor_.erase(monitor); | 3123 swap_promise_monitor_.erase(monitor); |
| 3123 } | 3124 } |
| 3124 | 3125 |
| 3125 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { | 3126 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { |
| 3126 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); | 3127 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); |
| 3127 for (; it != swap_promise_monitor_.end(); it++) | 3128 for (; it != swap_promise_monitor_.end(); it++) |
| 3128 (*it)->OnSetNeedsRedrawOnImpl(); | 3129 (*it)->OnSetNeedsRedrawOnImpl(); |
| 3129 } | 3130 } |
| 3130 | 3131 |
| 3131 } // namespace cc | 3132 } // namespace cc |
| OLD | NEW |