Revert "Move atlas manager creation to GrContext derived classes"

This reverts commit e5b7ceeac865fb8a3bab82a73d65752c78682718.

Reason for revert: Breaking Mus/Viz tests in Chrome roll

Original change's description:
> Move atlas manager creation to GrContext derived classes
> 
> This CL relies on: https://skia-review.googlesource.com/c/skia/+/108001 (Fission GrAtlasGlyphCache in two)
> 
> TBR=bsalomon@google.com
> Change-Id: Ic3f91cea2238221b970f8ebbda99b10202925cd8
> Reviewed-on: https://skia-review.googlesource.com/110621
> Commit-Queue: Robert Phillips <robertphillips@google.com>
> Reviewed-by: Greg Daniel <egdaniel@google.com>

TBR=egdaniel@google.com,jvanverth@google.com,bsalomon@google.com,robertphillips@google.com

Change-Id: I3973463b7b837145d9732171a91d82f0f0cea148
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/110821
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index c61a6c1..6fbc4fe0 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -64,123 +64,22 @@
 
 class SK_API GrDirectContext : public GrContext {
 public:
-    GrDirectContext(GrBackend backend)
-            : INHERITED(backend)
-            , fFullAtlasManager(nullptr) {
-    }
-
-    ~GrDirectContext() override {
-        this->flush();
-
-        delete fFullAtlasManager;
-    }
-
-    void abandonContext() override {
-        INHERITED::abandonContext();
-        fFullAtlasManager->freeAll();
-    }
-
-    void releaseResourcesAndAbandonContext() override {
-        INHERITED::releaseResourcesAndAbandonContext();
-        fFullAtlasManager->freeAll();
-    }
-
-    void freeGpuResources() override {
-        this->flush();
-        fFullAtlasManager->freeAll();
-
-        INHERITED::freeGpuResources();
-    }
+    GrDirectContext(GrBackend backend) : INHERITED(backend) { }
 
 protected:
-    bool init(const GrContextOptions& options) override {
-        if (!INHERITED::init(options)) {
-            return false;
-        }
-
-        GrDrawOpAtlas::AllowMultitexturing allowMultitexturing;
-        if (GrContextOptions::Enable::kNo == options.fAllowMultipleGlyphCacheTextures ||
-            // multitexturing supported only if range can represent the index + texcoords fully
-            !(fCaps->shaderCaps()->floatIs32Bits() || fCaps->shaderCaps()->integerSupport())) {
-            allowMultitexturing = GrDrawOpAtlas::AllowMultitexturing::kNo;
-        } else {
-            allowMultitexturing = GrDrawOpAtlas::AllowMultitexturing::kYes;
-        }
-
-        GrGlyphCache* glyphCache = this->contextPriv().getGlyphCache();
-        GrProxyProvider* proxyProvider = this->contextPriv().proxyProvider();
-
-        fFullAtlasManager = new GrAtlasManager(proxyProvider, glyphCache,
-                                               options.fGlyphCacheTextureMaximumBytes,
-                                               allowMultitexturing);
-        this->contextPriv().addOnFlushCallbackObject(fFullAtlasManager);
-
-        glyphCache->setGlyphSizeLimit(fFullAtlasManager->getGlyphSizeLimit());
-        return true;
-    }
-
-    GrRestrictedAtlasManager* onGetRestrictedAtlasManager() override { return fFullAtlasManager; }
-    GrAtlasManager* onGetFullAtlasManager() override { return fFullAtlasManager; }
 
 private:
-    GrAtlasManager* fFullAtlasManager;
-
     typedef GrContext INHERITED;
 };
 
-/**
- * The DDL Context is the one in effect during DDL Recording. It isn't backed by a GrGPU and
- * cannot allocate any GPU resources.
- */
 class SK_API GrDDLContext : public GrContext {
 public:
-    GrDDLContext(GrContextThreadSafeProxy* proxy)
-            : INHERITED(proxy)
-            , fRestrictedAtlasManager(nullptr) {
-    }
-
-    ~GrDDLContext() override {
-        // The GrDDLContext doesn't actually own the fRestrictedAtlasManager so don't delete it
-    }
-
-    void abandonContext() override {
-        SkASSERT(0); // abandoning in a DDL Recorder doesn't make a whole lot of sense
-        INHERITED::abandonContext();
-    }
-
-    void releaseResourcesAndAbandonContext() override {
-        SkASSERT(0); // abandoning in a DDL Recorder doesn't make a whole lot of sense
-        INHERITED::releaseResourcesAndAbandonContext();
-    }
-
-    void freeGpuResources() override {
-        SkASSERT(0); // freeing resources in a DDL Recorder doesn't make a whole lot of sense
-        INHERITED::freeGpuResources();
-    }
+    GrDDLContext(GrContextThreadSafeProxy* proxy) : INHERITED(proxy) {}
 
 protected:
-    bool init(const GrContextOptions& options) override {
-        if (!INHERITED::init(options)) {
-            return false;
-        }
-
-        // DDL TODO: in DDL-mode grab a GrRestrictedAtlasManager from the thread-proxy and
-        // do not add an onFlushCB
-        return true;
-    }
-
-    GrRestrictedAtlasManager* onGetRestrictedAtlasManager() override {
-        return fRestrictedAtlasManager;
-    }
-
-    GrAtlasManager* onGetFullAtlasManager() override {
-        SkASSERT(0);   // the DDL Recorders should never invoke this
-        return nullptr;
-    }
+    // DDL TODO: grab a GrRestrictedAtlasManager from the proxy
 
 private:
-    GrRestrictedAtlasManager* fRestrictedAtlasManager;
-
     typedef GrContext INHERITED;
 };
 
@@ -281,7 +180,7 @@
 }
 
 sk_sp<GrContext> GrContext::MakeMetal(void* device, void* queue, const GrContextOptions& options) {
-    sk_sp<GrContext> context(new GrDirectContext(kMetal_GrBackend));
+    sk_sp<GrContext> context(new GrContext(kMetal_GrBackend));
 
     context->fGpu = GrMtlTrampoline::MakeGpu(context.get(), options, device, queue);
     if (!context->fGpu) {
@@ -321,6 +220,7 @@
     fResourceProvider = nullptr;
     fProxyProvider = nullptr;
     fGlyphCache = nullptr;
+    fFullAtlasManager = nullptr;
 }
 
 GrContext::GrContext(GrContextThreadSafeProxy* proxy)
@@ -331,6 +231,7 @@
     fResourceProvider = nullptr;
     fProxyProvider = nullptr;
     fGlyphCache = nullptr;
+    fFullAtlasManager = nullptr;
 }
 
 bool GrContext::init(const GrContextOptions& options) {
@@ -387,8 +288,26 @@
     fDrawingManager.reset(new GrDrawingManager(this, prcOptions, atlasTextContextOptions,
                                                &fSingleOwner, options.fSortRenderTargets));
 
+    GrDrawOpAtlas::AllowMultitexturing allowMultitexturing;
+    if (GrContextOptions::Enable::kNo == options.fAllowMultipleGlyphCacheTextures ||
+        // multitexturing supported only if range can represent the index + texcoords fully
+        !(fCaps->shaderCaps()->floatIs32Bits() || fCaps->shaderCaps()->integerSupport())) {
+        allowMultitexturing = GrDrawOpAtlas::AllowMultitexturing::kNo;
+    } else {
+        allowMultitexturing = GrDrawOpAtlas::AllowMultitexturing::kYes;
+    }
+
     fGlyphCache = new GrGlyphCache;
 
+    // DDL TODO: in DDL-mode grab a GrRestrictedAtlasManager from the thread-proxy and
+    // do not add an onFlushCB
+    fFullAtlasManager = new GrAtlasManager(fProxyProvider, fGlyphCache,
+                                           options.fGlyphCacheTextureMaximumBytes,
+                                           allowMultitexturing);
+    this->contextPriv().addOnFlushCallbackObject(fFullAtlasManager);
+
+    fGlyphCache->setGlyphSizeLimit(fFullAtlasManager->getGlyphSizeLimit());
+
     fTextBlobCache.reset(new GrTextBlobCache(TextBlobCacheOverBudgetCB,
                                              this, this->uniqueID(), SkToBool(fGpu)));
 
@@ -404,6 +323,10 @@
 GrContext::~GrContext() {
     ASSERT_SINGLE_OWNER
 
+    if (fGpu) {
+        this->flush();
+    }
+
     if (fDrawingManager) {
         fDrawingManager->cleanup();
     }
@@ -416,6 +339,7 @@
     delete fResourceCache;
     delete fProxyProvider;
     delete fGlyphCache;
+    delete fFullAtlasManager;
 }
 
 sk_sp<GrContextThreadSafeProxy> GrContext::threadSafeProxy() {
@@ -475,6 +399,7 @@
     fGpu->disconnect(GrGpu::DisconnectType::kAbandon);
 
     fGlyphCache->freeAll();
+    fFullAtlasManager->freeAll();
     fTextBlobCache->freeAll();
 }
 
@@ -494,6 +419,7 @@
     fGpu->disconnect(GrGpu::DisconnectType::kCleanup);
 
     fGlyphCache->freeAll();
+    fFullAtlasManager->freeAll();
     fTextBlobCache->freeAll();
 }
 
@@ -505,7 +431,10 @@
 void GrContext::freeGpuResources() {
     ASSERT_SINGLE_OWNER
 
+    this->flush();
+
     fGlyphCache->freeAll();
+    fFullAtlasManager->freeAll();
 
     fDrawingManager->freeGpuResources();