aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/effects/GrPorterDuffXferProcessor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/effects/GrPorterDuffXferProcessor.cpp')
-rw-r--r--src/gpu/effects/GrPorterDuffXferProcessor.cpp21
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();