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