diff options
author | 2016-06-06 13:10:58 -0700 | |
---|---|---|
committer | 2016-06-06 13:10:58 -0700 | |
commit | 982eb7f377a0c771345276558072deb2fcea0d3e (patch) | |
tree | 02ae878610160d6b6c91629424aaf895e5f17497 /src/core/SkComposeShader.cpp | |
parent | dc27a648d2ff23b2e96232c00c15976c46e1d48d (diff) |
Add new SkSourceGammaTreatment enum, used in situations like mipmap construction, where we need to know if we should respect (vs. ignore) the gamma encoding of sRGB tagged images. Plumb that extensively.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2037413002
Review-Url: https://codereview.chromium.org/2037413002
Diffstat (limited to 'src/core/SkComposeShader.cpp')
-rw-r--r-- | src/core/SkComposeShader.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/core/SkComposeShader.cpp b/src/core/SkComposeShader.cpp index 46b7724944..13569f1b48 100644 --- a/src/core/SkComposeShader.cpp +++ b/src/core/SkComposeShader.cpp @@ -183,10 +183,12 @@ void SkComposeShader::ComposeShaderContext::shadeSpan(int x, int y, SkPMColor re ///////////////////////////////////////////////////////////////////// -const GrFragmentProcessor* SkComposeShader::asFragmentProcessor(GrContext* context, - const SkMatrix& viewM, - const SkMatrix* localMatrix, - SkFilterQuality fq) const { +const GrFragmentProcessor* SkComposeShader::asFragmentProcessor( + GrContext* context, + const SkMatrix& viewM, + const SkMatrix* localMatrix, + SkFilterQuality fq, + SkSourceGammaTreatment gammaTreatment) const { // Fragment processor will only support SkXfermode::Mode modes currently. SkXfermode::Mode mode; if (!(SkXfermode::AsMode(fMode, &mode))) { @@ -199,19 +201,19 @@ const GrFragmentProcessor* SkComposeShader::asFragmentProcessor(GrContext* conte GrConstColorProcessor::kIgnore_InputMode); break; case SkXfermode::kSrc_Mode: - return fShaderB->asFragmentProcessor(context, viewM, localMatrix, fq); + return fShaderB->asFragmentProcessor(context, viewM, localMatrix, fq, gammaTreatment); break; case SkXfermode::kDst_Mode: - return fShaderA->asFragmentProcessor(context, viewM, localMatrix, fq); + return fShaderA->asFragmentProcessor(context, viewM, localMatrix, fq, gammaTreatment); break; default: SkAutoTUnref<const GrFragmentProcessor> fpA(fShaderA->asFragmentProcessor(context, - viewM, localMatrix, fq)); + viewM, localMatrix, fq, gammaTreatment)); if (!fpA.get()) { return nullptr; } SkAutoTUnref<const GrFragmentProcessor> fpB(fShaderB->asFragmentProcessor(context, - viewM, localMatrix, fq)); + viewM, localMatrix, fq, gammaTreatment)); if (!fpB.get()) { return nullptr; } |