diff options
author | bungeman <bungeman@google.com> | 2016-06-09 08:01:03 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-06-09 08:01:03 -0700 |
commit | 06ca8ec87cf6fab57cadd043a5ac18c4154a4129 (patch) | |
tree | 95e7eaaaf3f42ce550332277c431e3ec119446f4 /gm | |
parent | 897a8e38879643d81a64d2bb6bed4e22af982aa4 (diff) |
sk_sp for Ganesh.
Convert use of GrFragmentProcessor, GrGeometryProcessor, and
GrXPFactory to sk_sp. This clarifies ownership and should
reduce reference count churn by moving ownership.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2041113004
Review-Url: https://codereview.chromium.org/2041113004
Diffstat (limited to 'gm')
-rw-r--r-- | gm/beziereffects.cpp | 45 | ||||
-rw-r--r-- | gm/bigrrectaaeffect.cpp | 7 | ||||
-rw-r--r-- | gm/constcolorprocessor.cpp | 4 | ||||
-rw-r--r-- | gm/convexpolyeffect.cpp | 20 | ||||
-rw-r--r-- | gm/dcshader.cpp | 8 | ||||
-rw-r--r-- | gm/rrects.cpp | 7 | ||||
-rw-r--r-- | gm/texturedomaineffect.cpp | 10 | ||||
-rw-r--r-- | gm/yuvtorgbeffect.cpp | 17 |
8 files changed, 56 insertions, 62 deletions
diff --git a/gm/beziereffects.cpp b/gm/beziereffects.cpp index 1224c1a8bb..ae1c37fdf6 100644 --- a/gm/beziereffects.cpp +++ b/gm/beziereffects.cpp @@ -34,10 +34,10 @@ public: const char* name() const override { return "BezierCubicOrConicTestBatch"; } - BezierCubicOrConicTestBatch(const GrGeometryProcessor* gp, const SkRect& bounds, + BezierCubicOrConicTestBatch(sk_sp<GrGeometryProcessor> gp, const SkRect& bounds, GrColor color, const SkScalar klmEqs[9], SkScalar sign) : INHERITED(ClassID(), bounds, color) - , fGeometryProcessor(SkRef(gp)) { + , fGeometryProcessor(std::move(gp)) { for (int i = 0; i < 9; i++) { fKlmEqs[i] = klmEqs[i]; } @@ -67,12 +67,12 @@ private: verts[v].fKLM[1] = eval_line(verts[v].fPosition, fKlmEqs + 3, fSign); verts[v].fKLM[2] = eval_line(verts[v].fPosition, fKlmEqs + 6, 1.f); } - helper.recordDraw(target, fGeometryProcessor); + helper.recordDraw(target, fGeometryProcessor.get()); } - SkScalar fKlmEqs[9]; - SkScalar fSign; - SkAutoTUnref<const GrGeometryProcessor> fGeometryProcessor; + SkScalar fKlmEqs[9]; + SkScalar fSign; + sk_sp<GrGeometryProcessor> fGeometryProcessor; static const int kVertsPerCubic = 4; static const int kIndicesPerCubic = 6; @@ -135,10 +135,9 @@ protected: {rand.nextRangeF(0.f, w), rand.nextRangeF(0.f, h)} }; for(int edgeType = 0; edgeType < kGrProcessorEdgeTypeCnt; ++edgeType) { - SkAutoTUnref<GrGeometryProcessor> gp; + sk_sp<GrGeometryProcessor> gp; GrPrimitiveEdgeType et = (GrPrimitiveEdgeType)edgeType; - gp.reset(GrCubicEffect::Create(color, SkMatrix::I(), et, - *context->caps())); + gp = GrCubicEffect::Make(color, SkMatrix::I(), et, *context->caps()); if (!gp) { continue; } @@ -191,7 +190,7 @@ protected: GrPipelineBuilder pipelineBuilder; pipelineBuilder.setXPFactory( - GrPorterDuffXPFactory::Create(SkXfermode::kSrc_Mode))->unref(); + GrPorterDuffXPFactory::Make(SkXfermode::kSrc_Mode)); SkAutoTUnref<GrDrawBatch> batch( new BezierCubicOrConicTestBatch(gp, bounds, color, klmEqs, klmSigns[c])); @@ -269,10 +268,10 @@ protected: }; SkScalar weight = rand.nextRangeF(0.f, 2.f); for(int edgeType = 0; edgeType < kGrProcessorEdgeTypeCnt; ++edgeType) { - SkAutoTUnref<GrGeometryProcessor> gp; + sk_sp<GrGeometryProcessor> gp; GrPrimitiveEdgeType et = (GrPrimitiveEdgeType)edgeType; - gp.reset(GrConicEffect::Create(color, SkMatrix::I(), et, - *context->caps(), SkMatrix::I(), false)); + gp = GrConicEffect::Make(color, SkMatrix::I(), et, + *context->caps(), SkMatrix::I(), false); if (!gp) { continue; } @@ -323,7 +322,7 @@ protected: GrPipelineBuilder pipelineBuilder; pipelineBuilder.setXPFactory( - GrPorterDuffXPFactory::Create(SkXfermode::kSrc_Mode))->unref(); + GrPorterDuffXPFactory::Make(SkXfermode::kSrc_Mode)); SkAutoTUnref<GrDrawBatch> batch( new BezierCubicOrConicTestBatch(gp, bounds, color, klmEqs, 1.f)); @@ -387,11 +386,11 @@ public: DEFINE_BATCH_CLASS_ID const char* name() const override { return "BezierQuadTestBatch"; } - BezierQuadTestBatch(const GrGeometryProcessor* gp, const SkRect& bounds, GrColor color, + BezierQuadTestBatch(sk_sp<GrGeometryProcessor> gp, const SkRect& bounds, GrColor color, const GrPathUtils::QuadUVMatrix& devToUV) : INHERITED(ClassID(), bounds, color) , fDevToUV(devToUV) - , fGeometryProcessor(SkRef(gp)) { + , fGeometryProcessor(std::move(gp)) { } private: @@ -413,11 +412,11 @@ private: verts[0].fPosition.setRectFan(bounds.fLeft, bounds.fTop, bounds.fRight, bounds.fBottom, sizeof(Vertex)); fDevToUV.apply<4, sizeof(Vertex), sizeof(SkPoint)>(verts); - helper.recordDraw(target, fGeometryProcessor); + helper.recordDraw(target, fGeometryProcessor.get()); } - GrPathUtils::QuadUVMatrix fDevToUV; - SkAutoTUnref<const GrGeometryProcessor> fGeometryProcessor; + GrPathUtils::QuadUVMatrix fDevToUV; + sk_sp<GrGeometryProcessor> fGeometryProcessor; static const int kVertsPerCubic = 4; static const int kIndicesPerCubic = 6; @@ -479,10 +478,10 @@ protected: {rand.nextRangeF(0.f, w), rand.nextRangeF(0.f, h)} }; for(int edgeType = 0; edgeType < kGrProcessorEdgeTypeCnt; ++edgeType) { - SkAutoTUnref<GrGeometryProcessor> gp; + sk_sp<GrGeometryProcessor> gp; GrPrimitiveEdgeType et = (GrPrimitiveEdgeType)edgeType; - gp.reset(GrQuadEffect::Create(color, SkMatrix::I(), et, - *context->caps(), SkMatrix::I(), false)); + gp = GrQuadEffect::Make(color, SkMatrix::I(), et, + *context->caps(), SkMatrix::I(), false); if (!gp) { continue; } @@ -530,7 +529,7 @@ protected: GrPipelineBuilder pipelineBuilder; pipelineBuilder.setXPFactory( - GrPorterDuffXPFactory::Create(SkXfermode::kSrc_Mode))->unref(); + GrPorterDuffXPFactory::Make(SkXfermode::kSrc_Mode)); GrPathUtils::QuadUVMatrix DevToUV(pts); diff --git a/gm/bigrrectaaeffect.cpp b/gm/bigrrectaaeffect.cpp index 1036ed0dab..924704a5ac 100644 --- a/gm/bigrrectaaeffect.cpp +++ b/gm/bigrrectaaeffect.cpp @@ -75,15 +75,14 @@ protected: canvas->drawRect(testBounds, paint); GrPipelineBuilder pipelineBuilder; - pipelineBuilder.setXPFactory( - GrPorterDuffXPFactory::Create(SkXfermode::kSrc_Mode))->unref(); + pipelineBuilder.setXPFactory(GrPorterDuffXPFactory::Make(SkXfermode::kSrc_Mode)); SkRRect rrect = fRRect; rrect.offset(SkIntToScalar(x + kGap), SkIntToScalar(y + kGap)); - SkAutoTUnref<GrFragmentProcessor> fp(GrRRectEffect::Create(edgeType, rrect)); + sk_sp<GrFragmentProcessor> fp(GrRRectEffect::Make(edgeType, rrect)); SkASSERT(fp); if (fp) { - pipelineBuilder.addCoverageFragmentProcessor(fp); + pipelineBuilder.addCoverageFragmentProcessor(std::move(fp)); SkRect bounds = testBounds; bounds.offset(SkIntToScalar(x), SkIntToScalar(y)); diff --git a/gm/constcolorprocessor.cpp b/gm/constcolorprocessor.cpp index ce2ae6e9fd..8ae93a4ae9 100644 --- a/gm/constcolorprocessor.cpp +++ b/gm/constcolorprocessor.cpp @@ -105,10 +105,10 @@ protected: GrConstColorProcessor::InputMode mode = (GrConstColorProcessor::InputMode) m; GrColor color = kColors[procColor]; - SkAutoTUnref<GrFragmentProcessor> fp(GrConstColorProcessor::Create(color, mode)); + sk_sp<GrFragmentProcessor> fp(GrConstColorProcessor::Make(color, mode)); GrPipelineBuilder pipelineBuilder(grPaint, drawContext->mustUseHWAA(grPaint)); - pipelineBuilder.addColorFragmentProcessor(fp); + pipelineBuilder.addColorFragmentProcessor(std::move(fp)); SkAutoTUnref<GrDrawBatch> batch( GrRectBatchFactory::CreateNonAAFill(grPaint.getColor(), viewMatrix, diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp index 13659476ba..3f8ae09a1a 100644 --- a/gm/convexpolyeffect.cpp +++ b/gm/convexpolyeffect.cpp @@ -58,8 +58,8 @@ private: Color color(this->color()); Coverage coverage(Coverage::kSolid_Type); LocalCoords localCoords(LocalCoords::kUnused_Type); - SkAutoTUnref<const GrGeometryProcessor> gp( - GrDefaultGeoProcFactory::Create(color, coverage, localCoords, SkMatrix::I())); + sk_sp<GrGeometryProcessor> gp( + GrDefaultGeoProcFactory::Make(color, coverage, localCoords, SkMatrix::I())); size_t vertexStride = gp->getVertexStride(); SkASSERT(vertexStride == sizeof(SkPoint)); @@ -71,7 +71,7 @@ private: fRect.toQuad(verts); - helper.recordDraw(target, gp); + helper.recordDraw(target, gp.get()); } SkRect fRect; @@ -173,15 +173,14 @@ protected: path->transform(m, &p); GrPrimitiveEdgeType edgeType = (GrPrimitiveEdgeType) et; - SkAutoTUnref<GrFragmentProcessor> fp(GrConvexPolyEffect::Create(edgeType, p)); + sk_sp<GrFragmentProcessor> fp(GrConvexPolyEffect::Make(edgeType, p)); if (!fp) { continue; } GrPipelineBuilder pipelineBuilder; - pipelineBuilder.setXPFactory( - GrPorterDuffXPFactory::Create(SkXfermode::kSrc_Mode))->unref(); - pipelineBuilder.addCoverageFragmentProcessor(fp); + pipelineBuilder.setXPFactory(GrPorterDuffXPFactory::Make(SkXfermode::kSrc_Mode)); + pipelineBuilder.addCoverageFragmentProcessor(std::move(fp)); SkAutoTUnref<GrDrawBatch> batch(new PolyBoundsBatch(p.getBounds(), 0xff000000)); @@ -213,15 +212,14 @@ protected: SkRect rect = *iter.get(); rect.offset(x, y); GrPrimitiveEdgeType edgeType = (GrPrimitiveEdgeType) et; - SkAutoTUnref<GrFragmentProcessor> fp(GrConvexPolyEffect::Create(edgeType, rect)); + sk_sp<GrFragmentProcessor> fp(GrConvexPolyEffect::Make(edgeType, rect)); if (!fp) { continue; } GrPipelineBuilder pipelineBuilder; - pipelineBuilder.setXPFactory( - GrPorterDuffXPFactory::Create(SkXfermode::kSrc_Mode))->unref(); - pipelineBuilder.addCoverageFragmentProcessor(fp); + pipelineBuilder.setXPFactory(GrPorterDuffXPFactory::Make(SkXfermode::kSrc_Mode)); + pipelineBuilder.addCoverageFragmentProcessor(std::move(fp)); SkAutoTUnref<GrDrawBatch> batch(new PolyBoundsBatch(rect, 0xff000000)); diff --git a/gm/dcshader.cpp b/gm/dcshader.cpp index 568a35376c..2b179a0a1f 100644 --- a/gm/dcshader.cpp +++ b/gm/dcshader.cpp @@ -35,7 +35,7 @@ public: buf.writeMatrix(fDeviceMatrix); } - const GrFragmentProcessor* asFragmentProcessor(GrContext*, + sk_sp<GrFragmentProcessor> asFragmentProcessor(GrContext*, const SkMatrix& viewM, const SkMatrix* localMatrix, SkFilterQuality, @@ -99,13 +99,13 @@ private: GrCoordTransform fDeviceTransform; }; -const GrFragmentProcessor* DCShader::asFragmentProcessor(GrContext*, +sk_sp<GrFragmentProcessor> DCShader::asFragmentProcessor(GrContext*, const SkMatrix& viewM, const SkMatrix* localMatrix, SkFilterQuality, SkSourceGammaTreatment) const { - SkAutoTUnref<const GrFragmentProcessor> inner(new DCFP(fDeviceMatrix)); - return GrFragmentProcessor::MulOutputByInputAlpha(inner); + sk_sp<GrFragmentProcessor> inner(new DCFP(fDeviceMatrix)); + return GrFragmentProcessor::MulOutputByInputAlpha(std::move(inner)); } class DCShaderGM : public GM { diff --git a/gm/rrects.cpp b/gm/rrects.cpp index 5f28c9e4a2..e104aea433 100644 --- a/gm/rrects.cpp +++ b/gm/rrects.cpp @@ -103,15 +103,14 @@ protected: #if SK_SUPPORT_GPU GrPipelineBuilder pipelineBuilder; pipelineBuilder.setXPFactory( - GrPorterDuffXPFactory::Create(SkXfermode::kSrc_Mode))->unref(); + GrPorterDuffXPFactory::Make(SkXfermode::kSrc_Mode)); SkRRect rrect = fRRects[curRRect]; rrect.offset(SkIntToScalar(x), SkIntToScalar(y)); GrPrimitiveEdgeType edgeType = (GrPrimitiveEdgeType) et; - SkAutoTUnref<GrFragmentProcessor> fp(GrRRectEffect::Create(edgeType, - rrect)); + sk_sp<GrFragmentProcessor> fp(GrRRectEffect::Make(edgeType, rrect)); if (fp) { - pipelineBuilder.addCoverageFragmentProcessor(fp); + pipelineBuilder.addCoverageFragmentProcessor(std::move(fp)); SkRect bounds = rrect.getBounds(); bounds.outset(2.f, 2.f); diff --git a/gm/texturedomaineffect.cpp b/gm/texturedomaineffect.cpp index 27cb59120e..cac2b9c8d5 100644 --- a/gm/texturedomaineffect.cpp +++ b/gm/texturedomaineffect.cpp @@ -114,18 +114,18 @@ protected: GrTextureDomain::Mode mode = (GrTextureDomain::Mode) m; GrPipelineBuilder pipelineBuilder; pipelineBuilder.setXPFactory( - GrPorterDuffXPFactory::Create(SkXfermode::kSrc_Mode))->unref(); - SkAutoTUnref<const GrFragmentProcessor> fp( - GrTextureDomainEffect::Create(texture, textureMatrices[tm], + GrPorterDuffXPFactory::Make(SkXfermode::kSrc_Mode)); + sk_sp<GrFragmentProcessor> fp( + GrTextureDomainEffect::Make(texture, textureMatrices[tm], GrTextureDomain::MakeTexelDomain(texture, - texelDomains[d]), + texelDomains[d]), mode, GrTextureParams::kNone_FilterMode)); if (!fp) { continue; } const SkMatrix viewMatrix = SkMatrix::MakeTrans(x, y); - pipelineBuilder.addColorFragmentProcessor(fp); + pipelineBuilder.addColorFragmentProcessor(std::move(fp)); SkAutoTUnref<GrDrawBatch> batch( GrRectBatchFactory::CreateNonAAFill(GrColor_WHITE, viewMatrix, diff --git a/gm/yuvtorgbeffect.cpp b/gm/yuvtorgbeffect.cpp index ca39c6c188..7fc8ff411b 100644 --- a/gm/yuvtorgbeffect.cpp +++ b/gm/yuvtorgbeffect.cpp @@ -114,18 +114,17 @@ protected: for (int i = 0; i < 6; ++i) { GrPipelineBuilder pipelineBuilder; - pipelineBuilder.setXPFactory( - GrPorterDuffXPFactory::Create(SkXfermode::kSrc_Mode))->unref(); - SkAutoTUnref<const GrFragmentProcessor> fp( - GrYUVEffect::CreateYUVToRGB(texture[indices[i][0]], - texture[indices[i][1]], - texture[indices[i][2]], - sizes, - static_cast<SkYUVColorSpace>(space))); + pipelineBuilder.setXPFactory(GrPorterDuffXPFactory::Make(SkXfermode::kSrc_Mode)); + sk_sp<GrFragmentProcessor> fp( + GrYUVEffect::MakeYUVToRGB(texture[indices[i][0]], + texture[indices[i][1]], + texture[indices[i][2]], + sizes, + static_cast<SkYUVColorSpace>(space))); if (fp) { SkMatrix viewMatrix; viewMatrix.setTranslate(x, y); - pipelineBuilder.addColorFragmentProcessor(fp); + pipelineBuilder.addColorFragmentProcessor(std::move(fp)); SkAutoTUnref<GrDrawBatch> batch( GrRectBatchFactory::CreateNonAAFill(GrColor_WHITE, viewMatrix, renderRect, nullptr, nullptr)); |