Simplify usage of GrGLSLColorSpaceXformHelper

It was already safe to call setData without (redundantly) checking
isValid, so remove those. Made the emitCode helpers safe, too, so that
we only need to check for isValid in one spot. Then, because it made
more sense, invert the logic and rename it to isNoop().

Pulled out of https://skia-review.googlesource.com/c/skia/+/132090

Bug: skia:
Change-Id: I147fa2e0a06c04024c6aa98725fa73501044e4cd
Reviewed-on: https://skia-review.googlesource.com/134948
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
diff --git a/src/gpu/GrColorSpaceXform.cpp b/src/gpu/GrColorSpaceXform.cpp
index 1256023..baa17df 100644
--- a/src/gpu/GrColorSpaceXform.cpp
+++ b/src/gpu/GrColorSpaceXform.cpp
@@ -211,9 +211,7 @@
     void onSetData(const GrGLSLProgramDataManager& pdman,
                    const GrFragmentProcessor& processor) override {
         const GrColorSpaceXformEffect& csxe = processor.cast<GrColorSpaceXformEffect>();
-        if (fColorSpaceHelper.isValid()) {
-            fColorSpaceHelper.setData(pdman, csxe.colorXform());
-        }
+        fColorSpaceHelper.setData(pdman, csxe.colorXform());
     }
 
     GrGLSLColorSpaceXformHelper fColorSpaceHelper;
diff --git a/src/gpu/GrDefaultGeoProcFactory.cpp b/src/gpu/GrDefaultGeoProcFactory.cpp
index dced58a..2f96ade 100644
--- a/src/gpu/GrDefaultGeoProcFactory.cpp
+++ b/src/gpu/GrDefaultGeoProcFactory.cpp
@@ -117,12 +117,9 @@
                 if (gp.linearizeColor()) {
                     fColorSpaceHelper.emitCode(uniformHandler, gp.fColorSpaceXform.get(),
                                                kVertex_GrShaderFlag);
-                    if (fColorSpaceHelper.isValid()) {
-                        SkString xformedColor;
-                        vertBuilder->appendColorGamutXform(&xformedColor, "color",
-                                                           &fColorSpaceHelper);
-                        vertBuilder->codeAppendf("color = %s;", xformedColor.c_str());
-                    }
+                    SkString xformedColor;
+                    vertBuilder->appendColorGamutXform(&xformedColor, "color", &fColorSpaceHelper);
+                    vertBuilder->codeAppendf("color = %s;", xformedColor.c_str());
                 }
                 vertBuilder->codeAppendf("%s = color;\n", varying.vsOut());
                 fragBuilder->codeAppendf("%s = %s;", args.fOutputColor, varying.fsIn());
diff --git a/src/gpu/glsl/GrGLSLColorSpaceXformHelper.h b/src/gpu/glsl/GrGLSLColorSpaceXformHelper.h
index 527de91..0cc9da1 100644
--- a/src/gpu/glsl/GrGLSLColorSpaceXformHelper.h
+++ b/src/gpu/glsl/GrGLSLColorSpaceXformHelper.h
@@ -48,7 +48,7 @@
         }
     }
 
-    bool isValid() const { return (0 != fFlags); }
+    bool isNoop() const { return (0 == fFlags); }
     bool applyInverseSRGB() const {
         return SkToBool(fFlags & GrColorSpaceXform::kApplyInverseSRGB_Flag);
     }
diff --git a/src/gpu/glsl/GrGLSLShaderBuilder.cpp b/src/gpu/glsl/GrGLSLShaderBuilder.cpp
index 4bf6602..db0be21 100644
--- a/src/gpu/glsl/GrGLSLShaderBuilder.cpp
+++ b/src/gpu/glsl/GrGLSLShaderBuilder.cpp
@@ -80,14 +80,9 @@
                                               const char* coordName,
                                               GrSLType varyingType,
                                               GrGLSLColorSpaceXformHelper* colorXformHelper) {
-    if (colorXformHelper && colorXformHelper->isValid()) {
-        // With a color gamut transform, we need to wrap the lookup in another function call
-        SkString lookup;
-        this->appendTextureLookup(&lookup, samplerHandle, coordName, varyingType);
-        this->appendColorGamutXform(lookup.c_str(), colorXformHelper);
-    } else {
-        this->appendTextureLookup(&this->code(), samplerHandle, coordName, varyingType);
-    }
+    SkString lookup;
+    this->appendTextureLookup(&lookup, samplerHandle, coordName, varyingType);
+    this->appendColorGamutXform(lookup.c_str(), colorXformHelper);
 }
 
 void GrGLSLShaderBuilder::appendTextureLookupAndModulate(
@@ -98,26 +93,20 @@
                                                     GrGLSLColorSpaceXformHelper* colorXformHelper) {
     SkString lookup;
     this->appendTextureLookup(&lookup, samplerHandle, coordName, varyingType);
-    if (colorXformHelper && colorXformHelper->isValid()) {
-        SkString xform;
-        this->appendColorGamutXform(&xform, lookup.c_str(), colorXformHelper);
-        if (modulation) {
-            this->codeAppendf("%s * %s", modulation, xform.c_str());
-        } else {
-            this->codeAppendf("%s", xform.c_str());
-        }
-    } else {
-        if (modulation) {
-            this->codeAppendf("%s * %s", modulation, lookup.c_str());
-        } else {
-            this->codeAppendf("%s", lookup.c_str());
-        }
+    this->appendColorGamutXform(lookup.c_str(), colorXformHelper);
+    if (modulation) {
+        this->codeAppendf(" * %s", modulation);
     }
 }
 
 void GrGLSLShaderBuilder::appendColorGamutXform(SkString* out,
                                                 const char* srcColor,
                                                 GrGLSLColorSpaceXformHelper* colorXformHelper) {
+    if (!colorXformHelper || colorXformHelper->isNoop()) {
+        *out = srcColor;
+        return;
+    }
+
     GrGLSLUniformHandler* uniformHandler = fProgramBuilder->uniformHandler();
 
     // We define up to three helper functions, to keep things clearer. One does inverse sRGB,
diff --git a/src/gpu/ops/GrLatticeOp.cpp b/src/gpu/ops/GrLatticeOp.cpp
index c06dd26..5903231 100644
--- a/src/gpu/ops/GrLatticeOp.cpp
+++ b/src/gpu/ops/GrLatticeOp.cpp
@@ -51,9 +51,7 @@
                          FPCoordTransformIter&& transformIter) override {
                 const auto& latticeGP = proc.cast<LatticeGP>();
                 this->setTransformDataHelper(SkMatrix::I(), pdman, &transformIter);
-                if (fColorSpaceXformHelper.isValid()) {
-                    fColorSpaceXformHelper.setData(pdman, latticeGP.fColorSpaceXform.get());
-                }
+                fColorSpaceXformHelper.setData(pdman, latticeGP.fColorSpaceXform.get());
             }
 
         private:
diff --git a/src/gpu/ops/GrTextureOp.cpp b/src/gpu/ops/GrTextureOp.cpp
index 0df3e48..e06d94f 100644
--- a/src/gpu/ops/GrTextureOp.cpp
+++ b/src/gpu/ops/GrTextureOp.cpp
@@ -143,9 +143,7 @@
                          FPCoordTransformIter&& transformIter) override {
                 const auto& textureGP = proc.cast<TextureGeometryProcessor>();
                 this->setTransformDataHelper(SkMatrix::I(), pdman, &transformIter);
-                if (fColorSpaceXformHelper.isValid()) {
-                    fColorSpaceXformHelper.setData(pdman, textureGP.fColorSpaceXform.get());
-                }
+                fColorSpaceXformHelper.setData(pdman, textureGP.fColorSpaceXform.get());
             }
 
         private: