diff options
author | Robert Phillips <robertphillips@google.com> | 2018-01-16 08:06:32 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-01-16 13:28:43 +0000 |
commit | 0bd24dc41f2351d84f5fce32130668a5792d134b (patch) | |
tree | c46dc6fb7636fd7c2185e1f855f1dd582512fcc4 /tests/ProxyRefTest.cpp | |
parent | 3167aa0c9c84cab1b0252031166e4a345e2afe2d (diff) |
Funnel most proxy creation through GrProxyProvider
This is to provide a choke point for DDL to create Lazy Proxies.
Change-Id: If178da13bc6447b31b7601810236d34502d9efbd
Reviewed-on: https://skia-review.googlesource.com/93303
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'tests/ProxyRefTest.cpp')
-rw-r--r-- | tests/ProxyRefTest.cpp | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/tests/ProxyRefTest.cpp b/tests/ProxyRefTest.cpp index 5bf3a57e7f..acd17be790 100644 --- a/tests/ProxyRefTest.cpp +++ b/tests/ProxyRefTest.cpp @@ -12,6 +12,7 @@ #if SK_SUPPORT_GPU #include "GrContextPriv.h" #include "GrGpuResourceRef.h" +#include "GrProxyProvider.h" #include "GrRenderTargetProxy.h" #include "GrResourceProvider.h" #include "GrSurfaceProxy.h" @@ -65,7 +66,7 @@ static void check_refs(skiatest::Reporter* reporter, SkASSERT(proxy->getPendingWriteCnt_TestOnly() == expectedNumWrites); } -static sk_sp<GrTextureProxy> make_deferred(GrContext* context) { +static sk_sp<GrTextureProxy> make_deferred(GrProxyProvider* proxyProvider) { GrSurfaceDesc desc; desc.fFlags = kRenderTarget_GrSurfaceFlag; desc.fOrigin = kBottomLeft_GrSurfaceOrigin; @@ -73,12 +74,11 @@ static sk_sp<GrTextureProxy> make_deferred(GrContext* context) { desc.fHeight = kWidthHeight; desc.fConfig = kRGBA_8888_GrPixelConfig; - return GrSurfaceProxy::MakeDeferred(context->contextPriv().proxyProvider(), desc, - SkBackingFit::kApprox, SkBudgeted::kYes, - GrResourceProvider::kNoPendingIO_Flag); + return proxyProvider->createProxy(desc, SkBackingFit::kApprox, SkBudgeted::kYes, + GrResourceProvider::kNoPendingIO_Flag); } -static sk_sp<GrTextureProxy> make_wrapped(GrContext* context) { +static sk_sp<GrTextureProxy> make_wrapped(GrProxyProvider* proxyProvider) { GrSurfaceDesc desc; desc.fFlags = kRenderTarget_GrSurfaceFlag; desc.fOrigin = kBottomLeft_GrSurfaceOrigin; @@ -86,18 +86,17 @@ static sk_sp<GrTextureProxy> make_wrapped(GrContext* context) { desc.fHeight = kWidthHeight; desc.fConfig = kRGBA_8888_GrPixelConfig; - sk_sp<GrTexture> tex(context->resourceProvider()->createTexture(desc, SkBudgeted::kNo)); - - return GrSurfaceProxy::MakeWrapped(std::move(tex), desc.fOrigin); + return proxyProvider->createInstantiatedProxy(desc, SkBackingFit::kExact, SkBudgeted::kNo); } DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ProxyRefTest, reporter, ctxInfo) { - GrResourceProvider* provider = ctxInfo.grContext()->resourceProvider(); + GrProxyProvider* proxyProvider = ctxInfo.grContext()->contextPriv().proxyProvider(); + GrResourceProvider* resourceProvider = ctxInfo.grContext()->resourceProvider(); for (auto make : { make_deferred, make_wrapped }) { // A single write { - sk_sp<GrTextureProxy> proxy((*make)(ctxInfo.grContext())); + sk_sp<GrTextureProxy> proxy((*make)(proxyProvider)); if (proxy.get()) { GrPendingIOResource<GrSurfaceProxy, kWrite_GrIOType> fWrite(proxy.get()); @@ -106,7 +105,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ProxyRefTest, reporter, ctxInfo) { check_refs(reporter, proxy.get(), 1, 1, kExpectedReads, kExpectedWrites); - proxy->instantiate(provider); + proxy->instantiate(resourceProvider); // In the deferred case, this checks that the refs transfered to the GrSurface check_refs(reporter, proxy.get(), 1, 1, kExpectedReads, kExpectedWrites); @@ -115,7 +114,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ProxyRefTest, reporter, ctxInfo) { // A single read { - sk_sp<GrTextureProxy> proxy((*make)(ctxInfo.grContext())); + sk_sp<GrTextureProxy> proxy((*make)(proxyProvider)); if (proxy.get()) { GrPendingIOResource<GrSurfaceProxy, kRead_GrIOType> fRead(proxy.get()); @@ -124,7 +123,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ProxyRefTest, reporter, ctxInfo) { check_refs(reporter, proxy.get(), 1, 1, kExpectedReads, kExpectedWrites); - proxy->instantiate(provider); + proxy->instantiate(resourceProvider); // In the deferred case, this checks that the refs transfered to the GrSurface check_refs(reporter, proxy.get(), 1, 1, kExpectedReads, kExpectedWrites); @@ -133,7 +132,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ProxyRefTest, reporter, ctxInfo) { // A single read/write pair { - sk_sp<GrTextureProxy> proxy((*make)(ctxInfo.grContext())); + sk_sp<GrTextureProxy> proxy((*make)(proxyProvider)); if (proxy.get()) { GrPendingIOResource<GrSurfaceProxy, kRW_GrIOType> fRW(proxy.get()); @@ -142,7 +141,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ProxyRefTest, reporter, ctxInfo) { check_refs(reporter, proxy.get(), 1, 1, kExpectedReads, kExpectedWrites); - proxy->instantiate(provider); + proxy->instantiate(resourceProvider); // In the deferred case, this checks that the refs transferred to the GrSurface check_refs(reporter, proxy.get(), 1, 1, kExpectedReads, kExpectedWrites); @@ -151,7 +150,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ProxyRefTest, reporter, ctxInfo) { // Multiple normal refs { - sk_sp<GrTextureProxy> proxy((*make)(ctxInfo.grContext())); + sk_sp<GrTextureProxy> proxy((*make)(proxyProvider)); if (proxy.get()) { proxy->ref(); proxy->ref(); @@ -161,7 +160,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ProxyRefTest, reporter, ctxInfo) { check_refs(reporter, proxy.get(), 3, 3,kExpectedReads, kExpectedWrites); - proxy->instantiate(provider); + proxy->instantiate(resourceProvider); // In the deferred case, this checks that the refs transferred to the GrSurface check_refs(reporter, proxy.get(), 3, 3, kExpectedReads, kExpectedWrites); @@ -173,7 +172,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ProxyRefTest, reporter, ctxInfo) { // Continue using (reffing) proxy after instantiation { - sk_sp<GrTextureProxy> proxy((*make)(ctxInfo.grContext())); + sk_sp<GrTextureProxy> proxy((*make)(proxyProvider)); if (proxy.get()) { proxy->ref(); @@ -183,7 +182,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ProxyRefTest, reporter, ctxInfo) { check_refs(reporter, proxy.get(), 2, 2, 0, kExpectedWrites); - proxy->instantiate(provider); + proxy->instantiate(resourceProvider); // In the deferred case, this checks that the refs transfered to the GrSurface check_refs(reporter, proxy.get(), 2, 2, 0, kExpectedWrites); |