remove xfermode from public api

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4020

CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot

Change-Id: I19cd056f2af778f10e8c6c2b7b2735593b43dbac
Reviewed-on: https://skia-review.googlesource.com/4020
Reviewed-by: Florin Malita <fmalita@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Reed <reed@google.com>
diff --git a/tests/BlitRowTest.cpp b/tests/BlitRowTest.cpp
index 99b7921..b4a4a64 100644
--- a/tests/BlitRowTest.cpp
+++ b/tests/BlitRowTest.cpp
@@ -172,7 +172,7 @@
 
     void draw(SkCanvas* canvas, SkPaint* paint) {
         canvas->drawVertices(SkCanvas::kTriangleFan_VertexMode, 4, fPts, fPts,
-                             nullptr, nullptr, nullptr, 0, *paint);
+                             nullptr, SkBlendMode::kModulate, nullptr, 0, *paint);
     }
 };
 
diff --git a/tests/BlurTest.cpp b/tests/BlurTest.cpp
index d9fca98..4e9a246 100644
--- a/tests/BlurTest.cpp
+++ b/tests/BlurTest.cpp
@@ -454,7 +454,7 @@
     SkLayerDrawLooper::LayerInfo info;
 
     info.fPaintBits = 0;
-    info.fColorMode = SkXfermode::kDst_Mode;
+    info.fColorMode = (SK_XFERMODE_MODE_PARAM)SkBlendMode::kDst;
     builder->addLayer(info);
 }
 
@@ -462,7 +462,7 @@
     SkLayerDrawLooper::LayerInfo info;
 
     info.fPaintBits = SkLayerDrawLooper::kMaskFilter_Bit;
-    info.fColorMode = SkXfermode::kSrc_Mode;
+    info.fColorMode = (SK_XFERMODE_MODE_PARAM)SkBlendMode::kSrc;
     SkPaint* paint = builder->addLayer(info);
     paint->setMaskFilter(std::move(mf));
 }
diff --git a/tests/CanvasTest.cpp b/tests/CanvasTest.cpp
index 2be83f3..c062e6c 100644
--- a/tests/CanvasTest.cpp
+++ b/tests/CanvasTest.cpp
@@ -384,7 +384,7 @@
     paint.setShader(SkShader::MakeBitmapShader(d.fBitmap, SkShader::kClamp_TileMode,
                                                SkShader::kClamp_TileMode));
     canvas->drawVertices(SkCanvas::kTriangleFan_VertexMode, 4, pts, pts,
-                         nullptr, nullptr, nullptr, 0, paint);
+                         nullptr, SkBlendMode::kModulate, nullptr, 0, paint);
 }
 // NYI: issue 240.
 TEST_STEP_NO_PDF(DrawVerticesShader, DrawVerticesShaderTestStep);
diff --git a/tests/ColorFilterTest.cpp b/tests/ColorFilterTest.cpp
index 9dfadbb..5d4ef86 100644
--- a/tests/ColorFilterTest.cpp
+++ b/tests/ColorFilterTest.cpp
@@ -32,7 +32,7 @@
 
 static sk_sp<SkColorFilter> make_filter() {
     // pick a filter that cannot compose with itself via newComposed()
-    return SkColorFilter::MakeModeFilter(SK_ColorRED, SkXfermode::kColorBurn_Mode);
+    return SkColorFilter::MakeModeFilter(SK_ColorRED, SkBlendMode::kColorBurn);
 }
 
 static void test_composecolorfilter_limit(skiatest::Reporter* reporter) {
@@ -50,43 +50,43 @@
     REPORTER_ASSERT(reporter, false); // we never saw a nullptr :(
 }
 
-#define ILLEGAL_MODE    ((SkXfermode::Mode)-1)
+#define ILLEGAL_MODE    ((SkBlendMode)-1)
 
 DEF_TEST(ColorFilter, reporter) {
     SkRandom rand;
 
-    for (int mode = 0; mode <= SkXfermode::kLastMode; mode++) {
+    for (int mode = 0; mode <= (int)SkBlendMode::kLastMode; mode++) {
         SkColor color = rand.nextU();
 
         // ensure we always get a filter, by avoiding the possibility of a
         // special case that would return nullptr (if color's alpha is 0 or 0xFF)
         color = SkColorSetA(color, 0x7F);
 
-        auto cf = SkColorFilter::MakeModeFilter(color, (SkXfermode::Mode)mode);
+        auto cf = SkColorFilter::MakeModeFilter(color, (SkBlendMode)mode);
 
         // allow for no filter if we're in Dst mode (its a no op)
-        if (SkXfermode::kDst_Mode == mode && nullptr == cf) {
+        if (SkBlendMode::kDst == (SkBlendMode)mode && nullptr == cf) {
             continue;
         }
 
         REPORTER_ASSERT(reporter, cf);
 
         SkColor c = ~color;
-        SkXfermode::Mode m = ILLEGAL_MODE;
+        SkBlendMode m = ILLEGAL_MODE;
 
         SkColor expectedColor = color;
-        SkXfermode::Mode expectedMode = (SkXfermode::Mode)mode;
+        SkBlendMode expectedMode = (SkBlendMode)mode;
 
 //        SkDebugf("--- mc [%d %x] ", mode, color);
 
-        REPORTER_ASSERT(reporter, cf->asColorMode(&c, &m));
+        REPORTER_ASSERT(reporter, cf->asColorMode(&c, (SK_XFERMODE_MODE_PARAM*)&m));
         // handle special-case folding by the factory
-        if (SkXfermode::kClear_Mode == mode) {
+        if (SkBlendMode::kClear == (SkBlendMode)mode) {
             if (c != expectedColor) {
                 expectedColor = 0;
             }
             if (m != expectedMode) {
-                expectedMode = SkXfermode::kSrc_Mode;
+                expectedMode = SkBlendMode::kSrc;
             }
         }
 
@@ -100,8 +100,8 @@
             REPORTER_ASSERT(reporter, cf2);
 
             SkColor c2 = ~color;
-            SkXfermode::Mode m2 = ILLEGAL_MODE;
-            REPORTER_ASSERT(reporter, cf2->asColorMode(&c2, &m2));
+            SkBlendMode m2 = ILLEGAL_MODE;
+            REPORTER_ASSERT(reporter, cf2->asColorMode(&c2, (SK_XFERMODE_MODE_PARAM*)&m2));
             REPORTER_ASSERT(reporter, c2 == expectedColor);
             REPORTER_ASSERT(reporter, m2 == expectedMode);
         }
diff --git a/tests/DFPathRendererTest.cpp b/tests/DFPathRendererTest.cpp
index 25c8f82..327640c 100644
--- a/tests/DFPathRendererTest.cpp
+++ b/tests/DFPathRendererTest.cpp
@@ -42,7 +42,7 @@
     shape = shape.applyStyle(GrStyle::Apply::kPathEffectAndStrokeRec, 1.f);
 
     GrPaint paint;
-    paint.setXPFactory(GrPorterDuffXPFactory::Make(SkXfermode::kSrc_Mode));
+    paint.setXPFactory(GrPorterDuffXPFactory::Make(SkBlendMode::kSrc));
 
     GrNoClip noClip;
     GrPathRenderer::DrawPathArgs args;
diff --git a/tests/GLProgramsTest.cpp b/tests/GLProgramsTest.cpp
index cb6f350..94afec1 100644
--- a/tests/GLProgramsTest.cpp
+++ b/tests/GLProgramsTest.cpp
@@ -203,8 +203,8 @@
     }
     sk_sp<GrFragmentProcessor> minLevelsChild(create_random_proc_tree(d, minLevels, maxLevels - 1));
     sk_sp<GrFragmentProcessor> otherChild(create_random_proc_tree(d, 1, maxLevels - 1));
-    SkXfermode::Mode mode = static_cast<SkXfermode::Mode>(d->fRandom->nextRangeU(0,
-                                                          SkXfermode::kLastCoeffMode));
+    SkBlendMode mode = static_cast<SkBlendMode>(d->fRandom->nextRangeU(0,
+                                                               (int)SkBlendMode::kLastCoeffMode));
     sk_sp<GrFragmentProcessor> fp;
     if (d->fRandom->nextF() < 0.5f) {
         fp = GrXfermodeFragmentProcessor::MakeFromTwoProcessors(std::move(minLevelsChild),
@@ -366,7 +366,7 @@
             GrProcessorTestData ptd(&random, context, context->caps(),
                                     renderTargetContext.get(), dummyTextures);
             GrPaint grPaint;
-            grPaint.setXPFactory(GrPorterDuffXPFactory::Make(SkXfermode::kSrc_Mode));
+            grPaint.setXPFactory(GrPorterDuffXPFactory::Make(SkBlendMode::kSrc));
 
             sk_sp<GrFragmentProcessor> fp(
                 GrProcessorTestFactory<GrFragmentProcessor>::MakeIdx(i, &ptd));
diff --git a/tests/GpuColorFilterTest.cpp b/tests/GpuColorFilterTest.cpp
index 723e9e9..d93f1b7 100644
--- a/tests/GpuColorFilterTest.cpp
+++ b/tests/GpuColorFilterTest.cpp
@@ -39,7 +39,7 @@
         GrColor inputColor;       // "[color]"
 
         SkColor filterColor;      // "with filter color [color]"
-        SkXfermode::Mode filterMode; // "in mode [mode]"
+        SkBlendMode filterMode; // "in mode [mode]"
 
         // "produces"
         uint32_t outputComponents; // "rgb of", "red of", "alpha of", ...
@@ -69,30 +69,30 @@
 
     GetConstantComponentTestCase filterTests[] = {
         // A color filtered with Clear produces black.
-        { kRGBA, gr_white, SK_ColorBLACK, SkXfermode::kClear_Mode, kRGBA, gr_black },
-        { kRGBA, gr_c1,    SK_ColorWHITE, SkXfermode::kClear_Mode, kRGBA, gr_black },
-        { kR,    gr_white, c1,            SkXfermode::kClear_Mode, kRGBA, gr_black },
+        { kRGBA, gr_white, SK_ColorBLACK, SkBlendMode::kClear, kRGBA, gr_black },
+        { kRGBA, gr_c1,    SK_ColorWHITE, SkBlendMode::kClear, kRGBA, gr_black },
+        { kR,    gr_white, c1,            SkBlendMode::kClear, kRGBA, gr_black },
 
         // A color filtered with a color in mode Src, produces the filter color.
-        { kRGBA, gr_c2, c1, SkXfermode::kSrc_Mode, kRGBA, gr_c1 },
-        { kA,    gr_c1, c1, SkXfermode::kSrc_Mode, kRGBA, gr_c1 },
+        { kRGBA, gr_c2, c1, SkBlendMode::kSrc, kRGBA, gr_c1 },
+        { kA,    gr_c1, c1, SkBlendMode::kSrc, kRGBA, gr_c1 },
 
         // A color filtered with SrcOver produces a color.
-        { kRGBA, gr_whiteTrans, SkColorSetARGB(128, 200, 200, 200), SkXfermode::kSrcOver_Mode, kRGBA, GrColorPackRGBA(164, 164, 164, 192)},
+        { kRGBA, gr_whiteTrans, SkColorSetARGB(128, 200, 200, 200), SkBlendMode::kSrcOver, kRGBA, GrColorPackRGBA(164, 164, 164, 192)},
         // An unknown color with known alpha filtered with SrcOver produces an unknown color with known alpha.
-        { kA   , gr_whiteTrans, SkColorSetARGB(128, 200, 200, 200), SkXfermode::kSrcOver_Mode, kA   , GrColorPackRGBA(0, 0, 0, 192)},
+        { kA   , gr_whiteTrans, SkColorSetARGB(128, 200, 200, 200), SkBlendMode::kSrcOver, kA   , GrColorPackRGBA(0, 0, 0, 192)},
         // A color with unknown alpha filtered with SrcOver produces a color with unknown alpha.
-        { kRGB , gr_whiteTrans, SkColorSetARGB(128, 200, 200, 200), SkXfermode::kSrcOver_Mode, kRGB, GrColorPackRGBA(164, 164, 164, 0)},
+        { kRGB , gr_whiteTrans, SkColorSetARGB(128, 200, 200, 200), SkBlendMode::kSrcOver, kRGB, GrColorPackRGBA(164, 164, 164, 0)},
 
         // A color filtered with DstOver produces a color.
-        { kRGBA, gr_whiteTrans, SkColorSetARGB(128, 200, 200, 200), SkXfermode::kDstOver_Mode, kRGBA, GrColorPackRGBA(178, 178, 178, 192)},
+        { kRGBA, gr_whiteTrans, SkColorSetARGB(128, 200, 200, 200), SkBlendMode::kDstOver, kRGBA, GrColorPackRGBA(178, 178, 178, 192)},
         // An unknown color with known alpha filtered with DstOver produces an unknown color with known alpha.
-        { kA   , gr_whiteTrans, SkColorSetARGB(128, 200, 200, 200), SkXfermode::kDstOver_Mode, kA   , GrColorPackRGBA(0, 0, 0, 192)},
+        { kA   , gr_whiteTrans, SkColorSetARGB(128, 200, 200, 200), SkBlendMode::kDstOver, kA   , GrColorPackRGBA(0, 0, 0, 192)},
         // A color with unknown alpha filtered with DstOver produces an unknown color.
-        { kRGB , gr_whiteTrans, SkColorSetARGB(128, 200, 200, 200), SkXfermode::kDstOver_Mode, 0    , gr_black},
+        { kRGB , gr_whiteTrans, SkColorSetARGB(128, 200, 200, 200), SkBlendMode::kDstOver, 0    , gr_black},
 
         // An unknown color with known alpha and red component filtered with Multiply produces an unknown color with known red and alpha.
-        { kR|kA , gr_whiteTrans, SkColorSetARGB(128, 200, 200, 200), SkXfermode::kModulate_Mode, kR|kA, GrColorPackRGBA(50, 0, 0, 64) }
+        { kR|kA , gr_whiteTrans, SkColorSetARGB(128, 200, 200, 200), SkBlendMode::kModulate, kR|kA, GrColorPackRGBA(50, 0, 0, 64) }
     };
 
     GrPaint paint;
diff --git a/tests/GrPorterDuffTest.cpp b/tests/GrPorterDuffTest.cpp
index 719f787..ec57377 100644
--- a/tests/GrPorterDuffTest.cpp
+++ b/tests/GrPorterDuffTest.cpp
@@ -67,7 +67,7 @@
 class GrPorterDuffTest {
 public:
     struct XPInfo {
-        XPInfo(skiatest::Reporter* reporter, SkXfermode::Mode xfermode, const GrCaps& caps,
+        XPInfo(skiatest::Reporter* reporter, SkBlendMode xfermode, const GrCaps& caps,
                const GrPipelineOptimizations& optimizations) {
             sk_sp<GrXPFactory> xpf(GrPorterDuffXPFactory::Make(xfermode));
             SkAutoTUnref<GrXferProcessor> xp(
@@ -104,12 +104,12 @@
     SkASSERT(!opt.fCoveragePOI.isSolidWhite());
     SkASSERT(opt.fCoveragePOI.isFourChannelOutput());
 
-    for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
-        SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
+    for (int m = 0; m <= (int)SkBlendMode::kLastCoeffMode; m++) {
+        SkBlendMode xfermode = static_cast<SkBlendMode>(m);
         const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, opt);
 
         switch (xfermode) {
-            case SkXfermode::kClear_Mode:
+            case SkBlendMode::kClear:
                 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(0 == xpi.fBlendedColor.fKnownColor);
                 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
@@ -121,7 +121,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrc_Mode:
+            case SkBlendMode::kSrc:
                 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -132,7 +132,7 @@
                 TEST_ASSERT(kIS2C_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDst_Mode:
+            case SkBlendMode::kDst:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kSkipDraw_OptFlag |
@@ -146,7 +146,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcOver_Mode:
+            case SkBlendMode::kSrcOver:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -157,7 +157,7 @@
                 TEST_ASSERT(kIS2C_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstOver_Mode:
+            case SkBlendMode::kDstOver:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -168,7 +168,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcIn_Mode:
+            case SkBlendMode::kSrcIn:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -179,7 +179,7 @@
                 TEST_ASSERT(kIS2C_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstIn_Mode:
+            case SkBlendMode::kDstIn:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -190,7 +190,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcOut_Mode:
+            case SkBlendMode::kSrcOut:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -201,7 +201,7 @@
                 TEST_ASSERT(kIS2C_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstOut_Mode:
+            case SkBlendMode::kDstOut:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -212,7 +212,7 @@
                 TEST_ASSERT(kISC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcATop_Mode:
+            case SkBlendMode::kSrcATop:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -223,7 +223,7 @@
                 TEST_ASSERT(kIS2C_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstATop_Mode:
+            case SkBlendMode::kDstATop:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -234,7 +234,7 @@
                 TEST_ASSERT(kIS2C_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kXor_Mode:
+            case SkBlendMode::kXor:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -245,7 +245,7 @@
                 TEST_ASSERT(kIS2C_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kPlus_Mode:
+            case SkBlendMode::kPlus:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -256,7 +256,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kModulate_Mode:
+            case SkBlendMode::kModulate:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -267,7 +267,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kScreen_Mode:
+            case SkBlendMode::kScreen:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -296,13 +296,13 @@
     SkASSERT(!optimizations.fCoveragePOI.isSolidWhite());
     SkASSERT(!optimizations.fCoveragePOI.isFourChannelOutput());
 
-    for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
-        SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
+    for (int m = 0; m <= (int)SkBlendMode::kLastCoeffMode; m++) {
+        SkBlendMode xfermode = static_cast<SkBlendMode>(m);
         const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, optimizations);
 
 
         switch (xfermode) {
-            case SkXfermode::kClear_Mode:
+            case SkBlendMode::kClear:
                 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(0 == xpi.fBlendedColor.fKnownColor);
                 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
@@ -314,7 +314,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrc_Mode:
+            case SkBlendMode::kSrc:
                 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -325,7 +325,7 @@
                 TEST_ASSERT(kIS2A_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDst_Mode:
+            case SkBlendMode::kDst:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kSkipDraw_OptFlag |
@@ -339,7 +339,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcOver_Mode:
+            case SkBlendMode::kSrcOver:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
@@ -350,7 +350,7 @@
                 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstOver_Mode:
+            case SkBlendMode::kDstOver:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
@@ -361,7 +361,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcIn_Mode:
+            case SkBlendMode::kSrcIn:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -372,7 +372,7 @@
                 TEST_ASSERT(kIS2A_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstIn_Mode:
+            case SkBlendMode::kDstIn:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -383,7 +383,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcOut_Mode:
+            case SkBlendMode::kSrcOut:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -394,7 +394,7 @@
                 TEST_ASSERT(kIS2A_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstOut_Mode:
+            case SkBlendMode::kDstOut:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
@@ -405,7 +405,7 @@
                 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcATop_Mode:
+            case SkBlendMode::kSrcATop:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
@@ -416,7 +416,7 @@
                 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstATop_Mode:
+            case SkBlendMode::kDstATop:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -427,7 +427,7 @@
                 TEST_ASSERT(kIS2C_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kXor_Mode:
+            case SkBlendMode::kXor:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
@@ -438,7 +438,7 @@
                 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kPlus_Mode:
+            case SkBlendMode::kPlus:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
@@ -449,7 +449,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kModulate_Mode:
+            case SkBlendMode::kModulate:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -460,7 +460,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kScreen_Mode:
+            case SkBlendMode::kScreen:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
@@ -490,12 +490,12 @@
     SkASSERT(optimizations.fCoveragePOI.isSolidWhite());
     SkASSERT(!optimizations.fCoveragePOI.isFourChannelOutput());
 
-    for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
-        SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
+    for (int m = 0; m <= (int)SkBlendMode::kLastCoeffMode; m++) {
+        SkBlendMode xfermode = static_cast<SkBlendMode>(m);
         const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, optimizations);
 
         switch (xfermode) {
-            case SkXfermode::kClear_Mode:
+            case SkBlendMode::kClear:
                 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(0 == xpi.fBlendedColor.fKnownColor);
                 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
@@ -508,7 +508,7 @@
                 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrc_Mode:
+            case SkBlendMode::kSrc:
                 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(229 == GrColorUnpackR(xpi.fBlendedColor.fKnownColor));
                 TEST_ASSERT(154 == GrColorUnpackB(xpi.fBlendedColor.fKnownColor));
@@ -522,7 +522,7 @@
                 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDst_Mode:
+            case SkBlendMode::kDst:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kSkipDraw_OptFlag |
@@ -536,7 +536,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcOver_Mode:
+            case SkBlendMode::kSrcOver:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag |
@@ -548,7 +548,7 @@
                 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstOver_Mode:
+            case SkBlendMode::kDstOver:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag |
@@ -560,7 +560,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcIn_Mode:
+            case SkBlendMode::kSrcIn:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
@@ -571,7 +571,7 @@
                 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstIn_Mode:
+            case SkBlendMode::kDstIn:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
@@ -582,7 +582,7 @@
                 TEST_ASSERT(kSA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcOut_Mode:
+            case SkBlendMode::kSrcOut:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
@@ -593,7 +593,7 @@
                 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstOut_Mode:
+            case SkBlendMode::kDstOut:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag |
@@ -605,7 +605,7 @@
                 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcATop_Mode:
+            case SkBlendMode::kSrcATop:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag |
@@ -617,7 +617,7 @@
                 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstATop_Mode:
+            case SkBlendMode::kDstATop:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
@@ -628,7 +628,7 @@
                 TEST_ASSERT(kSA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kXor_Mode:
+            case SkBlendMode::kXor:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag |
@@ -640,7 +640,7 @@
                 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kPlus_Mode:
+            case SkBlendMode::kPlus:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag |
@@ -652,7 +652,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kModulate_Mode:
+            case SkBlendMode::kModulate:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
@@ -663,7 +663,7 @@
                 TEST_ASSERT(kSC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kScreen_Mode:
+            case SkBlendMode::kScreen:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag |
@@ -694,12 +694,12 @@
     SkASSERT(!optimizations.fCoveragePOI.isSolidWhite());
     SkASSERT(!optimizations.fCoveragePOI.isFourChannelOutput());
 
-    for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
-        SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
+    for (int m = 0; m <= (int)SkBlendMode::kLastCoeffMode; m++) {
+        SkBlendMode xfermode = static_cast<SkBlendMode>(m);
         const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, optimizations);
 
         switch (xfermode) {
-            case SkXfermode::kClear_Mode:
+            case SkBlendMode::kClear:
                 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(0 == xpi.fBlendedColor.fKnownColor);
                 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
@@ -711,7 +711,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrc_Mode:
+            case SkBlendMode::kSrc:
                 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(255 == GrColorUnpackA(xpi.fBlendedColor.fKnownColor));
                 TEST_ASSERT(kA_GrColorComponentFlag == xpi.fBlendedColor.fKnownColorFlags);
@@ -723,7 +723,7 @@
                 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDst_Mode:
+            case SkBlendMode::kDst:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kSkipDraw_OptFlag |
@@ -737,7 +737,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcOver_Mode:
+            case SkBlendMode::kSrcOver:
                 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(255 == GrColorUnpackA(xpi.fBlendedColor.fKnownColor));
                 TEST_ASSERT(kA_GrColorComponentFlag == xpi.fBlendedColor.fKnownColorFlags);
@@ -749,7 +749,7 @@
                 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstOver_Mode:
+            case SkBlendMode::kDstOver:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
@@ -760,7 +760,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcIn_Mode:
+            case SkBlendMode::kSrcIn:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
@@ -771,7 +771,7 @@
                 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstIn_Mode:
+            case SkBlendMode::kDstIn:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kSkipDraw_OptFlag |
@@ -785,7 +785,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcOut_Mode:
+            case SkBlendMode::kSrcOut:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
@@ -796,7 +796,7 @@
                 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstOut_Mode:
+            case SkBlendMode::kDstOut:
                 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(0 == xpi.fBlendedColor.fKnownColor);
                 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
@@ -808,7 +808,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcATop_Mode:
+            case SkBlendMode::kSrcATop:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
@@ -819,7 +819,7 @@
                 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstATop_Mode:
+            case SkBlendMode::kDstATop:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
@@ -830,7 +830,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kXor_Mode:
+            case SkBlendMode::kXor:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
@@ -841,7 +841,7 @@
                 TEST_ASSERT(kISA_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kPlus_Mode:
+            case SkBlendMode::kPlus:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
@@ -852,7 +852,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kModulate_Mode:
+            case SkBlendMode::kModulate:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kNone_OptFlags) == xpi.fOptFlags);
@@ -863,7 +863,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kScreen_Mode:
+            case SkBlendMode::kScreen:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kCanTweakAlphaForCoverage_OptFlag) == xpi.fOptFlags);
@@ -893,12 +893,12 @@
     SkASSERT(optimizations.fCoveragePOI.isSolidWhite());
     SkASSERT(!optimizations.fCoveragePOI.isFourChannelOutput());
 
-    for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
-        SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
+    for (int m = 0; m <= (int)SkBlendMode::kLastCoeffMode; m++) {
+        SkBlendMode xfermode = static_cast<SkBlendMode>(m);
         const GrPorterDuffTest::XPInfo xpi(reporter, xfermode, caps, optimizations);
 
         switch (xfermode) {
-            case SkXfermode::kClear_Mode:
+            case SkBlendMode::kClear:
                 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(0 == xpi.fBlendedColor.fKnownColor);
                 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
@@ -911,7 +911,7 @@
                 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrc_Mode:
+            case SkBlendMode::kSrc:
                 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(82 == GrColorUnpackG(xpi.fBlendedColor.fKnownColor));
                 TEST_ASSERT(255 == GrColorUnpackA(xpi.fBlendedColor.fKnownColor));
@@ -925,7 +925,7 @@
                 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDst_Mode:
+            case SkBlendMode::kDst:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kSkipDraw_OptFlag |
@@ -939,7 +939,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcOver_Mode:
+            case SkBlendMode::kSrcOver:
                 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(82 == GrColorUnpackG(xpi.fBlendedColor.fKnownColor));
                 TEST_ASSERT(255 == GrColorUnpackA(xpi.fBlendedColor.fKnownColor));
@@ -953,7 +953,7 @@
                 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstOver_Mode:
+            case SkBlendMode::kDstOver:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag |
@@ -965,7 +965,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcIn_Mode:
+            case SkBlendMode::kSrcIn:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
@@ -976,7 +976,7 @@
                 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstIn_Mode:
+            case SkBlendMode::kDstIn:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kSkipDraw_OptFlag |
@@ -990,7 +990,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(!xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcOut_Mode:
+            case SkBlendMode::kSrcOut:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
@@ -1001,7 +1001,7 @@
                 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstOut_Mode:
+            case SkBlendMode::kDstOut:
                 TEST_ASSERT(!xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(0 == xpi.fBlendedColor.fKnownColor);
                 TEST_ASSERT(kRGBA_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
@@ -1014,7 +1014,7 @@
                 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kSrcATop_Mode:
+            case SkBlendMode::kSrcATop:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
@@ -1025,7 +1025,7 @@
                 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kDstATop_Mode:
+            case SkBlendMode::kDstATop:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag |
@@ -1037,7 +1037,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kXor_Mode:
+            case SkBlendMode::kXor:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
@@ -1048,7 +1048,7 @@
                 TEST_ASSERT(kZero_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kPlus_Mode:
+            case SkBlendMode::kPlus:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag |
@@ -1060,7 +1060,7 @@
                 TEST_ASSERT(kOne_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kModulate_Mode:
+            case SkBlendMode::kModulate:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag) == xpi.fOptFlags);
@@ -1071,7 +1071,7 @@
                 TEST_ASSERT(kSC_GrBlendCoeff == xpi.fBlendInfo.fDstBlend);
                 TEST_ASSERT(xpi.fBlendInfo.fWriteColor);
                 break;
-            case SkXfermode::kScreen_Mode:
+            case SkBlendMode::kScreen:
                 TEST_ASSERT(xpi.fBlendedColor.fWillBlendWithDst);
                 TEST_ASSERT(kNone_GrColorComponentFlags == xpi.fBlendedColor.fKnownColorFlags);
                 TEST_ASSERT((kIgnoreCoverage_OptFlag |
@@ -1121,7 +1121,7 @@
     SkASSERT(kRGBA_GrColorComponentFlags == colorPOI.validFlags());
     SkASSERT(covPOI.isFourChannelOutput());
 
-    sk_sp<GrXPFactory> xpf(GrPorterDuffXPFactory::Make(SkXfermode::kSrcOver_Mode));
+    sk_sp<GrXPFactory> xpf(GrPorterDuffXPFactory::Make(SkBlendMode::kSrcOver));
     TEST_ASSERT(!xpf->willNeedDstTexture(caps, opts));
 
     SkAutoTUnref<GrXferProcessor> xp(
@@ -1194,8 +1194,8 @@
                 optimizations.fCoveragePOI.calcWithInitialValues(nullptr, 0, GrColorPackA4(255),
                                                                  kRGBA_GrColorComponentFlags, true);
             }
-            for (int m = 0; m <= SkXfermode::kLastCoeffMode; m++) {
-                SkXfermode::Mode xfermode = static_cast<SkXfermode::Mode>(m);
+            for (int m = 0; m <= (int)SkBlendMode::kLastCoeffMode; m++) {
+                SkBlendMode xfermode = static_cast<SkBlendMode>(m);
                 sk_sp<GrXPFactory> xpf(GrPorterDuffXPFactory::Make(xfermode));
                 GrXferProcessor::DstTexture* dstTexture =
                     xpf->willNeedDstTexture(caps, optimizations) ? &fakeDstTexture : 0;
diff --git a/tests/ImageFilterTest.cpp b/tests/ImageFilterTest.cpp
index 7f0c69c..42ffd38 100644
--- a/tests/ImageFilterTest.cpp
+++ b/tests/ImageFilterTest.cpp
@@ -143,7 +143,7 @@
 
         {
             sk_sp<SkColorFilter> cf(SkColorFilter::MakeModeFilter(SK_ColorRED,
-                                                                  SkXfermode::kSrcIn_Mode));
+                                                                  SkBlendMode::kSrcIn));
 
             this->addFilter("color filter",
                 SkColorFilterImageFilter::Make(std::move(cf), input, cropRect));
@@ -191,7 +191,7 @@
         }
 
         this->addFilter("merge", SkMergeImageFilter::Make(input, input,
-                                                          SkXfermode::kSrcOver_Mode,
+                                                          SkBlendMode::kSrcOver,
                                                           cropRect));
 
         {
@@ -208,7 +208,7 @@
 
             this->addFilter("merge with disjoint inputs", SkMergeImageFilter::Make(
                   std::move(paintFilterLeft), std::move(paintFilterRight),
-                  SkXfermode::kSrcOver_Mode, cropRect));
+                  SkBlendMode::kSrcOver, cropRect));
         }
 
         this->addFilter("offset",
@@ -358,7 +358,7 @@
 static sk_sp<SkImageFilter> make_blue(sk_sp<SkImageFilter> input,
                                       const SkImageFilter::CropRect* cropRect) {
     sk_sp<SkColorFilter> filter(SkColorFilter::MakeModeFilter(SK_ColorBLUE,
-                                                              SkXfermode::kSrcIn_Mode));
+                                                              SkBlendMode::kSrcIn));
     return SkColorFilterImageFilter::Make(std::move(filter), std::move(input), cropRect);
 }
 
@@ -686,7 +686,7 @@
     sk_sp<SkSpecialImage> source(create_empty_special_image(context, 5));
     SkImageFilter::OutputProperties noColorSpace(nullptr);
     SkImageFilter::Context ctx(SkMatrix::I(), SkIRect::MakeXYWH(0, 0, 1, 1), nullptr, noColorSpace);
-    sk_sp<SkColorFilter> green(SkColorFilter::MakeModeFilter(SK_ColorGREEN, SkXfermode::kSrc_Mode));
+    sk_sp<SkColorFilter> green(SkColorFilter::MakeModeFilter(SK_ColorGREEN, SkBlendMode::kSrc));
     SkASSERT(green->affectsTransparentBlack());
     sk_sp<SkImageFilter> greenFilter(SkColorFilterImageFilter::Make(std::move(green),
                                                                     std::move(failFilter)));
@@ -769,7 +769,7 @@
     SkMatrix matrix;
     matrix.setTranslate(SkIntToScalar(50), 0);
 
-    sk_sp<SkColorFilter> cf(SkColorFilter::MakeModeFilter(SK_ColorWHITE, SkXfermode::kSrc_Mode));
+    sk_sp<SkColorFilter> cf(SkColorFilter::MakeModeFilter(SK_ColorWHITE, SkBlendMode::kSrc));
     sk_sp<SkImageFilter> cfif(SkColorFilterImageFilter::Make(std::move(cf), nullptr));
     sk_sp<SkImageFilter> imageFilter(SkImageFilter::MakeMatrixFilter(matrix,
                                                                      kNone_SkFilterQuality,
@@ -960,7 +960,7 @@
     greenBM.eraseColor(SK_ColorGREEN);
     sk_sp<SkImage> greenImage(SkImage::MakeFromBitmap(greenBM));
     sk_sp<SkImageFilter> source(SkImageSource::Make(std::move(greenImage)));
-    sk_sp<SkImageFilter> merge(SkMergeImageFilter::Make(source, source));
+    sk_sp<SkImageFilter> merge(SkMergeImageFilter::Make(source, source, SkBlendMode::kSrcOver));
 
     sk_sp<SkSpecialImage> srcImg(create_empty_special_image(context, 1));
 
@@ -1299,7 +1299,7 @@
     SkPictureRecorder recorder;
 
     sk_sp<SkColorFilter> green(SkColorFilter::MakeModeFilter(SK_ColorGREEN,
-                                                             SkXfermode::kSrc_Mode));
+                                                             SkBlendMode::kSrc));
     sk_sp<SkImageFilter> imageFilter(SkColorFilterImageFilter::Make(green, nullptr));
     SkPaint imageFilterPaint;
     imageFilterPaint.setImageFilter(std::move(imageFilter));
@@ -1425,7 +1425,7 @@
     bitmap.eraseARGB(255, 255, 255, 255);
 
     sk_sp<SkColorFilter> green(SkColorFilter::MakeModeFilter(SK_ColorGREEN,
-                                                             SkXfermode::kSrcIn_Mode));
+                                                             SkBlendMode::kSrcIn));
     sk_sp<SkImageFilter> greenFilter(SkColorFilterImageFilter::Make(green, nullptr));
     SkImageFilter::CropRect cropRect(SkRect::MakeEmpty());
     sk_sp<SkImageFilter> croppedOut(SkColorFilterImageFilter::Make(green, nullptr, &cropRect));
@@ -1848,7 +1848,7 @@
  */
 DEF_TEST(ImageFilterComplexCTM, reporter) {
     // just need a colorfilter to exercise the corresponding imagefilter
-    sk_sp<SkColorFilter> cf = SkColorFilter::MakeModeFilter(SK_ColorRED, SkXfermode::kSrcATop_Mode);
+    sk_sp<SkColorFilter> cf = SkColorFilter::MakeModeFilter(SK_ColorRED, SkBlendMode::kSrcATop);
     sk_sp<SkImageFilter> cfif = SkColorFilterImageFilter::Make(cf, nullptr);    // can handle
     sk_sp<SkImageFilter> blif = SkBlurImageFilter::Make(3, 3, nullptr);         // cannot handle
 
@@ -1858,13 +1858,13 @@
     } recs[] = {
         { cfif,                                     true  },
         { SkColorFilterImageFilter::Make(cf, cfif), true  },
-        { SkMergeImageFilter::Make(cfif, cfif),     true  },
+        { SkMergeImageFilter::Make(cfif, cfif, SkBlendMode::kSrcOver),     true  },
         { SkComposeImageFilter::Make(cfif, cfif),   true  },
 
         { blif,                                     false },
         { SkBlurImageFilter::Make(3, 3, cfif),      false },
         { SkColorFilterImageFilter::Make(cf, blif), false },
-        { SkMergeImageFilter::Make(cfif, blif),     false },
+        { SkMergeImageFilter::Make(cfif, blif, SkBlendMode::kSrcOver),     false },
         { SkComposeImageFilter::Make(blif, cfif),   false },
     };
     
diff --git a/tests/SRGBMipMapTest.cpp b/tests/SRGBMipMapTest.cpp
index a7f846c..073f667 100644
--- a/tests/SRGBMipMapTest.cpp
+++ b/tests/SRGBMipMapTest.cpp
@@ -129,7 +129,7 @@
     SkRect rect = SkRect::MakeWH(SkIntToScalar(rtS), SkIntToScalar(rtS));
     GrNoClip noClip;
     GrPaint paint;
-    paint.setPorterDuffXPFactory(SkXfermode::kSrc_Mode);
+    paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
     GrTextureParams mipMapParams(SkShader::kRepeat_TileMode, GrTextureParams::kMipMap_FilterMode);
     paint.addColorTextureProcessor(texture, nullptr, SkMatrix::MakeScale(0.5f), mipMapParams);
 
diff --git a/tests/TessellatingPathRendererTests.cpp b/tests/TessellatingPathRendererTests.cpp
index 324ea4b..db3b5ea 100644
--- a/tests/TessellatingPathRendererTests.cpp
+++ b/tests/TessellatingPathRendererTests.cpp
@@ -254,7 +254,7 @@
     GrTessellatingPathRenderer tess;
 
     GrPaint paint;
-    paint.setXPFactory(GrPorterDuffXPFactory::Make(SkXfermode::kSrc_Mode));
+    paint.setXPFactory(GrPorterDuffXPFactory::Make(SkBlendMode::kSrc));
 
     GrNoClip noClip;
     GrStyle style(SkStrokeRec::kFill_InitStyle);