diff options
author | Brian Osman <brianosman@google.com> | 2018-06-14 14:50:17 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-06-15 13:53:05 +0000 |
commit | c891b102867d5af953c6a0ea68f15292bccd5035 (patch) | |
tree | 68e18b877fdfb3f6576d3dec1dc74dca224c2990 | |
parent | 0e4a12b5259ccb456aaeb14286b793f3a96c842f (diff) |
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>
-rw-r--r-- | src/gpu/GrColorSpaceXform.cpp | 4 | ||||
-rw-r--r-- | src/gpu/GrDefaultGeoProcFactory.cpp | 9 | ||||
-rw-r--r-- | src/gpu/glsl/GrGLSLColorSpaceXformHelper.h | 2 | ||||
-rw-r--r-- | src/gpu/glsl/GrGLSLShaderBuilder.cpp | 33 | ||||
-rw-r--r-- | src/gpu/ops/GrLatticeOp.cpp | 4 | ||||
-rw-r--r-- | src/gpu/ops/GrTextureOp.cpp | 4 |
6 files changed, 18 insertions, 38 deletions
diff --git a/src/gpu/GrColorSpaceXform.cpp b/src/gpu/GrColorSpaceXform.cpp index 1256023c00..baa17df7bd 100644 --- a/src/gpu/GrColorSpaceXform.cpp +++ b/src/gpu/GrColorSpaceXform.cpp @@ -211,9 +211,7 @@ private: 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 dced58a67d..2f96ade450 100644 --- a/src/gpu/GrDefaultGeoProcFactory.cpp +++ b/src/gpu/GrDefaultGeoProcFactory.cpp @@ -117,12 +117,9 @@ public: 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 527de91c50..0cc9da1012 100644 --- a/src/gpu/glsl/GrGLSLColorSpaceXformHelper.h +++ b/src/gpu/glsl/GrGLSLColorSpaceXformHelper.h @@ -48,7 +48,7 @@ public: } } - 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 4bf6602495..db0be21f01 100644 --- a/src/gpu/glsl/GrGLSLShaderBuilder.cpp +++ b/src/gpu/glsl/GrGLSLShaderBuilder.cpp @@ -80,14 +80,9 @@ void GrGLSLShaderBuilder::appendTextureLookup(SamplerHandle samplerHandle, 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 @@ void GrGLSLShaderBuilder::appendTextureLookupAndModulate( 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 c06dd26065..5903231cb2 100644 --- a/src/gpu/ops/GrLatticeOp.cpp +++ b/src/gpu/ops/GrLatticeOp.cpp @@ -51,9 +51,7 @@ public: 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 0df3e48ef4..e06d94f806 100644 --- a/src/gpu/ops/GrTextureOp.cpp +++ b/src/gpu/ops/GrTextureOp.cpp @@ -143,9 +143,7 @@ public: 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: |