Revert "fonts: Add support for distance field text to font remoting."

This reverts commit 35e0a1a6908492c754156d1abb785da3a9ce2a6b.

Reason for revert: looks like we're leaking paths?
https://chromium-swarm.appspot.com/task?id=3da25e2f0cadb210&refresh=10

Original change's description:
> fonts: Add support for distance field text to font remoting.
> 
> R=​jvanverth@google.com, herb@google.com
> 
> Bug: skia:7913
> Change-Id: Id3f5b3e75005be9a7234df774268359b406c99a8
> Reviewed-on: https://skia-review.googlesource.com/128970
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Jim Van Verth <jvanverth@google.com>
> Commit-Queue: Khusal Sagar <khushalsagar@chromium.org>

TBR=jvanverth@google.com,bsalomon@google.com,bungeman@google.com,herb@google.com,khushalsagar@chromium.org

Change-Id: I37c54c8748db9b20e1f48016d8298808a1999fdb
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:7913
Reviewed-on: https://skia-review.googlesource.com/129681
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
diff --git a/include/gpu/GrContext.h b/include/gpu/GrContext.h
index 525e5d7..6a52c5c 100644
--- a/include/gpu/GrContext.h
+++ b/include/gpu/GrContext.h
@@ -282,8 +282,6 @@
     // Chrome is using this!
     void dumpMemoryStatistics(SkTraceMemoryDump* traceMemoryDump) const;
 
-    bool supportsDistanceFieldText() const;
-
 protected:
     GrContext(GrBackend, int32_t id = SK_InvalidGenID);
 
diff --git a/src/core/SkRemoteGlyphCache.cpp b/src/core/SkRemoteGlyphCache.cpp
index d5e96fc..c7f1f44 100644
--- a/src/core/SkRemoteGlyphCache.cpp
+++ b/src/core/SkRemoteGlyphCache.cpp
@@ -23,7 +23,6 @@
 
 #if SK_SUPPORT_GPU
 #include "GrDrawOpAtlas.h"
-#include "text/GrAtlasTextContext.h"
 #endif
 
 static SkDescriptor* auto_descriptor_from_desc(const SkDescriptor* source_desc,
@@ -189,18 +188,14 @@
 };
 
 // -- SkTextBlobCacheDiffCanvas -------------------------------------------------------------------
-SkTextBlobCacheDiffCanvas::Settings::Settings() = default;
-SkTextBlobCacheDiffCanvas::Settings::~Settings() = default;
-
 SkTextBlobCacheDiffCanvas::SkTextBlobCacheDiffCanvas(int width, int height,
                                                      const SkMatrix& deviceMatrix,
                                                      const SkSurfaceProps& props,
-                                                     SkStrikeServer* strikeSever, Settings settings)
+                                                     SkStrikeServer* strikeSever)
         : SkNoDrawCanvas{sk_make_sp<TrackLayerDevice>(SkIRect::MakeWH(width, height), props)}
         , fDeviceMatrix{deviceMatrix}
         , fSurfaceProps{props}
-        , fStrikeServer{strikeSever}
-        , fSettings{settings} {
+        , fStrikeServer{strikeSever} {
     SkASSERT(fStrikeServer);
 }
 
@@ -279,23 +274,6 @@
     runMatrix.preTranslate(position.x(), position.y());
     runMatrix.preTranslate(it.offset().x(), it.offset().y());
 
-#if SK_SUPPORT_GPU
-    GrAtlasTextContext::Options options;
-    options.fMinDistanceFieldFontSize = fSettings.fMinDistanceFieldFontSize;
-    options.fMaxDistanceFieldFontSize = fSettings.fMaxDistanceFieldFontSize;
-    GrAtlasTextContext::SanitizeOptions(&options);
-    if (GrAtlasTextContext::CanDrawAsDistanceFields(runPaint, runMatrix, fSurfaceProps,
-                                                    fSettings.fContextSupportsDistanceFieldText,
-                                                    options)) {
-        SkScalar textRatio;
-        SkPaint dfPaint(runPaint);
-        SkScalerContextFlags flags;
-        GrAtlasTextContext::InitDistanceFieldPaint(nullptr, &dfPaint, runMatrix, options,
-                                                   &textRatio, &flags);
-        this->processGlyphRunForDFT(it, dfPaint, flags);
-    }
-#endif
-
     // If the matrix has perspective, we fall back to using distance field text or paths.
     // TODO: Add distance field text support, and FallbackTextHelper logic from GrAtlasTextContext.
     if (SkDraw::ShouldDrawTextAsPaths(runPaint, runMatrix)) {
@@ -356,11 +334,9 @@
 
     SkScalerContextRec deviceSpecificRec;
     SkScalerContextEffects effects;
-    auto* glyphCacheState =
-            static_cast<SkStrikeServer*>(fStrikeServer)
-                    ->getOrCreateCache(runPaint, &fSurfaceProps, &runMatrix,
-                                       SkScalerContextFlags::kFakeGammaAndBoostContrast,
-                                       &deviceSpecificRec, &effects);
+    auto* glyphCacheState = static_cast<SkStrikeServer*>(fStrikeServer)
+                                    ->getOrCreateCache(runPaint, &fSurfaceProps, &runMatrix,
+                                                       &deviceSpecificRec, &effects);
     SkASSERT(glyphCacheState);
 
     const bool asPath = false;
@@ -395,33 +371,11 @@
 
     SkScalerContextRec deviceSpecificRec;
     SkScalerContextEffects effects;
-    auto* glyphCacheState =
-            static_cast<SkStrikeServer*>(fStrikeServer)
-                    ->getOrCreateCache(pathPaint, &fSurfaceProps, nullptr,
-                                       SkScalerContextFlags::kFakeGammaAndBoostContrast,
-                                       &deviceSpecificRec, &effects);
-
-    const bool asPath = true;
-    const SkIPoint subPixelPos{0, 0};
-    const uint16_t* glyphs = it.glyphs();
-    for (uint32_t index = 0; index < it.glyphCount(); index++) {
-        glyphCacheState->addGlyph(runPaint.getTypeface(),
-                                  effects,
-                                  SkPackedGlyphID(glyphs[index], subPixelPos.x(), subPixelPos.y()),
-                                  asPath);
-    }
-}
-
-void SkTextBlobCacheDiffCanvas::processGlyphRunForDFT(const SkTextBlobRunIterator& it,
-                                                      const SkPaint& runPaint,
-                                                      SkScalerContextFlags flags) {
-    SkScalerContextRec deviceSpecificRec;
-    SkScalerContextEffects effects;
     auto* glyphCacheState = static_cast<SkStrikeServer*>(fStrikeServer)
-                                    ->getOrCreateCache(runPaint, &fSurfaceProps, nullptr, flags,
+                                    ->getOrCreateCache(pathPaint, &fSurfaceProps, nullptr,
                                                        &deviceSpecificRec, &effects);
 
-    const bool asPath = false;
+    const bool asPath = true;
     const SkIPoint subPixelPos{0, 0};
     const uint16_t* glyphs = it.glyphs();
     for (uint32_t index = 0; index < it.glyphCount(); index++) {
@@ -497,12 +451,15 @@
         const SkPaint& paint,
         const SkSurfaceProps* props,
         const SkMatrix* matrix,
-        SkScalerContextFlags flags,
         SkScalerContextRec* deviceRec,
         SkScalerContextEffects* effects) {
     SkScalerContextRec keyRec;
-    SkScalerContext::MakeRecAndEffects(paint, props, matrix, flags, deviceRec, effects, true);
-    SkScalerContext::MakeRecAndEffects(paint, props, matrix, flags, &keyRec, effects, false);
+    SkScalerContext::MakeRecAndEffects(paint, props, matrix,
+                                       SkScalerContextFlags::kFakeGammaAndBoostContrast, deviceRec,
+                                       effects, true);
+    SkScalerContext::MakeRecAndEffects(paint, props, matrix,
+                                       SkScalerContextFlags::kFakeGammaAndBoostContrast, &keyRec,
+                                       effects, false);
     TRACE_EVENT1("skia", "RecForDesc", "rec", TRACE_STR_COPY(keyRec.dump().c_str()));
 
     // TODO: possible perf improvement - don't recompute the device desc on cache hit.
diff --git a/src/core/SkRemoteGlyphCache.h b/src/core/SkRemoteGlyphCache.h
index d1119cf..60d8807 100644
--- a/src/core/SkRemoteGlyphCache.h
+++ b/src/core/SkRemoteGlyphCache.h
@@ -28,7 +28,6 @@
 class SkDescriptor;
 class SkGlyphCache;
 struct SkPackedGlyphID;
-enum SkScalerContextFlags : uint32_t;
 class SkScalerContextRecDescriptor;
 class SkTextBlobRunIterator;
 class SkTypefaceProxy;
@@ -52,17 +51,8 @@
 // which will be serialized and renderered using the SkStrikeClient.
 class SK_API SkTextBlobCacheDiffCanvas : public SkNoDrawCanvas {
 public:
-    struct SK_API Settings {
-        Settings();
-        ~Settings();
-
-        bool fContextSupportsDistanceFieldText = true;
-        SkScalar fMinDistanceFieldFontSize = -1.f;
-        SkScalar fMaxDistanceFieldFontSize = -1.f;
-    };
     SkTextBlobCacheDiffCanvas(int width, int height, const SkMatrix& deviceMatrix,
-                              const SkSurfaceProps& props, SkStrikeServer* strikeserver,
-                              Settings settings = Settings());
+                              const SkSurfaceProps& props, SkStrikeServer* strikeserver);
     ~SkTextBlobCacheDiffCanvas() override;
 
 protected:
@@ -80,13 +70,10 @@
                          const SkTextBlobRunIterator& it,
                          const SkPaint& runPaint);
     void processGlyphRunForPaths(const SkTextBlobRunIterator& it, const SkPaint& runPaint);
-    void processGlyphRunForDFT(const SkTextBlobRunIterator& it, const SkPaint& runPaint,
-                               SkScalerContextFlags flags);
 
     const SkMatrix fDeviceMatrix;
     const SkSurfaceProps fSurfaceProps;
     SkStrikeServer* const fStrikeServer;
-    const Settings fSettings;
 };
 
 using SkDiscardableHandleId = uint32_t;
@@ -174,7 +161,7 @@
     };
 
     SkGlyphCacheState* getOrCreateCache(const SkPaint&, const SkSurfaceProps*, const SkMatrix*,
-                                        SkScalerContextFlags flags, SkScalerContextRec* deviceRec,
+                                        SkScalerContextRec* deviceRec,
                                         SkScalerContextEffects* effects);
 
 private:
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index 24c28e6..5be510d 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -1514,10 +1514,6 @@
     return fPMUPMConversionsRoundTrip;
 }
 
-bool GrContext::supportsDistanceFieldText() const {
-    return fCaps->shaderCaps()->supportsDistanceFieldText();
-}
-
 //////////////////////////////////////////////////////////////////////////////
 
 // DDL TODO: remove 'maxResources'
diff --git a/src/gpu/GrShaderCaps.h b/src/gpu/GrShaderCaps.h
index 3e85b6c..2f2d277 100644
--- a/src/gpu/GrShaderCaps.h
+++ b/src/gpu/GrShaderCaps.h
@@ -37,8 +37,6 @@
 
     void dumpJSON(SkJSONWriter*) const;
 
-    bool supportsDistanceFieldText() const { return fShaderDerivativeSupport; }
-
     bool shaderDerivativeSupport() const { return fShaderDerivativeSupport; }
     bool geometryShaderSupport() const { return fGeometryShaderSupport; }
     bool gsInvocationsSupport() const { return fGSInvocationsSupport; }
diff --git a/src/gpu/text/GrAtlasTextContext.cpp b/src/gpu/text/GrAtlasTextContext.cpp
index 1f06cfe..8c964ba 100644
--- a/src/gpu/text/GrAtlasTextContext.cpp
+++ b/src/gpu/text/GrAtlasTextContext.cpp
@@ -41,8 +41,14 @@
 #endif
 
 GrAtlasTextContext::GrAtlasTextContext(const Options& options)
-        : fDistanceAdjustTable(new GrDistanceFieldAdjustTable), fOptions(options) {
-    SanitizeOptions(&fOptions);
+        : fDistanceAdjustTable(new GrDistanceFieldAdjustTable) {
+    fMaxDistanceFieldFontSize = options.fMaxDistanceFieldFontSize < 0.f
+                                        ? kDefaultMaxDistanceFieldFontSize
+                                        : options.fMaxDistanceFieldFontSize;
+    fMinDistanceFieldFontSize = options.fMinDistanceFieldFontSize < 0.f
+                                        ? kDefaultMinDistanceFieldFontSize
+                                        : options.fMinDistanceFieldFontSize;
+    fDistanceFieldVerticesAlwaysHaveW = options.fDistanceFieldVerticesAlwaysHaveW;
 }
 
 std::unique_ptr<GrAtlasTextContext> GrAtlasTextContext::Make(const Options& options) {
@@ -205,8 +211,7 @@
         }
         cacheBlob->setRunPaintFlags(run, runPaint.skPaint().getFlags());
 
-        if (CanDrawAsDistanceFields(runPaint, viewMatrix, props,
-                                    shaderCaps.supportsDistanceFieldText(), fOptions)) {
+        if (this->canDrawAsDistanceFields(runPaint, viewMatrix, props, shaderCaps)) {
             switch (it.positioning()) {
                 case SkTextBlob::kDefault_Positioning: {
                     this->drawDFText(cacheBlob, run, glyphCache, props, runPaint, scalerContextFlags,
@@ -269,8 +274,7 @@
     blob->initThrowawayBlob(viewMatrix, x, y);
     blob->setRunPaintFlags(0, paint.skPaint().getFlags());
 
-    if (CanDrawAsDistanceFields(paint, viewMatrix, props, shaderCaps.supportsDistanceFieldText(),
-                                fOptions)) {
+    if (this->canDrawAsDistanceFields(paint, viewMatrix, props, shaderCaps)) {
         this->drawDFText(blob.get(), 0, glyphCache, props, paint, scalerContextFlags, viewMatrix,
                          text, byteLength, x, y);
     } else {
@@ -300,8 +304,7 @@
     blob->initThrowawayBlob(viewMatrix, offset.x(), offset.y());
     blob->setRunPaintFlags(0, paint.skPaint().getFlags());
 
-    if (CanDrawAsDistanceFields(paint, viewMatrix, props, shaderCaps.supportsDistanceFieldText(),
-                                fOptions)) {
+    if (this->canDrawAsDistanceFields(paint, viewMatrix, props, shaderCaps)) {
         this->drawDFPosText(blob.get(), 0, glyphCache, props, paint, scalerContextFlags, viewMatrix,
                             text, byteLength, pos, scalarsPerPosition, offset);
     } else {
@@ -562,26 +565,16 @@
                       textRatio, true);
 }
 
-void GrAtlasTextContext::SanitizeOptions(Options* options) {
-    if (options->fMaxDistanceFieldFontSize < 0.f) {
-        options->fMaxDistanceFieldFontSize = kDefaultMaxDistanceFieldFontSize;
-    }
-    if (options->fMinDistanceFieldFontSize < 0.f) {
-        options->fMinDistanceFieldFontSize = kDefaultMinDistanceFieldFontSize;
-    }
-}
-
-bool GrAtlasTextContext::CanDrawAsDistanceFields(const SkPaint& skPaint, const SkMatrix& viewMatrix,
+bool GrAtlasTextContext::canDrawAsDistanceFields(const SkPaint& skPaint, const SkMatrix& viewMatrix,
                                                  const SkSurfaceProps& props,
-                                                 bool contextSupportsDistanceFieldText,
-                                                 const Options& options) {
+                                                 const GrShaderCaps& caps) const {
     if (!viewMatrix.hasPerspective()) {
         SkScalar maxScale = viewMatrix.getMaxScale();
         SkScalar scaledTextSize = maxScale * skPaint.getTextSize();
         // Hinted text looks far better at small resolutions
         // Scaling up beyond 2x yields undesireable artifacts
-        if (scaledTextSize < options.fMinDistanceFieldFontSize ||
-            scaledTextSize > options.fMaxDistanceFieldFontSize) {
+        if (scaledTextSize < fMinDistanceFieldFontSize ||
+            scaledTextSize > fMaxDistanceFieldFontSize) {
             return false;
         }
 
@@ -596,7 +589,7 @@
     }
 
     // mask filters modify alpha, which doesn't translate well to distance
-    if (skPaint.getMaskFilter() || !contextSupportsDistanceFieldText) {
+    if (skPaint.getMaskFilter() || !caps.shaderDerivativeSupport()) {
         return false;
     }
 
@@ -608,12 +601,10 @@
     return true;
 }
 
-void GrAtlasTextContext::InitDistanceFieldPaint(GrAtlasTextBlob* blob,
+void GrAtlasTextContext::initDistanceFieldPaint(GrAtlasTextBlob* blob,
                                                 SkPaint* skPaint,
-                                                const SkMatrix& viewMatrix,
-                                                const Options& options,
                                                 SkScalar* textRatio,
-                                                SkScalerContextFlags* flags) {
+                                                const SkMatrix& viewMatrix) const {
     SkScalar textSize = skPaint->getTextSize();
     SkScalar scaledTextSize = textSize;
 
@@ -636,7 +627,7 @@
     SkScalar dfMaskScaleFloor;
     SkScalar dfMaskScaleCeil;
     if (scaledTextSize <= kSmallDFFontLimit) {
-        dfMaskScaleFloor = options.fMinDistanceFieldFontSize;
+        dfMaskScaleFloor = fMinDistanceFieldFontSize;
         dfMaskScaleCeil = kSmallDFFontLimit;
         *textRatio = textSize / kSmallDFFontSize;
         skPaint->setTextSize(SkIntToScalar(kSmallDFFontSize));
@@ -647,7 +638,7 @@
         skPaint->setTextSize(SkIntToScalar(kMediumDFFontSize));
     } else {
         dfMaskScaleFloor = kMediumDFFontLimit;
-        dfMaskScaleCeil = options.fMaxDistanceFieldFontSize;
+        dfMaskScaleCeil = fMaxDistanceFieldFontSize;
         *textRatio = textSize / kLargeDFFontSize;
         skPaint->setTextSize(SkIntToScalar(kLargeDFFontSize));
     }
@@ -660,10 +651,7 @@
     // against these values to decide if we can reuse or not(ie, will a given scale change our mip
     // level)
     SkASSERT(dfMaskScaleFloor <= scaledTextSize && scaledTextSize <= dfMaskScaleCeil);
-    if (blob) {
-        blob->setMinAndMaxScale(dfMaskScaleFloor / scaledTextSize,
-                                dfMaskScaleCeil / scaledTextSize);
-    }
+    blob->setMinAndMaxScale(dfMaskScaleFloor / scaledTextSize, dfMaskScaleCeil / scaledTextSize);
 
     skPaint->setAntiAlias(true);
     skPaint->setLCDRenderText(false);
@@ -672,10 +660,6 @@
     skPaint->setSubpixelText(true);
 
     skPaint->setMaskFilter(GrSDFMaskFilter::Make());
-
-    // We apply the fake-gamma by altering the distance in the shader, so we ignore the
-    // passed-in scaler context flags. (It's only used when we fall-back to bitmap text).
-    *flags = SkScalerContextFlags::kNone;
 }
 
 void GrAtlasTextContext::drawDFText(GrAtlasTextBlob* blob, int runIndex,
@@ -761,13 +745,12 @@
         return;
     }
 
-    bool hasWCoord = viewMatrix.hasPerspective() || fOptions.fDistanceFieldVerticesAlwaysHaveW;
+    bool hasWCoord = viewMatrix.hasPerspective() || fDistanceFieldVerticesAlwaysHaveW;
 
     // Setup distance field paint and text ratio
     SkScalar textRatio;
     SkPaint dfPaint(paint);
-    SkScalerContextFlags flags;
-    InitDistanceFieldPaint(blob, &dfPaint, viewMatrix, fOptions, &textRatio, &flags);
+    this->initDistanceFieldPaint(blob, &dfPaint, &textRatio, viewMatrix);
     blob->setHasDistanceField();
     blob->setSubRunHasDistanceFields(runIndex, paint.skPaint().isLCDRenderText(),
                                      paint.skPaint().isAntiAlias(), hasWCoord);
@@ -777,7 +760,10 @@
     sk_sp<GrTextStrike> currStrike;
 
     {
-        auto cache = blob->setupCache(runIndex, props, flags, dfPaint, nullptr);
+        // We apply the fake-gamma by altering the distance in the shader, so we ignore the
+        // passed-in scaler context flags. (It's only used when we fall-back to bitmap text).
+        auto cache = blob->setupCache(runIndex, props, SkScalerContextFlags::kNone, dfPaint,
+                                      nullptr);
         SkPaint::GlyphCacheProc glyphCacheProc =
             SkPaint::GetGlyphCacheProc(dfPaint.getTextEncoding(), true);
 
diff --git a/src/gpu/text/GrAtlasTextContext.h b/src/gpu/text/GrAtlasTextContext.h
index e2531b3..1342ee7 100644
--- a/src/gpu/text/GrAtlasTextContext.h
+++ b/src/gpu/text/GrAtlasTextContext.h
@@ -60,18 +60,6 @@
                                                    const SkMatrix& viewMatrix, const char* text,
                                                    int x, int y);
 
-    static void SanitizeOptions(Options* options);
-    static bool CanDrawAsDistanceFields(const SkPaint& skPaint, const SkMatrix& viewMatrix,
-                                        const SkSurfaceProps& props,
-                                        bool contextSupportsDistanceFieldText,
-                                        const Options& options);
-    static void InitDistanceFieldPaint(GrAtlasTextBlob* blob,
-                                       SkPaint* skPaint,
-                                       const SkMatrix& viewMatrix,
-                                       const Options& options,
-                                       SkScalar* textRatio,
-                                       SkScalerContextFlags* flags);
-
 private:
     GrAtlasTextContext(const Options& options);
 
@@ -170,6 +158,9 @@
                                       const SkPoint& offset);
 
     // functions for appending distance field text
+    bool canDrawAsDistanceFields(const SkPaint& skPaint, const SkMatrix& viewMatrix,
+                                 const SkSurfaceProps& props, const GrShaderCaps& caps) const;
+
     void drawDFText(GrAtlasTextBlob* blob, int runIndex, GrGlyphCache*, const SkSurfaceProps&,
                     const GrTextUtils::Paint& paint, SkScalerContextFlags scalerContextFlags,
                     const SkMatrix& viewMatrix, const char text[], size_t byteLength, SkScalar x,
@@ -182,6 +173,11 @@
                        size_t byteLength, const SkScalar pos[], int scalarsPerPosition,
                        const SkPoint& offset) const;
 
+    void initDistanceFieldPaint(GrAtlasTextBlob* blob,
+                                SkPaint* skPaint,
+                                SkScalar* textRatio,
+                                const SkMatrix& viewMatrix) const;
+
     static void BmpAppendGlyph(GrAtlasTextBlob*, int runIndex, GrGlyphCache*,
                                sk_sp<GrTextStrike>*, const SkGlyph&, SkScalar sx, SkScalar sy,
                                GrColor color, SkGlyphCache*, SkScalar textRatio);
@@ -194,7 +190,9 @@
 
     sk_sp<const GrDistanceFieldAdjustTable> fDistanceAdjustTable;
 
-    Options fOptions;
+    SkScalar fMinDistanceFieldFontSize;
+    SkScalar fMaxDistanceFieldFontSize;
+    bool fDistanceFieldVerticesAlwaysHaveW;
 
 #if GR_TEST_UTILS
     static const SkScalerContextFlags kTextBlobOpScalerContextFlags =
diff --git a/tests/SkRemoteGlyphCacheTest.cpp b/tests/SkRemoteGlyphCacheTest.cpp
index 5d4b9ff..811bf1b 100644
--- a/tests/SkRemoteGlyphCacheTest.cpp
+++ b/tests/SkRemoteGlyphCacheTest.cpp
@@ -15,10 +15,6 @@
 #include "SkTypeface_remote.h"
 #include "Test.h"
 
-#if SK_SUPPORT_GPU
-#include "text/GrAtlasTextContext.h"
-#endif
-
 class DiscardableManager : public SkStrikeServer::DiscardableHandleManager,
                            public SkStrikeClient::DiscardableHandleManager {
 public:
@@ -83,26 +79,14 @@
         }                                                                                \
     }
 
-#if SK_SUPPORT_GPU
-SkTextBlobCacheDiffCanvas::Settings MakeSettings(GrContext* context) {
-    SkTextBlobCacheDiffCanvas::Settings settings;
-    settings.fContextSupportsDistanceFieldText = context->supportsDistanceFieldText();
-    return settings;
-}
-
-SkBitmap RasterBlob(sk_sp<SkTextBlob> blob, int width, int height, const SkPaint& paint,
-                    GrContext* context, const SkMatrix* matrix = nullptr) {
-    const SkImageInfo info =
-            SkImageInfo::Make(width, height, kN32_SkColorType, kPremul_SkAlphaType);
-    auto surface = SkSurface::MakeRenderTarget(context, SkBudgeted::kNo, info);
-    if (matrix) surface->getCanvas()->concat(*matrix);
+SkBitmap RasterBlob(sk_sp<SkTextBlob> blob, int width, int height, const SkPaint& paint) {
+    auto surface = SkSurface::MakeRasterN32Premul(width, height);
     surface->getCanvas()->drawTextBlob(blob.get(), 0u, 0u, paint);
     SkBitmap bitmap;
     bitmap.allocN32Pixels(width, height);
     surface->readPixels(bitmap, 0, 0);
     return bitmap;
 }
-#endif
 
 DEF_TEST(SkRemoteGlyphCache_TypefaceSerialization, reporter) {
     sk_sp<DiscardableManager> discardableManager = sk_make_sp<DiscardableManager>();
@@ -118,8 +102,7 @@
                                       server_tf->uniqueID());
 }
 
-#if SK_SUPPORT_GPU
-DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SkRemoteGlyphCache_StrikeSerialization, reporter, ctxInfo) {
+DEF_TEST(SkRemoteGlyphCache_StrikeSerialization, reporter) {
     sk_sp<DiscardableManager> discardableManager = sk_make_sp<DiscardableManager>();
     SkStrikeServer server(discardableManager.get());
     SkStrikeClient client(discardableManager);
@@ -132,8 +115,7 @@
     int glyphCount = 10;
     auto serverBlob = buildTextBlob(serverTf, glyphCount);
     const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType);
-    SkTextBlobCacheDiffCanvas cache_diff_canvas(10, 10, SkMatrix::I(), props, &server,
-                                                MakeSettings(ctxInfo.grContext()));
+    SkTextBlobCacheDiffCanvas cache_diff_canvas(10, 10, SkMatrix::I(), props, &server);
     cache_diff_canvas.drawTextBlob(serverBlob.get(), 0, 0, paint);
 
     std::vector<uint8_t> serverStrikeData;
@@ -145,11 +127,10 @@
                     client.readStrikeData(serverStrikeData.data(), serverStrikeData.size()));
     auto clientBlob = buildTextBlob(clientTf, glyphCount);
 
-    SkBitmap expected = RasterBlob(serverBlob, 10, 10, paint, ctxInfo.grContext());
-    SkBitmap actual = RasterBlob(clientBlob, 10, 10, paint, ctxInfo.grContext());
+    SkBitmap expected = RasterBlob(serverBlob, 10, 10, paint);
+    SkBitmap actual = RasterBlob(clientBlob, 10, 10, paint);
     COMPARE_BLOBS(expected, actual, reporter);
 }
-#endif
 
 DEF_TEST(SkRemoteGlyphCache_StrikeLockingServer, reporter) {
     sk_sp<DiscardableManager> discardableManager = sk_make_sp<DiscardableManager>();
@@ -269,8 +250,7 @@
     SkStrikeCache::Validate();
 }
 
-#if SK_SUPPORT_GPU
-DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SkRemoteGlyphCache_DrawTextAsPath, reporter, ctxInfo) {
+DEF_TEST(SkRemoteGlyphCache_DrawTextAsPath, reporter) {
     sk_sp<DiscardableManager> discardableManager = sk_make_sp<DiscardableManager>();
     SkStrikeServer server(discardableManager.get());
     SkStrikeClient client(discardableManager);
@@ -286,8 +266,7 @@
     int glyphCount = 10;
     auto serverBlob = buildTextBlob(serverTf, glyphCount);
     const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType);
-    SkTextBlobCacheDiffCanvas cache_diff_canvas(10, 10, SkMatrix::I(), props, &server,
-                                                MakeSettings(ctxInfo.grContext()));
+    SkTextBlobCacheDiffCanvas cache_diff_canvas(10, 10, SkMatrix::I(), props, &server);
     cache_diff_canvas.drawTextBlob(serverBlob.get(), 0, 0, paint);
 
     std::vector<uint8_t> serverStrikeData;
@@ -299,54 +278,8 @@
                     client.readStrikeData(serverStrikeData.data(), serverStrikeData.size()));
     auto clientBlob = buildTextBlob(clientTf, glyphCount);
 
-    SkBitmap expected = RasterBlob(serverBlob, 10, 10, paint, ctxInfo.grContext());
-    SkBitmap actual = RasterBlob(clientBlob, 10, 10, paint, ctxInfo.grContext());
+    SkBitmap expected = RasterBlob(serverBlob, 10, 10, paint);
+    SkBitmap actual = RasterBlob(clientBlob, 10, 10, paint);
     COMPARE_BLOBS(expected, actual, reporter);
     SkStrikeCache::Validate();
 }
-#endif
-
-#if SK_SUPPORT_GPU
-DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SkRemoteGlyphCache_DrawTextAsDFT, reporter, ctxInfo) {
-    sk_sp<DiscardableManager> discardableManager = sk_make_sp<DiscardableManager>();
-    SkStrikeServer server(discardableManager.get());
-    SkStrikeClient client(discardableManager);
-    SkPaint paint;
-
-    // A perspective transform forces fallback to dft.
-    SkMatrix matrix = SkMatrix::I();
-    matrix[SkMatrix::kMPersp0] = 0.5f;
-    REPORTER_ASSERT(reporter, matrix.hasPerspective());
-    SkSurfaceProps surfaceProps(0, kUnknown_SkPixelGeometry);
-    GrAtlasTextContext::Options options;
-    GrAtlasTextContext::SanitizeOptions(&options);
-    REPORTER_ASSERT(reporter, GrAtlasTextContext::CanDrawAsDistanceFields(
-                                      paint, matrix, surfaceProps, true, options));
-
-    // Server.
-    auto serverTf = SkTypeface::MakeFromName("monospace", SkFontStyle());
-    auto serverTfData = server.serializeTypeface(serverTf.get());
-
-    int glyphCount = 10;
-    auto serverBlob = buildTextBlob(serverTf, glyphCount);
-    const SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType);
-    SkTextBlobCacheDiffCanvas cache_diff_canvas(10, 10, SkMatrix::I(), props, &server,
-                                                MakeSettings(ctxInfo.grContext()));
-    cache_diff_canvas.concat(matrix);
-    cache_diff_canvas.drawTextBlob(serverBlob.get(), 0, 0, paint);
-
-    std::vector<uint8_t> serverStrikeData;
-    server.writeStrikeData(&serverStrikeData);
-
-    // Client.
-    auto clientTf = client.deserializeTypeface(serverTfData->data(), serverTfData->size());
-    REPORTER_ASSERT(reporter,
-                    client.readStrikeData(serverStrikeData.data(), serverStrikeData.size()));
-    auto clientBlob = buildTextBlob(clientTf, glyphCount);
-
-    SkBitmap expected = RasterBlob(serverBlob, 10, 10, paint, ctxInfo.grContext(), &matrix);
-    SkBitmap actual = RasterBlob(clientBlob, 10, 10, paint, ctxInfo.grContext(), &matrix);
-    COMPARE_BLOBS(expected, actual, reporter);
-    SkStrikeCache::Validate();
-}
-#endif