Revert "Migrate uses of deferred proxies to lazy proxies"

This reverts commit 990a0d8b6563941d69aa24ecae847be150ab1128.

Reason for revert: Keeping it. Deferred proxies are uploaded later than lazy and we want that for this use case.

Original change's description:
> Migrate uses of deferred proxies to lazy proxies
>
> A follow-up CL removes the deferred proxies system entirely.
>
> Bug: skia:11288
> Change-Id: Ic5b3ce820ea946f6ae27bd763c0f389caf8863d1
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/366716
> Reviewed-by: Brian Salomon <bsalomon@google.com>
> Commit-Queue: Adlai Holler <adlai@google.com>

TBR=bsalomon@google.com,robertphillips@google.com,adlai@google.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: skia:11288
Change-Id: I9ced532d013805afae3b20baa53cab31cae2b953
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368797
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Adlai Holler <adlai@google.com>
diff --git a/src/gpu/GrSWMaskHelper.cpp b/src/gpu/GrSWMaskHelper.cpp
index 69c254f..d477534 100644
--- a/src/gpu/GrSWMaskHelper.cpp
+++ b/src/gpu/GrSWMaskHelper.cpp
@@ -9,10 +9,8 @@
 
 #include "include/gpu/GrRecordingContext.h"
 #include "src/core/SkMatrixProvider.h"
-#include "src/core/SkTaskGroup.h"
 #include "src/gpu/GrBitmapTextureMaker.h"
 #include "src/gpu/GrCaps.h"
-#include "src/gpu/GrDirectContextPriv.h"
 #include "src/gpu/GrProxyProvider.h"
 #include "src/gpu/GrRecordingContextPriv.h"
 #include "src/gpu/GrSurfaceContext.h"
@@ -45,96 +43,6 @@
     return paint;
 }
 
-GrSurfaceProxyView GrSWMaskHelper::MakeTexture(SkIRect bounds,
-                                               GrRecordingContext* context,
-                                               SkBackingFit fit,
-                                               DrawFunc&& draw) {
-    SkTaskGroup* taskGroup = nullptr;
-    if (auto dContext = context->asDirectContext()) {
-        taskGroup = dContext->priv().getTaskGroup();
-    }
-    if (taskGroup) {
-        GrSWMaskHelper* helper = new GrSWMaskHelper(bounds);
-        return helper->threadedExecute(taskGroup, context, fit, std::move(draw));
-    } else {
-        GrSWMaskHelper helper(bounds);
-        return helper.nonThreadedExecute(context, fit, draw);
-    }
-}
-
-GrSurfaceProxyView GrSWMaskHelper::threadedExecute(SkTaskGroup* taskGroup,
-                                                   GrRecordingContext* context,
-                                                   SkBackingFit fit,
-                                                   DrawFunc&& draw) {
-    sk_sp<GrSWMaskHelper> spThis(this);
-    taskGroup->add([spThis, draw{std::move(draw)}]() {
-        if (spThis->allocate()) {
-            draw(spThis.get());
-            spThis->fBitmap.setImmutable();
-        }
-        spThis->fSemaphore.signal();
-    });
-    auto lazy_cb = [spThis{std::move(spThis)}](GrResourceProvider* provider,
-                                               const GrProxyProvider::LazySurfaceDesc& desc) {
-        spThis->fSemaphore.wait();
-        const SkBitmap& mask = spThis->fBitmap;
-        if (!mask.getPixels()) {
-            return GrProxyProvider::LazyCallbackResult();
-        }
-        GrMipLevel mip{mask.getPixels(), mask.pixmap().rowBytes()};
-        GrColorType ct{SkColorTypeToGrColorType(mask.colorType())};
-        sk_sp<GrTexture> tex = provider->createTexture(desc.fDimensions,
-                                                       desc.fFormat,
-                                                       ct,
-                                                       desc.fRenderable,
-                                                       desc.fSampleCnt,
-                                                       desc.fBudgeted,
-                                                       desc.fFit,
-                                                       desc.fProtected,
-                                                       mip);
-        GrProxyProvider::LazyCallbackResult result(std::move(tex));
-        // Callback refs us, we own bitmap, don't release callback.
-        result.fReleaseCallback = false;
-        return result;
-    };
-    const GrCaps* caps = context->priv().caps();
-    GrProxyProvider* proxyProvider = context->priv().proxyProvider();
-
-    GrBackendFormat format = caps->getDefaultBackendFormat(GrColorType::kAlpha_8,
-                                                           GrRenderable::kNo);
-    GrSwizzle swizzle = caps->getReadSwizzle(format, GrColorType::kAlpha_8);
-    sk_sp<GrTextureProxy> p = proxyProvider->createLazyProxy(std::move(lazy_cb),
-                                                             format,
-                                                             fBitmap.dimensions(),
-                                                             GrMipMapped::kNo,
-                                                             GrMipmapStatus::kNotAllocated,
-                                                             GrInternalSurfaceFlags::kNone,
-                                                             fit,
-                                                             SkBudgeted::kYes,
-                                                             GrProtected::kNo,
-                                                             GrProxyProvider::UseAllocator::kYes);
-    return GrSurfaceProxyView(std::move(p), kTopLeft_GrSurfaceOrigin, swizzle);
-}
-
-GrSurfaceProxyView GrSWMaskHelper::nonThreadedExecute(GrRecordingContext* context,
-                                                      SkBackingFit fit,
-                                                      const DrawFunc& draw) {
-    if (!this->allocate()) {
-        return {};
-    }
-    draw(this);
-    fBitmap.setImmutable();
-    GrBitmapTextureMaker maker(context, fBitmap, fit);
-    return maker.view(GrMipmapped::kNo);
-}
-
-GrSWMaskHelper::GrSWMaskHelper(const SkIRect& resultBounds) {
-    // We will need to translate draws so the bound's UL corner is at the origin
-    fTranslate = {-SkIntToScalar(resultBounds.fLeft), -SkIntToScalar(resultBounds.fTop)};
-    SkIRect bounds = SkIRect::MakeWH(resultBounds.width(), resultBounds.height());
-    fBitmap.setInfo(SkImageInfo::MakeA8(bounds.width(), bounds.height()));
-}
-
 /**
  * Draw a single rect element of the clip stack into the accumulation bitmap
  */
@@ -220,14 +128,33 @@
     }
 }
 
-bool GrSWMaskHelper::allocate() {
-    if (!fBitmap.tryAllocPixels()) {
-        SkDEBUGFAIL("Unable to allocate SW mask.");
+bool GrSWMaskHelper::init(const SkIRect& resultBounds) {
+    // We will need to translate draws so the bound's UL corner is at the origin
+    fTranslate = {-SkIntToScalar(resultBounds.fLeft), -SkIntToScalar(resultBounds.fTop)};
+    SkIRect bounds = SkIRect::MakeWH(resultBounds.width(), resultBounds.height());
+
+    const SkImageInfo bmImageInfo = SkImageInfo::MakeA8(bounds.width(), bounds.height());
+    if (!fPixels->tryAlloc(bmImageInfo)) {
         return false;
     }
+    fPixels->erase(0);
 
-    fDraw.fDst      = fBitmap.pixmap();
-    fRasterClip.setRect(fBitmap.info().bounds());
+    fDraw.fDst      = *fPixels;
+    fRasterClip.setRect(bounds);
     fDraw.fRC       = &fRasterClip;
     return true;
 }
+
+GrSurfaceProxyView GrSWMaskHelper::toTextureView(GrRecordingContext* context, SkBackingFit fit) {
+    SkImageInfo ii = SkImageInfo::MakeA8(fPixels->width(), fPixels->height());
+    size_t rowBytes = fPixels->rowBytes();
+
+    SkBitmap bitmap;
+    SkAssertResult(bitmap.installPixels(ii, fPixels->detachPixels(), rowBytes,
+                                        [](void* addr, void* context) { sk_free(addr); },
+                                        nullptr));
+    bitmap.setImmutable();
+
+    GrBitmapTextureMaker maker(context, bitmap, fit);
+    return maker.view(GrMipmapped::kNo);
+}