Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(539)

Side by Side Diff: tests/SkResourceCacheTest.cpp

Issue 960563002: only notify bitmaps that have been added to the cache (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: address reviewer comments Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/lazy/SkCachingPixelRef.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2014 Google Inc. 2 * Copyright 2014 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 "Test.h" 8 #include "Test.h"
9 #include "SkBitmapCache.h" 9 #include "SkBitmapCache.h"
10 #include "SkCanvas.h" 10 #include "SkCanvas.h"
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 } else { 101 } else {
102 const size_t byteLimit = 100 * 1024; 102 const size_t byteLimit = 100 * 1024;
103 cache.reset(SkNEW_ARGS(SkResourceCache, (byteLimit))); 103 cache.reset(SkNEW_ARGS(SkResourceCache, (byteLimit)));
104 } 104 }
105 SkBitmap cachedBitmap; 105 SkBitmap cachedBitmap;
106 make_bitmap(&cachedBitmap, SkImageInfo::MakeN32Premul(5, 5), allocator); 106 make_bitmap(&cachedBitmap, SkImageInfo::MakeN32Premul(5, 5), allocator);
107 cachedBitmap.setImmutable(); 107 cachedBitmap.setImmutable();
108 108
109 SkBitmap bm; 109 SkBitmap bm;
110 SkIRect rect = SkIRect::MakeWH(5, 5); 110 SkIRect rect = SkIRect::MakeWH(5, 5);
111 uint32_t cachedID = cachedBitmap.getGenerationID();
112 SkPixelRef* cachedPR = cachedBitmap.pixelRef();
111 113
112 // Wrong subset size 114 // Wrong subset size
113 REPORTER_ASSERT(reporter, !SkBitmapCache::Add(cachedBitmap.getGenerationID() , SkIRect::MakeWH(4, 6), cachedBitmap, cache)); 115 REPORTER_ASSERT(reporter, !SkBitmapCache::Add(cachedPR, SkIRect::MakeWH(4, 6 ), cachedBitmap, cache));
114 REPORTER_ASSERT(reporter, !SkBitmapCache::Find(cachedBitmap.getGenerationID( ), rect, &bm, cache)); 116 REPORTER_ASSERT(reporter, !SkBitmapCache::Find(cachedID, rect, &bm, cache));
115 // Wrong offset value 117 // Wrong offset value
116 REPORTER_ASSERT(reporter, !SkBitmapCache::Add(cachedBitmap.getGenerationID() , SkIRect::MakeXYWH(-1, 0, 5, 5), cachedBitmap, cache)); 118 REPORTER_ASSERT(reporter, !SkBitmapCache::Add(cachedPR, SkIRect::MakeXYWH(-1 , 0, 5, 5), cachedBitmap, cache));
117 REPORTER_ASSERT(reporter, !SkBitmapCache::Find(cachedBitmap.getGenerationID( ), rect, &bm, cache)); 119 REPORTER_ASSERT(reporter, !SkBitmapCache::Find(cachedID, rect, &bm, cache));
118 120
119 // Should not be in the cache 121 // Should not be in the cache
120 REPORTER_ASSERT(reporter, !SkBitmapCache::Find(cachedBitmap.getGenerationID( ), rect, &bm, cache)); 122 REPORTER_ASSERT(reporter, !SkBitmapCache::Find(cachedID, rect, &bm, cache));
121 123
122 REPORTER_ASSERT(reporter, SkBitmapCache::Add(cachedBitmap.getGenerationID(), rect, cachedBitmap, cache)); 124 REPORTER_ASSERT(reporter, SkBitmapCache::Add(cachedPR, rect, cachedBitmap, c ache));
123 // Should be in the cache, we just added it 125 // Should be in the cache, we just added it
124 REPORTER_ASSERT(reporter, SkBitmapCache::Find(cachedBitmap.getGenerationID() , rect, &bm, cache)); 126 REPORTER_ASSERT(reporter, SkBitmapCache::Find(cachedID, rect, &bm, cache));
125 } 127 }
126 128
127 #include "SkMipMap.h" 129 #include "SkMipMap.h"
128 130
129 enum LockedState { 131 enum LockedState {
130 kNotLocked, 132 kNotLocked,
131 kLocked, 133 kLocked,
132 }; 134 };
133 135
134 enum CachedState { 136 enum CachedState {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 210
209 static void test_bitmap_notify(skiatest::Reporter* reporter, SkResourceCache* ca che) { 211 static void test_bitmap_notify(skiatest::Reporter* reporter, SkResourceCache* ca che) {
210 const SkIRect subset = SkIRect::MakeWH(5, 5); 212 const SkIRect subset = SkIRect::MakeWH(5, 5);
211 const int N = 3; 213 const int N = 3;
212 SkBitmap src[N], dst[N]; 214 SkBitmap src[N], dst[N];
213 for (int i = 0; i < N; ++i) { 215 for (int i = 0; i < N; ++i) {
214 src[i].allocN32Pixels(5, 5); 216 src[i].allocN32Pixels(5, 5);
215 src[i].setImmutable(); 217 src[i].setImmutable();
216 dst[i].allocN32Pixels(5, 5); 218 dst[i].allocN32Pixels(5, 5);
217 dst[i].setImmutable(); 219 dst[i].setImmutable();
218 SkBitmapCache::Add(src[i].getGenerationID(), subset, dst[i], cache); 220 SkBitmapCache::Add(src[i].pixelRef(), subset, dst[i], cache);
219 } 221 }
220 222
221 for (int i = 0; i < N; ++i) { 223 for (int i = 0; i < N; ++i) {
222 const uint32_t genID = src[i].getGenerationID(); 224 const uint32_t genID = src[i].getGenerationID();
223 SkBitmap result; 225 SkBitmap result;
224 bool found = SkBitmapCache::Find(genID, subset, &result, cache); 226 bool found = SkBitmapCache::Find(genID, subset, &result, cache);
225 if (cache) { 227 if (cache) {
226 // if cache is null, we're working on the global cache, and other th reads might purge 228 // if cache is null, we're working on the global cache, and other th reads might purge
227 // it, making this check fragile. 229 // it, making this check fragile.
228 REPORTER_ASSERT(reporter, found); 230 REPORTER_ASSERT(reporter, found);
(...skipping 19 matching lines...) Expand all
248 } 250 }
249 SkBitmap cachedBitmap; 251 SkBitmap cachedBitmap;
250 make_bitmap(&cachedBitmap, SkImageInfo::MakeN32Premul(5, 5), allocator); 252 make_bitmap(&cachedBitmap, SkImageInfo::MakeN32Premul(5, 5), allocator);
251 cachedBitmap.setImmutable(); 253 cachedBitmap.setImmutable();
252 cachedBitmap.unlockPixels(); 254 cachedBitmap.unlockPixels();
253 255
254 SkBitmap bm; 256 SkBitmap bm;
255 SkIRect rect = SkIRect::MakeWH(5, 5); 257 SkIRect rect = SkIRect::MakeWH(5, 5);
256 258
257 // Add a bitmap to the cache. 259 // Add a bitmap to the cache.
258 REPORTER_ASSERT(reporter, SkBitmapCache::Add(cachedBitmap.getGenerationID(), rect, cachedBitmap, cache)); 260 REPORTER_ASSERT(reporter, SkBitmapCache::Add(cachedBitmap.pixelRef(), rect, cachedBitmap, cache));
259 REPORTER_ASSERT(reporter, SkBitmapCache::Find(cachedBitmap.getGenerationID() , rect, &bm, cache)); 261 REPORTER_ASSERT(reporter, SkBitmapCache::Find(cachedBitmap.getGenerationID() , rect, &bm, cache));
260 262
261 // Finding more than once works fine. 263 // Finding more than once works fine.
262 REPORTER_ASSERT(reporter, SkBitmapCache::Find(cachedBitmap.getGenerationID() , rect, &bm, cache)); 264 REPORTER_ASSERT(reporter, SkBitmapCache::Find(cachedBitmap.getGenerationID() , rect, &bm, cache));
263 bm.unlockPixels(); 265 bm.unlockPixels();
264 266
265 // Drop the pixels in the bitmap. 267 // Drop the pixels in the bitmap.
266 if (factory) { 268 if (factory) {
267 REPORTER_ASSERT(reporter, SkGetGlobalDiscardableMemoryPool()->getRAMUsed () > 0); 269 REPORTER_ASSERT(reporter, SkGetGlobalDiscardableMemoryPool()->getRAMUsed () > 0);
268 SkGetGlobalDiscardableMemoryPool()->dumpPool(); 270 SkGetGlobalDiscardableMemoryPool()->dumpPool();
269 REPORTER_ASSERT(reporter, SkGetGlobalDiscardableMemoryPool()->getRAMUsed () == 0); 271 REPORTER_ASSERT(reporter, SkGetGlobalDiscardableMemoryPool()->getRAMUsed () == 0);
270 272
271 // The bitmap is not in the cache since it has been dropped. 273 // The bitmap is not in the cache since it has been dropped.
272 REPORTER_ASSERT(reporter, !SkBitmapCache::Find(cachedBitmap.getGeneratio nID(), rect, &bm, cache)); 274 REPORTER_ASSERT(reporter, !SkBitmapCache::Find(cachedBitmap.getGeneratio nID(), rect, &bm, cache));
273 } 275 }
274 276
275 make_bitmap(&cachedBitmap, SkImageInfo::MakeN32Premul(5, 5), allocator); 277 make_bitmap(&cachedBitmap, SkImageInfo::MakeN32Premul(5, 5), allocator);
276 cachedBitmap.setImmutable(); 278 cachedBitmap.setImmutable();
277 cachedBitmap.unlockPixels(); 279 cachedBitmap.unlockPixels();
278 280
279 // We can add the bitmap back to the cache and find it again. 281 // We can add the bitmap back to the cache and find it again.
280 REPORTER_ASSERT(reporter, SkBitmapCache::Add(cachedBitmap.getGenerationID(), rect, cachedBitmap, cache)); 282 REPORTER_ASSERT(reporter, SkBitmapCache::Add(cachedBitmap.pixelRef(), rect, cachedBitmap, cache));
281 REPORTER_ASSERT(reporter, SkBitmapCache::Find(cachedBitmap.getGenerationID() , rect, &bm, cache)); 283 REPORTER_ASSERT(reporter, SkBitmapCache::Find(cachedBitmap.getGenerationID() , rect, &bm, cache));
282 284
283 test_mipmapcache(reporter, cache); 285 test_mipmapcache(reporter, cache);
284 test_bitmap_notify(reporter, cache); 286 test_bitmap_notify(reporter, cache);
285 test_mipmap_notify(reporter, cache); 287 test_mipmap_notify(reporter, cache);
286 } 288 }
OLDNEW
« no previous file with comments | « src/lazy/SkCachingPixelRef.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698