From f13447030dbeb2ce48bd421bc01c89cc01e19667 Mon Sep 17 00:00:00 2001 From: John Reck Date: Wed, 14 Jul 2021 14:24:51 -0400 Subject: Avoid sampling outside BQ crop rect The region outside of the BQ crop rect is potentially garbage. Avoid sampling from it. Fixes: 189656466 Bug: 193378020 Test: CTS PixelCopyTests & DecodeAccuracyTest Change-Id: I2910d93471f08aaf807ac9f87fdf84cf29cf4143 Merged-In: I2910d93471f08aaf807ac9f87fdf84cf29cf4143 --- libs/hwui/Readback.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'libs/hwui/Readback.cpp') diff --git a/libs/hwui/Readback.cpp b/libs/hwui/Readback.cpp index 25d57f61654d..e08b99d52cdb 100644 --- a/libs/hwui/Readback.cpp +++ b/libs/hwui/Readback.cpp @@ -189,8 +189,10 @@ CopyResult Readback::copySurfaceInto(ANativeWindow* window, const Rect& inSrcRec if (srcRect.width() != bitmap->width() || srcRect.height() != bitmap->height()) { paint.setFilterQuality(kLow_SkFilterQuality); } - canvas->drawImageRect(image, imageSrcRect, imageDstRect, &paint, - SkCanvas::kFast_SrcRectConstraint); + const bool hasBufferCrop = cropRect.left < cropRect.right && cropRect.top < cropRect.bottom; + auto constraint = + hasBufferCrop ? SkCanvas::kStrict_SrcRectConstraint : SkCanvas::kFast_SrcRectConstraint; + canvas->drawImageRect(image, imageSrcRect, imageDstRect, &paint, constraint); canvas->restore(); if (!tmpSurface->readPixels(*bitmap, 0, 0)) { -- cgit v1.2.3-59-g8ed1b