summaryrefslogtreecommitdiffstats
path: root/cc/resources/resource_pool.cc
diff options
context:
space:
mode:
authorpeterp <peterp@opera.com>2015-01-19 02:21:07 -0800
committerCommit bot <commit-bot@chromium.org>2015-01-19 10:22:05 +0000
commit8bde4e839b4c55733b730a71cd9beaff95e01fe4 (patch)
tree7664995d3895b37f1bd075197df3966e93031973 /cc/resources/resource_pool.cc
parent83535eb2fef3e8753578a446fbf83ec4ebf9f94b (diff)
downloadchromium_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.cc10
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_;