Home | History | Annotate | Download | only in hwui

Lines Matching refs:Texture

24 #include "Texture.h"
37 : mCache(LruCache<uint32_t, Texture*>::kUnlimitedCapacity)
66 void TextureCache::operator()(uint32_t&, Texture*& texture) {
68 if (texture) {
69 mSize -= texture->bitmapSize;
70 TEXTURE_LOGD("TextureCache::callback: name, removed size, mSize = %d, %d, %d", texture->id,
71 texture->bitmapSize, mSize);
73 ALOGD("Texture deleted, size = %d", texture->bitmapSize);
75 texture->deleteTexture();
76 delete texture;
85 LruCache<uint32_t, Texture*>::Iterator iter(mCache);
95 ALOGW("Bitmap too large to be uploaded into a texture (%dx%d, max=%dx%d)", bitmap->width(),
102 Texture* TextureCache::createTexture(Bitmap* bitmap) {
103 Texture* texture = new Texture(Caches::getInstance());
104 texture->bitmapSize = bitmap->rowBytes() * bitmap->height();
105 texture->generation = bitmap->getGenerationID();
106 texture->upload(*bitmap);
107 return texture;
110 // Returns a prepared Texture* that either is already in the cache or can fit
112 Texture* TextureCache::getCachedTexture(Bitmap* bitmap) {
116 Texture* texture = createTexture(bitmap);
118 std::make_pair(bitmap->getStableID(), std::unique_ptr<Texture>(texture)));
120 ALOGD("Texture created for hw bitmap size = %d", texture->bitmapSize);
122 return texture;
127 Texture* texture = mCache.get(bitmap->getStableID());
129 if (!texture) {
138 Texture* oldest = mCache.peekOldestValue();
147 texture = createTexture(bitmap);
149 TEXTURE_LOGD("TextureCache::get: create texture(%p): name, size, mSize = %d, %d, %d",
150 bitmap, texture->id, size, mSize);
152 ALOGD("Texture created, size = %d", size);
154 mCache.put(bitmap->getStableID(), texture);
156 } else if (!texture->isInUse && bitmap->getGenerationID() != texture->generation) {
157 // Texture was in the cache but is dirty, re-upload
159 texture->upload(*bitmap);
160 texture->generation = bitmap->getGenerationID();
163 return texture;
167 Texture* texture = getCachedTexture(bitmap);
168 if (texture) {
169 texture->isInUse = ownerToken;
171 return texture;
178 Texture* TextureCache::get(Bitmap* bitmap) {
179 Texture* texture = getCachedTexture(bitmap);
181 if (!texture) {
185 texture = createTexture(bitmap);
186 texture->cleanup = true;
189 return texture;