diff options
author | 2016-04-27 13:34:01 -0700 | |
---|---|---|
committer | 2016-04-27 13:34:01 -0700 | |
commit | 2f1c42e8448bbbadeb3df1c626faa90aa33f8907 (patch) | |
tree | d5fc271e0eb33e4203617ce852ce79d73444e4fd /src/effects/SkMorphologyImageFilter.cpp | |
parent | 4eeccc9de7d2381df85d68e0331a40cddf5989b1 (diff) |
Refactor drawContext/RenderTarget creation
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1914883002
Review-Url: https://codereview.chromium.org/1914883002
Diffstat (limited to 'src/effects/SkMorphologyImageFilter.cpp')
-rw-r--r-- | src/effects/SkMorphologyImageFilter.cpp | 41 |
1 files changed, 15 insertions, 26 deletions
diff --git a/src/effects/SkMorphologyImageFilter.cpp b/src/effects/SkMorphologyImageFilter.cpp index 9e87fe04a4..2a0f078c05 100644 --- a/src/effects/SkMorphologyImageFilter.cpp +++ b/src/effects/SkMorphologyImageFilter.cpp @@ -478,26 +478,18 @@ static sk_sp<SkSpecialImage> apply_morphology(GrContext* context, SkASSERT(srcTexture); // setup new clip - GrClip clip(SkRect::MakeWH(SkIntToScalar(srcTexture->width()), - SkIntToScalar(srcTexture->height()))); - - SkIRect dstRect = SkIRect::MakeWH(rect.width(), rect.height()); - GrSurfaceDesc desc; - desc.fFlags = kRenderTarget_GrSurfaceFlag; - desc.fWidth = rect.width(); - desc.fHeight = rect.height(); - desc.fConfig = kSkia8888_GrPixelConfig; + const GrClip clip(SkRect::MakeWH(SkIntToScalar(srcTexture->width()), + SkIntToScalar(srcTexture->height()))); + + const SkIRect dstRect = SkIRect::MakeWH(rect.width(), rect.height()); SkIRect srcRect = rect; SkASSERT(radius.width() > 0 || radius.height() > 0); if (radius.fWidth > 0) { - GrTexture* scratch = context->textureProvider()->createApproxTexture(desc); - if (!scratch) { - return nullptr; - } - sk_sp<GrDrawContext> dstDrawContext( - context->drawContext(sk_ref_sp(scratch->asRenderTarget()))); + sk_sp<GrDrawContext> dstDrawContext(context->newDrawContext(GrContext::kLoose_BackingFit, + rect.width(), rect.height(), + kSkia8888_GrPixelConfig)); if (!dstDrawContext) { return nullptr; } @@ -507,21 +499,18 @@ static sk_sp<SkSpecialImage> apply_morphology(GrContext* context, Gr1DKernelEffect::kX_Direction); SkIRect clearRect = SkIRect::MakeXYWH(dstRect.fLeft, dstRect.fBottom, dstRect.width(), radius.fHeight); - GrColor clearColor = GrMorphologyEffect::kErode_MorphologyType == morphType ? - SK_ColorWHITE : - SK_ColorTRANSPARENT; + GrColor clearColor = GrMorphologyEffect::kErode_MorphologyType == morphType + ? SK_ColorWHITE + : SK_ColorTRANSPARENT; dstDrawContext->clear(&clearRect, clearColor, false); - srcTexture.reset(scratch); + srcTexture = dstDrawContext->asTexture(); srcRect = dstRect; } if (radius.fHeight > 0) { - GrTexture* scratch = context->textureProvider()->createApproxTexture(desc); - if (!scratch) { - return nullptr; - } - sk_sp<GrDrawContext> dstDrawContext( - context->drawContext(sk_ref_sp(scratch->asRenderTarget()))); + sk_sp<GrDrawContext> dstDrawContext(context->newDrawContext(GrContext::kLoose_BackingFit, + rect.width(), rect.height(), + kSkia8888_GrPixelConfig)); if (!dstDrawContext) { return nullptr; } @@ -530,7 +519,7 @@ static sk_sp<SkSpecialImage> apply_morphology(GrContext* context, srcRect, dstRect, radius.fHeight, morphType, Gr1DKernelEffect::kY_Direction); - srcTexture.reset(scratch); + srcTexture = dstDrawContext->asTexture(); } return SkSpecialImage::MakeFromGpu(SkIRect::MakeWH(rect.width(), rect.height()), |