diff options
author | Brian Salomon <bsalomon@google.com> | 2017-05-08 20:46:17 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-05-08 20:46:26 +0000 |
commit | 449d78f5a8e73407b314aa6cb4e60a8273f0d410 (patch) | |
tree | e2cf8993a9dc917b69aa0dcfb0bc7904fbdf05e6 /tests/ImageTest.cpp | |
parent | 823bdd96ef85c2e8bbea2bbeeff270b29755413d (diff) |
Revert "Added SkImage::MakeCrossContextFromEncoded"
This reverts commit 83b1b3db36e8622f4bbc8c391d5c714e258d1e03.
Reason for revert: unit test failing and asan leaks
Original change's description:
> Added SkImage::MakeCrossContextFromEncoded
>
> Designed for Flutter's threading architecture, with
> an eye to being useful to other clients. Under the
> hood, uses a new image generator class to lazily wrap
> a texture for multiple GrContexts.
>
> Bug: skia:
> Change-Id: I6c37b12c8ab5bce94b91190e5f0beb91d31ae81b
> Reviewed-on: https://skia-review.googlesource.com/14180
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
>
TBR=egdaniel@google.com,bsalomon@google.com,robertphillips@google.com,brianosman@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: I1f0bf580aa0ea2d132e18b64ff610ddac9d073a7
Reviewed-on: https://skia-review.googlesource.com/15892
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'tests/ImageTest.cpp')
-rw-r--r-- | tests/ImageTest.cpp | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/tests/ImageTest.cpp b/tests/ImageTest.cpp index dc664cf2f0..2c4ba8f15b 100644 --- a/tests/ImageTest.cpp +++ b/tests/ImageTest.cpp @@ -806,7 +806,6 @@ struct TextureReleaseChecker { static_cast<TextureReleaseChecker*>(self)->fReleaseCount++; } }; - DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(SkImage_NewFromTextureRelease, reporter, ctxInfo) { const int kWidth = 10; const int kHeight = 10; @@ -855,128 +854,6 @@ DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(SkImage_NewFromTextureRelease, reporter, c ctxInfo.grContext()->getGpu()->deleteTestingOnlyBackendTexture(backendTexHandle); } -DEF_GPUTEST_FOR_GL_RENDERING_CONTEXTS(SkImage_MakeCrossContextRelease, reporter, ctxInfo) { - sk_sp<SkData> data = GetResourceAsData("mandrill_128.png"); - SkASSERT(data.get()); - - GrContext* ctx = ctxInfo.grContext(); - - // We test three lifetime patterns for a single context: - // 1) Create image, free image - // 2) Create image, draw, flush, free image - // 3) Create image, draw, free image, flush - // ... and then repeat the last two patterns with drawing on a second* context: - // 4) Create image, draw*, flush*, free image - // 5) Create image, draw*, free iamge, flush* - - // Case #1: Create image, free image - { - sk_sp<SkImage> refImg(SkImage::MakeCrossContextFromEncoded(ctx, data, false, nullptr)); - refImg.reset(nullptr); // force a release of the image - } - - SkImageInfo info = SkImageInfo::MakeN32Premul(128, 128); - sk_sp<SkSurface> surface = SkSurface::MakeRenderTarget(ctx, SkBudgeted::kNo, info); - SkCanvas* canvas = surface->getCanvas(); - - // Case #2: Create image, draw, flush, free image - { - sk_sp<SkImage> refImg(SkImage::MakeCrossContextFromEncoded(ctx, data, false, nullptr)); - - canvas->drawImage(refImg, 0, 0); - canvas->flush(); - - refImg.reset(nullptr); // force a release of the image - } - - // Case #3: Create image, draw, free image, flush - { - sk_sp<SkImage> refImg(SkImage::MakeCrossContextFromEncoded(ctx, data, false, nullptr)); - - canvas->drawImage(refImg, 0, 0); - refImg.reset(nullptr); // force a release of the image - - canvas->flush(); - } - - // Configure second context - sk_gpu_test::TestContext* testContext = ctxInfo.testContext(); - - GrContextFactory otherFactory; - ContextInfo otherContextInfo = otherFactory.getContextInfo(pick_second_context_type(ctxInfo)); - GrContext* otherCtx = otherContextInfo.grContext(); - sk_gpu_test::TestContext* otherTestContext = otherContextInfo.testContext(); - - surface = SkSurface::MakeRenderTarget(otherCtx, SkBudgeted::kNo, info); - canvas = surface->getCanvas(); - - // Case #4: Create image, draw*, flush*, free image - { - testContext->makeCurrent(); - sk_sp<SkImage> refImg(SkImage::MakeCrossContextFromEncoded(ctx, data, false, nullptr)); - - otherTestContext->makeCurrent(); - canvas->drawImage(refImg, 0, 0); - canvas->flush(); - - testContext->makeCurrent(); - refImg.reset(nullptr); // force a release of the image - } - - // Case #5: Create image, draw*, free image, flush* - { - testContext->makeCurrent(); - sk_sp<SkImage> refImg(SkImage::MakeCrossContextFromEncoded(ctx, data, false, nullptr)); - - otherTestContext->makeCurrent(); - canvas->drawImage(refImg, 0, 0); - - testContext->makeCurrent(); - refImg.reset(nullptr); // force a release of the image - - otherTestContext->makeCurrent(); - canvas->flush(); - } - - // Case #6: Verify that only one context can be using the image at a time - { - testContext->makeCurrent(); - sk_sp<SkImage> refImg(SkImage::MakeCrossContextFromEncoded(ctx, data, false, nullptr)); - - // Any context should be able to borrow the texture at this point - sk_sp<SkColorSpace> texColorSpace; - sk_sp<GrTextureProxy> proxy = as_IB(refImg)->asTextureProxyRef( - ctx, GrSamplerParams::ClampNoFilter(), nullptr, &texColorSpace, nullptr); - REPORTER_ASSERT(reporter, proxy); - - // But once it's borrowed, no other context should be able to borrow - otherTestContext->makeCurrent(); - sk_sp<GrTextureProxy> otherProxy = as_IB(refImg)->asTextureProxyRef( - otherCtx, GrSamplerParams::ClampNoFilter(), nullptr, &texColorSpace, nullptr); - REPORTER_ASSERT(reporter, !otherProxy); - - // Original context (that's already borrowing) should be okay - testContext->makeCurrent(); - sk_sp<GrTextureProxy> proxySecondRef = as_IB(refImg)->asTextureProxyRef( - ctx, GrSamplerParams::ClampNoFilter(), nullptr, &texColorSpace, nullptr); - REPORTER_ASSERT(reporter, proxySecondRef); - - // Releae all refs from the original context - proxy.reset(nullptr); - proxySecondRef.reset(nullptr); - - // Now we should be able to borrow the texture from the other context - otherTestContext->makeCurrent(); - otherProxy = as_IB(refImg)->asTextureProxyRef( - otherCtx, GrSamplerParams::ClampNoFilter(), nullptr, &texColorSpace, nullptr); - REPORTER_ASSERT(reporter, otherProxy); - - // Release everything - otherProxy.reset(nullptr); - refImg.reset(nullptr); - } -} - static void check_images_same(skiatest::Reporter* reporter, const SkImage* a, const SkImage* b) { if (a->width() != b->width() || a->height() != b->height()) { ERRORF(reporter, "Images must have the same size"); |