diff options
author | Robert Phillips <robertphillips@google.com> | 2017-04-04 16:50:22 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-04-05 11:55:35 +0000 |
commit | fb0bd98a43fa11e09705837418167dd72bb4a361 (patch) | |
tree | 67579cf4663c41d4b9ec36bbd61020aa3ccbe57f /tests/ResourceCacheTest.cpp | |
parent | be5387b9308ad0b92a48a1272b618b6eaa08a771 (diff) |
Rm readPixels from GrSurface & move read/writeSurfacePixels to GrContextPriv
This is in service of: https://skia-review.googlesource.com/c/11125/ (Add parallel proxyID to StencilOps & RenderTargetOpList) where I want a better choke point for texture creation to improve discard handling.
Change-Id: If57a7de47edc0853dae7bc61337d9acdc03d63b0
Reviewed-on: https://skia-review.googlesource.com/11200
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'tests/ResourceCacheTest.cpp')
-rw-r--r-- | tests/ResourceCacheTest.cpp | 70 |
1 files changed, 38 insertions, 32 deletions
diff --git a/tests/ResourceCacheTest.cpp b/tests/ResourceCacheTest.cpp index a7a2b4540d..fcf3fe88f3 100644 --- a/tests/ResourceCacheTest.cpp +++ b/tests/ResourceCacheTest.cpp @@ -184,7 +184,7 @@ DEF_GPUTEST_FOR_CONTEXTS(ResourceCacheStencilBuffers, &is_rendering_and_not_angl smallMSAART0 && smallMSAART0->asRenderTarget() && smallMSAART0->asRenderTarget()->numColorSamples() < 8) { smallMSAADesc.fSampleCnt = 8; - smallMSAART1.reset(resourceProvider->createTexture(smallMSAADesc, SkBudgeted::kNo)); + smallMSAART1 = resourceProvider->createTexture(smallMSAADesc, SkBudgeted::kNo); sk_sp<GrTexture> smallMSAART1( resourceProvider->createTexture(smallMSAADesc, SkBudgeted::kNo)); if (smallMSAART1 && smallMSAART1->asRenderTarget()) { @@ -1514,13 +1514,13 @@ static sk_sp<GrTexture> make_normal_texture(GrResourceProvider* provider, desc.fConfig = kRGBA_8888_GrPixelConfig; desc.fSampleCnt = sampleCnt; - return sk_sp<GrTexture>(provider->createTexture(desc, SkBudgeted::kYes)); + return provider->createTexture(desc, SkBudgeted::kYes); } -static sk_sp<GrTexture> make_mipmap_texture(GrResourceProvider* provider, - GrSurfaceFlags flags, - int width, int height, - int sampleCnt) { +static sk_sp<GrTextureProxy> make_mipmap_proxy(GrResourceProvider* provider, + GrSurfaceFlags flags, + int width, int height, + int sampleCnt) { SkBitmap bm; bm.allocN32Pixels(width, height, true); @@ -1552,8 +1552,7 @@ static sk_sp<GrTexture> make_mipmap_texture(GrResourceProvider* provider, desc.fSampleCnt = sampleCnt; desc.fIsMipMapped = true; - return sk_sp<GrTexture>(provider->createMipMappedTexture(desc, SkBudgeted::kYes, - texels.get(), mipLevelCount)); + return provider->createMipMappedTexture(desc, SkBudgeted::kYes, texels.get(), mipLevelCount); } // Exercise GrSurface::gpuMemorySize for different combos of MSAA, RT-only, @@ -1564,42 +1563,49 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(GPUMemorySize, reporter, ctxInfo) { static const int kSize = 64; - sk_sp<GrTexture> tex; - // Normal versions - tex = make_normal_texture(provider, kRenderTarget_GrSurfaceFlag, kSize, kSize, 0); - size_t size = tex->gpuMemorySize(); - REPORTER_ASSERT(reporter, kSize*kSize*4 == size); + { + sk_sp<GrTexture> tex; + + tex = make_normal_texture(provider, kRenderTarget_GrSurfaceFlag, kSize, kSize, 0); + size_t size = tex->gpuMemorySize(); + REPORTER_ASSERT(reporter, kSize*kSize*4 == size); + + if (context->caps()->maxSampleCount() >= 4) { + tex = make_normal_texture(provider, kRenderTarget_GrSurfaceFlag, kSize, kSize, 4); + size = tex->gpuMemorySize(); + REPORTER_ASSERT(reporter, kSize*kSize*4 == size || // msaa4 failed + kSize*kSize*4*4 == size || // auto-resolving + kSize*kSize*4*5 == size); // explicit resolve buffer + } - if (context->caps()->maxSampleCount() >= 4) { - tex = make_normal_texture(provider, kRenderTarget_GrSurfaceFlag, kSize, kSize, 4); + tex = make_normal_texture(provider, kNone_GrSurfaceFlags, kSize, kSize, 0); size = tex->gpuMemorySize(); - REPORTER_ASSERT(reporter, kSize*kSize*4 == size || // msaa4 failed - kSize*kSize*4*4 == size || // auto-resolving - kSize*kSize*4*5 == size); // explicit resolve buffer + REPORTER_ASSERT(reporter, kSize*kSize*4 == size); } - tex = make_normal_texture(provider, kNone_GrSurfaceFlags, kSize, kSize, 0); - size = tex->gpuMemorySize(); - REPORTER_ASSERT(reporter, kSize*kSize*4 == size); // Mipmapped versions - tex = make_mipmap_texture(provider, kRenderTarget_GrSurfaceFlag, kSize, kSize, 0); - size = tex->gpuMemorySize(); - REPORTER_ASSERT(reporter, kSize*kSize*4+(kSize*kSize*4)/3 == size); + { + sk_sp<GrTextureProxy> proxy; - if (context->caps()->maxSampleCount() >= 4) { - tex = make_mipmap_texture(provider, kRenderTarget_GrSurfaceFlag, kSize, kSize, 4); - size = tex->gpuMemorySize(); - REPORTER_ASSERT(reporter, + proxy = make_mipmap_proxy(provider, kRenderTarget_GrSurfaceFlag, kSize, kSize, 0); + size_t size = proxy->gpuMemorySize(); + REPORTER_ASSERT(reporter, kSize*kSize*4+(kSize*kSize*4)/3 == size); + + if (context->caps()->maxSampleCount() >= 4) { + proxy = make_mipmap_proxy(provider, kRenderTarget_GrSurfaceFlag, kSize, kSize, 4); + size = proxy->gpuMemorySize(); + REPORTER_ASSERT(reporter, kSize*kSize*4+(kSize*kSize*4)/3 == size || // msaa4 failed kSize*kSize*4*4+(kSize*kSize*4)/3 == size || // auto-resolving kSize*kSize*4*5+(kSize*kSize*4)/3 == size); // explicit resolve buffer - } + } - tex = make_mipmap_texture(provider, kNone_GrSurfaceFlags, kSize, kSize, 0); - size = tex->gpuMemorySize(); - REPORTER_ASSERT(reporter, kSize*kSize*4+(kSize*kSize*4)/3 == size); + proxy = make_mipmap_proxy(provider, kNone_GrSurfaceFlags, kSize, kSize, 0); + size = proxy->gpuMemorySize(); + REPORTER_ASSERT(reporter, kSize*kSize*4+(kSize*kSize*4)/3 == size); + } } #endif |