OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "SkCanvas.h" | 8 #include "SkCanvas.h" |
9 #include "SkData.h" | 9 #include "SkData.h" |
10 #include "SkImageEncoder.h" | 10 #include "SkImageEncoder.h" |
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
297 canvas->clear(1); | 297 canvas->clear(1); |
298 surface->newImageSnapshot()->unref(); // Create and destroy SkImage | 298 surface->newImageSnapshot()->unref(); // Create and destroy SkImage |
299 canvas->clear(2); // Must not assert internally | 299 canvas->clear(2); // Must not assert internally |
300 } | 300 } |
301 | 301 |
302 #if SK_SUPPORT_GPU | 302 #if SK_SUPPORT_GPU |
303 static void TestSurfaceInCache(skiatest::Reporter* reporter, | 303 static void TestSurfaceInCache(skiatest::Reporter* reporter, |
304 SurfaceType surfaceType, | 304 SurfaceType surfaceType, |
305 GrContext* context) { | 305 GrContext* context) { |
306 context->freeGpuResources(); | 306 context->freeGpuResources(); |
307 REPORTER_ASSERT(reporter, 0 == context->getGpuTextureCacheResourceCount()); | 307 int resourceCount; |
| 308 |
| 309 context->getResourceCacheUsage(&resourceCount, NULL); |
| 310 REPORTER_ASSERT(reporter, 0 == resourceCount); |
308 SkAutoTUnref<SkSurface> surface(createSurface(surfaceType, context)); | 311 SkAutoTUnref<SkSurface> surface(createSurface(surfaceType, context)); |
309 // Note: the stencil buffer is always cached, so kGpu_SurfaceType uses | 312 // Note: the stencil buffer is always cached, so kGpu_SurfaceType uses |
310 // one cached resource, and kGpuScratch_SurfaceType uses two. | 313 // one cached resource, and kGpuScratch_SurfaceType uses two. |
311 int expectedCachedResources = surfaceType == kGpuScratch_SurfaceType ? 2 : 1
; | 314 int expectedCachedResources = surfaceType == kGpuScratch_SurfaceType ? 2 : 1
; |
312 REPORTER_ASSERT(reporter, expectedCachedResources == context->getGpuTextureC
acheResourceCount()); | 315 context->getResourceCacheUsage(&resourceCount, NULL); |
| 316 REPORTER_ASSERT(reporter, expectedCachedResources == resourceCount); |
313 | 317 |
314 // Verify that all the cached resources are locked in cache. | 318 // Verify that all the cached resources are locked in cache. |
315 context->freeGpuResources(); | 319 context->freeGpuResources(); |
316 REPORTER_ASSERT(reporter, expectedCachedResources == context->getGpuTextureC
acheResourceCount()); | 320 context->getResourceCacheUsage(&resourceCount, NULL); |
| 321 REPORTER_ASSERT(reporter, expectedCachedResources == resourceCount); |
317 | 322 |
318 // Verify that all the cached resources are unlocked upon surface release | 323 // Verify that all the cached resources are unlocked upon surface release |
319 surface.reset(0); | 324 surface.reset(0); |
320 context->freeGpuResources(); | 325 context->freeGpuResources(); |
321 REPORTER_ASSERT(reporter, 0 == context->getGpuTextureCacheResourceCount()); | 326 context->getResourceCacheUsage(&resourceCount, NULL); |
| 327 REPORTER_ASSERT(reporter, 0 == resourceCount); |
322 } | 328 } |
323 | 329 |
324 static void Test_crbug263329(skiatest::Reporter* reporter, | 330 static void Test_crbug263329(skiatest::Reporter* reporter, |
325 SurfaceType surfaceType, | 331 SurfaceType surfaceType, |
326 GrContext* context) { | 332 GrContext* context) { |
327 // This is a regression test for crbug.com/263329 | 333 // This is a regression test for crbug.com/263329 |
328 // Bug was caused by onCopyOnWrite releasing the old surface texture | 334 // Bug was caused by onCopyOnWrite releasing the old surface texture |
329 // back to the scratch texture pool even though the texture is used | 335 // back to the scratch texture pool even though the texture is used |
330 // by and active SkImage_Gpu. | 336 // by and active SkImage_Gpu. |
331 SkAutoTUnref<SkSurface> surface1(createSurface(surfaceType, context)); | 337 SkAutoTUnref<SkSurface> surface1(createSurface(surfaceType, context)); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
432 TestSurfaceNoCanvas(reporter, kGpu_SurfaceType, context, SkSurface::
kDiscard_ContentChangeMode); | 438 TestSurfaceNoCanvas(reporter, kGpu_SurfaceType, context, SkSurface::
kDiscard_ContentChangeMode); |
433 TestSurfaceNoCanvas(reporter, kGpuScratch_SurfaceType, context, SkSu
rface::kDiscard_ContentChangeMode); | 439 TestSurfaceNoCanvas(reporter, kGpuScratch_SurfaceType, context, SkSu
rface::kDiscard_ContentChangeMode); |
434 TestSurfaceNoCanvas(reporter, kGpu_SurfaceType, context, SkSurface::
kRetain_ContentChangeMode); | 440 TestSurfaceNoCanvas(reporter, kGpu_SurfaceType, context, SkSurface::
kRetain_ContentChangeMode); |
435 TestSurfaceNoCanvas(reporter, kGpuScratch_SurfaceType, context, SkSu
rface::kRetain_ContentChangeMode); | 441 TestSurfaceNoCanvas(reporter, kGpuScratch_SurfaceType, context, SkSu
rface::kRetain_ContentChangeMode); |
436 TestGetTexture(reporter, kGpu_SurfaceType, context); | 442 TestGetTexture(reporter, kGpu_SurfaceType, context); |
437 TestGetTexture(reporter, kGpuScratch_SurfaceType, context); | 443 TestGetTexture(reporter, kGpuScratch_SurfaceType, context); |
438 } | 444 } |
439 } | 445 } |
440 #endif | 446 #endif |
441 } | 447 } |
OLD | NEW |