Index: cc/resources/prioritized_resource_manager.cc |
diff --git a/cc/resources/prioritized_resource_manager.cc b/cc/resources/prioritized_resource_manager.cc |
index dc1786212370d55502c55e5494d53eb9d52a6a5b..871dad286ff2a7bd33d00cd074957e1de384fb9d 100644 |
--- a/cc/resources/prioritized_resource_manager.cc |
+++ b/cc/resources/prioritized_resource_manager.cc |
@@ -70,11 +70,13 @@ void PrioritizedResourceManager::PrioritizeTextures() { |
if (PriorityCalculator::priority_is_higher( |
texture->request_priority(), |
PriorityCalculator::AllowVisibleOnlyCutoff())) |
- memory_visible_bytes_ += texture->bytes(); |
+ memory_visible_bytes_ += Resource::UncheckedMemorySizeBytes( |
+ texture->size(), texture->format()); |
if (PriorityCalculator::priority_is_higher( |
texture->request_priority(), |
PriorityCalculator::AllowVisibleAndNearbyCutoff())) |
- memory_visible_and_nearby_bytes_ += texture->bytes(); |
+ memory_visible_and_nearby_bytes_ += Resource::UncheckedMemorySizeBytes( |
+ texture->size(), texture->format()); |
} |
std::sort(sorted_textures.begin(), sorted_textures.end(), CompareTextures); |
@@ -85,18 +87,20 @@ void PrioritizedResourceManager::PrioritizeTextures() { |
for (TextureVector::iterator it = sorted_textures.begin(); |
it != sorted_textures.end(); |
++it) { |
+ size_t texture_bytes = |
+ Resource::UncheckedMemorySizeBytes((*it)->size(), (*it)->format()); |
if ((*it)->is_self_managed()) { |
// Account for self-managed memory immediately by reducing the memory |
// available (since it never gets acquired). |
- size_t new_memory_bytes = memory_bytes + (*it)->bytes(); |
+ size_t new_memory_bytes = memory_bytes + texture_bytes; |
if (new_memory_bytes > memory_available_bytes_) { |
priority_cutoff_ = (*it)->request_priority(); |
memory_available_bytes_ = memory_bytes; |
break; |
} |
- memory_available_bytes_ -= (*it)->bytes(); |
+ memory_available_bytes_ -= texture_bytes; |
} else { |
- size_t new_memory_bytes = memory_bytes + (*it)->bytes(); |
+ size_t new_memory_bytes = memory_bytes + texture_bytes; |
if (new_memory_bytes > memory_available_bytes_) { |
priority_cutoff_ = (*it)->request_priority(); |
break; |
@@ -130,9 +134,11 @@ void PrioritizedResourceManager::PrioritizeTextures() { |
resource->request_priority(), priority_cutoff_); |
resource->set_above_priority_cutoff(is_above_priority_cutoff); |
if (!resource->is_self_managed()) { |
- max_memory_needed_bytes_ += resource->bytes(); |
+ size_t resource_bytes = Resource::UncheckedMemorySizeBytes( |
+ resource->size(), resource->format()); |
+ max_memory_needed_bytes_ += resource_bytes; |
if (is_above_priority_cutoff) |
- memory_above_cutoff_bytes_ += resource->bytes(); |
+ memory_above_cutoff_bytes_ += resource_bytes; |
} |
} |
sorted_textures.clear(); |
@@ -216,7 +222,9 @@ bool PrioritizedResourceManager::RequestLate(PrioritizedResource* texture) { |
external_priority_cutoff_)) |
return false; |
- size_t new_memory_bytes = memory_above_cutoff_bytes_ + texture->bytes(); |
+ size_t new_memory_bytes = |
+ memory_above_cutoff_bytes_ + |
+ Resource::UncheckedMemorySizeBytes(texture->size(), texture->format()); |
if (new_memory_bytes > memory_available_bytes_) |
return false; |
@@ -254,11 +262,11 @@ void PrioritizedResourceManager::AcquireBackingTextureIfNeeded( |
// Otherwise reduce memory and just allocate a new backing texures. |
if (!backing) { |
- EvictBackingsToReduceMemory(memory_available_bytes_ - texture->bytes(), |
- PriorityCalculator::AllowEverythingCutoff(), |
- EVICT_ONLY_RECYCLABLE, |
- DO_NOT_UNLINK_BACKINGS, |
- resource_provider); |
+ EvictBackingsToReduceMemory( |
+ memory_available_bytes_ - Resource::UncheckedMemorySizeBytes( |
+ texture->size(), texture->format()), |
+ PriorityCalculator::AllowEverythingCutoff(), EVICT_ONLY_RECYCLABLE, |
+ DO_NOT_UNLINK_BACKINGS, resource_provider); |
backing = |
CreateBacking(texture->size(), texture->format(), resource_provider); |
} |
@@ -323,7 +331,8 @@ void PrioritizedResourceManager::ReduceWastedMemory( |
break; |
if ((*it)->in_parent_compositor()) |
continue; |
- wasted_memory += (*it)->bytes(); |
+ wasted_memory += |
+ Resource::UncheckedMemorySizeBytes((*it)->size(), (*it)->format()); |
} |
size_t wasted_memory_to_allow = memory_available_bytes_ / 10; |
// If the external priority cutoff indicates that unused memory should be |
@@ -454,7 +463,8 @@ PrioritizedResource::Backing* PrioritizedResourceManager::CreateBacking( |
ResourceProvider::TEXTURE_HINT_IMMUTABLE, format); |
PrioritizedResource::Backing* backing = new PrioritizedResource::Backing( |
resource_id, resource_provider, size, format); |
- memory_use_bytes_ += backing->bytes(); |
+ memory_use_bytes_ += |
+ Resource::UncheckedMemorySizeBytes(backing->size(), backing->format()); |
return backing; |
} |
@@ -470,7 +480,8 @@ void PrioritizedResourceManager::EvictFirstBackingResource( |
// we can delete the resource while the main thread is running, but we cannot |
// unlink backings while the main thread is running. |
backing->DeleteResource(resource_provider); |
- memory_use_bytes_ -= backing->bytes(); |
+ memory_use_bytes_ -= |
+ Resource::UncheckedMemorySizeBytes(backing->size(), backing->format()); |
backings_.pop_front(); |
base::AutoLock scoped_lock(evicted_backings_lock_); |
evicted_backings_.push_back(backing); |