diff options
author | Greg Daniel <egdaniel@google.com> | 2017-04-18 17:12:32 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-04-18 21:55:10 +0000 |
commit | 7da62b9059f3c1d31624a0e4da96ee5f908f9c12 (patch) | |
tree | fc57f951a4e8c1900311e8a1ffbdbbaf189715c2 /tests | |
parent | b712a85aea212cf5bfe5514a4fefc184545a8d3c (diff) |
Plumb GrBackendTexture throughout skia.
Bug: skia:
Change-Id: I1bae6768ee7229818a83ba608035a1f7867e6875
Reviewed-on: https://skia-review.googlesource.com/13645
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/BlendTest.cpp | 19 | ||||
-rw-r--r-- | tests/EGLImageTest.cpp | 21 | ||||
-rw-r--r-- | tests/GrPorterDuffTest.cpp | 20 | ||||
-rw-r--r-- | tests/GrSurfaceTest.cpp | 22 | ||||
-rw-r--r-- | tests/ImageFilterCacheTest.cpp | 33 | ||||
-rw-r--r-- | tests/ImageTest.cpp | 40 | ||||
-rw-r--r-- | tests/RectangleTextureTest.cpp | 25 | ||||
-rw-r--r-- | tests/ResourceCacheTest.cpp | 37 | ||||
-rw-r--r-- | tests/SurfaceTest.cpp | 78 | ||||
-rw-r--r-- | tests/VkWrapTests.cpp | 113 |
10 files changed, 238 insertions, 170 deletions
diff --git a/tests/BlendTest.cpp b/tests/BlendTest.cpp index 0acbd07957..20ea6e0f00 100644 --- a/tests/BlendTest.cpp +++ b/tests/BlendTest.cpp @@ -21,6 +21,7 @@ #include "GrResourceProvider.h" #include "GrSurfaceContext.h" #include "GrSurfaceProxy.h" +#include "GrTest.h" #include "GrTexture.h" #endif @@ -99,16 +100,16 @@ static sk_sp<SkSurface> create_gpu_surface_backend_texture_as_render_target( return nullptr; } - GrBackendTextureDesc desc; - desc.fFlags = kRenderTarget_GrBackendTextureFlag; - desc.fOrigin = origin; - desc.fWidth = width; - desc.fHeight = height; - desc.fConfig = config; - desc.fSampleCnt = sampleCnt; - desc.fTextureHandle = (*backingSurface)->getTextureHandle(); + GrBackendTexture backendTex = + GrTest::CreateBackendTexture(context->contextPriv().getBackend(), + width, + height, + config, + (*backingSurface)->getTextureHandle()); sk_sp<SkSurface> surface = - SkSurface::MakeFromBackendTextureAsRenderTarget(context, desc, nullptr); + SkSurface::MakeFromBackendTextureAsRenderTarget(context, backendTex, origin, + sampleCnt, nullptr, nullptr); + return surface; } } diff --git a/tests/EGLImageTest.cpp b/tests/EGLImageTest.cpp index 998e339abe..1b94a6e602 100644 --- a/tests/EGLImageTest.cpp +++ b/tests/EGLImageTest.cpp @@ -13,6 +13,7 @@ #include "GrContextFactory.h" #include "GrShaderCaps.h" #include "GrSurfaceContext.h" +#include "GrTest.h" #include "gl/GrGLGpu.h" #include "gl/GrGLUtil.h" #include "gl/GLTestContext.h" @@ -129,14 +130,12 @@ DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(EGLImageTest, reporter, ctxInfo) { externalTexture.fID = glCtx0->eglImageToExternalTexture(image); // Wrap this texture ID in a GrTexture - GrBackendTextureDesc externalDesc; - externalDesc.fConfig = kRGBA_8888_GrPixelConfig; - externalDesc.fWidth = kSize; - externalDesc.fHeight = kSize; - externalDesc.fTextureHandle = reinterpret_cast<GrBackendObject>(&externalTexture); + GrBackendTexture backendTex(kSize, kSize, kRGBA_8888_GrPixelConfig, &externalTexture); + // TODO: If I make this TopLeft origin to match resolve_origin calls for kDefault, this test + // fails on the Nexus5. Why? sk_sp<GrSurfaceContext> surfaceContext = context0->contextPriv().makeBackendSurfaceContext( - externalDesc, nullptr); + backendTex, kBottomLeft_GrSurfaceOrigin, kNone_GrBackendTextureFlag, 0, nullptr); if (!surfaceContext) { ERRORF(reporter, "Error wrapping external texture in GrSurfaceContext."); @@ -146,25 +145,21 @@ DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(EGLImageTest, reporter, ctxInfo) { // Should not be able to wrap as a RT { - externalDesc.fFlags = kRenderTarget_GrBackendTextureFlag; - sk_sp<GrSurfaceContext> temp = context0->contextPriv().makeBackendSurfaceContext( - externalDesc, nullptr); + backendTex, kBottomLeft_GrSurfaceOrigin, kRenderTarget_GrBackendTextureFlag, 0, + nullptr); if (temp) { ERRORF(reporter, "Should not be able to wrap an EXTERNAL texture as a RT."); } - externalDesc.fFlags = kNone_GrBackendTextureFlag; } // Should not be able to wrap with a sample count { - externalDesc.fSampleCnt = 4; sk_sp<GrSurfaceContext> temp = context0->contextPriv().makeBackendSurfaceContext( - externalDesc, nullptr); + backendTex, kBottomLeft_GrSurfaceOrigin, kNone_GrBackendTextureFlag, 4, nullptr); if (temp) { ERRORF(reporter, "Should not be able to wrap an EXTERNAL texture with MSAA."); } - externalDesc.fSampleCnt = 0; } test_read_pixels(reporter, surfaceContext.get(), pixels.get(), "EGLImageTest-read"); diff --git a/tests/GrPorterDuffTest.cpp b/tests/GrPorterDuffTest.cpp index f4b74c7cda..780573d34f 100644 --- a/tests/GrPorterDuffTest.cpp +++ b/tests/GrPorterDuffTest.cpp @@ -11,8 +11,10 @@ #include "GrContextFactory.h" #include "GrContextOptions.h" +#include "GrContextPriv.h" #include "GrGpu.h" #include "GrResourceProvider.h" +#include "GrTest.h" #include "GrXferProcessor.h" #include "effects/GrPorterDuffXferProcessor.h" #include "gl/GrGLCaps.h" @@ -1034,15 +1036,19 @@ DEF_GPUTEST(PorterDuffNoDualSourceBlending, reporter, /*factory*/) { return; } - GrBackendObject backendTex = + GrBackendObject backendTexHandle = ctx->getGpu()->createTestingOnlyBackendTexture(nullptr, 100, 100, kRGBA_8888_GrPixelConfig); - GrBackendTextureDesc fakeDesc; - fakeDesc.fConfig = kRGBA_8888_GrPixelConfig; - fakeDesc.fWidth = fakeDesc.fHeight = 100; - fakeDesc.fTextureHandle = backendTex; + GrBackendTexture backendTex = GrTest::CreateBackendTexture(ctx->contextPriv().getBackend(), + 100, + 100, + kRGBA_8888_GrPixelConfig, + backendTexHandle); + GrXferProcessor::DstTexture fakeDstTexture; fakeDstTexture.setTexture( - ctx->resourceProvider()->wrapBackendTexture(fakeDesc, kBorrow_GrWrapOwnership)); + ctx->resourceProvider()->wrapBackendTexture(backendTex, kTopLeft_GrSurfaceOrigin, + kNone_GrBackendTextureFlag, 0, + kBorrow_GrWrapOwnership)); static const GrProcessorAnalysisColor colorInputs[] = { GrProcessorAnalysisColor::Opaque::kNo, GrProcessorAnalysisColor::Opaque::kYes, @@ -1065,7 +1071,7 @@ DEF_GPUTEST(PorterDuffNoDualSourceBlending, reporter, /*factory*/) { } } } - ctx->getGpu()->deleteTestingOnlyBackendTexture(backendTex); + ctx->getGpu()->deleteTestingOnlyBackendTexture(backendTexHandle); } #endif diff --git a/tests/GrSurfaceTest.cpp b/tests/GrSurfaceTest.cpp index 97700b1a85..99c0becbef 100644 --- a/tests/GrSurfaceTest.cpp +++ b/tests/GrSurfaceTest.cpp @@ -10,9 +10,11 @@ #if SK_SUPPORT_GPU #include "GrContext.h" +#include "GrContextPriv.h" #include "GrGpu.h" #include "GrRenderTarget.h" #include "GrResourceProvider.h" +#include "GrTest.h" #include "GrTexture.h" #include "GrSurfacePriv.h" #include "Test.h" @@ -44,18 +46,18 @@ DEF_GPUTEST_FOR_NULLGL_CONTEXT(GrSurface, reporter, ctxInfo) { REPORTER_ASSERT(reporter, tex1.get() == tex1->asTexture()); REPORTER_ASSERT(reporter, static_cast<GrSurface*>(tex1.get()) == tex1->asTexture()); - GrBackendObject backendTex = context->getGpu()->createTestingOnlyBackendTexture( + GrBackendObject backendTexHandle = context->getGpu()->createTestingOnlyBackendTexture( nullptr, 256, 256, kRGBA_8888_GrPixelConfig); + GrBackendTexture backendTex = GrTest::CreateBackendTexture(context->contextPriv().getBackend(), + 256, + 256, + kRGBA_8888_GrPixelConfig, + backendTexHandle); - GrBackendTextureDesc backendDesc; - backendDesc.fConfig = kRGBA_8888_GrPixelConfig; - backendDesc.fFlags = kRenderTarget_GrBackendTextureFlag; - backendDesc.fWidth = 256; - backendDesc.fHeight = 256; - backendDesc.fSampleCnt = 0; - backendDesc.fTextureHandle = backendTex; sk_sp<GrSurface> texRT2 = context->resourceProvider()->wrapBackendTexture( - backendDesc, kBorrow_GrWrapOwnership); + backendTex, kTopLeft_GrSurfaceOrigin, kRenderTarget_GrBackendTextureFlag, 0, + kBorrow_GrWrapOwnership); + REPORTER_ASSERT(reporter, texRT2.get() == texRT2->asRenderTarget()); REPORTER_ASSERT(reporter, texRT2.get() == texRT2->asTexture()); REPORTER_ASSERT(reporter, static_cast<GrSurface*>(texRT2->asRenderTarget()) == @@ -65,7 +67,7 @@ DEF_GPUTEST_FOR_NULLGL_CONTEXT(GrSurface, reporter, ctxInfo) { REPORTER_ASSERT(reporter, static_cast<GrSurface*>(texRT2->asRenderTarget()) == static_cast<GrSurface*>(texRT2->asTexture())); - context->getGpu()->deleteTestingOnlyBackendTexture(backendTex); + context->getGpu()->deleteTestingOnlyBackendTexture(backendTexHandle); } #endif diff --git a/tests/ImageFilterCacheTest.cpp b/tests/ImageFilterCacheTest.cpp index 95ade044bd..0dda42e3a8 100644 --- a/tests/ImageFilterCacheTest.cpp +++ b/tests/ImageFilterCacheTest.cpp @@ -179,7 +179,9 @@ DEF_TEST(ImageFilterCache_ImageBackedRaster, reporter) { #if SK_SUPPORT_GPU #include "GrContext.h" +#include "GrContextPriv.h" #include "GrResourceProvider.h" +#include "GrTest.h" static sk_sp<GrTextureProxy> create_proxy(GrResourceProvider* resourceProvider) { SkBitmap srcBM = create_bm(); @@ -209,17 +211,16 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterCache_ImageBackedGPU, reporter, ct return; } - GrBackendTextureDesc backendDesc; - backendDesc.fFlags = kNone_GrBackendTextureFlag; - backendDesc.fOrigin = kTopLeft_GrSurfaceOrigin; - backendDesc.fConfig = kRGBA_8888_GrPixelConfig; - backendDesc.fWidth = kFullSize; - backendDesc.fHeight = kFullSize; - backendDesc.fSampleCnt = 0; - backendDesc.fTextureHandle = tex->getTextureHandle(); + GrBackendTexture backendTex = GrTest::CreateBackendTexture(context->contextPriv().getBackend(), + kFullSize, + kFullSize, + kRGBA_8888_GrPixelConfig, + tex->getTextureHandle()); + GrSurfaceOrigin texOrigin = kTopLeft_GrSurfaceOrigin; sk_sp<SkImage> srcImage(SkImage::MakeFromTexture(context, - backendDesc, - kPremul_SkAlphaType)); + backendTex, + texOrigin, + kPremul_SkAlphaType, nullptr)); if (!srcImage) { return; } @@ -228,18 +229,18 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterCache_ImageBackedGPU, reporter, ct GrBackendObject readBackHandle = srcImage->getTextureHandle(false, &readBackOrigin); // TODO: Make it so we can check this (see skbug.com/5019) #if 0 - if (readBackHandle != backendDesc.fTextureHandle) { + if (readBackHandle != tex->getTextureHandle()) { ERRORF(reporter, "backend mismatch %d %d\n", - (int)readBackHandle, (int)backendDesc.fTextureHandle); + (int)readBackHandle, (int)tex->getTextureHandle()); } - REPORTER_ASSERT(reporter, readBackHandle == backendDesc.fTextureHandle); + REPORTER_ASSERT(reporter, readBackHandle == tex->getTextureHandle()); #else REPORTER_ASSERT(reporter, SkToBool(readBackHandle)); #endif - if (readBackOrigin != backendDesc.fOrigin) { - ERRORF(reporter, "origin mismatch %d %d\n", readBackOrigin, backendDesc.fOrigin); + if (readBackOrigin != texOrigin) { + ERRORF(reporter, "origin mismatch %d %d\n", readBackOrigin, texOrigin); } - REPORTER_ASSERT(reporter, readBackOrigin == backendDesc.fOrigin); + REPORTER_ASSERT(reporter, readBackOrigin == texOrigin); test_image_backed(reporter, srcImage); } diff --git a/tests/ImageTest.cpp b/tests/ImageTest.cpp index 77017f3885..382a624253 100644 --- a/tests/ImageTest.cpp +++ b/tests/ImageTest.cpp @@ -32,7 +32,9 @@ #include "sk_tool_utils.h" #if SK_SUPPORT_GPU +#include "GrContextPriv.h" #include "GrGpu.h" +#include "GrTest.h" #endif using namespace sk_gpu_test; @@ -808,44 +810,48 @@ DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(SkImage_NewFromTextureRelease, reporter, c const int kWidth = 10; const int kHeight = 10; std::unique_ptr<uint32_t[]> pixels(new uint32_t[kWidth * kHeight]); - GrBackendTextureDesc backendDesc; - backendDesc.fFlags = kRenderTarget_GrBackendTextureFlag; - backendDesc.fOrigin = kBottomLeft_GrSurfaceOrigin; - backendDesc.fConfig = kRGBA_8888_GrPixelConfig; - backendDesc.fWidth = kWidth; - backendDesc.fHeight = kHeight; - backendDesc.fSampleCnt = 0; - backendDesc.fTextureHandle = ctxInfo.grContext()->getGpu()->createTestingOnlyBackendTexture( - pixels.get(), kWidth, kHeight, kRGBA_8888_GrPixelConfig, true); + + GrContext* ctx = ctxInfo.grContext(); + + GrBackendObject backendTexHandle = + ctxInfo.grContext()->getGpu()->createTestingOnlyBackendTexture( + pixels.get(), kWidth, kHeight, kRGBA_8888_GrPixelConfig, true); + + GrBackendTexture backendTex = GrTest::CreateBackendTexture(ctx->contextPriv().getBackend(), + kWidth, + kHeight, + kRGBA_8888_GrPixelConfig, + backendTexHandle); TextureReleaseChecker releaseChecker; + GrSurfaceOrigin texOrigin = kBottomLeft_GrSurfaceOrigin; sk_sp<SkImage> refImg( - SkImage::MakeFromTexture(ctxInfo.grContext(), backendDesc, kPremul_SkAlphaType, + SkImage::MakeFromTexture(ctx, backendTex, texOrigin, kPremul_SkAlphaType, nullptr, TextureReleaseChecker::Release, &releaseChecker)); GrSurfaceOrigin readBackOrigin; GrBackendObject readBackHandle = refImg->getTextureHandle(false, &readBackOrigin); // TODO: Make it so we can check this (see skbug.com/5019) #if 0 - if (*readBackHandle != *(backendDesc.fTextureHandle)) { + if (*readBackHandle != *(backendTexHandle)) { ERRORF(reporter, "backend mismatch %d %d\n", - (int)readBackHandle, (int)backendDesc.fTextureHandle); + (int)readBackHandle, (int)backendTexHandle); } - REPORTER_ASSERT(reporter, readBackHandle == backendDesc.fTextureHandle); + REPORTER_ASSERT(reporter, readBackHandle == backendTexHandle); #else REPORTER_ASSERT(reporter, SkToBool(readBackHandle)); #endif - if (readBackOrigin != backendDesc.fOrigin) { - ERRORF(reporter, "origin mismatch %d %d\n", readBackOrigin, backendDesc.fOrigin); + if (readBackOrigin != texOrigin) { + ERRORF(reporter, "origin mismatch %d %d\n", readBackOrigin, texOrigin); } - REPORTER_ASSERT(reporter, readBackOrigin == backendDesc.fOrigin); + REPORTER_ASSERT(reporter, readBackOrigin == texOrigin); // Now exercise the release proc REPORTER_ASSERT(reporter, 0 == releaseChecker.fReleaseCount); refImg.reset(nullptr); // force a release of the image REPORTER_ASSERT(reporter, 1 == releaseChecker.fReleaseCount); - ctxInfo.grContext()->getGpu()->deleteTestingOnlyBackendTexture(backendDesc.fTextureHandle); + ctxInfo.grContext()->getGpu()->deleteTestingOnlyBackendTexture(backendTexHandle); } static void check_images_same(skiatest::Reporter* reporter, const SkImage* a, const SkImage* b) { diff --git a/tests/RectangleTextureTest.cpp b/tests/RectangleTextureTest.cpp index 41ee7b3c1c..967d86c9c4 100644 --- a/tests/RectangleTextureTest.cpp +++ b/tests/RectangleTextureTest.cpp @@ -13,13 +13,14 @@ #include "GrContext.h" #include "GrContextPriv.h" #include "GrRenderTargetContext.h" +#include "GrTest.h" #include "gl/GLTestContext.h" #include "gl/GrGLGpu.h" #include "gl/GrGLUtil.h" // skbug.com/5932 static void test_basic_draw_as_src(skiatest::Reporter* reporter, GrContext* context, - sk_sp<GrSurfaceProxy> rectProxy, uint32_t expectedPixelValues[]) { + sk_sp<GrTextureProxy> rectProxy, uint32_t expectedPixelValues[]) { sk_sp<GrRenderTargetContext> rtContext( context->makeRenderTargetContext(SkBackingFit::kExact, rectProxy->width(), rectProxy->height(), rectProxy->config(), @@ -30,7 +31,7 @@ static void test_basic_draw_as_src(skiatest::Reporter* reporter, GrContext* cont rtContext->clear(nullptr, 0xDDCCBBAA, true); sk_sp<GrFragmentProcessor> fp(GrSimpleTextureEffect::Make( context->resourceProvider(), - sk_ref_sp(rectProxy->asTextureProxy()), + rectProxy, nullptr, SkMatrix::I(), filter)); GrPaint paint; @@ -99,7 +100,9 @@ DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(RectangleTexture, reporter, ctxInfo) { } } - for (int origin = 0; origin < 2; ++origin) { + for (auto origin : { kBottomLeft_GrSurfaceOrigin, kTopLeft_GrSurfaceOrigin }) { + bool useBLOrigin = kBottomLeft_GrSurfaceOrigin == origin; + GrGLuint rectTexID = glContext->createTextureRectangle(kWidth, kHeight, GR_GL_RGBA, GR_GL_RGBA, GR_GL_UNSIGNED_BYTE, pixels); @@ -116,25 +119,19 @@ DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(RectangleTexture, reporter, ctxInfo) { rectangleInfo.fID = rectTexID; rectangleInfo.fTarget = GR_GL_TEXTURE_RECTANGLE; - GrBackendTextureDesc rectangleDesc; - rectangleDesc.fFlags = kRenderTarget_GrBackendTextureFlag; - rectangleDesc.fConfig = kRGBA_8888_GrPixelConfig; - rectangleDesc.fWidth = kWidth; - rectangleDesc.fHeight = kHeight; - rectangleDesc.fOrigin = origin ? kBottomLeft_GrSurfaceOrigin : kTopLeft_GrSurfaceOrigin; - rectangleDesc.fTextureHandle = reinterpret_cast<GrBackendObject>(&rectangleInfo); + GrBackendTexture rectangleTex(kWidth, kHeight, kRGBA_8888_GrPixelConfig, &rectangleInfo); GrColor refPixels[kWidth * kHeight]; - bool flipRef = rectangleDesc.fOrigin == kBottomLeft_GrSurfaceOrigin; for (int y = 0; y < kHeight; ++y) { for (int x = 0; x < kWidth; ++x) { - int y0 = flipRef ? kHeight - y - 1 : y; + int y0 = useBLOrigin ? kHeight - y - 1 : y; refPixels[y * kWidth + x] = pixels[y0 * kWidth + x]; } } - sk_sp<GrSurfaceProxy> rectProxy = GrSurfaceProxy::MakeWrappedBackend(context, - rectangleDesc); + sk_sp<GrTextureProxy> rectProxy = GrSurfaceProxy::MakeWrappedBackend(context, + rectangleTex, + origin); if (!rectProxy) { ERRORF(reporter, "Error creating proxy for rectangle texture."); GR_GL_CALL(glContext->gl(), DeleteTextures(1, &rectTexID)); diff --git a/tests/ResourceCacheTest.cpp b/tests/ResourceCacheTest.cpp index 07369380af..17e02ba193 100644 --- a/tests/ResourceCacheTest.cpp +++ b/tests/ResourceCacheTest.cpp @@ -11,6 +11,7 @@ #if SK_SUPPORT_GPU #include <thread> #include "GrContext.h" +#include "GrContextPriv.h" #include "GrContextFactory.h" #include "GrGpu.h" #include "GrGpuResourceCacheAccess.h" @@ -218,22 +219,32 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ResourceCacheWrappedResources, reporter, ctxI context->resetContext(); - GrBackendTextureDesc desc; - desc.fConfig = kBGRA_8888_GrPixelConfig; - desc.fWidth = kW; - desc.fHeight = kH; - - desc.fTextureHandle = texHandles[0]; + GrBackendTexture backendTex1 = GrTest::CreateBackendTexture(context->contextPriv().getBackend(), + kW, + kH, + kRGBA_8888_GrPixelConfig, + texHandles[0]); sk_sp<GrTexture> borrowed(context->resourceProvider()->wrapBackendTexture( - desc, kBorrow_GrWrapOwnership)); - - desc.fTextureHandle = texHandles[1]; + backendTex1, kTopLeft_GrSurfaceOrigin, kNone_GrBackendTextureFlag, 0, + kBorrow_GrWrapOwnership)); + + GrBackendTexture backendTex2 = GrTest::CreateBackendTexture(context->contextPriv().getBackend(), + kW, + kH, + kRGBA_8888_GrPixelConfig, + texHandles[1]); sk_sp<GrTexture> adopted(context->resourceProvider()->wrapBackendTexture( - desc, kAdopt_GrWrapOwnership)); - - desc.fTextureHandle = texHandles[2]; + backendTex2, kTopLeft_GrSurfaceOrigin, kNone_GrBackendTextureFlag, 0, + kAdopt_GrWrapOwnership)); + + GrBackendTexture backendTex3 = GrTest::CreateBackendTexture(context->contextPriv().getBackend(), + kW, + kH, + kRGBA_8888_GrPixelConfig, + texHandles[2]); sk_sp<GrTexture> adoptedAndCached(context->resourceProvider()->wrapBackendTexture( - desc, kAdoptAndCache_GrWrapOwnership)); + backendTex3, kTopLeft_GrSurfaceOrigin, kNone_GrBackendTextureFlag, 0, + kAdoptAndCache_GrWrapOwnership)); REPORTER_ASSERT(reporter, borrowed != nullptr && adopted != nullptr && adoptedAndCached != nullptr); diff --git a/tests/SurfaceTest.cpp b/tests/SurfaceTest.cpp index e236928da7..58ced7ebc0 100644 --- a/tests/SurfaceTest.cpp +++ b/tests/SurfaceTest.cpp @@ -25,6 +25,7 @@ #include "GrRenderTargetContext.h" #include "GrGpu.h" #include "GrResourceProvider.h" +#include "GrTest.h" #include <vector> #endif @@ -587,20 +588,24 @@ static sk_sp<SkSurface> create_gpu_surface_backend_texture( const int kHeight = 10; std::unique_ptr<uint32_t[]> pixels(new uint32_t[kWidth * kHeight]); sk_memset32(pixels.get(), color, kWidth * kHeight); - GrBackendTextureDesc desc; - desc.fConfig = kRGBA_8888_GrPixelConfig; - desc.fWidth = kWidth; - desc.fHeight = kHeight; - desc.fFlags = kRenderTarget_GrBackendTextureFlag; - desc.fTextureHandle = context->getGpu()->createTestingOnlyBackendTexture( + + GrBackendObject backendHandle = context->getGpu()->createTestingOnlyBackendTexture( pixels.get(), kWidth, kHeight, kRGBA_8888_GrPixelConfig, true); - desc.fSampleCnt = sampleCnt; - sk_sp<SkSurface> surface = SkSurface::MakeFromBackendTexture(context, desc, nullptr); + + GrBackendTexture backendTex = GrTest::CreateBackendTexture(context->contextPriv().getBackend(), + kWidth, + kHeight, + kRGBA_8888_GrPixelConfig, + backendHandle); + + sk_sp<SkSurface> surface = SkSurface::MakeFromBackendTexture(context, backendTex, + kDefault_GrSurfaceOrigin, sampleCnt, + nullptr, nullptr); if (!surface) { - context->getGpu()->deleteTestingOnlyBackendTexture(desc.fTextureHandle); + context->getGpu()->deleteTestingOnlyBackendTexture(backendHandle); return nullptr; } - *outTexture = desc.fTextureHandle; + *outTexture = backendHandle; return surface; } @@ -610,21 +615,23 @@ static sk_sp<SkSurface> create_gpu_surface_backend_texture_as_render_target( const int kHeight = 10; std::unique_ptr<uint32_t[]> pixels(new uint32_t[kWidth * kHeight]); sk_memset32(pixels.get(), color, kWidth * kHeight); - GrBackendTextureDesc desc; - desc.fConfig = kRGBA_8888_GrPixelConfig; - desc.fWidth = kWidth; - desc.fHeight = kHeight; - desc.fFlags = kRenderTarget_GrBackendTextureFlag; - desc.fTextureHandle = context->getGpu()->createTestingOnlyBackendTexture( + + GrBackendObject backendHandle = context->getGpu()->createTestingOnlyBackendTexture( pixels.get(), kWidth, kHeight, kRGBA_8888_GrPixelConfig, true); - desc.fSampleCnt = sampleCnt; - sk_sp<SkSurface> surface = SkSurface::MakeFromBackendTextureAsRenderTarget(context, desc, - nullptr); + + GrBackendTexture backendTex = GrTest::CreateBackendTexture(context->contextPriv().getBackend(), + kWidth, + kHeight, + kRGBA_8888_GrPixelConfig, + backendHandle); + sk_sp<SkSurface> surface = SkSurface::MakeFromBackendTextureAsRenderTarget( + context, backendTex, kDefault_GrSurfaceOrigin, sampleCnt, nullptr, nullptr); + if (!surface) { - context->getGpu()->deleteTestingOnlyBackendTexture(desc.fTextureHandle); + context->getGpu()->deleteTestingOnlyBackendTexture(backendHandle); return nullptr; } - *outTexture = desc.fTextureHandle; + *outTexture = backendHandle; return surface; } @@ -879,21 +886,26 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceCreationWithColorSpace_Gpu, reporter, std::vector<GrBackendObject> textureHandles; auto wrappedSurfaceMaker = [context,&textureHandles](const SkImageInfo& info) { - GrBackendTextureDesc desc; - desc.fConfig = SkImageInfo2GrPixelConfig(info, *context->caps()); - desc.fWidth = 10; - desc.fHeight = 10; - desc.fFlags = kRenderTarget_GrBackendTextureFlag; - desc.fTextureHandle = context->getGpu()->createTestingOnlyBackendTexture( - nullptr, desc.fWidth, desc.fHeight, desc.fConfig, true); - - if (!desc.fTextureHandle) { + static const int kSize = 10; + GrPixelConfig config = SkImageInfo2GrPixelConfig(info, *context->caps()); + + GrBackendObject backendHandle = context->getGpu()->createTestingOnlyBackendTexture( + nullptr, kSize, kSize, config, true); + + if (!backendHandle) { return sk_sp<SkSurface>(nullptr); } - textureHandles.push_back(desc.fTextureHandle); + textureHandles.push_back(backendHandle); + + GrBackendTexture backendTex = GrTest::CreateBackendTexture(context->contextPriv().getBackend(), + kSize, + kSize, + config, + backendHandle); - return SkSurface::MakeFromBackendTexture(context, desc, sk_ref_sp(info.colorSpace()), - nullptr); + return SkSurface::MakeFromBackendTexture(context, backendTex, + kDefault_GrSurfaceOrigin, 0, + sk_ref_sp(info.colorSpace()), nullptr); }; test_surface_creation_and_snapshot_with_color_space(reporter, "wrapped", f16Support, diff --git a/tests/VkWrapTests.cpp b/tests/VkWrapTests.cpp index 9279ef6895..44b5e72bc9 100644 --- a/tests/VkWrapTests.cpp +++ b/tests/VkWrapTests.cpp @@ -31,37 +31,56 @@ void wrap_tex_test(skiatest::Reporter* reporter, GrContext* context) { GrBackendObject backendObj = gpu->createTestingOnlyBackendTexture(nullptr, kW, kH, kPixelConfig, false); - const GrVkImageInfo* backendTex = reinterpret_cast<const GrVkImageInfo*>(backendObj); - - // check basic borrowed creation - GrBackendTextureDesc desc; - desc.fConfig = kPixelConfig; - desc.fWidth = kW; - desc.fHeight = kH; - desc.fTextureHandle = backendObj; - sk_sp<GrTexture> tex = gpu->wrapBackendTexture(desc, kBorrow_GrWrapOwnership); + const GrVkImageInfo* imageInfo = reinterpret_cast<const GrVkImageInfo*>(backendObj); + + GrBackendTexture backendTex = GrBackendTexture(kW, kH, imageInfo); + sk_sp<GrTexture> tex = gpu->wrapBackendTexture(backendTex, + kTopLeft_GrSurfaceOrigin, + kNone_GrBackendTextureFlag, + 0, + kBorrow_GrWrapOwnership); REPORTER_ASSERT(reporter, tex); // image is null - GrVkImageInfo backendCopy = *backendTex; + GrVkImageInfo backendCopy = *imageInfo; backendCopy.fImage = VK_NULL_HANDLE; - desc.fTextureHandle = (GrBackendObject) &backendCopy; - tex = gpu->wrapBackendTexture(desc, kBorrow_GrWrapOwnership); + backendTex = GrBackendTexture(kW, kH, &backendCopy); + tex = gpu->wrapBackendTexture(backendTex, + kTopLeft_GrSurfaceOrigin, + kNone_GrBackendTextureFlag, + 0, + kBorrow_GrWrapOwnership); REPORTER_ASSERT(reporter, !tex); - tex = gpu->wrapBackendTexture(desc, kAdopt_GrWrapOwnership); + tex = gpu->wrapBackendTexture(backendTex, + kTopLeft_GrSurfaceOrigin, + kNone_GrBackendTextureFlag, + 0, + kAdopt_GrWrapOwnership); REPORTER_ASSERT(reporter, !tex); // alloc is null - backendCopy.fImage = backendTex->fImage; + backendCopy.fImage = imageInfo->fImage; backendCopy.fAlloc = { VK_NULL_HANDLE, 0, 0, 0 }; - tex = gpu->wrapBackendTexture(desc, kBorrow_GrWrapOwnership); + tex = gpu->wrapBackendTexture(backendTex, + kTopLeft_GrSurfaceOrigin, + kNone_GrBackendTextureFlag, + 0, + kBorrow_GrWrapOwnership); REPORTER_ASSERT(reporter, !tex); - tex = gpu->wrapBackendTexture(desc, kAdopt_GrWrapOwnership); + tex = gpu->wrapBackendTexture(backendTex, + kTopLeft_GrSurfaceOrigin, + kNone_GrBackendTextureFlag, + 0, + kAdopt_GrWrapOwnership); REPORTER_ASSERT(reporter, !tex); - // check adopt creation - backendCopy.fAlloc = backendTex->fAlloc; - tex = gpu->wrapBackendTexture(desc, kAdopt_GrWrapOwnership); + backendCopy.fAlloc = imageInfo->fAlloc; + tex = gpu->wrapBackendTexture(backendTex, + kTopLeft_GrSurfaceOrigin, + kNone_GrBackendTextureFlag, + 0, + kAdopt_GrWrapOwnership); + REPORTER_ASSERT(reporter, tex); gpu->deleteTestingOnlyBackendTexture(backendObj, true); @@ -110,38 +129,56 @@ void wrap_trt_test(skiatest::Reporter* reporter, GrContext* context) { GrBackendObject backendObj = gpu->createTestingOnlyBackendTexture(nullptr, kW, kH, kPixelConfig, true); - const GrVkImageInfo* backendTex = reinterpret_cast<const GrVkImageInfo*>(backendObj); - - // check basic borrowed creation - GrBackendTextureDesc desc; - desc.fFlags = kRenderTarget_GrBackendTextureFlag; - desc.fConfig = kPixelConfig; - desc.fWidth = kW; - desc.fHeight = kH; - desc.fTextureHandle = backendObj; - sk_sp<GrTexture> tex = gpu->wrapBackendTexture(desc, kBorrow_GrWrapOwnership); + const GrVkImageInfo* imageInfo = reinterpret_cast<const GrVkImageInfo*>(backendObj); + + GrBackendTexture backendTex = GrBackendTexture(kW, kH, imageInfo); + sk_sp<GrTexture> tex = gpu->wrapBackendTexture(backendTex, + kTopLeft_GrSurfaceOrigin, + kRenderTarget_GrBackendTextureFlag, + 0, + kBorrow_GrWrapOwnership); REPORTER_ASSERT(reporter, tex); // image is null - GrVkImageInfo backendCopy = *backendTex; + GrVkImageInfo backendCopy = *imageInfo; backendCopy.fImage = VK_NULL_HANDLE; - desc.fTextureHandle = (GrBackendObject)&backendCopy; - tex = gpu->wrapBackendTexture(desc, kBorrow_GrWrapOwnership); + backendTex = GrBackendTexture(kW, kH, &backendCopy); + tex = gpu->wrapBackendTexture(backendTex, + kTopLeft_GrSurfaceOrigin, + kRenderTarget_GrBackendTextureFlag, + 0, + kBorrow_GrWrapOwnership); REPORTER_ASSERT(reporter, !tex); - tex = gpu->wrapBackendTexture(desc, kAdopt_GrWrapOwnership); + tex = gpu->wrapBackendTexture(backendTex, + kTopLeft_GrSurfaceOrigin, + kRenderTarget_GrBackendTextureFlag, + 0, + kAdopt_GrWrapOwnership); REPORTER_ASSERT(reporter, !tex); // alloc is null - backendCopy.fImage = backendTex->fImage; + backendCopy.fImage = imageInfo->fImage; backendCopy.fAlloc = { VK_NULL_HANDLE, 0, 0, 0 }; - tex = gpu->wrapBackendTexture(desc, kBorrow_GrWrapOwnership); + tex = gpu->wrapBackendTexture(backendTex, + kTopLeft_GrSurfaceOrigin, + kRenderTarget_GrBackendTextureFlag, + 0, + kBorrow_GrWrapOwnership); REPORTER_ASSERT(reporter, !tex); - tex = gpu->wrapBackendTexture(desc, kAdopt_GrWrapOwnership); + tex = gpu->wrapBackendTexture(backendTex, + kTopLeft_GrSurfaceOrigin, + kRenderTarget_GrBackendTextureFlag, + 0, + kAdopt_GrWrapOwnership); REPORTER_ASSERT(reporter, !tex); // check adopt creation - backendCopy.fAlloc = backendTex->fAlloc; - tex = gpu->wrapBackendTexture(desc, kAdopt_GrWrapOwnership); + backendCopy.fAlloc = imageInfo->fAlloc; + tex = gpu->wrapBackendTexture(backendTex, + kTopLeft_GrSurfaceOrigin, + kRenderTarget_GrBackendTextureFlag, + 0, + kAdopt_GrWrapOwnership); REPORTER_ASSERT(reporter, tex); gpu->deleteTestingOnlyBackendTexture(backendObj, true); |