diff options
-rw-r--r-- | include/private/GrSurfaceProxy.h | 2 | ||||
-rw-r--r-- | src/gpu/GrSurfaceProxy.cpp | 16 | ||||
-rw-r--r-- | tests/ProxyRefTest.cpp | 4 |
3 files changed, 22 insertions, 0 deletions
diff --git a/include/private/GrSurfaceProxy.h b/include/private/GrSurfaceProxy.h index 3c65cd84ce..8d5a0caf10 100644 --- a/include/private/GrSurfaceProxy.h +++ b/include/private/GrSurfaceProxy.h @@ -22,6 +22,8 @@ class GrSurfaceProxyPriv; class GrTextureOpList; class GrTextureProxy; +//#define SK_DISABLE_DEFERRED_PROXIES 1 + // This class replicates the functionality GrIORef<GrSurface> but tracks the // utilitization for later resource allocation (for the deferred case) and // forwards on the utilization in the wrapped case diff --git a/src/gpu/GrSurfaceProxy.cpp b/src/gpu/GrSurfaceProxy.cpp index c243086f47..c9a36289d8 100644 --- a/src/gpu/GrSurfaceProxy.cpp +++ b/src/gpu/GrSurfaceProxy.cpp @@ -200,6 +200,21 @@ sk_sp<GrTextureProxy> GrSurfaceProxy::MakeDeferred(GrResourceProvider* resourceP GrSurfaceDesc copyDesc = desc; copyDesc.fSampleCnt = SkTMin(desc.fSampleCnt, caps->maxSampleCount()); +#ifdef SK_DISABLE_DEFERRED_PROXIES + sk_sp<GrTexture> tex; + + if (SkBackingFit::kApprox == fit) { + tex.reset(resourceProvider->createApproxTexture(copyDesc, flags)); + } else { + tex = resourceProvider->createTexture(copyDesc, budgeted, flags); + } + + if (!tex) { + return nullptr; + } + + 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 @@ -208,6 +223,7 @@ sk_sp<GrTextureProxy> GrSurfaceProxy::MakeDeferred(GrResourceProvider* resourceP } return sk_sp<GrTextureProxy>(new GrTextureProxy(copyDesc, fit, budgeted, nullptr, 0, flags)); +#endif } sk_sp<GrTextureProxy> GrSurfaceProxy::MakeDeferred(GrResourceProvider* resourceProvider, diff --git a/tests/ProxyRefTest.cpp b/tests/ProxyRefTest.cpp index dc48ef0cf6..708c7b3034 100644 --- a/tests/ProxyRefTest.cpp +++ b/tests/ProxyRefTest.cpp @@ -47,6 +47,8 @@ int32_t GrIORefProxy::getPendingWriteCnt_TestOnly() const { return fPendingWrites; } +#ifndef SK_DISABLE_DEFERRED_PROXIES + static const int kWidthHeight = 128; static void check_refs(skiatest::Reporter* reporter, @@ -189,3 +191,5 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ProxyRefTest, reporter, ctxInfo) { } } #endif + +#endif |