| Index: tests/SurfaceTest.cpp
|
| diff --git a/tests/SurfaceTest.cpp b/tests/SurfaceTest.cpp
|
| index 43ce203e0292bd10bffb041d0818b6512ec2ad7f..d78498f6b9142e01f7608327bb6ce7f36d742f55 100644
|
| --- a/tests/SurfaceTest.cpp
|
| +++ b/tests/SurfaceTest.cpp
|
| @@ -260,34 +260,49 @@ static uint32_t get_legacy_gen_id(SkSurface* surf) {
|
| return device->accessBitmap(false).getGenerationID();
|
| }
|
|
|
| +/*
|
| + * 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
|
| + * can also incidentally bump the genID (when a new backing surface is created).
|
| + */
|
| +static void test_texture_handle_genID(skiatest::Reporter* reporter, SkSurface* surf) {
|
| + const uint32_t gen0 = get_legacy_gen_id(surf);
|
| + surf->getTextureHandle(SkSurface::kFlushRead_TextureHandleAccess);
|
| + const uint32_t gen1 = get_legacy_gen_id(surf);
|
| + REPORTER_ASSERT(reporter, gen0 == gen1);
|
| +
|
| + surf->getTextureHandle(SkSurface::kFlushWrite_TextureHandleAccess);
|
| + const uint32_t gen2 = get_legacy_gen_id(surf);
|
| + REPORTER_ASSERT(reporter, gen0 != gen2);
|
| +
|
| + surf->getTextureHandle(SkSurface::kDiscardWrite_TextureHandleAccess);
|
| + const uint32_t gen3 = get_legacy_gen_id(surf);
|
| + REPORTER_ASSERT(reporter, gen0 != gen3);
|
| + REPORTER_ASSERT(reporter, gen2 != gen3);
|
| +}
|
| +
|
| static void test_texture_handle(skiatest::Reporter* reporter, SkSurface* surf) {
|
| SkAutoTUnref<SkImage> image0(surf->newImageSnapshot());
|
| - const uint32_t genID0 = get_legacy_gen_id(surf);
|
| GrBackendObject obj = surf->getTextureHandle(SkSurface::kFlushRead_TextureHandleAccess);
|
| REPORTER_ASSERT(reporter, obj != 0);
|
| SkAutoTUnref<SkImage> image1(surf->newImageSnapshot());
|
| - const uint32_t genID1 = get_legacy_gen_id(surf);
|
| // just read access should not affect the snapshot
|
| REPORTER_ASSERT(reporter, image0->uniqueID() == image1->uniqueID());
|
| - REPORTER_ASSERT(reporter, genID0 == genID1);
|
|
|
| obj = surf->getTextureHandle(SkSurface::kFlushWrite_TextureHandleAccess);
|
| REPORTER_ASSERT(reporter, obj != 0);
|
| SkAutoTUnref<SkImage> image2(surf->newImageSnapshot());
|
| - const uint32_t genID2 = get_legacy_gen_id(surf);
|
| // expect a new image, since we claimed we would write
|
| REPORTER_ASSERT(reporter, image0->uniqueID() != image2->uniqueID());
|
| - REPORTER_ASSERT(reporter, genID0 != genID2);
|
|
|
| obj = surf->getTextureHandle(SkSurface::kDiscardWrite_TextureHandleAccess);
|
| REPORTER_ASSERT(reporter, obj != 0);
|
| SkAutoTUnref<SkImage> image3(surf->newImageSnapshot());
|
| - const uint32_t genID3 = get_legacy_gen_id(surf);
|
| // 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());
|
| - REPORTER_ASSERT(reporter, genID0 != genID3);
|
| - REPORTER_ASSERT(reporter, genID2 != genID3);
|
| }
|
|
|
| static SkImage* create_image(skiatest::Reporter* reporter,
|
| @@ -317,6 +332,7 @@ static SkImage* create_image(skiatest::Reporter* reporter,
|
| SkSurface::NewRenderTarget(context, SkSurface::kNo_Budgeted, info, 0));
|
| surf->getCanvas()->clear(color);
|
| // test our backing texture while were here...
|
| + test_texture_handle_genID(reporter, surf);
|
| test_texture_handle(reporter, surf);
|
| // redraw so our returned image looks as expected.
|
| surf->getCanvas()->clear(color);
|
|
|