aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/effects/SkMorphologyImageFilter.cpp
diff options
context:
space:
mode:
authorGravatar robertphillips <robertphillips@google.com>2016-04-27 13:34:01 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-04-27 13:34:01 -0700
commit2f1c42e8448bbbadeb3df1c626faa90aa33f8907 (patch)
treed5fc271e0eb33e4203617ce852ce79d73444e4fd /src/effects/SkMorphologyImageFilter.cpp
parent4eeccc9de7d2381df85d68e0331a40cddf5989b1 (diff)
Refactor drawContext/RenderTarget creation
Diffstat (limited to 'src/effects/SkMorphologyImageFilter.cpp')
-rw-r--r--src/effects/SkMorphologyImageFilter.cpp41
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()),