Revise GM infrastructure to not rely on GrSurfaceDrawContext

The SDC will soon be V1-only. Remove it from the generic testing infrastructure and require each V1-specific GM to explicitly retrieve it.

Bug: skia:11837
Change-Id: I4c904b7e333333382062bde4b17a1f9f81bee6a9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/430425
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp
index ebdcb38..68f38c6 100644
--- a/gm/convexpolyeffect.cpp
+++ b/gm/convexpolyeffect.cpp
@@ -19,6 +19,7 @@
 #include "include/core/SkSize.h"
 #include "include/core/SkString.h"
 #include "include/private/GrTypesPriv.h"
+#include "src/core/SkCanvasPriv.h"
 #include "src/core/SkTLList.h"
 #include "src/gpu/GrFragmentProcessor.h"
 #include "src/gpu/GrPaint.h"
@@ -88,8 +89,13 @@
         fPaths.addToTail(linePath);
     }
 
-    void onDraw(GrRecordingContext* context, GrSurfaceDrawContext* surfaceDrawContext,
-                SkCanvas* canvas) override {
+    DrawResult onDraw(GrRecordingContext* rContext, SkCanvas* canvas, SkString* errorMsg) override {
+        auto sdc = SkCanvasPriv::TopDeviceSurfaceDrawContext(canvas);
+        if (!sdc) {
+            *errorMsg = kErrorMsg_DrawSkippedGpuOnly;
+            return DrawResult::kSkip;
+        }
+
         SkScalar y = 0;
         static constexpr SkScalar kDX = 12.f;
         static constexpr SkScalar kOutset = 5.f;
@@ -116,8 +122,8 @@
                 grPaint.setXPFactory(GrPorterDuffXPFactory::Get(SkBlendMode::kSrc));
                 grPaint.setCoverageFragmentProcessor(std::move(fp));
                 auto rect = p.getBounds().makeOutset(kOutset, kOutset);
-                auto op = sk_gpu_test::test_ops::MakeRect(context, std::move(grPaint), rect);
-                surfaceDrawContext->addDrawOp(std::move(op));
+                auto op = sk_gpu_test::test_ops::MakeRect(rContext, std::move(grPaint), rect);
+                sdc->addDrawOp(std::move(op));
 
                 x += SkScalarCeilToScalar(path->getBounds().width() + kDX);
             }
@@ -134,6 +140,8 @@
 
             y += SkScalarCeilToScalar(path->getBounds().height() + 20.f);
         }
+
+        return DrawResult::kOk;
     }
 
 private:
@@ -144,4 +152,5 @@
 };
 
 DEF_GM(return new ConvexPolyEffect;)
+
 }  // namespace skiagm