aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/private/GrSurfaceProxy.h2
-rw-r--r--src/gpu/GrSurfaceProxy.cpp16
-rw-r--r--tests/DetermineDomainModeTest.cpp4
-rw-r--r--tests/ProxyRefTest.cpp4
-rw-r--r--tests/ProxyTest.cpp5
5 files changed, 31 insertions, 0 deletions
diff --git a/include/private/GrSurfaceProxy.h b/include/private/GrSurfaceProxy.h
index 4ae041d4dd..be8c1940bc 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 0d9198fd0d..2577fc8dbd 100644
--- a/src/gpu/GrSurfaceProxy.cpp
+++ b/src/gpu/GrSurfaceProxy.cpp
@@ -168,6 +168,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
@@ -176,6 +191,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/DetermineDomainModeTest.cpp b/tests/DetermineDomainModeTest.cpp
index add746fec5..1ce38d34b9 100644
--- a/tests/DetermineDomainModeTest.cpp
+++ b/tests/DetermineDomainModeTest.cpp
@@ -341,6 +341,8 @@ static const SkRect* no_inset(const RectInfo& enclosing,
insetAmount, halfFilterWidth, 0, name);
}
+#ifndef SK_DISABLE_DEFERRED_PROXIES
+
static void proxy_test(skiatest::Reporter* reporter, GrResourceProvider* resourceProvider) {
GrTextureProducer_TestAccess::DomainMode actualMode, expectedMode;
SkRect actualDomainRect;
@@ -444,3 +446,5 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(DetermineDomainModeTest, reporter, ctxInfo) {
}
#endif
+
+#endif
diff --git a/tests/ProxyRefTest.cpp b/tests/ProxyRefTest.cpp
index cd07e186c8..0775fde3e8 100644
--- a/tests/ProxyRefTest.cpp
+++ b/tests/ProxyRefTest.cpp
@@ -45,6 +45,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
diff --git a/tests/ProxyTest.cpp b/tests/ProxyTest.cpp
index 1799a75e52..40cbeebdc7 100644
--- a/tests/ProxyTest.cpp
+++ b/tests/ProxyTest.cpp
@@ -10,6 +10,9 @@
#include "Test.h"
#if SK_SUPPORT_GPU
+
+#ifndef SK_DISABLE_DEFERRED_PROXIES
+
#include "GrBackendSurface.h"
#include "GrRenderTargetPriv.h"
#include "GrRenderTargetProxy.h"
@@ -307,3 +310,5 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ZeroSizedProxyTest, reporter, ctxInfo) {
}
#endif
+
+#endif