diff --git a/gn/core.gni b/gn/core.gni
index de72d62..86c520f 100644
--- a/gn/core.gni
+++ b/gn/core.gni
@@ -586,7 +586,6 @@
   "$_src/core/SkWritePixelsRec.h",
   "$_src/core/SkWriter32.cpp",
   "$_src/core/SkWriter32.h",
-  "$_src/core/SkXfermode.cpp",
   "$_src/core/SkXfermodeInterpretation.cpp",
   "$_src/core/SkXfermodeInterpretation.h",
   "$_src/core/SkYUVAInfo.cpp",
diff --git a/public.bzl b/public.bzl
index 18438b2..a1f6669 100644
--- a/public.bzl
+++ b/public.bzl
@@ -701,7 +701,6 @@
     "src/core/SkWritePixelsRec.h",
     "src/core/SkWriter32.cpp",
     "src/core/SkWriter32.h",
-    "src/core/SkXfermode.cpp",
     "src/core/SkXfermodeInterpretation.cpp",
     "src/core/SkXfermodeInterpretation.h",
     "src/core/SkYUVAInfo.cpp",
diff --git a/src/core/BUILD.bazel b/src/core/BUILD.bazel
index f09b220..2a5e09e 100644
--- a/src/core/BUILD.bazel
+++ b/src/core/BUILD.bazel
@@ -344,7 +344,6 @@
     "SkWritePixelsRec.h",
     "SkWriter32.cpp",
     "SkWriter32.h",
-    "SkXfermode.cpp",
     "SkXfermodeInterpretation.cpp",
     "SkXfermodeInterpretation.h",
     "SkYUVAInfo.cpp",
diff --git a/src/core/SkBlendMode.cpp b/src/core/SkBlendMode.cpp
index e8b8705..dc44ee3 100644
--- a/src/core/SkBlendMode.cpp
+++ b/src/core/SkBlendMode.cpp
@@ -159,3 +159,40 @@
     p.run(0,0, 1,1);
     return res_storage;
 }
+
+const char* SkBlendMode_Name(SkBlendMode bm) {
+    switch (bm) {
+        case SkBlendMode::kClear:      return "Clear";
+        case SkBlendMode::kSrc:        return "Src";
+        case SkBlendMode::kDst:        return "Dst";
+        case SkBlendMode::kSrcOver:    return "SrcOver";
+        case SkBlendMode::kDstOver:    return "DstOver";
+        case SkBlendMode::kSrcIn:      return "SrcIn";
+        case SkBlendMode::kDstIn:      return "DstIn";
+        case SkBlendMode::kSrcOut:     return "SrcOut";
+        case SkBlendMode::kDstOut:     return "DstOut";
+        case SkBlendMode::kSrcATop:    return "SrcATop";
+        case SkBlendMode::kDstATop:    return "DstATop";
+        case SkBlendMode::kXor:        return "Xor";
+        case SkBlendMode::kPlus:       return "Plus";
+        case SkBlendMode::kModulate:   return "Modulate";
+        case SkBlendMode::kScreen:     return "Screen";
+
+        case SkBlendMode::kOverlay:    return "Overlay";
+        case SkBlendMode::kDarken:     return "Darken";
+        case SkBlendMode::kLighten:    return "Lighten";
+        case SkBlendMode::kColorDodge: return "ColorDodge";
+        case SkBlendMode::kColorBurn:  return "ColorBurn";
+        case SkBlendMode::kHardLight:  return "HardLight";
+        case SkBlendMode::kSoftLight:  return "SoftLight";
+        case SkBlendMode::kDifference: return "Difference";
+        case SkBlendMode::kExclusion:  return "Exclusion";
+        case SkBlendMode::kMultiply:   return "Multiply";
+
+        case SkBlendMode::kHue:        return "Hue";
+        case SkBlendMode::kSaturation: return "Saturation";
+        case SkBlendMode::kColor:      return "Color";
+        case SkBlendMode::kLuminosity: return "Luminosity";
+    }
+    SkUNREACHABLE;
+}
diff --git a/src/core/SkBlendModePriv.h b/src/core/SkBlendModePriv.h
index 1b1a592..b67c6de 100644
--- a/src/core/SkBlendModePriv.h
+++ b/src/core/SkBlendModePriv.h
@@ -32,9 +32,4 @@
 
 SkPMColor4f SkBlendMode_Apply(SkBlendMode, const SkPMColor4f& src, const SkPMColor4f& dst);
 
-#if defined(SK_GANESH)
-#include "src/gpu/ganesh/GrXferProcessor.h"
-const GrXPFactory* SkBlendMode_AsXPFactory(SkBlendMode);
-#endif
-
 #endif
diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp
deleted file mode 100644
index 8011e27..0000000
--- a/src/core/SkXfermode.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2006 The Android Open Source Project
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "include/core/SkBlendMode.h"
-
-#if defined(SK_GANESH)
-#include "src/gpu/ganesh/GrFragmentProcessor.h"
-#include "src/gpu/ganesh/effects/GrCustomXfermode.h"
-#include "src/gpu/ganesh/effects/GrPorterDuffXferProcessor.h"
-#endif
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-const char* SkBlendMode_Name(SkBlendMode bm) {
-    switch (bm) {
-        case SkBlendMode::kClear:      return "Clear";
-        case SkBlendMode::kSrc:        return "Src";
-        case SkBlendMode::kDst:        return "Dst";
-        case SkBlendMode::kSrcOver:    return "SrcOver";
-        case SkBlendMode::kDstOver:    return "DstOver";
-        case SkBlendMode::kSrcIn:      return "SrcIn";
-        case SkBlendMode::kDstIn:      return "DstIn";
-        case SkBlendMode::kSrcOut:     return "SrcOut";
-        case SkBlendMode::kDstOut:     return "DstOut";
-        case SkBlendMode::kSrcATop:    return "SrcATop";
-        case SkBlendMode::kDstATop:    return "DstATop";
-        case SkBlendMode::kXor:        return "Xor";
-        case SkBlendMode::kPlus:       return "Plus";
-        case SkBlendMode::kModulate:   return "Modulate";
-        case SkBlendMode::kScreen:     return "Screen";
-
-        case SkBlendMode::kOverlay:    return "Overlay";
-        case SkBlendMode::kDarken:     return "Darken";
-        case SkBlendMode::kLighten:    return "Lighten";
-        case SkBlendMode::kColorDodge: return "ColorDodge";
-        case SkBlendMode::kColorBurn:  return "ColorBurn";
-        case SkBlendMode::kHardLight:  return "HardLight";
-        case SkBlendMode::kSoftLight:  return "SoftLight";
-        case SkBlendMode::kDifference: return "Difference";
-        case SkBlendMode::kExclusion:  return "Exclusion";
-        case SkBlendMode::kMultiply:   return "Multiply";
-
-        case SkBlendMode::kHue:        return "Hue";
-        case SkBlendMode::kSaturation: return "Saturation";
-        case SkBlendMode::kColor:      return "Color";
-        case SkBlendMode::kLuminosity: return "Luminosity";
-    }
-    SkUNREACHABLE;
-}
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-#if defined(SK_GANESH)
-const GrXPFactory* SkBlendMode_AsXPFactory(SkBlendMode mode) {
-    if (SkBlendMode_AsCoeff(mode, nullptr, nullptr)) {
-        const GrXPFactory* result = GrPorterDuffXPFactory::Get(mode);
-        SkASSERT(result);
-        return result;
-    }
-
-    SkASSERT(GrCustomXfermode::IsSupportedMode(mode));
-    return GrCustomXfermode::Get(mode);
-}
-#endif
diff --git a/src/core/SkXfermodePriv.h b/src/core/SkXfermodePriv.h
deleted file mode 100644
index 1bd8f51..0000000
--- a/src/core/SkXfermodePriv.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2006 The Android Open Source Project
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef SkXfermodePriv_DEFINED
-#define SkXfermodePriv_DEFINED
-
-#include "include/core/SkBlendMode.h"
-#include "include/core/SkColor.h"
-#include "include/core/SkRefCnt.h"
-
-class SkXfermode : public SkRefCnt {
-public:
-    virtual void xfer32(SkPMColor dst[], const SkPMColor src[], int count,
-                        const SkAlpha aa[]) const = 0;
-
-    /** Return an SkXfermode object for the specified mode.
-     */
-    static sk_sp<SkXfermode> Make(SkBlendMode);
-
-    /**
-     *  Skia maintains global xfermode objects corresponding to each BlendMode. This returns a
-     *  ptr to that global xfermode (or null if the mode is srcover). Thus the caller may use
-     *  the returned ptr, but it should leave its refcnt untouched.
-     */
-    static SkXfermode* Peek(SkBlendMode mode) {
-        sk_sp<SkXfermode> xfer = Make(mode);
-        if (!xfer) {
-            SkASSERT(SkBlendMode::kSrcOver == mode);
-            return nullptr;
-        }
-        SkASSERT(!xfer->unique());
-        return xfer.get();
-    }
-
-protected:
-    SkXfermode() {}
-};
-
-#endif
diff --git a/src/gpu/ganesh/Device.cpp b/src/gpu/ganesh/Device.cpp
index 0b2763e..510254c 100644
--- a/src/gpu/ganesh/Device.cpp
+++ b/src/gpu/ganesh/Device.cpp
@@ -49,7 +49,6 @@
 #include "include/private/chromium/Slug.h"  // IWYU pragma: keep
 #include "include/private/gpu/ganesh/GrTypesPriv.h"
 #include "src/base/SkTLazy.h"
-#include "src/core/SkBlendModePriv.h"
 #include "src/core/SkDevice.h"
 #include "src/core/SkDrawBase.h"
 #include "src/core/SkImageFilterCache.h"
@@ -85,6 +84,7 @@
 #include "src/gpu/ganesh/GrTextureProxy.h"
 #include "src/gpu/ganesh/GrTracing.h"
 #include "src/gpu/ganesh/GrUserStencilSettings.h"
+#include "src/gpu/ganesh/GrXferProcessor.h"
 #include "src/gpu/ganesh/SkGr.h"
 #include "src/gpu/ganesh/SurfaceContext.h"
 #include "src/gpu/ganesh/SurfaceDrawContext.h"
@@ -581,7 +581,7 @@
     GrPaint grPaint;
     grPaint.setColor4f(dstColor);
     if (mode != SkBlendMode::kSrcOver) {
-        grPaint.setXPFactory(SkBlendMode_AsXPFactory(mode));
+        grPaint.setXPFactory(GrXPFactory::FromBlendMode(mode));
     }
 
     if (clip) {
diff --git a/src/gpu/ganesh/GrProcessorSet.cpp b/src/gpu/ganesh/GrProcessorSet.cpp
index 9554a00..23896e4 100644
--- a/src/gpu/ganesh/GrProcessorSet.cpp
+++ b/src/gpu/ganesh/GrProcessorSet.cpp
@@ -4,11 +4,11 @@
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
+#include "src/gpu/ganesh/GrProcessorSet.h"
 
 #include "src/core/SkBlendModePriv.h"
 #include "src/gpu/ganesh/GrAppliedClip.h"
 #include "src/gpu/ganesh/GrCaps.h"
-#include "src/gpu/ganesh/GrProcessorSet.h"
 #include "src/gpu/ganesh/GrUserStencilSettings.h"
 #include "src/gpu/ganesh/GrXferProcessor.h"
 #include "src/gpu/ganesh/effects/GrPorterDuffXferProcessor.h"
@@ -29,7 +29,7 @@
     SkDEBUGCODE(paint.fAlive = false;)
 }
 
-GrProcessorSet::GrProcessorSet(SkBlendMode mode) : fXP(SkBlendMode_AsXPFactory(mode)) {}
+GrProcessorSet::GrProcessorSet(SkBlendMode mode) : fXP(GrXPFactory::FromBlendMode(mode)) {}
 
 GrProcessorSet::GrProcessorSet(std::unique_ptr<GrFragmentProcessor> colorFP)
         : fXP((const GrXPFactory*)nullptr) {
diff --git a/src/gpu/ganesh/GrXferProcessor.cpp b/src/gpu/ganesh/GrXferProcessor.cpp
index c1a2d28..f6217ad 100644
--- a/src/gpu/ganesh/GrXferProcessor.cpp
+++ b/src/gpu/ganesh/GrXferProcessor.cpp
@@ -7,11 +7,18 @@
 
 #include "src/gpu/ganesh/GrXferProcessor.h"
 
+#include "include/core/SkBlendMode.h"
+#include "include/core/SkString.h"
 #include "src/gpu/KeyBuilder.h"
 #include "src/gpu/ganesh/GrCaps.h"
-#include "src/gpu/ganesh/GrPipeline.h"
+#include "src/gpu/ganesh/GrShaderCaps.h"
+#include "src/gpu/ganesh/effects/GrCustomXfermode.h"
+#include "src/gpu/ganesh/effects/GrPorterDuffXferProcessor.h"
 #include "src/gpu/ganesh/glsl/GrGLSLFragmentShaderBuilder.h"
-#include "src/gpu/ganesh/glsl/GrGLSLProgramDataManager.h"
+
+#include <cstdint>
+
+enum class GrClampType;
 
 GrXferProcessor::GrXferProcessor(ClassID classID)
         : INHERITED(classID)
@@ -92,6 +99,17 @@
     }
 }
 
+const GrXPFactory* GrXPFactory::FromBlendMode(SkBlendMode mode) {
+    if (SkBlendMode_AsCoeff(mode, nullptr, nullptr)) {
+        const GrXPFactory* result = GrPorterDuffXPFactory::Get(mode);
+        SkASSERT(result);
+        return result;
+    }
+
+    SkASSERT(GrCustomXfermode::IsSupportedMode(mode));
+    return GrCustomXfermode::Get(mode);
+}
+
 //////////////////////////////////////////////////////////////////////////////
 
 using ProgramImpl = GrXferProcessor::ProgramImpl;
diff --git a/src/gpu/ganesh/GrXferProcessor.h b/src/gpu/ganesh/GrXferProcessor.h
index 1cecda3..85fada5 100644
--- a/src/gpu/ganesh/GrXferProcessor.h
+++ b/src/gpu/ganesh/GrXferProcessor.h
@@ -8,19 +8,27 @@
 #ifndef GrXferProcessor_DEFINED
 #define GrXferProcessor_DEFINED
 
+#include "include/core/SkRefCnt.h"
 #include "include/gpu/GrTypes.h"
+#include "include/private/base/SkAssert.h"
+#include "include/private/base/SkTo.h"
 #include "src/gpu/Blend.h"
+#include "src/gpu/Swizzle.h"
+#include "src/gpu/ganesh/GrCaps.h"
 #include "src/gpu/ganesh/GrNonAtomicRef.h"
 #include "src/gpu/ganesh/GrProcessor.h"
 #include "src/gpu/ganesh/GrProcessorAnalysis.h"
 #include "src/gpu/ganesh/glsl/GrGLSLUniformHandler.h"
 
-class GrGLSLXPFragmentBuilder;
+#include <memory>
+
 class GrGLSLProgramDataManager;
+class GrGLSLXPFragmentBuilder;
+enum class GrClampType;
+enum class SkBlendMode;
+namespace skgpu { class KeyBuilder; }
 struct GrShaderCaps;
-namespace skgpu {
-    class KeyBuilder;
-}
+
 /**
  * Barriers for blending. When a shader reads the dst directly, an Xfer barrier is sometimes
  * required after a pixel has been written, before it can be safely read again.
@@ -46,7 +54,7 @@
  * GrXferProcessor is responsible for implementing the xfer mode that blends the src color and dst
  * color, and for applying any coverage. It does this by emitting fragment shader code and
  * controlling the fixed-function blend state. When dual-source blending is available, it may also
- * write a seconday fragment shader output color. GrXferProcessor has two modes of operation:
+ * write a secondary fragment shader output color. GrXferProcessor has two modes of operation:
  *
  * Dst read: When allowed by the backend API, or when supplied a texture of the destination, the
  * GrXferProcessor may read the destination color. While operating in this mode, the subclass only
@@ -240,6 +248,8 @@
                                                     const GrCaps&,
                                                     GrClampType);
 
+    static const GrXPFactory* FromBlendMode(SkBlendMode);
+
 protected:
     constexpr GrXPFactory() {}
 
diff --git a/src/gpu/ganesh/SkGr.cpp b/src/gpu/ganesh/SkGr.cpp
index c134215..e70695c 100644
--- a/src/gpu/ganesh/SkGr.cpp
+++ b/src/gpu/ganesh/SkGr.cpp
@@ -25,7 +25,6 @@
 #include "include/private/SkIDChangeListener.h"
 #include "include/private/base/SkTPin.h"
 #include "include/private/gpu/ganesh/GrTypesPriv.h"
-#include "src/core/SkBlendModePriv.h"
 #include "src/core/SkBlenderBase.h"
 #include "src/core/SkMessageBus.h"
 #include "src/core/SkPaintPriv.h"
@@ -45,6 +44,7 @@
 #include "src/gpu/ganesh/GrSurfaceProxy.h"
 #include "src/gpu/ganesh/GrSurfaceProxyView.h"
 #include "src/gpu/ganesh/GrTextureProxy.h"
+#include "src/gpu/ganesh/GrXferProcessor.h"
 #include "src/gpu/ganesh/effects/GrSkSLFP.h"
 #include "src/gpu/ganesh/effects/GrTextureEffect.h"
 #include "src/shaders/SkShaderBase.h"
@@ -507,7 +507,7 @@
         // on the GrPaint to also be null (also kSrcOver).
         SkASSERT(!grPaint->getXPFactory());
         if (bm.value() != SkBlendMode::kSrcOver) {
-            grPaint->setXPFactory(SkBlendMode_AsXPFactory(bm.value()));
+            grPaint->setXPFactory(GrXPFactory::FromBlendMode(bm.value()));
         }
     } else {
         // Apply a custom blend against the surface color, and force the XP to kSrc so that the
@@ -519,7 +519,7 @@
         if (!paintFP) {
             return false;
         }
-        grPaint->setXPFactory(SkBlendMode_AsXPFactory(SkBlendMode::kSrc));
+        grPaint->setXPFactory(GrXPFactory::FromBlendMode(SkBlendMode::kSrc));
     }
 
     if (GrColorTypeClampType(dstColorInfo.colorType()) == GrClampType::kManual) {
diff --git a/src/gpu/ganesh/SurfaceDrawContext.cpp b/src/gpu/ganesh/SurfaceDrawContext.cpp
index ccc46b9..a42b944 100644
--- a/src/gpu/ganesh/SurfaceDrawContext.cpp
+++ b/src/gpu/ganesh/SurfaceDrawContext.cpp
@@ -50,6 +50,7 @@
 #include "src/gpu/ganesh/GrStencilSettings.h"
 #include "src/gpu/ganesh/GrStyle.h"
 #include "src/gpu/ganesh/GrTracing.h"
+#include "src/gpu/ganesh/GrXferProcessor.h"
 #include "src/gpu/ganesh/PathRenderer.h"
 #include "src/gpu/ganesh/SkGr.h"
 #include "src/gpu/ganesh/effects/GrBlendFragmentProcessor.h"
@@ -596,7 +597,7 @@
         fp = GrBlendFragmentProcessor::Make<SkBlendMode::kModulate>(std::move(fp), nullptr);
         paint.setColorFragmentProcessor(std::move(fp));
         if (blendMode != SkBlendMode::kSrcOver) {
-            paint.setXPFactory(SkBlendMode_AsXPFactory(blendMode));
+            paint.setXPFactory(GrXPFactory::FromBlendMode(blendMode));
         }
         this->fillRectToRect(clip, std::move(paint), GrAA::kYes, viewMatrix, dstRect, srcRect);
         return;
diff --git a/src/gpu/ganesh/ops/AtlasRenderTask.cpp b/src/gpu/ganesh/ops/AtlasRenderTask.cpp
index b5a6be2..fec7012 100644
--- a/src/gpu/ganesh/ops/AtlasRenderTask.cpp
+++ b/src/gpu/ganesh/ops/AtlasRenderTask.cpp
@@ -14,6 +14,7 @@
 #include "src/gpu/ganesh/GrOpFlushState.h"
 #include "src/gpu/ganesh/GrOpsTypes.h"
 #include "src/gpu/ganesh/GrSurfaceProxyPriv.h"
+#include "src/gpu/ganesh/GrXferProcessor.h"
 #include "src/gpu/ganesh/geometry/GrQuad.h"
 #include "src/gpu/ganesh/ops/FillRectOp.h"
 #include "src/gpu/ganesh/ops/PathStencilCoverOp.h"
@@ -154,7 +155,7 @@
                                        const GrUserStencilSettings* stencil) {
     GrPaint paint;
     paint.setColor4f(color);
-    paint.setXPFactory(SkBlendMode_AsXPFactory(SkBlendMode::kSrc));
+    paint.setXPFactory(GrXPFactory::FromBlendMode(SkBlendMode::kSrc));
     GrQuad quad(rect);
     DrawQuad drawQuad{quad, quad, GrQuadAAFlags::kAll};
     auto op = FillRectOp::Make(rContext, std::move(paint), GrAAType::kMSAA, &drawQuad, stencil);
diff --git a/src/gpu/ganesh/ops/TextureOp.cpp b/src/gpu/ganesh/ops/TextureOp.cpp
index 150af2f..740891f 100644
--- a/src/gpu/ganesh/ops/TextureOp.cpp
+++ b/src/gpu/ganesh/ops/TextureOp.cpp
@@ -30,6 +30,7 @@
 #include "src/gpu/ganesh/GrShaderCaps.h"
 #include "src/gpu/ganesh/GrTexture.h"
 #include "src/gpu/ganesh/GrTextureProxy.h"
+#include "src/gpu/ganesh/GrXferProcessor.h"
 #include "src/gpu/ganesh/SkGr.h"
 #include "src/gpu/ganesh/SurfaceDrawContext.h"
 #include "src/gpu/ganesh/effects/GrBlendFragmentProcessor.h"
@@ -1181,7 +1182,7 @@
         GrSamplerState samplerState(GrSamplerState::WrapMode::kClamp, filter, mm);
         GrPaint paint;
         paint.setColor4f(color);
-        paint.setXPFactory(SkBlendMode_AsXPFactory(blendMode));
+        paint.setXPFactory(GrXPFactory::FromBlendMode(blendMode));
 
         std::unique_ptr<GrFragmentProcessor> fp;
         const auto& caps = *context->priv().caps();
diff --git a/tests/BulkRectTest.cpp b/tests/BulkRectTest.cpp
index 6369352..b3fdaef 100644
--- a/tests/BulkRectTest.cpp
+++ b/tests/BulkRectTest.cpp
@@ -23,7 +23,6 @@
 #include "include/gpu/GrTypes.h"
 #include "include/private/SkColorData.h"
 #include "include/private/gpu/ganesh/GrTypesPriv.h"
-#include "src/core/SkBlendModePriv.h"
 #include "src/gpu/SkBackingFit.h"
 #include "src/gpu/Swizzle.h"
 #include "src/gpu/ganesh/GrCaps.h"
@@ -37,6 +36,7 @@
 #include "src/gpu/ganesh/GrSamplerState.h"
 #include "src/gpu/ganesh/GrSurfaceProxy.h"
 #include "src/gpu/ganesh/GrSurfaceProxyView.h"
+#include "src/gpu/ganesh/GrXferProcessor.h"
 #include "src/gpu/ganesh/SurfaceDrawContext.h"
 #include "src/gpu/ganesh/geometry/GrQuad.h"
 #include "src/gpu/ganesh/ops/FillRectOp.h"
@@ -118,7 +118,7 @@
     }
 
     GrPaint paint;
-    paint.setXPFactory(SkBlendMode_AsXPFactory(blendMode));
+    paint.setXPFactory(GrXPFactory::FromBlendMode(blendMode));
 
     skgpu::ganesh::FillRectOp::AddFillRectOps(sdc.get(),
                                               nullptr,
diff --git a/tests/DMSAATest.cpp b/tests/DMSAATest.cpp
index 9869853..6f642e8 100644
--- a/tests/DMSAATest.cpp
+++ b/tests/DMSAATest.cpp
@@ -40,6 +40,7 @@
 #include "src/gpu/SkBackingFit.h"
 #include "src/gpu/ganesh/GrPaint.h"
 #include "src/gpu/ganesh/GrPixmap.h"
+#include "src/gpu/ganesh/GrXferProcessor.h"
 #include "src/gpu/ganesh/SurfaceDrawContext.h"
 #include "tests/CtsEnforcement.h"
 #include "tests/Test.h"
@@ -64,7 +65,7 @@
                                SkBlendMode blendMode) {
     GrPaint paint;
     paint.setColor4f(color);
-    paint.setXPFactory(SkBlendMode_AsXPFactory(blendMode));
+    paint.setXPFactory(GrXPFactory::FromBlendMode(blendMode));
     sdc->drawRect(nullptr, std::move(paint), GrAA::kYes, SkMatrix::I(),
                   SkRect::MakeIWH(kWidth, kHeight), nullptr);
 }
@@ -81,7 +82,7 @@
 
     GrPaint paint;
     paint.setColor4f(color);
-    paint.setXPFactory(SkBlendMode_AsXPFactory(blendMode));
+    paint.setXPFactory(GrXPFactory::FromBlendMode(blendMode));
     sdc->drawVertices(nullptr, std::move(paint), SkMatrixProvider(SkMatrix::I()), vertices);
 }
 
diff --git a/toolchain/linux_trampolines/clang_trampoline_linux.sh b/toolchain/linux_trampolines/clang_trampoline_linux.sh
index 97304a9..8198209 100755
--- a/toolchain/linux_trampolines/clang_trampoline_linux.sh
+++ b/toolchain/linux_trampolines/clang_trampoline_linux.sh
@@ -117,6 +117,7 @@
   "src/gpu/ganesh/GrSurfaceProxy.cpp"
   "src/gpu/ganesh/GrSurfaceProxyView.cpp"
   "src/gpu/ganesh/GrTextureProxy.cpp"
+  "src/gpu/ganesh/GrXferProcessor.cpp"
   "src/gpu/ganesh/SkGr.cpp"
   "src/gpu/ganesh/effects/GrPerlinNoise2Effect.cpp"
   "src/pdf/SkJpeg"
