return path;
}
-static void test_path(GrDrawTarget* dt, GrRenderTarget* rt, GrResourceProvider* rp,
- const SkPath& path) {
+static void test_path(GrDrawTarget* dt, GrDrawContext* drawContext,
+ GrResourceProvider* rp, const SkPath& path) {
GrTessellatingPathRenderer tess;
GrPipelineBuilder pipelineBuilder;
pipelineBuilder.setXPFactory(
GrPorterDuffXPFactory::Create(SkXfermode::kSrc_Mode))->unref();
- pipelineBuilder.setRenderTarget(rt);
+ pipelineBuilder.setRenderTarget(drawContext->accessRenderTarget());
GrNoClip noClip;
GrStyle style(SkStrokeRec::kFill_InitStyle);
GrPathRenderer::DrawPathArgs args;
}
DEF_GPUTEST_FOR_ALL_CONTEXTS(TessellatingPathRendererTests, reporter, ctxInfo) {
- GrSurfaceDesc desc;
- desc.fFlags = kRenderTarget_GrSurfaceFlag;
- desc.fWidth = 800;
- desc.fHeight = 800;
- desc.fConfig = kSkia8888_GrPixelConfig;
- desc.fOrigin = kTopLeft_GrSurfaceOrigin;
- SkAutoTUnref<GrTexture> texture(
- ctxInfo.grContext()->textureProvider()->createApproxTexture(desc));
+ sk_sp<GrDrawContext> drawContext(ctxInfo.grContext()->newDrawContext(SkBackingFit::kApprox,
+ 800, 800,
+ kSkia8888_GrPixelConfig,
+ 0,
+ kTopLeft_GrSurfaceOrigin));
+ if (!drawContext) {
+ return;
+ }
+
GrTestTarget tt;
- GrRenderTarget* rt = texture->asRenderTarget();
- ctxInfo.grContext()->getTestTarget(&tt, rt);
+ ctxInfo.grContext()->getTestTarget(&tt, drawContext);
GrDrawTarget* dt = tt.target();
GrResourceProvider* rp = tt.resourceProvider();
- test_path(dt, rt, rp, create_path_0());
- test_path(dt, rt, rp, create_path_1());
- test_path(dt, rt, rp, create_path_2());
- test_path(dt, rt, rp, create_path_3());
- test_path(dt, rt, rp, create_path_4());
- test_path(dt, rt, rp, create_path_5());
- test_path(dt, rt, rp, create_path_6());
- test_path(dt, rt, rp, create_path_7());
- test_path(dt, rt, rp, create_path_8());
- test_path(dt, rt, rp, create_path_9());
- test_path(dt, rt, rp, create_path_10());
- test_path(dt, rt, rp, create_path_11());
- test_path(dt, rt, rp, create_path_12());
- test_path(dt, rt, rp, create_path_13());
- test_path(dt, rt, rp, create_path_14());
- test_path(dt, rt, rp, create_path_15());
+ test_path(dt, drawContext.get(), rp, create_path_0());
+ test_path(dt, drawContext.get(), rp, create_path_1());
+ test_path(dt, drawContext.get(), rp, create_path_2());
+ test_path(dt, drawContext.get(), rp, create_path_3());
+ test_path(dt, drawContext.get(), rp, create_path_4());
+ test_path(dt, drawContext.get(), rp, create_path_5());
+ test_path(dt, drawContext.get(), rp, create_path_6());
+ test_path(dt, drawContext.get(), rp, create_path_7());
+ test_path(dt, drawContext.get(), rp, create_path_8());
+ test_path(dt, drawContext.get(), rp, create_path_9());
+ test_path(dt, drawContext.get(), rp, create_path_10());
+ test_path(dt, drawContext.get(), rp, create_path_11());
+ test_path(dt, drawContext.get(), rp, create_path_12());
+ test_path(dt, drawContext.get(), rp, create_path_13());
+ test_path(dt, drawContext.get(), rp, create_path_14());
+ test_path(dt, drawContext.get(), rp, create_path_15());
}
#endif
}
};
-void GrTestTarget::init(GrContext* ctx, GrDrawTarget* target, GrRenderTarget* rt) {
+void GrTestTarget::init(GrContext* ctx, sk_sp<GrDrawContext> drawContext) {
SkASSERT(!fContext);
fContext.reset(SkRef(ctx));
- fDrawTarget.reset(SkRef(target));
- fRenderTarget.reset(SkRef(rt));
+ fDrawContext = drawContext;
}
-void GrContext::getTestTarget(GrTestTarget* tar, GrRenderTarget* rt) {
+void GrContext::getTestTarget(GrTestTarget* tar, sk_sp<GrDrawContext> drawContext) {
this->flush();
+ SkASSERT(drawContext);
// We could create a proxy GrDrawTarget that passes through to fGpu until ~GrTextTarget() and
// then disconnects. This would help prevent test writers from mixing using the returned
// GrDrawTarget and regular drawing. We could also assert or fail in GrContext drawing methods
// until ~GrTestTarget().
- if (!rt) {
- GrSurfaceDesc desc;
- desc.fFlags = kRenderTarget_GrSurfaceFlag;
- desc.fWidth = 32;
- desc.fHeight = 32;
- desc.fConfig = kRGBA_8888_GrPixelConfig;
- desc.fSampleCnt = 0;
-
- SkAutoTUnref<GrTexture> texture(this->textureProvider()->createTexture(
- desc, SkBudgeted::kNo, nullptr, 0));
- if (nullptr == texture) {
- return;
- }
- SkASSERT(nullptr != texture->asRenderTarget());
- rt = texture->asRenderTarget();
- }
-
- SkAutoTUnref<GrDrawTarget> dt(fDrawingManager->newDrawTarget(rt));
- tar->init(this, dt, rt);
+ tar->init(this, std::move(drawContext));
}
void GrContext::setTextBlobCacheLimit_ForTesting(size_t bytes) {