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;