From 9238f59d97dd154575f68997744a0697e4f3091a Mon Sep 17 00:00:00 2001 From: Nader Jawad Date: Tue, 11 May 2021 20:13:29 -0700 Subject: [PATCH] Provide proper transform to mask canvas Updated mask canvas to have the same transformation applied to the initial target canvas and device Bug: 184297961 Test: manual Change-Id: Ibdeefba8ec9f95f4acd7e3176f43a5e603e76676 --- libs/hwui/pipeline/skia/StretchMask.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libs/hwui/pipeline/skia/StretchMask.cpp b/libs/hwui/pipeline/skia/StretchMask.cpp index 2bbd8a4fa028b..1c58c6a5d4408 100644 --- a/libs/hwui/pipeline/skia/StretchMask.cpp +++ b/libs/hwui/pipeline/skia/StretchMask.cpp @@ -46,9 +46,16 @@ void StretchMask::draw(GrRecordingContext* context, if (mIsDirty) { SkCanvas* maskCanvas = mMaskSurface->getCanvas(); + // Make sure to apply target transformation to the mask canvas + // to ensure the replayed drawing commands generate the same result + auto previousMatrix = displayList->mParentMatrix; + displayList->mParentMatrix = maskCanvas->getTotalMatrix(); + maskCanvas->save(); maskCanvas->drawColor(0, SkBlendMode::kClear); TransformCanvas transformCanvas(maskCanvas, SkBlendMode::kSrcOver); displayList->draw(&transformCanvas); + maskCanvas->restore(); + displayList->mParentMatrix = previousMatrix; } sk_sp maskImage = mMaskSurface->makeImageSnapshot();