Index: tests/SkResourceCacheTest.cpp |
diff --git a/tests/SkResourceCacheTest.cpp b/tests/SkResourceCacheTest.cpp |
index 20c3f7f0a0961f2daf0b2144688779048f3e7104..f13476a5a3b681056b07aae7e9923250c92327f1 100644 |
--- a/tests/SkResourceCacheTest.cpp |
+++ b/tests/SkResourceCacheTest.cpp |
@@ -4,11 +4,13 @@ |
* Use of this source code is governed by a BSD-style license that can be |
* found in the LICENSE file. |
*/ |
+ |
#include "Test.h" |
-#include "SkCanvas.h" |
-#include "SkGraphics.h" |
#include "SkBitmapCache.h" |
+#include "SkCanvas.h" |
#include "SkDiscardableMemoryPool.h" |
+#include "SkGraphics.h" |
+#include "SkResourceCache.h" |
static const int kCanvasSize = 1; |
static const int kBitmapSize = 16; |
@@ -74,72 +76,93 @@ DEF_TEST(ResourceCache_SingleAllocationByteLimit, reporter) { |
SkGraphics::SetResourceCacheTotalByteLimit(originalByteLimit); |
} |
-#if 0 // skia:2912 |
+//////////////////////////////////////////////////////////////////////////////////////// |
-static SkBitmap createAllocatedBitmap(const SkImageInfo& info) { |
- SkBitmap cachedBitmap; |
- cachedBitmap.setInfo(info); |
- SkBitmap::Allocator* allocator = SkBitmapCache::GetAllocator(); |
+static void make_bitmap(SkBitmap* bitmap, const SkImageInfo& info, SkBitmap::Allocator* allocator) { |
if (allocator) { |
- allocator->allocPixelRef(&cachedBitmap, 0); |
+ bitmap->setInfo(info); |
+ allocator->allocPixelRef(bitmap, 0); |
} else { |
- cachedBitmap.allocPixels(); |
+ bitmap->allocPixels(info); |
} |
- |
- return cachedBitmap; |
} |
// http://skbug.com/2894 |
DEF_TEST(BitmapCache_add_rect, reporter) { |
+ SkResourceCache::DiscardableFactory factory = SkResourceCache::GetDiscardableFactory(); |
+ SkBitmap::Allocator* allocator = SkBitmapCache::GetAllocator(); |
+ |
+ SkAutoTDelete<SkResourceCache> cache; |
+ if (factory) { |
+ cache.reset(SkNEW_ARGS(SkResourceCache, (factory))); |
+ } else { |
+ const size_t byteLimit = 100 * 1024; |
+ cache.reset(SkNEW_ARGS(SkResourceCache, (byteLimit))); |
+ } |
+ SkBitmap cachedBitmap; |
+ make_bitmap(&cachedBitmap, SkImageInfo::MakeN32Premul(5, 5), allocator); |
+ cachedBitmap.setImmutable(); |
+ |
SkBitmap bm; |
SkIRect rect = SkIRect::MakeWH(5, 5); |
- SkBitmap cachedBitmap = createAllocatedBitmap(SkImageInfo::MakeN32Premul(5, 5)); |
- cachedBitmap.setImmutable(); |
// Wrong subset size |
- REPORTER_ASSERT(reporter, ! SkBitmapCache::Add(cachedBitmap.getGenerationID(), SkIRect::MakeWH(4, 6), cachedBitmap)); |
- REPORTER_ASSERT(reporter, ! SkBitmapCache::Find(cachedBitmap.getGenerationID(), rect, &bm)); |
+ REPORTER_ASSERT(reporter, !SkBitmapCache::Add(cachedBitmap.getGenerationID(), SkIRect::MakeWH(4, 6), cachedBitmap, cache)); |
+ REPORTER_ASSERT(reporter, !SkBitmapCache::Find(cachedBitmap.getGenerationID(), rect, &bm, cache)); |
// Wrong offset value |
- REPORTER_ASSERT(reporter, ! SkBitmapCache::Add(cachedBitmap.getGenerationID(), SkIRect::MakeXYWH(-1, 0, 5, 5), cachedBitmap)); |
- REPORTER_ASSERT(reporter, ! SkBitmapCache::Find(cachedBitmap.getGenerationID(), rect, &bm)); |
+ REPORTER_ASSERT(reporter, !SkBitmapCache::Add(cachedBitmap.getGenerationID(), SkIRect::MakeXYWH(-1, 0, 5, 5), cachedBitmap, cache)); |
+ REPORTER_ASSERT(reporter, !SkBitmapCache::Find(cachedBitmap.getGenerationID(), rect, &bm, cache)); |
// Should not be in the cache |
- REPORTER_ASSERT(reporter, !SkBitmapCache::Find(cachedBitmap.getGenerationID(), rect, &bm)); |
+ REPORTER_ASSERT(reporter, !SkBitmapCache::Find(cachedBitmap.getGenerationID(), rect, &bm, cache)); |
- REPORTER_ASSERT(reporter, SkBitmapCache::Add(cachedBitmap.getGenerationID(), rect, cachedBitmap)); |
+ REPORTER_ASSERT(reporter, SkBitmapCache::Add(cachedBitmap.getGenerationID(), rect, cachedBitmap, cache)); |
// Should be in the cache, we just added it |
- REPORTER_ASSERT(reporter, SkBitmapCache::Find(cachedBitmap.getGenerationID(), rect, &bm)); |
+ REPORTER_ASSERT(reporter, SkBitmapCache::Find(cachedBitmap.getGenerationID(), rect, &bm, cache)); |
} |
DEF_TEST(BitmapCache_discarded_bitmap, reporter) { |
- SkBitmap bm; |
- SkIRect rect = SkIRect::MakeWH(5, 5); |
- SkBitmap cachedBitmap = createAllocatedBitmap(SkImageInfo::MakeN32Premul(5, 5)); |
+ SkResourceCache::DiscardableFactory factory = SkResourceCache::GetDiscardableFactory(); |
+ SkBitmap::Allocator* allocator = SkBitmapCache::GetAllocator(); |
+ |
+ SkAutoTDelete<SkResourceCache> cache; |
+ if (factory) { |
+ cache.reset(SkNEW_ARGS(SkResourceCache, (factory))); |
+ } else { |
+ const size_t byteLimit = 100 * 1024; |
+ cache.reset(SkNEW_ARGS(SkResourceCache, (byteLimit))); |
+ } |
+ SkBitmap cachedBitmap; |
+ make_bitmap(&cachedBitmap, SkImageInfo::MakeN32Premul(5, 5), allocator); |
cachedBitmap.setImmutable(); |
cachedBitmap.unlockPixels(); |
+ SkBitmap bm; |
+ SkIRect rect = SkIRect::MakeWH(5, 5); |
+ |
// Add a bitmap to the cache. |
- REPORTER_ASSERT(reporter, SkBitmapCache::Add(cachedBitmap.getGenerationID(), rect, cachedBitmap)); |
- REPORTER_ASSERT(reporter, SkBitmapCache::Find(cachedBitmap.getGenerationID(), rect, &bm)); |
+ REPORTER_ASSERT(reporter, SkBitmapCache::Add(cachedBitmap.getGenerationID(), rect, cachedBitmap, cache)); |
+ REPORTER_ASSERT(reporter, SkBitmapCache::Find(cachedBitmap.getGenerationID(), rect, &bm, cache)); |
// Finding more than once works fine. |
- REPORTER_ASSERT(reporter, SkBitmapCache::Find(cachedBitmap.getGenerationID(), rect, &bm)); |
+ REPORTER_ASSERT(reporter, SkBitmapCache::Find(cachedBitmap.getGenerationID(), rect, &bm, cache)); |
bm.unlockPixels(); |
// Drop the pixels in the bitmap. |
- REPORTER_ASSERT(reporter, SkGetGlobalDiscardableMemoryPool()->getRAMUsed() > 0); |
- SkGetGlobalDiscardableMemoryPool()->dumpPool(); |
- REPORTER_ASSERT(reporter, SkGetGlobalDiscardableMemoryPool()->getRAMUsed() == 0); |
+ if (factory) { |
+ REPORTER_ASSERT(reporter, SkGetGlobalDiscardableMemoryPool()->getRAMUsed() > 0); |
+ SkGetGlobalDiscardableMemoryPool()->dumpPool(); |
+ REPORTER_ASSERT(reporter, SkGetGlobalDiscardableMemoryPool()->getRAMUsed() == 0); |
- // The bitmap is not in the cache since it has been dropped. |
- REPORTER_ASSERT(reporter, !SkBitmapCache::Find(cachedBitmap.getGenerationID(), rect, &bm)); |
+ // The bitmap is not in the cache since it has been dropped. |
+ REPORTER_ASSERT(reporter, !SkBitmapCache::Find(cachedBitmap.getGenerationID(), rect, &bm, cache)); |
+ } |
- cachedBitmap = createAllocatedBitmap(SkImageInfo::MakeN32Premul(5, 5)); |
+ make_bitmap(&cachedBitmap, SkImageInfo::MakeN32Premul(5, 5), allocator); |
cachedBitmap.setImmutable(); |
cachedBitmap.unlockPixels(); |
// We can add the bitmap back to the cache and find it again. |
- REPORTER_ASSERT(reporter, SkBitmapCache::Add(cachedBitmap.getGenerationID(), rect, cachedBitmap)); |
- REPORTER_ASSERT(reporter, SkBitmapCache::Find(cachedBitmap.getGenerationID(), rect, &bm)); |
+ REPORTER_ASSERT(reporter, SkBitmapCache::Add(cachedBitmap.getGenerationID(), rect, cachedBitmap, cache)); |
+ REPORTER_ASSERT(reporter, SkBitmapCache::Find(cachedBitmap.getGenerationID(), rect, &bm, cache)); |
} |
-#endif |