Track texture memory globally
Also mostly consolidates texture creation
Change-Id: Ifea01303afda531dcec99b8fe2a0f64cf2f24420
diff --git a/libs/hwui/TextureCache.cpp b/libs/hwui/TextureCache.cpp
index 21901cf..31bfa3a 100644
--- a/libs/hwui/TextureCache.cpp
+++ b/libs/hwui/TextureCache.cpp
@@ -166,7 +166,8 @@
if (canCache) {
texture = new Texture(Caches::getInstance());
texture->bitmapSize = size;
- Caches::getInstance().textureState().generateTexture(bitmap, texture, false);
+ texture->generation = bitmap->getGenerationID();
+ texture->upload(*bitmap);
mSize += size;
TEXTURE_LOGD("TextureCache::get: create texture(%p): name, size, mSize = %d, %d, %d",
@@ -179,7 +180,8 @@
} else if (!texture->isInUse && bitmap->getGenerationID() != texture->generation) {
// Texture was in the cache but is dirty, re-upload
// TODO: Re-adjust the cache size if the bitmap's dimensions have changed
- Caches::getInstance().textureState().generateTexture(bitmap, texture, true);
+ texture->upload(*bitmap);
+ texture->generation = bitmap->getGenerationID();
}
return texture;
@@ -204,7 +206,8 @@
const uint32_t size = bitmap->rowBytes() * bitmap->height();
texture = new Texture(Caches::getInstance());
texture->bitmapSize = size;
- Caches::getInstance().textureState().generateTexture(bitmap, texture, false);
+ texture->upload(*bitmap);
+ texture->generation = bitmap->getGenerationID();
texture->cleanup = true;
}