diff options
author | 2010-10-05 14:58:09 -0700 | |
---|---|---|
committer | 2010-10-05 14:58:09 -0700 | |
commit | 7adaf3d1aa18c7e521f7154e545fe52d329763c3 (patch) | |
tree | 23a2a9ffb2f538ba097626a786281928d4360bf1 | |
parent | 469b1dbeaf7d3267d1b43af4e7391b49eac10ee0 (diff) |
Add support for paletted textures.
Change-Id: I36e6069bd58f78c609cdd1f3e4560c98f128f48e
-rw-r--r-- | libs/hwui/TextureCache.cpp | 22 | ||||
-rw-r--r-- | libs/hwui/TextureCache.h | 1 |
2 files changed, 22 insertions, 1 deletions
diff --git a/libs/hwui/TextureCache.cpp b/libs/hwui/TextureCache.cpp index adf6ee2757b0..701df8358964 100644 --- a/libs/hwui/TextureCache.cpp +++ b/libs/hwui/TextureCache.cpp @@ -18,6 +18,8 @@ #include <GLES2/gl2.h> +#include <SkCanvas.h> + #include <utils/threads.h> #include "TextureCache.h" @@ -192,8 +194,12 @@ void TextureCache::generateTexture(SkBitmap* bitmap, Texture* texture, bool rege // decoding happened texture->blend = !bitmap->isOpaque(); break; + case SkBitmap::kIndex8_Config: + uploadPalettedTexture(resize, bitmap, texture->width, texture->height); + texture->blend = false; + break; default: - LOGW("Unsupported bitmap config"); + LOGW("Unsupported bitmap config: %d", bitmap->getConfig()); break; } @@ -204,6 +210,20 @@ void TextureCache::generateTexture(SkBitmap* bitmap, Texture* texture, bool rege glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); } +void TextureCache::uploadPalettedTexture(bool resize, SkBitmap* bitmap, + uint32_t width, uint32_t height) { + SkBitmap rgbaBitmap; + rgbaBitmap.setConfig(SkBitmap::kARGB_8888_Config, width, height); + rgbaBitmap.allocPixels(); + rgbaBitmap.eraseColor(0); + + SkCanvas canvas(rgbaBitmap); + canvas.drawBitmap(*bitmap, 0.0f, 0.0f, NULL); + + uploadToTexture(resize, GL_RGBA, rgbaBitmap.rowBytesAsPixels(), height, + GL_UNSIGNED_BYTE, rgbaBitmap.getPixels()); +} + void TextureCache::uploadToTexture(bool resize, GLenum format, GLsizei width, GLsizei height, GLenum type, const GLvoid * data) { if (resize) { diff --git a/libs/hwui/TextureCache.h b/libs/hwui/TextureCache.h index 7cf66d928536..34c5455673ac 100644 --- a/libs/hwui/TextureCache.h +++ b/libs/hwui/TextureCache.h @@ -79,6 +79,7 @@ private: */ void generateTexture(SkBitmap* bitmap, Texture* texture, bool regenerate = false); + void uploadPalettedTexture(bool resize, SkBitmap* bitmap, uint32_t width, uint32_t height); void uploadToTexture(bool resize, GLenum format, GLsizei width, GLsizei height, GLenum type, const GLvoid * data); |