Chromium Code Reviews| Index: tests/ProxyTest.cpp |
| diff --git a/tests/ProxyTest.cpp b/tests/ProxyTest.cpp |
| index 2ed4591a723c83eb562f3d0f7d63fd6e71821c29..1239311728cb368eb4ce75a624aa57304230467c 100644 |
| --- a/tests/ProxyTest.cpp |
| +++ b/tests/ProxyTest.cpp |
| @@ -10,6 +10,7 @@ |
| #include "Test.h" |
| #if SK_SUPPORT_GPU |
| +#include "GrGpu.h" |
| #include "GrSurfaceProxy.h" |
| #include "GrTextureProxy.h" |
| #include "GrRenderTargetProxy.h" |
| @@ -50,7 +51,8 @@ static void check_rendertarget(skiatest::Reporter* reporter, |
| rtProxy->isStencilBufferMultisampled()); |
| REPORTER_ASSERT(reporter, rt->numColorSamples() == rtProxy->numColorSamples()); |
| REPORTER_ASSERT(reporter, rt->numStencilSamples() == rtProxy->numStencilSamples()); |
| - REPORTER_ASSERT(reporter, rt->hasMixedSamples() == rtProxy->hasMixedSamples()); |
| + REPORTER_ASSERT(reporter, rt->isMixedSampled() == rtProxy->isMixedSampled()); |
| + REPORTER_ASSERT(reporter, rt->isOffscreen() == rtProxy->isOffscreen()); |
| } |
| static void check_texture(skiatest::Reporter* reporter, |
| @@ -141,14 +143,40 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(WrappedProxyTest, reporter, ctxInfo) { |
| desc.fConfig = config; |
| desc.fSampleCnt = numSamples; |
| + // External on-screen render target. |
| + if (renderable && kOpenGL_GrBackend == ctxInfo.backend()) { |
| + GrBackendRenderTargetDesc backendDesc; |
| + backendDesc.fWidth = kWidthHeight; |
| + backendDesc.fHeight = kWidthHeight; |
| + backendDesc.fConfig = config; |
| + backendDesc.fOrigin = origin; |
| + backendDesc.fSampleCnt = numSamples; |
| + backendDesc.fStencilBits = 8; |
| + backendDesc.fRenderTargetHandle = 0; |
|
csmartdalton
2016/08/09 06:52:58
Would this also work for vulkan?
|
| + |
| + GrGpu* gpu = ctxInfo.grContext()->getGpu(); |
| + sk_sp<GrRenderTarget> defaultFBO( |
| + gpu->wrapBackendRenderTarget(backendDesc, kBorrow_GrWrapOwnership)); |
| + SkASSERT(!defaultFBO->isOffscreen()); |
| + |
| + sk_sp<GrRenderTargetProxy> rtProxy( |
| + GrRenderTargetProxy::Make(*ctxInfo.grContext()->caps(), defaultFBO)); |
| + check_surface(reporter, rtProxy.get(), origin, |
| + kWidthHeight, kWidthHeight, config); |
| + check_rendertarget(reporter, provider, rtProxy.get(), SkBackingFit::kExact); |
| + } |
| + |
| sk_sp<GrTexture> tex; |
| + // Internal offscreen render target. |
| if (renderable) { |
| desc.fFlags = kRenderTarget_GrSurfaceFlag; |
| tex.reset(provider->createTexture(desc, budgeted)); |
| sk_sp<GrRenderTarget> rt(sk_ref_sp(tex->asRenderTarget())); |
| + SkASSERT(rt->isOffscreen()); |
| - sk_sp<GrRenderTargetProxy> rtProxy(GrRenderTargetProxy::Make(rt)); |
| + sk_sp<GrRenderTargetProxy> rtProxy( |
| + GrRenderTargetProxy::Make(*ctxInfo.grContext()->caps(), rt)); |
| check_surface(reporter, rtProxy.get(), origin, |
| kWidthHeight, kWidthHeight, config); |
| check_rendertarget(reporter, provider, rtProxy.get(), SkBackingFit::kExact); |