#include "Test.h"
+#include "SkPath.h"
+
#if SK_SUPPORT_GPU
#include "GrContext.h"
-#include "GrTest.h"
-#include "SkPath.h"
#include "ops/GrAADistanceFieldPathRenderer.h"
// This test case including path coords and matrix taken from crbug.com/627443.
// Because of inaccuracies in large floating point values this causes the
// the path renderer to attempt to add a path DF to its atlas that is larger
// than the plot size which used to crash rather than fail gracefully.
-static void test_far_from_origin(GrRenderTargetContext* renderTargetContext, GrPathRenderer* pr,
- GrResourceProvider* rp) {
+static void test_far_from_origin(GrResourceProvider* rp,
+ GrRenderTargetContext* renderTargetContext,
+ GrPathRenderer* pr) {
SkPath path;
path.lineTo(49.0255089839f, 0.473541f);
// This extra line wasn't in the original bug but was added to fake out GrShape's special
}
DEF_GPUTEST_FOR_ALL_GL_CONTEXTS(AADistanceFieldPathRenderer, reporter, ctxInfo) {
+ GrContext* ctx = ctxInfo.grContext();
// The DF PR only works with contexts that support derivatives
- if (!ctxInfo.grContext()->caps()->shaderCaps()->shaderDerivativeSupport()) {
+ if (!ctx->caps()->shaderCaps()->shaderDerivativeSupport()) {
return;
}
- sk_sp<GrRenderTargetContext> rtc(ctxInfo.grContext()->makeRenderTargetContext(
- SkBackingFit::kApprox,
- 800, 800,
- kRGBA_8888_GrPixelConfig,
- nullptr,
- 0,
- kTopLeft_GrSurfaceOrigin));
+ sk_sp<GrRenderTargetContext> rtc(ctx->makeRenderTargetContext(SkBackingFit::kApprox,
+ 800, 800,
+ kRGBA_8888_GrPixelConfig,
+ nullptr,
+ 0,
+ kTopLeft_GrSurfaceOrigin));
if (!rtc) {
return;
}
GrAADistanceFieldPathRenderer dfpr;
- GrTestTarget tt;
- ctxInfo.grContext()->getTestTarget(&tt, rtc);
- GrResourceProvider* rp = tt.resourceProvider();
- test_far_from_origin(rtc.get(), &dfpr, rp);
- ctxInfo.grContext()->flush();
+ ctx->flush();
+ test_far_from_origin(ctx->resourceProvider(), rtc.get(), &dfpr);
+ ctx->flush();
}
#endif
* found in the LICENSE file.
*/
+#include "Test.h"
+
#include "SkPath.h"
#if SK_SUPPORT_GPU
#include "GrContext.h"
-#include "GrTest.h"
-#include "Test.h"
#include "ops/GrTessellatingPathRenderer.h"
/*
return path;
}
-static void test_path(GrRenderTargetContext* renderTargetContext, GrResourceProvider* rp,
+static void test_path(GrResourceProvider* rp, GrRenderTargetContext* renderTargetContext,
const SkPath& path) {
GrTessellatingPathRenderer tess;
}
DEF_GPUTEST_FOR_ALL_CONTEXTS(TessellatingPathRendererTests, reporter, ctxInfo) {
- sk_sp<GrRenderTargetContext> rtc(ctxInfo.grContext()->makeRenderTargetContext(
- SkBackingFit::kApprox,
- 800, 800,
- kRGBA_8888_GrPixelConfig,
- nullptr,
- 0,
- kTopLeft_GrSurfaceOrigin));
+ GrContext* ctx = ctxInfo.grContext();
+ sk_sp<GrRenderTargetContext> rtc(ctx->makeRenderTargetContext(SkBackingFit::kApprox,
+ 800, 800,
+ kRGBA_8888_GrPixelConfig,
+ nullptr,
+ 0,
+ kTopLeft_GrSurfaceOrigin));
if (!rtc) {
return;
}
- GrTestTarget tt;
- ctxInfo.grContext()->getTestTarget(&tt, rtc);
- GrResourceProvider* rp = tt.resourceProvider();
+ GrResourceProvider* rp = ctx->resourceProvider();
- test_path(rtc.get(), rp, create_path_0());
- test_path(rtc.get(), rp, create_path_1());
- test_path(rtc.get(), rp, create_path_2());
- test_path(rtc.get(), rp, create_path_3());
- test_path(rtc.get(), rp, create_path_4());
- test_path(rtc.get(), rp, create_path_5());
- test_path(rtc.get(), rp, create_path_6());
- test_path(rtc.get(), rp, create_path_7());
- test_path(rtc.get(), rp, create_path_8());
- test_path(rtc.get(), rp, create_path_9());
- test_path(rtc.get(), rp, create_path_10());
- test_path(rtc.get(), rp, create_path_11());
- test_path(rtc.get(), rp, create_path_12());
- test_path(rtc.get(), rp, create_path_13());
- test_path(rtc.get(), rp, create_path_14());
- test_path(rtc.get(), rp, create_path_15());
- test_path(rtc.get(), rp, create_path_16());
+ ctx->flush();
+ test_path(rp, rtc.get(), create_path_0());
+ test_path(rp, rtc.get(), create_path_1());
+ test_path(rp, rtc.get(), create_path_2());
+ test_path(rp, rtc.get(), create_path_3());
+ test_path(rp, rtc.get(), create_path_4());
+ test_path(rp, rtc.get(), create_path_5());
+ test_path(rp, rtc.get(), create_path_6());
+ test_path(rp, rtc.get(), create_path_7());
+ test_path(rp, rtc.get(), create_path_8());
+ test_path(rp, rtc.get(), create_path_9());
+ test_path(rp, rtc.get(), create_path_10());
+ test_path(rp, rtc.get(), create_path_11());
+ test_path(rp, rtc.get(), create_path_12());
+ test_path(rp, rtc.get(), create_path_13());
+ test_path(rp, rtc.get(), create_path_14());
+ test_path(rp, rtc.get(), create_path_15());
+ test_path(rp, rtc.get(), create_path_16());
}
#endif
}
};
-void GrTestTarget::init(GrContext* ctx, sk_sp<GrRenderTargetContext> renderTargetContext) {
- SkASSERT(!fContext);
-
- fContext.reset(SkRef(ctx));
- fRenderTargetContext = renderTargetContext;
-}
-
bool GrSurfaceProxy::isWrapped_ForTesting() const {
return SkToBool(fTarget);
}
return fRenderTargetProxy->isWrapped_ForTesting();
}
-void GrContext::getTestTarget(GrTestTarget* tar, sk_sp<GrRenderTargetContext> renderTargetContext) {
- this->flush();
- SkASSERT(renderTargetContext);
- // We could create a proxy GrOpList that passes through to fGpu until ~GrTextTarget() and
- // then disconnects. This would help prevent test writers from mixing using the returned
- // GrOpList and regular drawing. We could also assert or fail in GrContext drawing methods
- // until ~GrTestTarget().
- tar->init(this, std::move(renderTargetContext));
-}
-
void GrContext::setTextBlobCacheLimit_ForTesting(size_t bytes) {
fTextBlobCache->setBudget(bytes);
}