diff options
author | peterp <peterp@opera.com> | 2015-01-19 02:21:07 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-01-19 10:22:05 +0000 |
commit | 8bde4e839b4c55733b730a71cd9beaff95e01fe4 (patch) | |
tree | 7664995d3895b37f1bd075197df3966e93031973 /cc/resources/resource_pool.cc | |
parent | 83535eb2fef3e8753578a446fbf83ec4ebf9f94b (diff) | |
download | chromium_src-8bde4e839b4c55733b730a71cd9beaff95e01fe4.zip chromium_src-8bde4e839b4c55733b730a71cd9beaff95e01fe4.tar.gz chromium_src-8bde4e839b4c55733b730a71cd9beaff95e01fe4.tar.bz2 |
Support different formats in the same resource pool.
This allows us to use different formats for tiles with opaque or translucent content for better memory savings or quality.
BUG=434699
Review URL: https://codereview.chromium.org/817133006
Cr-Commit-Position: refs/heads/master@{#312090}
Diffstat (limited to 'cc/resources/resource_pool.cc')
-rw-r--r-- | cc/resources/resource_pool.cc | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/cc/resources/resource_pool.cc b/cc/resources/resource_pool.cc index 45f36e2..f0a871d 100644 --- a/cc/resources/resource_pool.cc +++ b/cc/resources/resource_pool.cc @@ -11,10 +11,10 @@ namespace cc { ResourcePool::ResourcePool(ResourceProvider* resource_provider, GLenum target, - ResourceFormat format) + ResourceFormat default_format) : resource_provider_(resource_provider), target_(target), - format_(format), + default_format_(default_format), max_memory_usage_bytes_(0), max_unused_memory_usage_bytes_(0), max_resource_count_(0), @@ -36,13 +36,15 @@ ResourcePool::~ResourcePool() { } scoped_ptr<ScopedResource> ResourcePool::AcquireResource( - const gfx::Size& size) { + const gfx::Size& size, ResourceFormat format) { for (ResourceList::iterator it = unused_resources_.begin(); it != unused_resources_.end(); ++it) { ScopedResource* resource = *it; DCHECK(resource_provider_->CanLockForWrite(resource->id())); + if (resource->format() != format) + continue; if (resource->size() != size) continue; @@ -53,7 +55,7 @@ scoped_ptr<ScopedResource> ResourcePool::AcquireResource( scoped_ptr<ScopedResource> resource = ScopedResource::Create(resource_provider_); - resource->AllocateManaged(size, target_, format_); + resource->AllocateManaged(size, target_, format); memory_usage_bytes_ += resource->bytes(); ++resource_count_; |