diff options
Diffstat (limited to 'libs/hwui')
-rw-r--r-- | libs/hwui/Patch.cpp | 13 | ||||
-rw-r--r-- | libs/hwui/SkiaColorFilter.cpp | 5 |
2 files changed, 17 insertions, 1 deletions
diff --git a/libs/hwui/Patch.cpp b/libs/hwui/Patch.cpp index 7ca289d..ebffd34 100644 --- a/libs/hwui/Patch.cpp +++ b/libs/hwui/Patch.cpp @@ -42,6 +42,9 @@ Patch::Patch(const uint32_t xCount, const uint32_t yCount, const int8_t emptyQua mXDivs = new int32_t[mXCount]; mYDivs = new int32_t[mYCount]; + PATCH_LOGD(" patch: xCount = %d, yCount = %d, emptyQuads = %d, vertices = %d", + xCount, yCount, emptyQuads, verticesCount); + glGenBuffers(1, &meshBuffer); } @@ -208,7 +211,15 @@ void Patch::generateRow(TextureVertex*& vertex, float y1, float y2, float v1, fl void Patch::generateQuad(TextureVertex*& vertex, float x1, float y1, float x2, float y2, float u1, float v1, float u2, float v2, uint32_t& quadCount) { - if (((mColorKey >> quadCount++) & 0x1) == 1) { + uint32_t oldQuadCount = quadCount; + + // Degenerate quads are an artifact of our implementation and should not + // be taken into account when checking for transparent quads + if (x2 - x1 > 0.999f && y2 - y1 > 0.999f) { + quadCount++; + } + + if (((mColorKey >> oldQuadCount) & 0x1) == 1) { return; } diff --git a/libs/hwui/SkiaColorFilter.cpp b/libs/hwui/SkiaColorFilter.cpp index 91b1c32..b86bbc5 100644 --- a/libs/hwui/SkiaColorFilter.cpp +++ b/libs/hwui/SkiaColorFilter.cpp @@ -36,6 +36,11 @@ SkiaColorFilter::~SkiaColorFilter() { SkiaColorMatrixFilter::SkiaColorMatrixFilter(SkColorFilter *skFilter, float* matrix, float* vector): SkiaColorFilter(skFilter, kColorMatrix, true), mMatrix(matrix), mVector(vector) { + // Skia uses the range [0..255] for the addition vector, but we need + // the [0..1] range to apply the vector in GLSL + for (int i = 0; i < 4; i++) { + mVector[i] /= 255.0f; + } } SkiaColorMatrixFilter::~SkiaColorMatrixFilter() { |