aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/gpu/GrColorSpaceXform.cpp4
-rw-r--r--src/gpu/GrDefaultGeoProcFactory.cpp9
-rw-r--r--src/gpu/glsl/GrGLSLColorSpaceXformHelper.h2
-rw-r--r--src/gpu/glsl/GrGLSLShaderBuilder.cpp33
-rw-r--r--src/gpu/ops/GrLatticeOp.cpp4
-rw-r--r--src/gpu/ops/GrTextureOp.cpp4
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: