diff options
Diffstat (limited to 'src/gpu/effects/GrPorterDuffXferProcessor.cpp')
-rw-r--r-- | src/gpu/effects/GrPorterDuffXferProcessor.cpp | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/src/gpu/effects/GrPorterDuffXferProcessor.cpp b/src/gpu/effects/GrPorterDuffXferProcessor.cpp index bc61f499e4..de0143acea 100644 --- a/src/gpu/effects/GrPorterDuffXferProcessor.cpp +++ b/src/gpu/effects/GrPorterDuffXferProcessor.cpp @@ -744,16 +744,11 @@ bool GrPorterDuffXPFactory::supportsRGBCoverage(GrColor /*knownColor*/, void GrPorterDuffXPFactory::getInvariantOutput(const GrProcOptInfo& colorPOI, const GrProcOptInfo& coveragePOI, GrXPFactory::InvariantOutput* output) const { - output->fWillBlendWithDst = true; - output->fBlendedColorFlags = kNone_GrColorComponentFlags; - - // The LCD coverage XP doesn't use the blend table, and has no invariant output. - if (coveragePOI.isFourChannelOutput()) { - return; - } - const BlendFormula& blendFormula = get_blend_formula(fXfermode, colorPOI, coveragePOI); + if (blendFormula.usesDstColor()) { + output->fWillBlendWithDst = true; + output->fBlendedColorFlags = kNone_GrColorComponentFlags; return; } @@ -773,18 +768,16 @@ void GrPorterDuffXPFactory::getInvariantOutput(const GrProcOptInfo& colorPOI, output->fBlendedColorFlags = colorPOI.validFlags(); return; - default: return; + // TODO: update if we ever use const color. + default: + output->fBlendedColorFlags = kNone_GrColorComponentFlags; + return; } } bool GrPorterDuffXPFactory::willReadDstColor(const GrCaps& caps, const GrProcOptInfo& colorPOI, const GrProcOptInfo& coveragePOI) const { - // The LCD coverage XP doesn't use the blend table, and never requires a dst read. - if (coveragePOI.isFourChannelOutput()) { - return false; - } - // Some formulas use dual source blending, so we fall back if it is required but not supported. return !caps.shaderCaps()->dualSourceBlendingSupport() && get_blend_formula(fXfermode, colorPOI, coveragePOI).hasSecondaryOutput(); |