From 6ed9e43879039ce0cbead08d304edbce79a88ced Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Thu, 27 Sep 2012 18:06:43 -0700 Subject: [PATCH] Skia's ColorMatrix vector is in the 0..255 range not 0..1 Bug #7248980 Change-Id: I9873540e3bc1ea0526ea0884279a427c0de96006 --- libs/hwui/SkiaColorFilter.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libs/hwui/SkiaColorFilter.cpp b/libs/hwui/SkiaColorFilter.cpp index f754388f00932..df918beb53ef9 100644 --- a/libs/hwui/SkiaColorFilter.cpp +++ b/libs/hwui/SkiaColorFilter.cpp @@ -36,6 +36,12 @@ 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; + } + // TODO: We should be smarter about this mBlend = true; }