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
diff --git a/libs/hwui/pipeline/skia/StretchMask.cpp b/libs/hwui/pipeline/skia/StretchMask.cpp
index 2bbd8a4..1c58c6a 100644
--- a/libs/hwui/pipeline/skia/StretchMask.cpp
+++ b/libs/hwui/pipeline/skia/StretchMask.cpp
@@ -46,9 +46,16 @@
 
     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<SkImage> maskImage = mMaskSurface->makeImageSnapshot();