diff options
Diffstat (limited to 'libs/hwui')
-rw-r--r-- | libs/hwui/FontRenderer.cpp | 4 | ||||
-rw-r--r-- | libs/hwui/OpenGLRenderer.cpp | 6 | ||||
-rw-r--r-- | libs/hwui/SkiaShader.h | 2 | ||||
-rw-r--r-- | libs/hwui/font/Font.cpp | 5 | ||||
-rw-r--r-- | libs/hwui/font/Font.h | 3 |
5 files changed, 16 insertions, 4 deletions
diff --git a/libs/hwui/FontRenderer.cpp b/libs/hwui/FontRenderer.cpp index 00e7870..0be17ff 100644 --- a/libs/hwui/FontRenderer.cpp +++ b/libs/hwui/FontRenderer.cpp @@ -732,7 +732,9 @@ void FontRenderer::blurImage(uint8_t** image, int32_t width, int32_t height, int if (mRs == 0) { mRs = new RSC::RS(); - if (!mRs->init(RSC::RS_INIT_LOW_LATENCY | RSC::RS_INIT_SYNCHRONOUS)) { + // a null path is OK because there are no custom kernels used + // hence nothing gets cached by RS + if (!mRs->init("", RSC::RS_INIT_LOW_LATENCY | RSC::RS_INIT_SYNCHRONOUS)) { ALOGE("blur RS failed to init"); } diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 35fc804..4d76bed 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -1076,7 +1076,13 @@ void OpenGLRenderer::composeLayer(sp<Snapshot> current, sp<Snapshot> previous) { } } else if (!rect.isEmpty()) { dirtyLayer(rect.left, rect.top, rect.right, rect.bottom); + + save(0); + // the layer contains screen buffer content that shouldn't be alpha modulated + // (and any necessary alpha modulation was handled drawing into the layer) + mSnapshot->alpha = 1.0f; composeLayerRect(layer, rect, true); + restore(); } dirtyClip(); diff --git a/libs/hwui/SkiaShader.h b/libs/hwui/SkiaShader.h index a63431c..cc56c50 100644 --- a/libs/hwui/SkiaShader.h +++ b/libs/hwui/SkiaShader.h @@ -145,7 +145,7 @@ struct SkiaBitmapShader: public SkiaShader { GLuint* textureUnit); private: - SkiaBitmapShader() { + SkiaBitmapShader() : mBitmap(NULL), mTexture(NULL) { } SkBitmap* mBitmap; diff --git a/libs/hwui/font/Font.cpp b/libs/hwui/font/Font.cpp index 12a9c23..e54c61e 100644 --- a/libs/hwui/font/Font.cpp +++ b/libs/hwui/font/Font.cpp @@ -42,6 +42,7 @@ namespace uirenderer { Font::Font(FontRenderer* state, const Font::FontDescription& desc) : mState(state), mDescription(desc) { + mDeviceProperties = SkDeviceProperties::Make(SkDeviceProperties::Geometry::MakeDefault(), 1.0f); } Font::FontDescription::FontDescription(const SkPaint* paint, const mat4& matrix) { @@ -272,7 +273,7 @@ CachedGlyphInfo* Font::getCachedGlyph(SkPaint* paint, glyph_t textUnit, bool pre if (cachedGlyph) { // Is the glyph still in texture cache? if (!cachedGlyph->mIsValid) { - SkAutoGlyphCache autoCache(*paint, NULL, &mDescription.mLookupTransform); + SkAutoGlyphCache autoCache(*paint, &mDeviceProperties, &mDescription.mLookupTransform); const SkGlyph& skiaGlyph = GET_METRICS(autoCache.getCache(), textUnit); updateGlyphCache(paint, skiaGlyph, autoCache.getCache(), cachedGlyph, precaching); } @@ -464,7 +465,7 @@ CachedGlyphInfo* Font::cacheGlyph(SkPaint* paint, glyph_t glyph, bool precaching CachedGlyphInfo* newGlyph = new CachedGlyphInfo(); mCachedGlyphs.add(glyph, newGlyph); - SkAutoGlyphCache autoCache(*paint, NULL, &mDescription.mLookupTransform); + SkAutoGlyphCache autoCache(*paint, &mDeviceProperties, &mDescription.mLookupTransform); const SkGlyph& skiaGlyph = GET_METRICS(autoCache.getCache(), glyph); newGlyph->mIsValid = false; newGlyph->mGlyphIndex = skiaGlyph.fID; diff --git a/libs/hwui/font/Font.h b/libs/hwui/font/Font.h index f68b430..1e0e0c8 100644 --- a/libs/hwui/font/Font.h +++ b/libs/hwui/font/Font.h @@ -19,6 +19,8 @@ #include <utils/KeyedVector.h> +#include <SkScalar.h> +#include <SkDeviceProperties.h> #include <SkGlyphCache.h> #include <SkScalerContext.h> #include <SkPaint.h> @@ -145,6 +147,7 @@ private: DefaultKeyedVector<glyph_t, CachedGlyphInfo*> mCachedGlyphs; bool mIdentityTransform; + SkDeviceProperties mDeviceProperties; }; inline int strictly_order_type(const Font::FontDescription& lhs, |