aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2018-06-14 14:50:17 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-06-15 13:53:05 +0000
commitc891b102867d5af953c6a0ea68f15292bccd5035 (patch)
tree68e18b877fdfb3f6576d3dec1dc74dca224c2990
parent0e4a12b5259ccb456aaeb14286b793f3a96c842f (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.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: