diff options
author | Robert Phillips <robertphillips@google.com> | 2017-03-02 18:18:38 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-03-03 12:35:27 +0000 |
commit | 2f49314227053dd5acc011e04681faee05c5e0ff (patch) | |
tree | 2669e6d4567687bffea21da299834125124b831d /src | |
parent | 3b4c22d3731813d2d0f2ae0e68180b6eeacea7a2 (diff) |
Make GrSurface::MakeDeferred return sk_sp<GrTextureProxy>
This should make upcoming changes less tedious
Change-Id: I313ae9df724f109a64cf5708a974e8bfeb963025
Reviewed-on: https://skia-review.googlesource.com/9183
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/gpu/GrContext.cpp | 35 | ||||
-rw-r--r-- | src/gpu/GrSurfaceProxy.cpp | 18 | ||||
-rw-r--r-- | src/gpu/effects/GrConfigConversionEffect.cpp | 6 |
3 files changed, 28 insertions, 31 deletions
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp index 7dfee00ed2..a4c18523f9 100644 --- a/src/gpu/GrContext.cpp +++ b/src/gpu/GrContext.cpp @@ -294,46 +294,43 @@ bool GrContext::writeSurfacePixels(GrSurface* surface, SkColorSpace* dstColorSpa this->flush(); } - sk_sp<GrTextureProxy> tempTextureProxy; + sk_sp<GrTextureProxy> tempProxy; if (GrGpu::kNoDraw_DrawPreference != drawPreference) { - sk_sp<GrSurfaceProxy> temp = GrSurfaceProxy::MakeDeferred(this->textureProvider(), - *this->caps(), - tempDrawInfo.fTempSurfaceDesc, - SkBackingFit::kApprox, - SkBudgeted::kYes); - if (temp) { - tempTextureProxy = sk_ref_sp(temp->asTextureProxy()); - } - if (!tempTextureProxy && GrGpu::kRequireDraw_DrawPreference == drawPreference) { + tempProxy = GrSurfaceProxy::MakeDeferred(this->textureProvider(), + *this->caps(), + tempDrawInfo.fTempSurfaceDesc, + SkBackingFit::kApprox, + SkBudgeted::kYes); + if (!tempProxy && GrGpu::kRequireDraw_DrawPreference == drawPreference) { return false; } } // temp buffer for doing sw premul conversion, if needed. SkAutoSTMalloc<128 * 128, uint32_t> tmpPixels(0); - if (tempTextureProxy) { + if (tempProxy) { sk_sp<GrFragmentProcessor> fp; if (applyPremulToSrc) { - fp = this->createUPMToPMEffect(tempTextureProxy, tempDrawInfo.fSwizzle, SkMatrix::I()); + fp = this->createUPMToPMEffect(tempProxy, tempDrawInfo.fSwizzle, SkMatrix::I()); // If premultiplying was the only reason for the draw, fall back to a straight write. if (!fp) { if (GrGpu::kCallerPrefersDraw_DrawPreference == drawPreference) { - tempTextureProxy.reset(nullptr); + tempProxy.reset(nullptr); } } else { applyPremulToSrc = false; } } - if (tempTextureProxy) { + if (tempProxy) { if (!fp) { - fp = GrConfigConversionEffect::Make(this, tempTextureProxy, tempDrawInfo.fSwizzle, + fp = GrConfigConversionEffect::Make(this, tempProxy, tempDrawInfo.fSwizzle, GrConfigConversionEffect::kNone_PMConversion, SkMatrix::I()); if (!fp) { return false; } } - GrTexture* texture = tempTextureProxy->instantiate(this->textureProvider()); + GrTexture* texture = tempProxy->instantiate(this->textureProvider()); if (!texture) { return false; } @@ -382,7 +379,7 @@ bool GrContext::writeSurfacePixels(GrSurface* surface, SkColorSpace* dstColorSpa } } } - if (!tempTextureProxy) { + if (!tempProxy) { if (applyPremulToSrc) { size_t tmpRowBytes = 4 * width; tmpPixels.reset(width * height); @@ -625,7 +622,7 @@ sk_sp<GrSurfaceContext> GrContextPriv::makeDeferredSurfaceContext(const GrSurfac SkBackingFit fit, SkBudgeted isDstBudgeted) { - sk_sp<GrSurfaceProxy> proxy = GrSurfaceProxy::MakeDeferred(fContext->textureProvider(), + sk_sp<GrTextureProxy> proxy = GrSurfaceProxy::MakeDeferred(fContext->textureProvider(), *fContext->caps(), dstDesc, fit, isDstBudgeted); if (!proxy) { @@ -825,7 +822,7 @@ sk_sp<GrRenderTargetContext> GrContext::makeDeferredRenderTargetContext( desc.fConfig = config; desc.fSampleCnt = sampleCnt; - sk_sp<GrSurfaceProxy> rtp = GrSurfaceProxy::MakeDeferred(this->textureProvider(), + sk_sp<GrTextureProxy> rtp = GrSurfaceProxy::MakeDeferred(this->textureProvider(), *this->caps(), desc, fit, budgeted); if (!rtp) { return nullptr; diff --git a/src/gpu/GrSurfaceProxy.cpp b/src/gpu/GrSurfaceProxy.cpp index a66daa4561..b8fc56dd0b 100644 --- a/src/gpu/GrSurfaceProxy.cpp +++ b/src/gpu/GrSurfaceProxy.cpp @@ -146,7 +146,7 @@ sk_sp<GrTextureProxy> GrSurfaceProxy::MakeWrapped(sk_sp<GrTexture> tex) { #include "GrResourceProvider.h" -sk_sp<GrSurfaceProxy> GrSurfaceProxy::MakeDeferred(GrTextureProvider* texProvider, +sk_sp<GrTextureProxy> GrSurfaceProxy::MakeDeferred(GrTextureProvider* texProvider, const GrCaps& caps, const GrSurfaceDesc& desc, SkBackingFit fit, @@ -196,32 +196,32 @@ sk_sp<GrSurfaceProxy> GrSurfaceProxy::MakeDeferred(GrTextureProvider* texProvide copyDesc.fSampleCnt = SkTMin(desc.fSampleCnt, caps.maxSampleCount()); #ifdef SK_DISABLE_DEFERRED_PROXIES - sk_sp<GrSurface> surf; + sk_sp<GrTexture> tex; if (SkBackingFit::kApprox == fit) { - surf.reset(texProvider->createApproxTexture(copyDesc)); + tex.reset(texProvider->createApproxTexture(copyDesc)); } else { - surf.reset(texProvider->createTexture(copyDesc, budgeted)); + tex.reset(texProvider->createTexture(copyDesc, budgeted)); } - if (!surf) { + if (!tex) { return nullptr; } - return GrSurfaceProxy::MakeWrapped(std::move(surf)); + return GrSurfaceProxy::MakeWrapped(std::move(tex)); #else if (willBeRT) { // We know anything we instantiate later from this deferred path will be // both texturable and renderable - return sk_sp<GrSurfaceProxy>(new GrTextureRenderTargetProxy(caps, copyDesc, fit, + return sk_sp<GrTextureProxy>(new GrTextureRenderTargetProxy(caps, copyDesc, fit, budgeted, flags)); } - return sk_sp<GrSurfaceProxy>(new GrTextureProxy(copyDesc, fit, budgeted, nullptr, 0, flags)); + return sk_sp<GrTextureProxy>(new GrTextureProxy(copyDesc, fit, budgeted, nullptr, 0, flags)); #endif } -sk_sp<GrSurfaceProxy> GrSurfaceProxy::MakeDeferred(const GrCaps& caps, +sk_sp<GrTextureProxy> GrSurfaceProxy::MakeDeferred(const GrCaps& caps, GrTextureProvider* texProvider, const GrSurfaceDesc& desc, SkBudgeted budgeted, diff --git a/src/gpu/effects/GrConfigConversionEffect.cpp b/src/gpu/effects/GrConfigConversionEffect.cpp index ba089fab2e..6a4cca5d77 100644 --- a/src/gpu/effects/GrConfigConversionEffect.cpp +++ b/src/gpu/effects/GrConfigConversionEffect.cpp @@ -218,10 +218,10 @@ void GrConfigConversionEffect::TestForPreservingPMConversions(GrContext* context desc.fHeight = kSize; desc.fConfig = kConfig; - sk_sp<GrSurfaceProxy> dataProxy = GrSurfaceProxy::MakeDeferred(*context->caps(), + sk_sp<GrTextureProxy> dataProxy = GrSurfaceProxy::MakeDeferred(*context->caps(), context->textureProvider(), desc, SkBudgeted::kYes, data, 0); - if (!dataProxy || !dataProxy->asTextureProxy()) { + if (!dataProxy) { return; } @@ -249,7 +249,7 @@ void GrConfigConversionEffect::TestForPreservingPMConversions(GrContext* context GrPaint paint2; GrPaint paint3; sk_sp<GrFragmentProcessor> pmToUPM1(new GrConfigConversionEffect( - context, sk_ref_sp(dataProxy->asTextureProxy()), GrSwizzle::RGBA(), + context, dataProxy, GrSwizzle::RGBA(), *pmToUPMRule, SkMatrix::I())); sk_sp<GrFragmentProcessor> upmToPM(new GrConfigConversionEffect( context, readRTC->asTextureProxyRef(), GrSwizzle::RGBA(), |