| Index: tests/SurfaceTest.cpp
|
| ===================================================================
|
| --- tests/SurfaceTest.cpp (revision 8437)
|
| +++ tests/SurfaceTest.cpp (working copy)
|
| @@ -35,12 +35,8 @@
|
| case kRaster_SurfaceType:
|
| return SkSurface::NewRaster(imageSpec);
|
| case kGpu_SurfaceType:
|
| -#if SK_SUPPORT_GPU
|
| SkASSERT(NULL != context);
|
| return SkSurface::NewRenderTarget(context, imageSpec);
|
| -#else
|
| - SkASSERT(0);
|
| -#endif
|
| case kPicture_SurfaceType:
|
| return SkSurface::NewPicture(10, 10);
|
| }
|
| @@ -133,18 +129,33 @@
|
| testPaint))
|
| }
|
|
|
| -static void TestSurface(skiatest::Reporter* reporter) {
|
| +static void TestSurfaceWritableAfterSnapshotRelease(skiatest::Reporter* reporter,
|
| + SurfaceType surfaceType,
|
| + GrContext* context) {
|
| + // This test succeeds by not triggering an assertion.
|
| + // The test verifies that the surface remains writable (usable) after
|
| + // acquiring and releasing a snapshot without triggering a copy on write.
|
| + SkSurface* surface = createSurface(surfaceType, context);
|
| + SkAutoTUnref<SkSurface> aur_surface(surface);
|
| + SkCanvas* canvas = surface->getCanvas();
|
| + canvas->clear(1);
|
| + surface->newImageShapshot()->unref(); // Create and destroy SkImage
|
| + canvas->clear(2);
|
| +}
|
| +
|
| +static void TestSurface(skiatest::Reporter* reporter, GrContextFactory* factory) {
|
| TestSurfaceCopyOnWrite(reporter, kRaster_SurfaceType, NULL);
|
| TestSurfaceCopyOnWrite(reporter, kPicture_SurfaceType, NULL);
|
| -}
|
| -
|
| -static void TestSurfaceGpu(skiatest::Reporter* reporter, GrContextFactory* factory) {
|
| + TestSurfaceWritableAfterSnapshotRelease(reporter, kRaster_SurfaceType, NULL);
|
| + TestSurfaceWritableAfterSnapshotRelease(reporter, kPicture_SurfaceType, NULL);
|
| #if SK_SUPPORT_GPU
|
| - GrContext* context = factory->get(GrContextFactory::kNative_GLContextType);
|
| - TestSurfaceCopyOnWrite(reporter, kGpu_SurfaceType, context);
|
| + if (NULL != factory) {
|
| + GrContext* context = factory->get(GrContextFactory::kNative_GLContextType);
|
| + TestSurfaceCopyOnWrite(reporter, kGpu_SurfaceType, context);
|
| + TestSurfaceWritableAfterSnapshotRelease(reporter, kGpu_SurfaceType, context);
|
| + }
|
| #endif
|
| }
|
|
|
| #include "TestClassDef.h"
|
| -DEFINE_TESTCLASS("Surface", SurfaceTestClass, TestSurface)
|
| -DEFINE_GPUTESTCLASS("SurfaceGpu", SurfaceGpuTestClass, TestSurfaceGpu)
|
| +DEFINE_GPUTESTCLASS("Surface", SurfaceTestClass, TestSurface)
|
|
|