diff options
Diffstat (limited to 'src/effects/SkMorphologyImageFilter.cpp')
-rw-r--r-- | src/effects/SkMorphologyImageFilter.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/effects/SkMorphologyImageFilter.cpp b/src/effects/SkMorphologyImageFilter.cpp index 5d4b58c880..7e27249a13 100644 --- a/src/effects/SkMorphologyImageFilter.cpp +++ b/src/effects/SkMorphologyImageFilter.cpp @@ -474,6 +474,7 @@ static sk_sp<SkSpecialImage> apply_morphology(GrContext* context, SkISize radius) { sk_sp<GrTexture> srcTexture(input->asTextureRef(context)); SkASSERT(srcTexture); + sk_sp<SkColorSpace> colorSpace = sk_ref_sp(input->getColorSpace()); // setup new clip const GrFixedClip clip(SkIRect::MakeWH(srcTexture->width(), srcTexture->height())); @@ -486,7 +487,8 @@ static sk_sp<SkSpecialImage> apply_morphology(GrContext* context, if (radius.fWidth > 0) { sk_sp<GrDrawContext> dstDrawContext(context->newDrawContext(SkBackingFit::kApprox, rect.width(), rect.height(), - kSkia8888_GrPixelConfig)); + kSkia8888_GrPixelConfig, + colorSpace)); if (!dstDrawContext) { return nullptr; } @@ -507,7 +509,8 @@ static sk_sp<SkSpecialImage> apply_morphology(GrContext* context, if (radius.fHeight > 0) { sk_sp<GrDrawContext> dstDrawContext(context->newDrawContext(SkBackingFit::kApprox, rect.width(), rect.height(), - kSkia8888_GrPixelConfig)); + kSkia8888_GrPixelConfig, + colorSpace)); if (!dstDrawContext) { return nullptr; } @@ -519,10 +522,9 @@ static sk_sp<SkSpecialImage> apply_morphology(GrContext* context, srcTexture = dstDrawContext->asTexture(); } - // TODO: Get the colorSpace from the drawContext (once it has one) return SkSpecialImage::MakeFromGpu(SkIRect::MakeWH(rect.width(), rect.height()), kNeedNewImageUniqueID_SpecialImage, - std::move(srcTexture), sk_ref_sp(input->getColorSpace()), + std::move(srcTexture), std::move(colorSpace), &input->props()); } #endif |