| Index: tests/SurfaceTest.cpp
|
| diff --git a/tests/SurfaceTest.cpp b/tests/SurfaceTest.cpp
|
| index 1913fcb1467cb6d53e7f73d16f55fe3688927a91..69c8b845ece6227761d900a1944b9d08f3a8aee0 100644
|
| --- a/tests/SurfaceTest.cpp
|
| +++ b/tests/SurfaceTest.cpp
|
| @@ -321,6 +321,33 @@
|
| }
|
|
|
| #if SK_SUPPORT_GPU
|
| +static void TestSurfaceInCache(skiatest::Reporter* reporter,
|
| + SurfaceType surfaceType,
|
| + GrContext* context) {
|
| + context->freeGpuResources();
|
| + int resourceCount;
|
| +
|
| + context->getResourceCacheUsage(&resourceCount, NULL);
|
| + REPORTER_ASSERT(reporter, 0 == resourceCount);
|
| + SkAutoTUnref<SkSurface> surface(createSurface(surfaceType, context));
|
| + // Note: the stencil buffer is always cached, so kGpu_SurfaceType uses
|
| + // one cached resource, and kGpuScratch_SurfaceType uses two.
|
| + int expectedCachedResources = surfaceType == kGpuScratch_SurfaceType ? 2 : 1;
|
| + context->getResourceCacheUsage(&resourceCount, NULL);
|
| + REPORTER_ASSERT(reporter, expectedCachedResources == resourceCount);
|
| +
|
| + // Verify that all the cached resources are locked in cache.
|
| + context->freeGpuResources();
|
| + context->getResourceCacheUsage(&resourceCount, NULL);
|
| + REPORTER_ASSERT(reporter, expectedCachedResources == resourceCount);
|
| +
|
| + // Verify that all the cached resources are unlocked upon surface release
|
| + surface.reset(0);
|
| + context->freeGpuResources();
|
| + context->getResourceCacheUsage(&resourceCount, NULL);
|
| + REPORTER_ASSERT(reporter, 0 == resourceCount);
|
| +}
|
| +
|
| static void Test_crbug263329(skiatest::Reporter* reporter,
|
| SurfaceType surfaceType,
|
| GrContext* context) {
|
| @@ -426,6 +453,8 @@
|
| }
|
| GrContext* context = factory->get(glCtxType);
|
| if (context) {
|
| + TestSurfaceInCache(reporter, kGpu_SurfaceType, context);
|
| + TestSurfaceInCache(reporter, kGpuScratch_SurfaceType, context);
|
| Test_crbug263329(reporter, kGpu_SurfaceType, context);
|
| Test_crbug263329(reporter, kGpuScratch_SurfaceType, context);
|
| TestSurfaceCopyOnWrite(reporter, kGpu_SurfaceType, context);
|
|
|