| Index: tests/SurfaceTest.cpp
|
| diff --git a/tests/SurfaceTest.cpp b/tests/SurfaceTest.cpp
|
| index d6c7acd9160ff91768b4e5b800f2c7ecc7bf6288..89c7765c5601326a1bc6b1ce84cf024d6ece1329 100644
|
| --- a/tests/SurfaceTest.cpp
|
| +++ b/tests/SurfaceTest.cpp
|
| @@ -231,7 +231,7 @@ static void test_snapshot_alphatype(skiatest::Reporter* reporter, SkSurface* sur
|
| bool expectOpaque) {
|
| REPORTER_ASSERT(reporter, surface);
|
| if (surface) {
|
| - SkAutoTUnref<SkImage> image(surface->newImageSnapshot());
|
| + sk_sp<SkImage> image(surface->makeImageSnapshot());
|
| REPORTER_ASSERT(reporter, image);
|
| if (image) {
|
| REPORTER_ASSERT(reporter, image->isOpaque() == SkToBool(expectOpaque));
|
| @@ -276,10 +276,10 @@ static void test_backend_handle_access_copy_on_write(
|
| skiatest::Reporter* reporter, SkSurface* surface, SkSurface::BackendHandleAccess mode,
|
| GrBackendObject (*func)(SkSurface*, SkSurface::BackendHandleAccess)) {
|
| GrBackendObject obj1 = func(surface, mode);
|
| - SkAutoTUnref<SkImage> snap1(surface->newImageSnapshot());
|
| + sk_sp<SkImage> snap1(surface->makeImageSnapshot());
|
|
|
| GrBackendObject obj2 = func(surface, mode);
|
| - SkAutoTUnref<SkImage> snap2(surface->newImageSnapshot());
|
| + sk_sp<SkImage> snap2(surface->makeImageSnapshot());
|
|
|
| // If the access mode triggers CoW, then the backend objects should reflect it.
|
| REPORTER_ASSERT(reporter, (obj1 == obj2) == (snap1 == snap2));
|
| @@ -339,39 +339,39 @@ static void test_unique_image_snap(skiatest::Reporter* reporter, SkSurface* surf
|
| std::function<intptr_t(SkSurface*)> sbs = surfaceBackingStore;
|
| static const SkBudgeted kB = SkBudgeted::kNo;
|
| {
|
| - SkAutoTUnref<SkImage> image(surface->newImageSnapshot(kB, SkSurface::kYes_ForceUnique));
|
| - REPORTER_ASSERT(reporter, !same_image_surf(image, surface, ibs, sbs));
|
| + sk_sp<SkImage> image(surface->makeImageSnapshot(kB, SkSurface::kYes_ForceUnique));
|
| + REPORTER_ASSERT(reporter, !same_image_surf(image.get(), surface, ibs, sbs));
|
| REPORTER_ASSERT(reporter, image->unique());
|
| }
|
| {
|
| - SkAutoTUnref<SkImage> image1(surface->newImageSnapshot(kB, SkSurface::kYes_ForceUnique));
|
| - REPORTER_ASSERT(reporter, !same_image_surf(image1, surface, ibs, sbs));
|
| + sk_sp<SkImage> image1(surface->makeImageSnapshot(kB, SkSurface::kYes_ForceUnique));
|
| + REPORTER_ASSERT(reporter, !same_image_surf(image1.get(), surface, ibs, sbs));
|
| REPORTER_ASSERT(reporter, image1->unique());
|
| - SkAutoTUnref<SkImage> image2(surface->newImageSnapshot(kB, SkSurface::kYes_ForceUnique));
|
| - REPORTER_ASSERT(reporter, !same_image_surf(image2, surface, ibs, sbs));
|
| - REPORTER_ASSERT(reporter, !same_image(image1, image2, ibs));
|
| + sk_sp<SkImage> image2(surface->makeImageSnapshot(kB, SkSurface::kYes_ForceUnique));
|
| + REPORTER_ASSERT(reporter, !same_image_surf(image2.get(), surface, ibs, sbs));
|
| + REPORTER_ASSERT(reporter, !same_image(image1.get(), image2.get(), ibs));
|
| REPORTER_ASSERT(reporter, image2->unique());
|
| }
|
| {
|
| - SkAutoTUnref<SkImage> image1(surface->newImageSnapshot(kB, SkSurface::kNo_ForceUnique));
|
| - SkAutoTUnref<SkImage> image2(surface->newImageSnapshot(kB, SkSurface::kYes_ForceUnique));
|
| - SkAutoTUnref<SkImage> image3(surface->newImageSnapshot(kB, SkSurface::kNo_ForceUnique));
|
| - SkAutoTUnref<SkImage> image4(surface->newImageSnapshot(kB, SkSurface::kYes_ForceUnique));
|
| + sk_sp<SkImage> image1(surface->makeImageSnapshot(kB, SkSurface::kNo_ForceUnique));
|
| + sk_sp<SkImage> image2(surface->makeImageSnapshot(kB, SkSurface::kYes_ForceUnique));
|
| + sk_sp<SkImage> image3(surface->makeImageSnapshot(kB, SkSurface::kNo_ForceUnique));
|
| + sk_sp<SkImage> image4(surface->makeImageSnapshot(kB, SkSurface::kYes_ForceUnique));
|
| // Image 1 and 3 ought to be the same (or we're missing an optimization).
|
| - REPORTER_ASSERT(reporter, same_image(image1, image3, ibs));
|
| + REPORTER_ASSERT(reporter, same_image(image1.get(), image3.get(), ibs));
|
| // If the surface is not direct then images 1 and 3 should alias the surface's
|
| // store.
|
| - REPORTER_ASSERT(reporter, !surfaceIsDirect == same_image_surf(image1, surface, ibs, sbs));
|
| + REPORTER_ASSERT(reporter, !surfaceIsDirect == same_image_surf(image1.get(), surface, ibs, sbs));
|
| // Image 2 should not be shared with any other image.
|
| - REPORTER_ASSERT(reporter, !same_image(image1, image2, ibs) &&
|
| - !same_image(image3, image2, ibs) &&
|
| - !same_image(image4, image2, ibs));
|
| + REPORTER_ASSERT(reporter, !same_image(image1.get(), image2.get(), ibs) &&
|
| + !same_image(image3.get(), image2.get(), ibs) &&
|
| + !same_image(image4.get(), image2.get(), ibs));
|
| REPORTER_ASSERT(reporter, image2->unique());
|
| - REPORTER_ASSERT(reporter, !same_image_surf(image2, surface, ibs, sbs));
|
| + REPORTER_ASSERT(reporter, !same_image_surf(image2.get(), surface, ibs, sbs));
|
| // Image 4 should not be shared with any other image.
|
| - REPORTER_ASSERT(reporter, !same_image(image1, image4, ibs) &&
|
| - !same_image(image3, image4, ibs));
|
| - REPORTER_ASSERT(reporter, !same_image_surf(image4, surface, ibs, sbs));
|
| + REPORTER_ASSERT(reporter, !same_image(image1.get(), image4.get(), ibs) &&
|
| + !same_image(image3.get(), image4.get(), ibs));
|
| + REPORTER_ASSERT(reporter, !same_image_surf(image4.get(), surface, ibs, sbs));
|
| REPORTER_ASSERT(reporter, image4->unique());
|
| }
|
| }
|
| @@ -455,7 +455,7 @@ static uint32_t get_legacy_gen_id(SkSurface* surface) {
|
| * Test legacy behavor of bumping the surface's device's bitmap's genID when we access its
|
| * texture handle for writing.
|
| *
|
| - * Note: this needs to be tested separately from checking newImageSnapshot, as calling that
|
| + * Note: this needs to be tested separately from checking makeImageSnapshot, as calling that
|
| * can also incidentally bump the genID (when a new backing surface is created).
|
| */
|
| static void test_backend_handle_gen_id(
|
| @@ -478,22 +478,22 @@ static void test_backend_handle_gen_id(
|
| static void test_backend_handle_unique_id(
|
| skiatest::Reporter* reporter, SkSurface* surface,
|
| GrBackendObject (*func)(SkSurface*, SkSurface::BackendHandleAccess)) {
|
| - SkAutoTUnref<SkImage> image0(surface->newImageSnapshot());
|
| + sk_sp<SkImage> image0(surface->makeImageSnapshot());
|
| GrBackendObject obj = func(surface, SkSurface::kFlushRead_BackendHandleAccess);
|
| REPORTER_ASSERT(reporter, obj != 0);
|
| - SkAutoTUnref<SkImage> image1(surface->newImageSnapshot());
|
| + sk_sp<SkImage> image1(surface->makeImageSnapshot());
|
| // just read access should not affect the snapshot
|
| REPORTER_ASSERT(reporter, image0->uniqueID() == image1->uniqueID());
|
|
|
| obj = func(surface, SkSurface::kFlushWrite_BackendHandleAccess);
|
| REPORTER_ASSERT(reporter, obj != 0);
|
| - SkAutoTUnref<SkImage> image2(surface->newImageSnapshot());
|
| + sk_sp<SkImage> image2(surface->makeImageSnapshot());
|
| // expect a new image, since we claimed we would write
|
| REPORTER_ASSERT(reporter, image0->uniqueID() != image2->uniqueID());
|
|
|
| obj = func(surface, SkSurface::kDiscardWrite_BackendHandleAccess);
|
| REPORTER_ASSERT(reporter, obj != 0);
|
| - SkAutoTUnref<SkImage> image3(surface->newImageSnapshot());
|
| + sk_sp<SkImage> image3(surface->makeImageSnapshot());
|
| // expect a new(er) image, since we claimed we would write
|
| REPORTER_ASSERT(reporter, image0->uniqueID() != image3->uniqueID());
|
| REPORTER_ASSERT(reporter, image2->uniqueID() != image3->uniqueID());
|
| @@ -563,11 +563,11 @@ static void test_copy_on_write(skiatest::Reporter* reporter, SkSurface* surface)
|
|
|
| #define EXPECT_COPY_ON_WRITE(command) \
|
| { \
|
| - SkImage* imageBefore = surface->newImageSnapshot(); \
|
| - SkAutoTUnref<SkImage> aur_before(imageBefore); \
|
| + sk_sp<SkImage> imageBefore = surface->makeImageSnapshot(); \
|
| + sk_sp<SkImage> aur_before(imageBefore); \
|
| canvas-> command ; \
|
| - SkImage* imageAfter = surface->newImageSnapshot(); \
|
| - SkAutoTUnref<SkImage> aur_after(imageAfter); \
|
| + sk_sp<SkImage> imageAfter = surface->makeImageSnapshot(); \
|
| + sk_sp<SkImage> aur_after(imageAfter); \
|
| REPORTER_ASSERT(reporter, imageBefore != imageAfter); \
|
| }
|
|
|
| @@ -608,7 +608,7 @@ static void test_writable_after_snapshot_release(skiatest::Reporter* reporter,
|
| // acquiring and releasing a snapshot without triggering a copy on write.
|
| SkCanvas* canvas = surface->getCanvas();
|
| canvas->clear(1);
|
| - surface->newImageSnapshot()->unref(); // Create and destroy SkImage
|
| + surface->makeImageSnapshot(); // Create and destroy SkImage
|
| canvas->clear(2); // Must not assert internally
|
| }
|
| DEF_TEST(SurfaceWriteableAfterSnapshotRelease, reporter) {
|
| @@ -635,20 +635,20 @@ static void test_crbug263329(skiatest::Reporter* reporter,
|
| SkCanvas* canvas1 = surface1->getCanvas();
|
| SkCanvas* canvas2 = surface2->getCanvas();
|
| canvas1->clear(1);
|
| - SkAutoTUnref<SkImage> image1(surface1->newImageSnapshot());
|
| + sk_sp<SkImage> image1(surface1->makeImageSnapshot());
|
| // Trigger copy on write, new backing is a scratch texture
|
| canvas1->clear(2);
|
| - SkAutoTUnref<SkImage> image2(surface1->newImageSnapshot());
|
| + sk_sp<SkImage> image2(surface1->makeImageSnapshot());
|
| // Trigger copy on write, old backing should not be returned to scratch
|
| // pool because it is held by image2
|
| canvas1->clear(3);
|
|
|
| canvas2->clear(4);
|
| - SkAutoTUnref<SkImage> image3(surface2->newImageSnapshot());
|
| + sk_sp<SkImage> image3(surface2->makeImageSnapshot());
|
| // Trigger copy on write on surface2. The new backing store should not
|
| // be recycling a texture that is held by an existing image.
|
| canvas2->clear(5);
|
| - SkAutoTUnref<SkImage> image4(surface2->newImageSnapshot());
|
| + sk_sp<SkImage> image4(surface2->makeImageSnapshot());
|
| REPORTER_ASSERT(reporter, as_IB(image4)->peekTexture() != as_IB(image3)->peekTexture());
|
| // The following assertion checks crbug.com/263329
|
| REPORTER_ASSERT(reporter, as_IB(image4)->peekTexture() != as_IB(image2)->peekTexture());
|
| @@ -668,7 +668,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceCRBug263329_Gpu, reporter, context) {
|
|
|
| DEF_TEST(SurfaceGetTexture, reporter) {
|
| SkAutoTUnref<SkSurface> surface(create_surface());
|
| - SkAutoTUnref<SkImage> image(surface->newImageSnapshot());
|
| + sk_sp<SkImage> image(surface->makeImageSnapshot());
|
| REPORTER_ASSERT(reporter, as_IB(image)->peekTexture() == nullptr);
|
| surface->notifyContentWillChange(SkSurface::kDiscard_ContentChangeMode);
|
| REPORTER_ASSERT(reporter, as_IB(image)->peekTexture() == nullptr);
|
| @@ -677,7 +677,7 @@ DEF_TEST(SurfaceGetTexture, reporter) {
|
| DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfacepeekTexture_Gpu, reporter, context) {
|
| for (auto& surface_func : { &create_gpu_surface, &create_gpu_scratch_surface }) {
|
| SkAutoTUnref<SkSurface> surface(surface_func(context, kPremul_SkAlphaType, nullptr));
|
| - SkAutoTUnref<SkImage> image(surface->newImageSnapshot());
|
| + sk_sp<SkImage> image(surface->makeImageSnapshot());
|
| GrTexture* texture = as_IB(image)->peekTexture();
|
| REPORTER_ASSERT(reporter, texture);
|
| REPORTER_ASSERT(reporter, 0 != texture->getTextureHandle());
|
| @@ -701,6 +701,10 @@ static SkBudgeted is_budgeted(SkImage* image) {
|
| return ((SkImage_Gpu*)image)->peekTexture()->resourcePriv().isBudgeted();
|
| }
|
|
|
| +static SkBudgeted is_budgeted(const sk_sp<SkImage> image) {
|
| + return is_budgeted(image.get());
|
| +}
|
| +
|
| DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceBudget, reporter, context) {
|
| SkImageInfo info = SkImageInfo::MakeN32Premul(8,8);
|
| for (auto sbudgeted : { SkBudgeted::kNo, SkBudgeted::kYes }) {
|
| @@ -710,7 +714,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceBudget, reporter, context) {
|
| SkASSERT(surface);
|
| REPORTER_ASSERT(reporter, sbudgeted == is_budgeted(surface));
|
|
|
| - SkAutoTUnref<SkImage> image(surface->newImageSnapshot(ibudgeted));
|
| + sk_sp<SkImage> image(surface->makeImageSnapshot(ibudgeted));
|
|
|
| // Initially the image shares a texture with the surface, and the surface decides
|
| // whether it is budgeted or not.
|
| @@ -741,15 +745,15 @@ static void test_no_canvas2(skiatest::Reporter* reporter,
|
| SkSurface::ContentChangeMode mode) {
|
| // Verifies the robustness of SkSurface for handling use cases where calls
|
| // are made before a canvas is created.
|
| - SkImage* image1 = surface->newImageSnapshot();
|
| - SkAutoTUnref<SkImage> aur_image1(image1);
|
| + sk_sp<SkImage> image1 = surface->makeImageSnapshot();
|
| + sk_sp<SkImage> aur_image1(image1);
|
| SkDEBUGCODE(image1->validate();)
|
| SkDEBUGCODE(surface->validate();)
|
| surface->notifyContentWillChange(mode);
|
| SkDEBUGCODE(image1->validate();)
|
| SkDEBUGCODE(surface->validate();)
|
| - SkImage* image2 = surface->newImageSnapshot();
|
| - SkAutoTUnref<SkImage> aur_image2(image2);
|
| + sk_sp<SkImage> image2 = surface->makeImageSnapshot();
|
| + sk_sp<SkImage> aur_image2(image2);
|
| SkDEBUGCODE(image2->validate();)
|
| SkDEBUGCODE(surface->validate();)
|
| REPORTER_ASSERT(reporter, image1 != image2);
|
| @@ -784,7 +788,7 @@ static void check_rowbytes_remain_consistent(SkSurface* surface, skiatest::Repor
|
| SkPixmap surfacePM;
|
| REPORTER_ASSERT(reporter, surface->peekPixels(&surfacePM));
|
|
|
| - SkAutoTUnref<SkImage> image(surface->newImageSnapshot());
|
| + sk_sp<SkImage> image(surface->makeImageSnapshot());
|
| SkPixmap pm;
|
| REPORTER_ASSERT(reporter, image->peekPixels(&pm));
|
|
|
| @@ -792,7 +796,7 @@ static void check_rowbytes_remain_consistent(SkSurface* surface, skiatest::Repor
|
|
|
| // trigger a copy-on-write
|
| surface->getCanvas()->drawPaint(SkPaint());
|
| - SkAutoTUnref<SkImage> image2(surface->newImageSnapshot());
|
| + sk_sp<SkImage> image2(surface->makeImageSnapshot());
|
| REPORTER_ASSERT(reporter, image->uniqueID() != image2->uniqueID());
|
|
|
| SkPixmap pm2;
|
| @@ -866,7 +870,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceClear_Gpu, reporter, context) {
|
| SkBaseDevice* d =
|
| s->getCanvas()->getDevice_just_for_deprecated_compatibility_testing();
|
| return d->accessRenderTarget(); },
|
| - [] (SkSurface* s){ SkAutoTUnref<SkImage> i(s->newImageSnapshot());
|
| + [] (SkSurface* s){ sk_sp<SkImage> i(s->makeImageSnapshot());
|
| return as_IB(i)->peekTexture(); },
|
| };
|
| for (auto grSurfaceGetter : grSurfaceGetters) {
|
|
|