diff options
-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: |