From cccd03859ca4f7870d05ee679530c6d3c0c967e0 Mon Sep 17 00:00:00 2001 From: Stan Iliev Date: Fri, 22 Jun 2018 17:33:43 -0400 Subject: Don't apply filter in readback, when there is no scaling Fix check for scaling in SkiaOpenGLReadback: old code was not taking into account that matrix rotation swaps width/height. Test: Passed PixelCopyTest#testWindowProducerCopyToRGBA16F Bug: 110097060 Bug: 111776948 Change-Id: I0d26416fa72a026bc376417773d5a73548b1f1a5 Merged-In: I0d26416fa72a026bc376417773d5a73548b1f1a5 (cherry picked from commit d50edd004b60bec3f1d36066725129276b4a53ec) (cherry picked from commit ee7b63aa646c937e326ac5f39f07f724020533bb) --- libs/hwui/pipeline/skia/SkiaOpenGLReadback.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libs/hwui/pipeline/skia/SkiaOpenGLReadback.cpp b/libs/hwui/pipeline/skia/SkiaOpenGLReadback.cpp index 107890e57a19..0760f1610891 100644 --- a/libs/hwui/pipeline/skia/SkiaOpenGLReadback.cpp +++ b/libs/hwui/pipeline/skia/SkiaOpenGLReadback.cpp @@ -26,6 +26,7 @@ #include "DeviceInfo.h" #include "Matrix.h" #include "Properties.h" +#include "utils/MathUtils.h" using namespace android::uirenderer::renderthread; @@ -116,9 +117,9 @@ CopyResult SkiaOpenGLReadback::copyImageInto(EGLImageKHR eglImage, const Matrix4 paint.setBlendMode(SkBlendMode::kSrc); // Apply a filter, which is matching OpenGL pipeline readback behaviour. Filter usage // is codified by tests using golden images like DecodeAccuracyTest. - if (skiaSrcRect.width() != bitmap->width() || - skiaSrcRect.height() != bitmap->height()) { - // TODO: apply filter always, but check if tests will be fine + bool disableFilter = MathUtils::areEqual(skiaSrcRect.width(), skiaDestRect.width()) + && MathUtils::areEqual(skiaSrcRect.height(), skiaDestRect.height()); + if (!disableFilter) { paint.setFilterQuality(kLow_SkFilterQuality); } scaledSurface->getCanvas()->concat(textureMatrix); -- cgit v1.2.3-59-g8ed1b