aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/private/GrSurfaceProxy.h2
-rw-r--r--src/gpu/GrSurfaceProxy.cpp16
-rw-r--r--tests/ProxyRefTest.cpp4
3 files changed, 22 insertions, 0 deletions
diff --git a/include/private/GrSurfaceProxy.h b/include/private/GrSurfaceProxy.h
index b2ccfe0b7f..94490603bc 100644
--- a/include/private/GrSurfaceProxy.h
+++ b/include/private/GrSurfaceProxy.h
@@ -24,6 +24,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 fd9a9c443e..76523ce03a 100644
--- a/src/gpu/GrSurfaceProxy.cpp
+++ b/src/gpu/GrSurfaceProxy.cpp
@@ -198,6 +198,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
@@ -206,6 +221,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 d5569b41d1..94c946db0a 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,
@@ -191,3 +193,5 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ProxyRefTest, reporter, ctxInfo) {
}
#endif
+
+#endif