Make GM::onGpuSetup take a GrDirectContext

This should, hopefully, clarify the role of onGpuSetup vis a vis onDraw.

The remaining tools are updated in:
https://skia-review.googlesource.com/c/skia/+/300220/ (Update remaining tools to GrDirectContext)

Change-Id: I19d6eec4d16cb9ebad8924763a18225cc871f0f2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300172
Reviewed-by: Adlai Holler <[email protected]>
Commit-Queue: Robert Phillips <[email protected]>
diff --git a/dm/DM.cpp b/dm/DM.cpp
index 57528ec..40848e9 100644
--- a/dm/DM.cpp
+++ b/dm/DM.cpp
@@ -910,7 +910,7 @@
 
     // Try a simple Src as a canary.  If it fails, skip this sink.
     struct : public Src {
-        Result draw(GrContext*, SkCanvas* c) const override {
+        Result draw(GrDirectContext*, SkCanvas* c) const override {
             c->drawRect(SkRect::MakeWH(1,1), SkPaint());
             return Result::Ok();
         }
diff --git a/dm/DMGpuTestProcs.cpp b/dm/DMGpuTestProcs.cpp
index e9369d5..6c3eb4c 100644
--- a/dm/DMGpuTestProcs.cpp
+++ b/dm/DMGpuTestProcs.cpp
@@ -7,6 +7,8 @@
 
 #include "tests/Test.h"
 
+#include "include/gpu/GrDirectContext.h"
+
 using sk_gpu_test::GrContextFactory;
 using sk_gpu_test::GLTestContext;
 using sk_gpu_test::ContextInfo;
@@ -65,12 +67,12 @@
         }
 
         ReporterContext ctx(reporter, SkString(GrContextFactory::ContextTypeName(contextType)));
-        if (ctxInfo.grContext()) {
+        if (ctxInfo.directContext()) {
             (*test)(reporter, ctxInfo);
             // In case the test changed the current context make sure we move it back before
             // calling flush.
             ctxInfo.testContext()->makeCurrent();
-            ctxInfo.grContext()->flushAndSubmit();
+            ctxInfo.directContext()->flushAndSubmit();
         }
     }
 }
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp
index d78b0dc..405c895 100644
--- a/dm/DMSrcSink.cpp
+++ b/dm/DMSrcSink.cpp
@@ -22,6 +22,7 @@
 #include "include/core/SkSurfaceCharacterization.h"
 #include "include/docs/SkPDFDocument.h"
 #include "include/gpu/GrBackendSurface.h"
+#include "include/gpu/GrDirectContext.h"
 #include "include/ports/SkImageGeneratorCG.h"
 #include "include/ports/SkImageGeneratorWIC.h"
 #include "include/private/SkImageInfoPriv.h"
@@ -94,7 +95,7 @@
 
 GMSrc::GMSrc(skiagm::GMFactory factory) : fFactory(factory) {}
 
-Result GMSrc::draw(GrContext* context, SkCanvas* canvas) const {
+Result GMSrc::draw(GrDirectContext* context, SkCanvas* canvas) const {
     std::unique_ptr<skiagm::GM> gm(fFactory());
     SkString msg;
 
@@ -173,7 +174,7 @@
     }
 }
 
-Result BRDSrc::draw(GrContext*, SkCanvas* canvas) const {
+Result BRDSrc::draw(GrDirectContext*, SkCanvas* canvas) const {
     SkColorType colorType = canvas->imageInfo().colorType();
     if (kRGB_565_SkColorType == colorType &&
         CodecSrc::kGetFromCanvas_DstColorType != fDstColorType)
@@ -414,7 +415,7 @@
     *info = info->makeColorSpace(SkColorSpace::MakeSRGB());
 }
 
-Result CodecSrc::draw(GrContext*, SkCanvas* canvas) const {
+Result CodecSrc::draw(GrDirectContext*, SkCanvas* canvas) const {
     sk_sp<SkData> encoded(SkData::MakeFromFileName(fPath.c_str()));
     if (!encoded) {
         return Result::Fatal("Couldn't read %s.", fPath.c_str());
@@ -799,7 +800,7 @@
         || flags.approach != SinkFlags::kDirect;
 }
 
-Result AndroidCodecSrc::draw(GrContext*, SkCanvas* canvas) const {
+Result AndroidCodecSrc::draw(GrDirectContext*, SkCanvas* canvas) const {
     sk_sp<SkData> encoded(SkData::MakeFromFileName(fPath.c_str()));
     if (!encoded) {
         return Result::Fatal("Couldn't read %s.", fPath.c_str());
@@ -891,7 +892,7 @@
     return flags.type != SinkFlags::kRaster || flags.approach != SinkFlags::kDirect;
 }
 
-Result ImageGenSrc::draw(GrContext*, SkCanvas* canvas) const {
+Result ImageGenSrc::draw(GrDirectContext*, SkCanvas* canvas) const {
     if (kRGB_565_SkColorType == canvas->imageInfo().colorType()) {
         return Result::Skip("Uninteresting to test image generator to 565.");
     }
@@ -989,7 +990,7 @@
     return flags.type != SinkFlags::kRaster || flags.approach != SinkFlags::kDirect;
 }
 
-Result ColorCodecSrc::draw(GrContext*, SkCanvas* canvas) const {
+Result ColorCodecSrc::draw(GrDirectContext*, SkCanvas* canvas) const {
     sk_sp<SkData> encoded(SkData::MakeFromFileName(fPath.c_str()));
     if (!encoded) {
         return Result::Fatal("Couldn't read %s.", fPath.c_str());
@@ -1054,7 +1055,7 @@
 
 SKPSrc::SKPSrc(Path path) : fPath(path) { }
 
-Result SKPSrc::draw(GrContext*, SkCanvas* canvas) const {
+Result SKPSrc::draw(GrDirectContext*, SkCanvas* canvas) const {
     std::unique_ptr<SkStream> stream = SkStream::MakeFromFile(fPath.c_str());
     if (!stream) {
         return Result::Fatal("Couldn't read %s.", fPath.c_str());
@@ -1096,7 +1097,7 @@
 
 BisectSrc::BisectSrc(Path path, const char* trail) : INHERITED(path), fTrail(trail) {}
 
-Result BisectSrc::draw(GrContext* context, SkCanvas* canvas) const {
+Result BisectSrc::draw(GrDirectContext* context, SkCanvas* canvas) const {
     struct FoundPath {
         SkPath fPath;
         SkPaint fPaint;
@@ -1152,7 +1153,7 @@
 
 SkottieSrc::SkottieSrc(Path path) : fPath(std::move(path)) {}
 
-Result SkottieSrc::draw(GrContext*, SkCanvas* canvas) const {
+Result SkottieSrc::draw(GrDirectContext*, SkCanvas* canvas) const {
     auto resource_provider =
             skresources::DataURIResourceProviderProxy::Make(
                 skresources::FileResourceProvider::Make(SkOSPath::Dirname(fPath.c_str()),
@@ -1229,7 +1230,7 @@
 #if defined(SK_ENABLE_SKRIVE)
 SkRiveSrc::SkRiveSrc(Path path) : fPath(std::move(path)) {}
 
-Result SkRiveSrc::draw(GrContext*, SkCanvas* canvas) const {
+Result SkRiveSrc::draw(GrDirectContext*, SkCanvas* canvas) const {
     auto fileStream = SkFILEStream::Make(fPath.c_str());
     if (!fileStream) {
         return Result::Fatal("Unable to open file: %s", fPath.c_str());
@@ -1314,7 +1315,7 @@
     }
 }
 
-Result SVGSrc::draw(GrContext*, SkCanvas* canvas) const {
+Result SVGSrc::draw(GrDirectContext*, SkCanvas* canvas) const {
     if (!fDom) {
         return Result::Fatal("Unable to parse file: %s", fName.c_str());
     }
@@ -1365,10 +1366,10 @@
     return i >= 0 && i < fPages.count() ? fPages[i].fSize.toCeil() : SkISize{0, 0};
 }
 
-Result MSKPSrc::draw(GrContext* context, SkCanvas* c) const {
+Result MSKPSrc::draw(GrDirectContext* context, SkCanvas* c) const {
     return this->draw(0, context, c);
 }
-Result MSKPSrc::draw(int i, GrContext*, SkCanvas* canvas) const {
+Result MSKPSrc::draw(int i, GrDirectContext*, SkCanvas* canvas) const {
     if (this->pageCount() == 0) {
         return Result::Fatal("Unable to parse MultiPictureDocument file: %s", fPath.c_str());
     }
@@ -1463,7 +1464,7 @@
     return this->onDraw(src, dst, dstStream, log, fBaseContextOptions);
 }
 
-sk_sp<SkSurface> GPUSink::createDstSurface(GrContext* context, SkISize size,
+sk_sp<SkSurface> GPUSink::createDstSurface(GrDirectContext* context, SkISize size,
                                            GrBackendTexture* backendTexture,
                                            GrBackendRenderTarget* backendRT) const {
     sk_sp<SkSurface> surface;
@@ -1522,19 +1523,19 @@
     SkASSERT(exec == grOptions.fExecutor);
 
     GrContextFactory factory(grOptions);
-    GrContext* context = factory.getContextInfo(fContextType, fContextOverrides).grContext();
+    auto direct = factory.getContextInfo(fContextType, fContextOverrides).directContext();
     if (initContext) {
-        initContext(context);
+        initContext(direct);
     }
 
-    const int maxDimension = context->priv().caps()->maxTextureSize();
+    const int maxDimension = direct->priv().caps()->maxTextureSize();
     if (maxDimension < std::max(src.size().width(), src.size().height())) {
         return Result::Skip("Src too large to create a texture.\n");
     }
 
     GrBackendTexture backendTexture;
     GrBackendRenderTarget backendRT;
-    sk_sp<SkSurface> surface = this->createDstSurface(context, src.size(),
+    sk_sp<SkSurface> surface = this->createDstSurface(direct, src.size(),
                                                       &backendTexture, &backendRT);
     if (!surface) {
         return Result::Fatal("Could not create a surface.");
@@ -1543,15 +1544,15 @@
         factory.abandonContexts();
     }
     SkCanvas* canvas = surface->getCanvas();
-    Result result = src.draw(context, canvas);
+    Result result = src.draw(direct, canvas);
     if (!result.isOk()) {
         return result;
     }
     surface->flushAndSubmit();
     if (FLAGS_gpuStats) {
-        context->priv().dumpCacheStats(log);
-        context->priv().dumpGpuStats(log);
-        context->priv().dumpContextStats(log);
+        direct->priv().dumpCacheStats(log);
+        direct->priv().dumpGpuStats(log);
+        direct->priv().dumpContextStats(log);
     }
 
     this->readBack(surface.get(), dst);
@@ -1561,17 +1562,17 @@
     } else if (FLAGS_releaseAndAbandonGpuContext) {
         factory.releaseResourcesAndAbandonContexts();
     }
-    if (!context->abandoned()) {
+    if (!direct->abandoned()) {
         surface.reset();
         if (backendTexture.isValid()) {
-            context->deleteBackendTexture(backendTexture);
+            direct->deleteBackendTexture(backendTexture);
         }
         if (backendRT.isValid()) {
-            context->priv().getGpu()->deleteTestingOnlyBackendRenderTarget(backendRT);
+            direct->priv().getGpu()->deleteTestingOnlyBackendRenderTarget(backendRT);
         }
     }
     if (grOptions.fPersistentCache) {
-        context->storeVkPipelineCacheData();
+        direct->storeVkPipelineCacheData();
     }
     return Result::Ok();
 }
@@ -1703,7 +1704,7 @@
 
 Result GPUOOPRSink::ooprDraw(const Src& src,
                              sk_sp<SkSurface> dstSurface,
-                             GrContext* context) const {
+                             GrDirectContext* context) const {
     SkSurfaceCharacterization dstCharacterization;
     SkAssertResult(dstSurface->characterize(&dstCharacterization));
 
@@ -1735,7 +1736,7 @@
     GrContextFactory factory(contextOptions);
 
     ContextInfo ctxInfo = factory.getContextInfo(this->contextType(), this->contextOverrides());
-    GrContext* context = ctxInfo.grContext();
+    auto context = ctxInfo.directContext();
     if (!context) {
         return Result::Fatal("Could not create context.");
     }
@@ -1788,7 +1789,7 @@
                            SkTaskGroup* recordingTaskGroup,
                            SkTaskGroup* gpuTaskGroup,
                            sk_gpu_test::TestContext* gpuTestCtx,
-                           GrContext* gpuThreadCtx) const {
+                           GrDirectContext* gpuThreadCtx) const {
 
     // We have to do this here bc characterization can hit the SkGpuDevice's thread guard (i.e.,
     // leaving it until the DDLTileHelper ctor will result in multiple threads trying to use the
@@ -1894,7 +1895,7 @@
     // This captures the context destined to be the main gpu context
     ContextInfo mainCtxInfo = factory.getContextInfo(this->contextType(), this->contextOverrides());
     sk_gpu_test::TestContext* mainTestCtx = mainCtxInfo.testContext();
-    GrContext* mainCtx = mainCtxInfo.grContext();
+    auto mainCtx = mainCtxInfo.directContext();
     if (!mainCtx) {
         return Result::Fatal("Could not create context.");
     }
@@ -2127,11 +2128,11 @@
 
 template <typename Fn>
 static Result draw_to_canvas(Sink* sink, SkBitmap* bitmap, SkWStream* stream, SkString* log,
-                            SkISize size, const Fn& draw) {
+                             SkISize size, const Fn& draw) {
     class ProxySrc : public Src {
     public:
         ProxySrc(SkISize size, const Fn& draw) : fSize(size), fDraw(draw) {}
-        Result  draw(GrContext*, SkCanvas* canvas) const override { return fDraw(canvas); }
+        Result  draw(GrDirectContext*, SkCanvas* canvas) const override { return fDraw(canvas); }
         Name    name() const override { return "ProxySrc"; }
         SkISize size() const override { return fSize; }
     private:
diff --git a/dm/DMSrcSink.h b/dm/DMSrcSink.h
index a6ed9ba..ec0f59c 100644
--- a/dm/DMSrcSink.h
+++ b/dm/DMSrcSink.h
@@ -86,14 +86,15 @@
 
 struct Src {
     virtual ~Src() {}
-    virtual Result SK_WARN_UNUSED_RESULT draw(GrContext*, SkCanvas*) const = 0;
+    virtual Result SK_WARN_UNUSED_RESULT draw(GrDirectContext*, SkCanvas*) const = 0;
     virtual SkISize size() const = 0;
     virtual Name name() const = 0;
     virtual void modifyGrContextOptions(GrContextOptions* options) const {}
     virtual bool veto(SinkFlags) const { return false; }
 
     virtual int pageCount() const { return 1; }
-    virtual Result SK_WARN_UNUSED_RESULT draw(int, GrContext* context, SkCanvas* canvas) const {
+    virtual Result SK_WARN_UNUSED_RESULT draw(int, GrDirectContext* context,
+                                              SkCanvas* canvas) const {
         return this->draw(context, canvas);
     }
     virtual SkISize size(int) const { return this->size(); }
@@ -130,7 +131,7 @@
 public:
     explicit GMSrc(skiagm::GMFactory);
 
-    Result draw(GrContext*, SkCanvas*) const override;
+    Result draw(GrDirectContext*, SkCanvas*) const override;
     SkISize size() const override;
     Name name() const override;
     void modifyGrContextOptions(GrContextOptions* options) const override;
@@ -162,7 +163,7 @@
     };
     CodecSrc(Path, Mode, DstColorType, SkAlphaType, float);
 
-    Result draw(GrContext*, SkCanvas*) const override;
+    Result draw(GrDirectContext*, SkCanvas*) const override;
     SkISize size() const override;
     Name name() const override;
     bool veto(SinkFlags) const override;
@@ -180,7 +181,7 @@
 public:
     AndroidCodecSrc(Path, CodecSrc::DstColorType, SkAlphaType, int sampleSize);
 
-    Result draw(GrContext*, SkCanvas*) const override;
+    Result draw(GrDirectContext*, SkCanvas*) const override;
     SkISize size() const override;
     Name name() const override;
     bool veto(SinkFlags) const override;
@@ -209,7 +210,7 @@
 
     BRDSrc(Path, Mode, CodecSrc::DstColorType, uint32_t);
 
-    Result draw(GrContext*, SkCanvas*) const override;
+    Result draw(GrDirectContext*, SkCanvas*) const override;
     SkISize size() const override;
     Name name() const override;
     bool veto(SinkFlags) const override;
@@ -229,7 +230,7 @@
     };
     ImageGenSrc(Path, Mode, SkAlphaType, bool);
 
-    Result draw(GrContext*, SkCanvas*) const override;
+    Result draw(GrDirectContext*, SkCanvas*) const override;
     SkISize size() const override;
     Name name() const override;
     bool veto(SinkFlags) const override;
@@ -246,7 +247,7 @@
 public:
     ColorCodecSrc(Path, bool decode_to_dst);
 
-    Result draw(GrContext*, SkCanvas*) const override;
+    Result draw(GrDirectContext*, SkCanvas*) const override;
     SkISize size() const override;
     Name name() const override;
     bool veto(SinkFlags) const override;
@@ -259,7 +260,7 @@
 public:
     explicit SKPSrc(Path path);
 
-    Result draw(GrContext*, SkCanvas*) const override;
+    Result draw(GrDirectContext*, SkCanvas*) const override;
     SkISize size() const override;
     Name name() const override;
 private:
@@ -273,7 +274,7 @@
 public:
     explicit BisectSrc(Path path, const char* trail);
 
-    Result draw(GrContext*, SkCanvas*) const override;
+    Result draw(GrDirectContext*, SkCanvas*) const override;
 
 private:
     SkString fTrail;
@@ -286,7 +287,7 @@
 public:
     explicit SkottieSrc(Path path);
 
-    Result draw(GrContext*, SkCanvas*) const override;
+    Result draw(GrDirectContext*, SkCanvas*) const override;
     SkISize size() const override;
     Name name() const override;
     bool veto(SinkFlags) const override;
@@ -308,7 +309,7 @@
 public:
     explicit SkRiveSrc(Path path);
 
-    Result draw(GrContext*, SkCanvas*) const override;
+    Result draw(GrDirectContext*, SkCanvas*) const override;
     SkISize size() const override;
     Name name() const override;
     bool veto(SinkFlags) const override;
@@ -336,7 +337,7 @@
 public:
     explicit SVGSrc(Path path);
 
-    Result draw(GrContext*, SkCanvas*) const override;
+    Result draw(GrDirectContext*, SkCanvas*) const override;
     SkISize size() const override;
     Name name() const override;
     bool veto(SinkFlags) const override;
@@ -356,8 +357,8 @@
     explicit MSKPSrc(Path path);
 
     int pageCount() const override;
-    Result draw(GrContext*, SkCanvas* c) const override;
-    Result draw(int, GrContext*, SkCanvas*) const override;
+    Result draw(GrDirectContext*, SkCanvas* c) const override;
+    Result draw(int, GrDirectContext*, SkCanvas*) const override;
     SkISize size() const override;
     SkISize size(int) const override;
     Name name() const override;
@@ -406,7 +407,7 @@
     }
 
 protected:
-    sk_sp<SkSurface> createDstSurface(GrContext*, SkISize size, GrBackendTexture*,
+    sk_sp<SkSurface> createDstSurface(GrDirectContext*, SkISize size, GrBackendTexture*,
                                       GrBackendRenderTarget*) const;
     bool readBack(SkSurface*, SkBitmap* dst) const;
 
@@ -482,7 +483,7 @@
     Result draw(const Src&, SkBitmap*, SkWStream*, SkString*) const override;
 
 private:
-    Result ooprDraw(const Src&, sk_sp<SkSurface> dstSurface, GrContext*) const;
+    Result ooprDraw(const Src&, sk_sp<SkSurface> dstSurface, GrDirectContext*) const;
 
     typedef GPUSink INHERITED;
 };
@@ -507,7 +508,7 @@
                    SkTaskGroup* recordingTaskGroup,
                    SkTaskGroup* gpuTaskGroup,
                    sk_gpu_test::TestContext* gpuTestCtx,
-                   GrContext* gpuThreadCtx) const;
+                   GrDirectContext* gpuThreadCtx) const;
 
     std::unique_ptr<SkExecutor> fRecordingExecutor;
     std::unique_ptr<SkExecutor> fGPUExecutor;