Fix handling of MaskFilter matrices

1) extend GrFPArgs to track pre/post local matrices, add helpers for
   creating pre/post wrapper args

2) add a SkShaderBase helper (totalLocalMatrix) to centralize the LM
   sandwich logic.

3) update call sites to use the above

4) rename SkMatrixFilter::makeWithLocalMatrix -> makeWithMatrix, to
   disambiguate vs. SkShader::makeWithLocalMatrix.

BUG=skia:7744

Change-Id: Ib2b7b007e6924979b00649dde7c94ef4b34771f1
Reviewed-on: https://skia-review.googlesource.com/119330
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/src/shaders/SkLocalMatrixShader.cpp b/src/shaders/SkLocalMatrixShader.cpp
index ca99af1..78110f5 100644
--- a/src/shaders/SkLocalMatrixShader.cpp
+++ b/src/shaders/SkLocalMatrixShader.cpp
@@ -15,13 +15,8 @@
 #if SK_SUPPORT_GPU
 std::unique_ptr<GrFragmentProcessor> SkLocalMatrixShader::asFragmentProcessor(
         const GrFPArgs& args) const {
-    SkMatrix tmp = this->getLocalMatrix();
-    if (args.fLocalMatrix) {
-        tmp.preConcat(*args.fLocalMatrix);
-    }
     return as_SB(fProxyShader)
-            ->asFragmentProcessor(GrFPArgs(args.fContext, args.fViewMatrix, &tmp,
-                                           args.fFilterQuality, args.fDstColorSpaceInfo));
+            ->asFragmentProcessor(args.makeWithPreLocalMatrix(this->getLocalMatrix()));
 }
 #endif