Remove component flags from GrXPFactory output analysis.

Change-Id: Ieb8dab564e6e593dca2e092d352756052dadfd90
Reviewed-on: https://skia-review.googlesource.com/8354
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
diff --git a/src/gpu/effects/GrPorterDuffXferProcessor.cpp b/src/gpu/effects/GrPorterDuffXferProcessor.cpp
index 5f44c7a..a04bb5b 100644
--- a/src/gpu/effects/GrPorterDuffXferProcessor.cpp
+++ b/src/gpu/effects/GrPorterDuffXferProcessor.cpp
@@ -764,40 +764,33 @@
     SkASSERT(!dstTexture || !dstTexture->texture());
     return new PorterDuffXferProcessor(blendFormula);
 }
-
-void GrPorterDuffXPFactory::getInvariantBlendedColor(const GrProcOptInfo& colorPOI,
-                                                     InvariantBlendedColor* blendedColor) const {
-    // Find the blended color info based on the formula that does not have coverage.
-    BlendFormula colorFormula = gBlendTable[colorPOI.isOpaque()][0][(int)fBlendMode];
-    if (colorFormula.usesDstColor()) {
-        blendedColor->fWillBlendWithDst = true;
-        blendedColor->fKnownColorFlags = kNone_GrColorComponentFlags;
-        return;
-    }
-
-    blendedColor->fWillBlendWithDst = false;
-
+bool GrPorterDuffXPFactory::isPreCoverageBlendedColorConstant(const GrProcOptInfo& colorInput,
+                                                              GrColor* color) const {
+    BlendFormula colorFormula = gBlendTable[colorInput.isOpaque()][0][(int)fBlendMode];
     SkASSERT(kAdd_GrBlendEquation == colorFormula.fBlendEquation);
-
+    if (colorFormula.usesDstColor()) {
+        return false;
+    }
     switch (colorFormula.fSrcCoeff) {
         case kZero_GrBlendCoeff:
-            blendedColor->fKnownColor = 0;
-            blendedColor->fKnownColorFlags = kRGBA_GrColorComponentFlags;
-            return;
+            *color = GrColor_TRANSPARENT_BLACK;
+            return true;
         case kOne_GrBlendCoeff:
-            blendedColor->fKnownColorFlags =
-                    colorPOI.hasKnownOutputColor(&blendedColor->fKnownColor)
-                            ? kRGBA_GrColorComponentFlags
-                            : kNone_GrColorComponentFlags;
-            return;
+            return colorInput.hasKnownOutputColor(color);
         default:
-            blendedColor->fKnownColorFlags = kNone_GrColorComponentFlags;
-            return;
+            return false;
     }
 }
 
-bool GrPorterDuffXPFactory::willReadDstColor(const GrCaps& caps, ColorType colorType,
-                                             CoverageType coverageType) const {
+bool GrPorterDuffXPFactory::willReadsDst(const GrProcOptInfo& colorInput,
+                                         const GrProcOptInfo& coverageInput) const {
+    BlendFormula colorFormula = gBlendTable[colorInput.isOpaque()][0][(int)fBlendMode];
+    SkASSERT(kAdd_GrBlendEquation == colorFormula.fBlendEquation);
+    return (colorFormula.usesDstColor() || !coverageInput.isSolidWhite());
+}
+
+bool GrPorterDuffXPFactory::willReadDstInShader(const GrCaps& caps, ColorType colorType,
+                                                CoverageType coverageType) const {
     if (caps.shaderCaps()->dualSourceBlendingSupport()) {
         return false;
     }
@@ -900,19 +893,17 @@
     return sk_make_sp<PorterDuffXferProcessor>(formula);
 }
 
-void GrPorterDuffXPFactory::SrcOverInvariantBlendedColor(
-        const GrProcOptInfo& colorPOI, GrXPFactory::InvariantBlendedColor* blendedColor) {
-    if (!colorPOI.isOpaque()) {
-        blendedColor->fWillBlendWithDst = true;
-        blendedColor->fKnownColorFlags = kNone_GrColorComponentFlags;
-        return;
+bool GrPorterDuffXPFactory::WillSrcOverReadDst(const GrProcOptInfo& colorInput,
+                                               const GrProcOptInfo& coverageInput) {
+    return !coverageInput.isSolidWhite() || !colorInput.isOpaque();
+}
+
+bool GrPorterDuffXPFactory::IsSrcOverPreCoverageBlendedColorConstant(
+        const GrProcOptInfo& colorInput, GrColor* color) {
+    if (!colorInput.isOpaque()) {
+        return false;
     }
-    blendedColor->fWillBlendWithDst = false;
-    if (colorPOI.hasKnownOutputColor(&blendedColor->fKnownColor)) {
-        blendedColor->fKnownColorFlags = kRGBA_GrColorComponentFlags;
-    } else {
-        blendedColor->fKnownColorFlags = kNone_GrColorComponentFlags;
-    }
+    return colorInput.hasKnownOutputColor(color);
 }
 
 bool GrPorterDuffXPFactory::SrcOverWillNeedDstTexture(const GrCaps& caps,