Chromium Code Reviews| 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/prioritized_resource_manager.h" | 5 #include "cc/prioritized_resource_manager.h" |
| 6 | 6 |
| 7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
| 8 #include "base/stl_util.h" | 8 #include "base/stl_util.h" |
| 9 #include "cc/prioritized_resource.h" | 9 #include "cc/prioritized_resource.h" |
| 10 #include "cc/priority_calculator.h" | 10 #include "cc/priority_calculator.h" |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 304 if (wastedMemory > tenPercentOfMemory) | 304 if (wastedMemory > tenPercentOfMemory) |
| 305 evictBackingsToReduceMemory(memoryUseBytes() - (wastedMemory - tenPercen tOfMemory), | 305 evictBackingsToReduceMemory(memoryUseBytes() - (wastedMemory - tenPercen tOfMemory), |
| 306 PriorityCalculator::allowEverythingCutoff(), | 306 PriorityCalculator::allowEverythingCutoff(), |
| 307 EvictOnlyRecyclable, | 307 EvictOnlyRecyclable, |
| 308 UnlinkBackings, | 308 UnlinkBackings, |
| 309 resourceProvider); | 309 resourceProvider); |
| 310 } | 310 } |
| 311 | 311 |
| 312 void PrioritizedResourceManager::clearAllMemory(ResourceProvider* resourceProvid er) | 312 void PrioritizedResourceManager::clearAllMemory(ResourceProvider* resourceProvid er) |
| 313 { | 313 { |
| 314 DCHECK(m_proxy->isImplThread() && m_proxy->isMainThreadBlocked()); | 314 DCHECK(m_proxy->isImplThread() && m_proxy->isMainThreadBlocked()); |
|
ccameron
2012/12/18 19:24:01
Or alternatively, if resourceProvider is NULL, we
| |
| 315 DCHECK(resourceProvider); | |
| 316 evictBackingsToReduceMemory(0, | 315 evictBackingsToReduceMemory(0, |
| 317 PriorityCalculator::allowEverythingCutoff(), | 316 PriorityCalculator::allowEverythingCutoff(), |
| 318 EvictAnything, | 317 EvictAnything, |
| 319 DoNotUnlinkBackings, | 318 DoNotUnlinkBackings, |
| 320 resourceProvider); | 319 resourceProvider); |
| 321 } | 320 } |
| 322 | 321 |
| 323 bool PrioritizedResourceManager::reduceMemoryOnImplThread(size_t limitBytes, int priorityCutoff, ResourceProvider* resourceProvider) | 322 bool PrioritizedResourceManager::reduceMemoryOnImplThread(size_t limitBytes, int priorityCutoff, ResourceProvider* resourceProvider) |
| 324 { | 323 { |
| 325 DCHECK(m_proxy->isImplThread()); | 324 DCHECK(m_proxy->isImplThread()); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 397 DCHECK(resourceProvider); | 396 DCHECK(resourceProvider); |
| 398 ResourceProvider::ResourceId resourceId = resourceProvider->createManagedRes ource(size, format, ResourceProvider::TextureUsageAny); | 397 ResourceProvider::ResourceId resourceId = resourceProvider->createManagedRes ource(size, format, ResourceProvider::TextureUsageAny); |
| 399 PrioritizedResource::Backing* backing = new PrioritizedResource::Backing(res ourceId, resourceProvider, size, format); | 398 PrioritizedResource::Backing* backing = new PrioritizedResource::Backing(res ourceId, resourceProvider, size, format); |
| 400 m_memoryUseBytes += backing->bytes(); | 399 m_memoryUseBytes += backing->bytes(); |
| 401 return backing; | 400 return backing; |
| 402 } | 401 } |
| 403 | 402 |
| 404 void PrioritizedResourceManager::evictFirstBackingResource(ResourceProvider* res ourceProvider) | 403 void PrioritizedResourceManager::evictFirstBackingResource(ResourceProvider* res ourceProvider) |
| 405 { | 404 { |
| 406 DCHECK(m_proxy->isImplThread()); | 405 DCHECK(m_proxy->isImplThread()); |
| 407 DCHECK(resourceProvider); | |
| 408 DCHECK(!m_backings.empty()); | 406 DCHECK(!m_backings.empty()); |
| 409 PrioritizedResource::Backing* backing = m_backings.front(); | 407 PrioritizedResource::Backing* backing = m_backings.front(); |
| 410 | 408 |
| 411 // Note that we create a backing and its resource at the same time, but we | 409 // Note that we create a backing and its resource at the same time, but we |
| 412 // delete the backing structure and its resource in two steps. This is becau se | 410 // delete the backing structure and its resource in two steps. This is becau se |
| 413 // we can delete the resource while the main thread is running, but we canno t | 411 // we can delete the resource while the main thread is running, but we canno t |
| 414 // unlink backings while the main thread is running. | 412 // unlink backings while the main thread is running. |
| 415 backing->deleteResource(resourceProvider); | 413 backing->deleteResource(resourceProvider); |
| 416 m_memoryUseBytes -= backing->bytes(); | 414 m_memoryUseBytes -= backing->bytes(); |
| 417 m_backings.pop_front(); | 415 m_backings.pop_front(); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 470 } | 468 } |
| 471 #endif | 469 #endif |
| 472 } | 470 } |
| 473 | 471 |
| 474 const Proxy* PrioritizedResourceManager::proxyForDebug() const | 472 const Proxy* PrioritizedResourceManager::proxyForDebug() const |
| 475 { | 473 { |
| 476 return m_proxy; | 474 return m_proxy; |
| 477 } | 475 } |
| 478 | 476 |
| 479 } // namespace cc | 477 } // namespace cc |
| OLD | NEW |