| Index: src/effects/SkBlurMaskFilter.cpp
|
| diff --git a/src/effects/SkBlurMaskFilter.cpp b/src/effects/SkBlurMaskFilter.cpp
|
| index 0a98fa8c3a61ee52d3f95aa4266f278992e7ab0c..35bf428d870e8489c474d5e28334a95934f44eba 100644
|
| --- a/src/effects/SkBlurMaskFilter.cpp
|
| +++ b/src/effects/SkBlurMaskFilter.cpp
|
| @@ -20,6 +20,7 @@
|
| #include "GrContext.h"
|
| #include "GrRenderTargetContext.h"
|
| #include "GrTexture.h"
|
| +#include "GrTextureProxy.h"
|
| #include "GrFragmentProcessor.h"
|
| #include "GrInvariantOutput.h"
|
| #include "GrStyle.h"
|
| @@ -64,10 +65,10 @@ public:
|
| const SkStrokeRec& strokeRec,
|
| const SkRRect& rrect,
|
| const SkRRect& devRRect) const override;
|
| - bool filterMaskGPU(GrTexture* src,
|
| + bool filterMaskGPU(GrTextureProxy* src,
|
| const SkMatrix& ctm,
|
| const SkIRect& maskRect,
|
| - GrTexture** result) const override;
|
| + GrTextureProxy** result) const override;
|
| #endif
|
|
|
| void computeFastBounds(const SkRect&, SkRect*) const override;
|
| @@ -1084,6 +1085,8 @@ private:
|
|
|
| GrRRectBlurEffect(float sigma, const SkRRect&, GrTexture* profileTexture);
|
|
|
| + GrRRectBlurEffect(float sigma, const SkRRect&, GrTextureProxy* profileTexture);
|
| +
|
| virtual void onGetGLSLProcessorKey(const GrGLSLCaps& caps,
|
| GrProcessorKeyBuilder* b) const override;
|
|
|
| @@ -1100,11 +1103,11 @@ private:
|
| typedef GrFragmentProcessor INHERITED;
|
| };
|
|
|
| -static sk_sp<GrTexture> find_or_create_rrect_blur_mask(GrContext* context,
|
| - const SkRRect& rrectToDraw,
|
| - const SkISize& size,
|
| - float xformedSigma,
|
| - bool doAA) {
|
| +static sk_sp<GrTextureProxy> find_or_create_rrect_blur_mask(GrContext* context,
|
| + const SkRRect& rrectToDraw,
|
| + const SkISize& size,
|
| + float xformedSigma,
|
| + bool doAA) {
|
| static const GrUniqueKey::Domain kDomain = GrUniqueKey::GenerateDomain();
|
| GrUniqueKey key;
|
| GrUniqueKey::Builder builder(&key, kDomain, 9);
|
| @@ -1119,7 +1122,7 @@ static sk_sp<GrTexture> find_or_create_rrect_blur_mask(GrContext* context,
|
| }
|
| builder.finish();
|
|
|
| - sk_sp<GrTexture> mask(context->textureProvider()->findAndRefTextureByUniqueKey(key));
|
| + sk_sp<GrTextureProxy> mask(context->textureProvider()->findAndRefTextureProxyByUniqueKey(key));
|
| if (!mask) {
|
| // TODO: this could be approx but the texture coords will need to be updated
|
| sk_sp<GrRenderTargetContext> rtc(context->makeRenderTargetContextWithFallback(
|
| @@ -1134,7 +1137,7 @@ static sk_sp<GrTexture> find_or_create_rrect_blur_mask(GrContext* context,
|
| rtc->clear(nullptr, 0x0, true);
|
| rtc->drawRRect(GrNoClip(), grPaint, SkMatrix::I(), rrectToDraw, GrStyle::SimpleFill());
|
|
|
| - sk_sp<GrTexture> srcTexture(rtc->asTexture());
|
| + sk_sp<GrTextureProxy> srcTexture(rtc->asDeferredTexture());
|
| sk_sp<GrRenderTargetContext> rtc2(SkGpuBlurUtils::GaussianBlur(context,
|
| srcTexture.get(),
|
| nullptr,
|
| @@ -1148,9 +1151,9 @@ static sk_sp<GrTexture> find_or_create_rrect_blur_mask(GrContext* context,
|
| return nullptr;
|
| }
|
|
|
| - mask = rtc2->asTexture();
|
| + mask = rtc2->asDeferredTexture();
|
| SkASSERT(mask);
|
| - context->textureProvider()->assignUniqueKeyToTexture(key, mask.get());
|
| + context->textureProvider()->assignUniqueKeyToDeferredTexture(key, mask.get());
|
| }
|
|
|
| return mask;
|
| @@ -1187,8 +1190,8 @@ sk_sp<GrFragmentProcessor> GrRRectBlurEffect::Make(GrContext* context,
|
| return nullptr;
|
| }
|
|
|
| - sk_sp<GrTexture> mask(find_or_create_rrect_blur_mask(context, rrectToDraw, size,
|
| - xformedSigma, true));
|
| + sk_sp<GrTextureProxy> mask(find_or_create_rrect_blur_mask(context, rrectToDraw, size,
|
| + xformedSigma, true));
|
| if (!mask) {
|
| return nullptr;
|
| }
|
| @@ -1488,10 +1491,10 @@ bool SkBlurMaskFilterImpl::canFilterMaskGPU(const SkRRect& devRRect,
|
| return true;
|
| }
|
|
|
| -bool SkBlurMaskFilterImpl::filterMaskGPU(GrTexture* src,
|
| +bool SkBlurMaskFilterImpl::filterMaskGPU(GrTextureProxy* src,
|
| const SkMatrix& ctm,
|
| const SkIRect& maskRect,
|
| - GrTexture** result) const {
|
| + GrTextureProxy** result) const {
|
| // 'maskRect' isn't snapped to the UL corner but the mask in 'src' is.
|
| const SkIRect clipRect = SkIRect::MakeWH(maskRect.width(), maskRect.height());
|
|
|
| @@ -1536,7 +1539,7 @@ bool SkBlurMaskFilterImpl::filterMaskGPU(GrTexture* src,
|
| renderTargetContext->drawRect(GrNoClip(), paint, SkMatrix::I(), SkRect::Make(clipRect));
|
| }
|
|
|
| - *result = renderTargetContext->asTexture().release();
|
| + *result = renderTargetContext->asDeferredTexture().release();
|
| return true;
|
| }
|
|
|
|
|