aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrXferProcessor.cpp
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2017-05-19 10:56:46 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-05-19 17:20:33 +0000
commit6ebe4b9dbeab68ca3b6da61fd08f22cdc080267d (patch)
tree7cd35d97370f7d85d6422a71b044c62930d20cc6 /src/gpu/GrXferProcessor.cpp
parent09e9f68625db41a1bdbac6738e2d4b57268ac5ca (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.cpp14
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);
}