Remove most GrCoordTransform code

All coord transforms were identity, so this enshrines that
knowledge, then transitively removes a large amount of code.

Bug: skia:10416
Change-Id: Iae4af9ca21590bced1ce9fce3ab807f6cceaebd4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300234
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/src/gpu/GrPathProcessor.cpp b/src/gpu/GrPathProcessor.cpp
index 4385844..2fdd97b 100644
--- a/src/gpu/GrPathProcessor.cpp
+++ b/src/gpu/GrPathProcessor.cpp
@@ -8,7 +8,7 @@
 #include "src/gpu/GrPathProcessor.h"
 
 #include "include/private/SkTo.h"
-#include "src/gpu/GrCoordTransform.h"
+#include "src/core/SkMatrixPriv.h"
 #include "src/gpu/GrShaderCaps.h"
 #include "src/gpu/gl/GrGLGpu.h"
 #ifdef SK_GL
@@ -54,102 +54,47 @@
         fragBuilder->codeAppendf("%s = half4(1);", args.fOutputCoverage);
     }
 
-    SkString matrix_to_sksl(const SkMatrix& m) {
-        return SkStringPrintf("float3x3(%f, %f, %f, %f, %f, %f, %f, %f, %f)", m[0], m[1], m[2],
-                              m[3], m[4], m[5], m[6], m[7], m[8]);
-    }
-
     void emitTransforms(GrGLSLVaryingHandler* varyingHandler,
                         GrGLSLUniformHandler* uniformHandler,
                         FPCoordTransformHandler* transformHandler) {
         for (int i = 0; *transformHandler; ++*transformHandler, ++i) {
-            auto [coordTransform, fp] = transformHandler->get();
+            const auto& fp = transformHandler->get();
 
             GrShaderVar fragmentVar;
             GrShaderVar transformVar;
             if (fp.isSampledWithExplicitCoords()) {
-                if (coordTransform.isNoOp()) {
-                    transformHandler->omitCoordsForCurrCoordTransform();
-                    continue;
-                } else {
-                    const char* name;
-                    SkString strUniName;
-                    strUniName.printf("CoordTransformMatrix_%d", i);
-                    auto& uni = fUniformTransform.push_back();
-                    if (coordTransform.matrix().isScaleTranslate()) {
-                        uni.fType = kFloat4_GrSLType;
-                    } else {
-                        uni.fType = kFloat3x3_GrSLType;
-                    }
-                    uni.fHandle = uniformHandler
-                                          ->addUniform(nullptr,
-                                                       kFragment_GrShaderFlag,
-                                                       uni.fType,
-                                                       strUniName.c_str(),
-                                                       &name)
-                                          .toIndex();
-                    transformVar = uniformHandler->getUniformVariable(uni.fHandle);
-                }
+                transformHandler->omitCoordsForCurrCoordTransform();
             } else {
                 SkString strVaryingName;
                 strVaryingName.printf("TransformedCoord_%d", i);
-                GrSLType varyingType = coordTransform.matrix().hasPerspective() ? kFloat3_GrSLType
-                                                                                : kFloat2_GrSLType;
-                GrGLSLVarying v(varyingType);
+                GrGLSLVarying v(kFloat2_GrSLType);
 #ifdef SK_GL
                 GrGLVaryingHandler* glVaryingHandler = (GrGLVaryingHandler*)varyingHandler;
                 fVaryingTransform.push_back().fHandle =
                         glVaryingHandler->addPathProcessingVarying(strVaryingName.c_str(), &v)
                                 .toIndex();
 #endif
-                fVaryingTransform.back().fType = varyingType;
-                fragmentVar = {SkString(v.fsIn()), varyingType};
+                fragmentVar = {SkString(v.fsIn()), kFloat2_GrSLType};
+                transformHandler->specifyCoordsForCurrCoordTransform(transformVar, fragmentVar);
             }
-            transformHandler->specifyCoordsForCurrCoordTransform(transformVar, fragmentVar);
         }
     }
 
     void setData(const GrGLSLProgramDataManager& pd,
-                 const GrPrimitiveProcessor& primProc,
-                 const CoordTransformRange& transformRange) override {
+                 const GrPrimitiveProcessor& primProc) override {
         const GrPathProcessor& pathProc = primProc.cast<GrPathProcessor>();
         if (pathProc.color() != fColor) {
             pd.set4fv(fColorUniform, 1, pathProc.color().vec());
             fColor = pathProc.color();
         }
 
-        int v = 0, u = 0;
-        for (auto [transform, fp] : transformRange) {
-            if (fp.isSampledWithExplicitCoords()) {
-                if (transform.isNoOp()) {
-                    continue;
-                }
-                if (fUniformTransform[u].fHandle.isValid()) {
-                    SkMatrix m = GetTransformMatrix(transform, SkMatrix::I());
-                    if (!SkMatrixPriv::CheapEqual(fUniformTransform[u].fCurrentValue, m)) {
-                        fUniformTransform[u].fCurrentValue = m;
-                        if (fUniformTransform[u].fType == kFloat4_GrSLType) {
-                            float values[4] = {m.getScaleX(), m.getTranslateX(),
-                                               m.getScaleY(), m.getTranslateY()};
-                            pd.set4fv(fUniformTransform[u].fHandle.toIndex(), 1, values);
-                        } else {
-                            SkASSERT(fUniformTransform[u].fType == kFloat3x3_GrSLType);
-                            pd.setSkMatrix(fUniformTransform[u].fHandle.toIndex(), m);
-                        }
-                    }
-                }
-                ++u;
-            } else {
-                SkASSERT(fVaryingTransform[v].fHandle.isValid());
-                SkMatrix m = GetTransformMatrix(transform, pathProc.localMatrix());
+        for (int v = 0; v < fVaryingTransform.count(); ++v) {
+            if (fVaryingTransform[v].fHandle.isValid()) {
+                SkMatrix m = pathProc.localMatrix();
                 if (!SkMatrixPriv::CheapEqual(fVaryingTransform[v].fCurrentValue, m)) {
                     fVaryingTransform[v].fCurrentValue = m;
-                    SkASSERT(fVaryingTransform[v].fType == kFloat2_GrSLType ||
-                             fVaryingTransform[v].fType == kFloat3_GrSLType);
-                    int components = fVaryingTransform[v].fType == kFloat2_GrSLType ? 2 : 3;
-                    pd.setPathFragmentInputTransform(fVaryingTransform[v].fHandle, components, m);
+                    pd.setPathFragmentInputTransform(fVaryingTransform[v].fHandle, 2, m);
                 }
-                ++v;
             }
         }
     }
@@ -163,18 +108,9 @@
     struct TransformVarying {
         VaryingHandle fHandle;
         SkMatrix      fCurrentValue = SkMatrix::InvalidMatrix();
-        GrSLType      fType = kVoid_GrSLType;
-    };
-    // For explicitly sampled FPs we stick a uniform in the FS and apply it to the explicit coords
-    // to implement the CoordTransform.
-    struct TransformUniform {
-        UniformHandle fHandle;
-        SkMatrix      fCurrentValue = SkMatrix::InvalidMatrix();
-        GrSLType      fType = kVoid_GrSLType;
     };
 
     SkTArray<TransformVarying, true> fVaryingTransform;
-    SkTArray<TransformUniform, true> fUniformTransform;
 
     UniformHandle fColorUniform;
     SkPMColor4f fColor;