Lines Matching refs:Texture
36 mCache(GenerationCache<SkBitmap*, Texture*>::kUnlimitedCapacity),
40 INIT_LOGD(" Setting texture cache size to %sMB", property);
43 INIT_LOGD(" Using default texture cache size of %.2fMB", DEFAULT_TEXTURE_CACHE_SIZE);
50 mCache(GenerationCache<SkBitmap*, Texture*>::kUnlimitedCapacity),
63 INIT_LOGD(" Maximum texture dimension is %d pixels", mMaxTextureSize);
91 void TextureCache::operator()(SkBitmap*& bitmap, Texture*& texture) {
93 if (texture) {
94 mSize -= texture->bitmapSize;
96 texture->id, texture->bitmapSize, mSize);
98 LOGD("Texture deleted, size = %d", texture->bitmapSize);
100 glDeleteTextures(1, &texture->id);
101 delete texture;
109 Texture* TextureCache::get(SkBitmap* bitmap) {
110 Texture* texture = mCache.get(bitmap);
112 if (!texture) {
114 LOGW("Bitmap too large to be uploaded into a texture");
126 texture = new Texture;
127 texture->bitmapSize = size;
128 generateTexture(bitmap, texture, false);
132 TEXTURE_LOGD("TextureCache::get: create texture(%p): name, size, mSize = %d, %d, %d",
133 bitmap, texture->id, size, mSize);
135 LOGD("Texture created, size = %d", size);
137 mCache.put(bitmap, texture);
139 texture->cleanup = true;
141 } else if (bitmap->getGenerationID() != texture->generation) {
142 generateTexture(bitmap, texture, true);
145 return texture;
171 void TextureCache::generateTexture(SkBitmap* bitmap, Texture* texture, bool regenerate) {
175 LOGE("Cannot generate texture from bitmap");
179 const bool resize = !regenerate || bitmap->width() != int(texture->width) ||
180 bitmap->height() != int(texture->height);
183 glGenTextures(1, &texture->id);
186 texture->generation = bitmap->getGenerationID();
187 texture->width = bitmap->width();
188 texture->height = bitmap->height();
190 glBindTexture(GL_TEXTURE_2D, texture->id);
196 uploadToTexture(resize, GL_ALPHA, bitmap->rowBytesAsPixels(), texture->height,
198 texture->blend = true;
201 uploadToTexture(resize, GL_RGB, bitmap->rowBytesAsPixels(), texture->height,
203 texture->blend = false;
206 uploadToTexture(resize, GL_RGBA, bitmap->rowBytesAsPixels(), texture->height,
210 texture->blend = !bitmap->isOpaque();
214 uploadLoFiTexture(resize, bitmap, texture->width, texture->height);
215 texture->blend = !bitmap->isOpaque();
222 texture->setFilter(GL_LINEAR, GL_LINEAR);
223 texture->setWrap(GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE);