Plumbing SkMatrixProvider into the raster backend

Change-Id: Ic5786b995fdb439871f2e3ab94cd07a945de19af
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/288776
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/src/shaders/SkLocalMatrixShader.cpp b/src/shaders/SkLocalMatrixShader.cpp
index 59d9804..66ee52b 100644
--- a/src/shaders/SkLocalMatrixShader.cpp
+++ b/src/shaders/SkLocalMatrixShader.cpp
@@ -5,6 +5,7 @@
  * found in the LICENSE file.
  */
 
+#include "src/core/SkMatrixProvider.h"
 #include "src/core/SkTLazy.h"
 #include "src/core/SkVM.h"
 #include "src/shaders/SkLocalMatrixShader.h"
@@ -138,6 +139,7 @@
 #endif
 
     bool onAppendStages(const SkStageRec& rec) const override {
+        SkOverrideDeviceMatrixProvider matrixProvider(rec.fMatrixProvider, fCTM);
         SkStageRec newRec = {
             rec.fPipeline,
             rec.fAlloc,
@@ -145,7 +147,7 @@
             rec.fDstCS,
             rec.fPaint,
             rec.fLocalM,
-            fCTM,
+            matrixProvider,
         };
         return as_SB(fProxyShader)->appendStages(newRec);
     }