diff options
author | Greg Daniel <egdaniel@google.com> | 2017-05-19 10:56:46 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-05-19 17:20:33 +0000 |
commit | 6ebe4b9dbeab68ca3b6da61fd08f22cdc080267d (patch) | |
tree | 7cd35d97370f7d85d6422a71b044c62930d20cc6 /src/gpu/GrXferProcessor.cpp | |
parent | 09e9f68625db41a1bdbac6738e2d4b57268ac5ca (diff) |
Fix gpu lcd blending to semi-correctly handle alpha coverage
Bug: skia:6606
Change-Id: I16ccd97f5d047eb7fddfed5310bf669e7435ccdd
Reviewed-on: https://skia-review.googlesource.com/17370
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'src/gpu/GrXferProcessor.cpp')
-rw-r--r-- | src/gpu/GrXferProcessor.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/gpu/GrXferProcessor.cpp b/src/gpu/GrXferProcessor.cpp index 27c8a963e4..8c0568bcae 100644 --- a/src/gpu/GrXferProcessor.cpp +++ b/src/gpu/GrXferProcessor.cpp @@ -9,11 +9,16 @@ #include "GrPipeline.h" #include "gl/GrGLCaps.h" -GrXferProcessor::GrXferProcessor() : fWillReadDstColor(false), fDstReadUsesMixedSamples(false) {} +GrXferProcessor::GrXferProcessor() + : fWillReadDstColor(false) + , fDstReadUsesMixedSamples(false) + , fIsLCD(false) {} -GrXferProcessor::GrXferProcessor(bool willReadDstColor, bool hasMixedSamples) +GrXferProcessor::GrXferProcessor(bool willReadDstColor, bool hasMixedSamples, + GrProcessorAnalysisCoverage coverage) : fWillReadDstColor(willReadDstColor) - , fDstReadUsesMixedSamples(willReadDstColor && hasMixedSamples) {} + , fDstReadUsesMixedSamples(willReadDstColor && hasMixedSamples) + , fIsLCD(GrProcessorAnalysisCoverage::kLCD == coverage) {} bool GrXferProcessor::hasSecondaryOutput() const { if (!this->willReadDstColor()) { @@ -45,6 +50,9 @@ void GrXferProcessor::getGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorK key |= 0x8; } } + if (fIsLCD) { + key |= 0x10; + } b->add32(key); this->onGetGLSLProcessorKey(caps, b); } |