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

Side by Side Diff: tests/ResourceCacheTest.cpp

Issue 815833004: Add a simpler key type for scratch resource keys. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: final fix Created 5 years, 11 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/gpu/GrTexturePriv.h ('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 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 #if SK_SUPPORT_GPU 8 #if SK_SUPPORT_GPU
9 9
10 #include "GrContext.h" 10 #include "GrContext.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 } 75 }
76 76
77 TestResource(GrGpu* gpu) 77 TestResource(GrGpu* gpu)
78 : INHERITED(gpu, false) 78 : INHERITED(gpu, false)
79 , fToDelete(NULL) 79 , fToDelete(NULL)
80 , fSize(kDefaultSize) { 80 , fSize(kDefaultSize) {
81 ++fNumAlive; 81 ++fNumAlive;
82 this->registerWithCache(); 82 this->registerWithCache();
83 } 83 }
84 84
85 TestResource(GrGpu* gpu, const GrResourceKey& scratchKey) 85 TestResource(GrGpu* gpu, const GrScratchKey& scratchKey)
86 : INHERITED(gpu, false) 86 : INHERITED(gpu, false)
87 , fToDelete(NULL) 87 , fToDelete(NULL)
88 , fSize(kDefaultSize) { 88 , fSize(kDefaultSize) {
89 this->setScratchKey(scratchKey); 89 this->setScratchKey(scratchKey);
90 ++fNumAlive; 90 ++fNumAlive;
91 this->registerWithCache(); 91 this->registerWithCache();
92 } 92 }
93 93
94 ~TestResource() { 94 ~TestResource() {
95 --fNumAlive; 95 --fNumAlive;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 REPORTER_ASSERT(reporter, 1 == TestResource::NumAlive()); 166 REPORTER_ASSERT(reporter, 1 == TestResource::NumAlive());
167 REPORTER_ASSERT(reporter, 1 == cache2->getResourceCount()); 167 REPORTER_ASSERT(reporter, 1 == cache2->getResourceCount());
168 REPORTER_ASSERT(reporter, b->gpuMemorySize() == cache2->getResourceBytes()); 168 REPORTER_ASSERT(reporter, b->gpuMemorySize() == cache2->getResourceBytes());
169 169
170 b->unref(); 170 b->unref();
171 REPORTER_ASSERT(reporter, 0 == TestResource::NumAlive()); 171 REPORTER_ASSERT(reporter, 0 == TestResource::NumAlive());
172 REPORTER_ASSERT(reporter, 0 == cache2->getResourceCount()); 172 REPORTER_ASSERT(reporter, 0 == cache2->getResourceCount());
173 REPORTER_ASSERT(reporter, 0 == cache2->getResourceBytes()); 173 REPORTER_ASSERT(reporter, 0 == cache2->getResourceBytes());
174 } 174 }
175 175
176 static void make_scratch_key(GrScratchKey* key) {
177 static GrScratchKey::ResourceType t = GrScratchKey::GenerateResourceType();
178 GrScratchKey::Builder builder(key, t, 0);
179 }
180
176 static void test_budgeting(skiatest::Reporter* reporter) { 181 static void test_budgeting(skiatest::Reporter* reporter) {
177 SkAutoTUnref<GrContext> context(GrContext::CreateMockContext()); 182 SkAutoTUnref<GrContext> context(GrContext::CreateMockContext());
178 REPORTER_ASSERT(reporter, SkToBool(context)); 183 REPORTER_ASSERT(reporter, SkToBool(context));
179 if (NULL == context) { 184 if (NULL == context) {
180 return; 185 return;
181 } 186 }
182 context->setResourceCacheLimits(10, 300); 187 context->setResourceCacheLimits(10, 300);
183 GrResourceCache2* cache2 = context->getResourceCache2(); 188 GrResourceCache2* cache2 = context->getResourceCache2();
184 cache2->purgeAllUnlocked(); 189 cache2->purgeAllUnlocked();
185 SkASSERT(0 == cache2->getResourceCount() && 0 == cache2->getResourceBytes()) ; 190 SkASSERT(0 == cache2->getResourceCount() && 0 == cache2->getResourceBytes()) ;
186 SkASSERT(0 == cache2->getBudgetedResourceCount() && 0 == cache2->getBudgeted ResourceBytes()); 191 SkASSERT(0 == cache2->getBudgetedResourceCount() && 0 == cache2->getBudgeted ResourceBytes());
187 192
193 GrScratchKey scratchKey;
194 make_scratch_key(&scratchKey);
195
188 GrCacheID::Key keyData; 196 GrCacheID::Key keyData;
189 memset(&keyData, 0, sizeof(keyData)); 197 memset(&keyData, 0, sizeof(keyData));
190 GrResourceKey::ResourceType t = GrResourceKey::GenerateResourceType(); 198 GrResourceKey contentKey(GrCacheID(GrCacheID::GenerateDomain(), keyData), 0) ;
191 GrResourceKey scratchKey(GrCacheID(GrResourceKey::ScratchDomain(), keyData), t, 0);
192 GrResourceKey contentKey(GrCacheID(GrCacheID::GenerateDomain(), keyData), t, 0);
193 199
194 // Create a scratch, a content, and a wrapped resource 200 // Create a scratch, a content, and a wrapped resource
195 TestResource* scratch = new TestResource(context->getGpu(), scratchKey); 201 TestResource* scratch = new TestResource(context->getGpu(), scratchKey);
196 scratch->setSize(10); 202 scratch->setSize(10);
197 TestResource* content = new TestResource(context->getGpu()); 203 TestResource* content = new TestResource(context->getGpu());
198 scratch->setSize(11); 204 scratch->setSize(11);
199 REPORTER_ASSERT(reporter, content->cacheAccess().setContentKey(contentKey)); 205 REPORTER_ASSERT(reporter, content->cacheAccess().setContentKey(contentKey));
200 TestResource* wrapped = new TestResource(context->getGpu(), true); 206 TestResource* wrapped = new TestResource(context->getGpu(), true);
201 scratch->setSize(12); 207 scratch->setSize(12);
202 TestResource* unbudgeted = new TestResource(context->getGpu()); 208 TestResource* unbudgeted = new TestResource(context->getGpu());
203 unbudgeted->setSize(13); 209 unbudgeted->setSize(13);
204 unbudgeted->cacheAccess().setBudgeted(false); 210 unbudgeted->cacheAccess().setBudgeted(false);
205 211
206 // Make sure we can't add a content key to the wrapped resource 212 // Make sure we can't add a content key to the wrapped resource
207 keyData.fData8[0] = 1; 213 keyData.fData8[0] = 1;
208 GrResourceKey contentKey2(GrCacheID(GrCacheID::GenerateDomain(), keyData), t , 0); 214 GrResourceKey contentKey2(GrCacheID(GrCacheID::GenerateDomain(), keyData), 0 );
209 REPORTER_ASSERT(reporter, !wrapped->cacheAccess().setContentKey(contentKey2) ); 215 REPORTER_ASSERT(reporter, !wrapped->cacheAccess().setContentKey(contentKey2) );
210 REPORTER_ASSERT(reporter, NULL == cache2->findAndRefContentResource(contentK ey2)); 216 REPORTER_ASSERT(reporter, NULL == cache2->findAndRefContentResource(contentK ey2));
211 217
212 // Make sure sizes are as we expect 218 // Make sure sizes are as we expect
213 REPORTER_ASSERT(reporter, 4 == cache2->getResourceCount()); 219 REPORTER_ASSERT(reporter, 4 == cache2->getResourceCount());
214 REPORTER_ASSERT(reporter, scratch->gpuMemorySize() + content->gpuMemorySize( ) + 220 REPORTER_ASSERT(reporter, scratch->gpuMemorySize() + content->gpuMemorySize( ) +
215 wrapped->gpuMemorySize() + unbudgeted->gpuMemorySi ze() == 221 wrapped->gpuMemorySize() + unbudgeted->gpuMemorySi ze() ==
216 cache2->getResourceBytes()); 222 cache2->getResourceBytes());
217 REPORTER_ASSERT(reporter, 2 == cache2->getBudgetedResourceCount()); 223 REPORTER_ASSERT(reporter, 2 == cache2->getBudgetedResourceCount());
218 REPORTER_ASSERT(reporter, scratch->gpuMemorySize() + content->gpuMemorySize( ) == 224 REPORTER_ASSERT(reporter, scratch->gpuMemorySize() + content->gpuMemorySize( ) ==
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 SkAutoTUnref<GrContext> context(GrContext::CreateMockContext()); 276 SkAutoTUnref<GrContext> context(GrContext::CreateMockContext());
271 REPORTER_ASSERT(reporter, SkToBool(context)); 277 REPORTER_ASSERT(reporter, SkToBool(context));
272 if (NULL == context) { 278 if (NULL == context) {
273 return; 279 return;
274 } 280 }
275 context->setResourceCacheLimits(5, 30000); 281 context->setResourceCacheLimits(5, 30000);
276 GrResourceCache2* cache2 = context->getResourceCache2(); 282 GrResourceCache2* cache2 = context->getResourceCache2();
277 cache2->purgeAllUnlocked(); 283 cache2->purgeAllUnlocked();
278 SkASSERT(0 == cache2->getResourceCount() && 0 == cache2->getResourceBytes()) ; 284 SkASSERT(0 == cache2->getResourceCount() && 0 == cache2->getResourceBytes()) ;
279 285
280 GrCacheID::Key keyData; 286 GrScratchKey scratchKey;
281 memset(&keyData, 0, sizeof(keyData)); 287 make_scratch_key(&scratchKey);
282 GrCacheID::Domain domain = GrResourceKey::ScratchDomain();
283 GrResourceKey::ResourceType t = GrResourceKey::GenerateResourceType();
284 GrResourceKey scratchKey(GrCacheID(domain, keyData), t, 0);
285 288
286 // Create two resources that have the same scratch key. 289 // Create two resources that have the same scratch key.
287 TestResource* a = new TestResource(context->getGpu(), scratchKey); 290 TestResource* a = new TestResource(context->getGpu(), scratchKey);
288 TestResource* b = new TestResource(context->getGpu(), scratchKey); 291 TestResource* b = new TestResource(context->getGpu(), scratchKey);
289 a->setSize(11); 292 a->setSize(11);
290 b->setSize(12); 293 b->setSize(12);
291 // Scratch resources are registered with GrResourceCache2 just by existing. There are 2. 294 // Scratch resources are registered with GrResourceCache2 just by existing. There are 2.
292 REPORTER_ASSERT(reporter, 2 == TestResource::NumAlive()); 295 REPORTER_ASSERT(reporter, 2 == TestResource::NumAlive());
293 SkDEBUGCODE(REPORTER_ASSERT(reporter, 2 == cache2->countScratchEntriesForKey (scratchKey));) 296 SkDEBUGCODE(REPORTER_ASSERT(reporter, 2 == cache2->countScratchEntriesForKey (scratchKey));)
294 REPORTER_ASSERT(reporter, 2 == cache2->getResourceCount()); 297 REPORTER_ASSERT(reporter, 2 == cache2->getResourceCount());
(...skipping 22 matching lines...) Expand all
317 SkAutoTUnref<GrContext> context(GrContext::CreateMockContext()); 320 SkAutoTUnref<GrContext> context(GrContext::CreateMockContext());
318 REPORTER_ASSERT(reporter, SkToBool(context)); 321 REPORTER_ASSERT(reporter, SkToBool(context));
319 if (NULL == context) { 322 if (NULL == context) {
320 return; 323 return;
321 } 324 }
322 context->setResourceCacheLimits(5, 30000); 325 context->setResourceCacheLimits(5, 30000);
323 GrResourceCache2* cache2 = context->getResourceCache2(); 326 GrResourceCache2* cache2 = context->getResourceCache2();
324 cache2->purgeAllUnlocked(); 327 cache2->purgeAllUnlocked();
325 SkASSERT(0 == cache2->getResourceCount() && 0 == cache2->getResourceBytes()) ; 328 SkASSERT(0 == cache2->getResourceCount() && 0 == cache2->getResourceBytes()) ;
326 329
327 GrCacheID::Key keyData; 330 GrScratchKey scratchKey;
328 memset(&keyData, 0, sizeof(keyData)); 331 make_scratch_key(&scratchKey);
329 GrCacheID::Domain domain = GrResourceKey::ScratchDomain();
330 GrResourceKey::ResourceType t = GrResourceKey::GenerateResourceType();
331 GrResourceKey scratchKey(GrCacheID(domain, keyData), t, 0);
332 332
333 // Create two resources that have the same scratch key. 333 // Create two resources that have the same scratch key.
334 TestResource* a = new TestResource(context->getGpu(), scratchKey); 334 TestResource* a = new TestResource(context->getGpu(), scratchKey);
335 TestResource* b = new TestResource(context->getGpu(), scratchKey); 335 TestResource* b = new TestResource(context->getGpu(), scratchKey);
336 a->unref(); 336 a->unref();
337 b->unref(); 337 b->unref();
338 338
339 // Scratch resources are registered with GrResourceCache2 just by existing. There are 2. 339 // Scratch resources are registered with GrResourceCache2 just by existing. There are 2.
340 REPORTER_ASSERT(reporter, 2 == TestResource::NumAlive()); 340 REPORTER_ASSERT(reporter, 2 == TestResource::NumAlive());
341 SkDEBUGCODE(REPORTER_ASSERT(reporter, 2 == cache2->countScratchEntriesForKey (scratchKey));) 341 SkDEBUGCODE(REPORTER_ASSERT(reporter, 2 == cache2->countScratchEntriesForKey (scratchKey));)
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 return; 382 return;
383 } 383 }
384 context->setResourceCacheLimits(5, 30000); 384 context->setResourceCacheLimits(5, 30000);
385 GrResourceCache2* cache2 = context->getResourceCache2(); 385 GrResourceCache2* cache2 = context->getResourceCache2();
386 cache2->purgeAllUnlocked(); 386 cache2->purgeAllUnlocked();
387 SkASSERT(0 == cache2->getResourceCount() && 0 == cache2->getResourceBytes()) ; 387 SkASSERT(0 == cache2->getResourceCount() && 0 == cache2->getResourceBytes()) ;
388 388
389 GrCacheID::Domain domain = GrCacheID::GenerateDomain(); 389 GrCacheID::Domain domain = GrCacheID::GenerateDomain();
390 GrCacheID::Key keyData; 390 GrCacheID::Key keyData;
391 memset(&keyData, 0, sizeof(keyData)); 391 memset(&keyData, 0, sizeof(keyData));
392 GrResourceKey::ResourceType t = GrResourceKey::GenerateResourceType(); 392 GrResourceKey key(GrCacheID(domain, keyData), 0);
393 GrResourceKey key(GrCacheID(domain, keyData), t, 0);
394 393
395 // Create two resources that we will attempt to register with the same conte nt key. 394 // Create two resources that we will attempt to register with the same conte nt key.
396 TestResource* a = new TestResource(context->getGpu()); 395 TestResource* a = new TestResource(context->getGpu());
397 TestResource* b = new TestResource(context->getGpu()); 396 TestResource* b = new TestResource(context->getGpu());
398 a->setSize(11); 397 a->setSize(11);
399 b->setSize(12); 398 b->setSize(12);
400 399
401 // Can't set the same content key on two resources. 400 // Can't set the same content key on two resources.
402 REPORTER_ASSERT(reporter, a->cacheAccess().setContentKey(key)); 401 REPORTER_ASSERT(reporter, a->cacheAccess().setContentKey(key));
403 REPORTER_ASSERT(reporter, !b->cacheAccess().setContentKey(key)); 402 REPORTER_ASSERT(reporter, !b->cacheAccess().setContentKey(key));
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 SkAutoTUnref<GrContext> context(GrContext::CreateMockContext()); 434 SkAutoTUnref<GrContext> context(GrContext::CreateMockContext());
436 REPORTER_ASSERT(reporter, SkToBool(context)); 435 REPORTER_ASSERT(reporter, SkToBool(context));
437 if (NULL == context) { 436 if (NULL == context) {
438 return; 437 return;
439 } 438 }
440 439
441 GrCacheID::Domain domain = GrCacheID::GenerateDomain(); 440 GrCacheID::Domain domain = GrCacheID::GenerateDomain();
442 GrCacheID::Key keyData; 441 GrCacheID::Key keyData;
443 memset(&keyData, 0, sizeof(keyData)); 442 memset(&keyData, 0, sizeof(keyData));
444 443
445 GrResourceKey::ResourceType t = GrResourceKey::GenerateResourceType();
446
447 keyData.fData64[0] = 1; 444 keyData.fData64[0] = 1;
448 GrResourceKey key1(GrCacheID(domain, keyData), t, 0); 445 GrResourceKey key1(GrCacheID(domain, keyData), 0);
449 keyData.fData64[0] = 2; 446 keyData.fData64[0] = 2;
450 GrResourceKey key2(GrCacheID(domain, keyData), t, 0); 447 GrResourceKey key2(GrCacheID(domain, keyData), 0);
451 keyData.fData64[0] = 3; 448 keyData.fData64[0] = 3;
452 GrResourceKey key3(GrCacheID(domain, keyData), t, 0); 449 GrResourceKey key3(GrCacheID(domain, keyData), 0);
453 450
454 context->setResourceCacheLimits(5, 30000); 451 context->setResourceCacheLimits(5, 30000);
455 GrResourceCache2* cache2 = context->getResourceCache2(); 452 GrResourceCache2* cache2 = context->getResourceCache2();
456 cache2->purgeAllUnlocked(); 453 cache2->purgeAllUnlocked();
457 SkASSERT(0 == cache2->getResourceCount() && 0 == cache2->getResourceBytes()) ; 454 SkASSERT(0 == cache2->getResourceCount() && 0 == cache2->getResourceBytes()) ;
458 455
459 // Add three resources to the cache. 456 // Add three resources to the cache.
460 TestResource* a = new TestResource(context->getGpu()); 457 TestResource* a = new TestResource(context->getGpu());
461 TestResource* b = new TestResource(context->getGpu()); 458 TestResource* b = new TestResource(context->getGpu());
462 TestResource* c = new TestResource(context->getGpu()); 459 TestResource* c = new TestResource(context->getGpu());
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 static void test_cache_chained_purge(skiatest::Reporter* reporter) { 500 static void test_cache_chained_purge(skiatest::Reporter* reporter) {
504 SkAutoTUnref<GrContext> context(GrContext::CreateMockContext()); 501 SkAutoTUnref<GrContext> context(GrContext::CreateMockContext());
505 REPORTER_ASSERT(reporter, SkToBool(context)); 502 REPORTER_ASSERT(reporter, SkToBool(context));
506 if (NULL == context) { 503 if (NULL == context) {
507 return; 504 return;
508 } 505 }
509 506
510 GrCacheID::Domain domain = GrCacheID::GenerateDomain(); 507 GrCacheID::Domain domain = GrCacheID::GenerateDomain();
511 GrCacheID::Key keyData; 508 GrCacheID::Key keyData;
512 memset(&keyData, 0, sizeof(keyData)); 509 memset(&keyData, 0, sizeof(keyData));
513 GrResourceKey::ResourceType t = GrResourceKey::GenerateResourceType();
514 510
515 keyData.fData64[0] = 1; 511 keyData.fData64[0] = 1;
516 GrResourceKey key1(GrCacheID(domain, keyData), t, 0); 512 GrResourceKey key1(GrCacheID(domain, keyData), 0);
517 513
518 keyData.fData64[0] = 2; 514 keyData.fData64[0] = 2;
519 GrResourceKey key2(GrCacheID(domain, keyData), t, 0); 515 GrResourceKey key2(GrCacheID(domain, keyData), 0);
520 516
521 { 517 {
522 context->setResourceCacheLimits(3, 30000); 518 context->setResourceCacheLimits(3, 30000);
523 GrResourceCache2* cache2 = context->getResourceCache2(); 519 GrResourceCache2* cache2 = context->getResourceCache2();
524 cache2->purgeAllUnlocked(); 520 cache2->purgeAllUnlocked();
525 SkASSERT(0 == cache2->getResourceCount() && 0 == cache2->getResourceByte s()); 521 SkASSERT(0 == cache2->getResourceCount() && 0 == cache2->getResourceByte s());
526 522
527 TestResource* a = new TestResource(context->getGpu()); 523 TestResource* a = new TestResource(context->getGpu());
528 TestResource* b = new TestResource(context->getGpu()); 524 TestResource* b = new TestResource(context->getGpu());
529 a->cacheAccess().setContentKey(key1); 525 a->cacheAccess().setContentKey(key1);
(...skipping 23 matching lines...) Expand all
553 } 549 }
554 550
555 static void test_resource_size_changed(skiatest::Reporter* reporter) { 551 static void test_resource_size_changed(skiatest::Reporter* reporter) {
556 SkAutoTUnref<GrContext> context(GrContext::CreateMockContext()); 552 SkAutoTUnref<GrContext> context(GrContext::CreateMockContext());
557 REPORTER_ASSERT(reporter, SkToBool(context)); 553 REPORTER_ASSERT(reporter, SkToBool(context));
558 if (NULL == context) { 554 if (NULL == context) {
559 return; 555 return;
560 } 556 }
561 557
562 GrCacheID::Domain domain = GrCacheID::GenerateDomain(); 558 GrCacheID::Domain domain = GrCacheID::GenerateDomain();
563 GrResourceKey::ResourceType t = GrResourceKey::GenerateResourceType();
564 559
565 GrCacheID::Key key1Data; 560 GrCacheID::Key key1Data;
566 key1Data.fData64[0] = 0; 561 key1Data.fData64[0] = 0;
567 key1Data.fData64[1] = 0; 562 key1Data.fData64[1] = 0;
568 GrResourceKey key1(GrCacheID(domain, key1Data), t, 0); 563 GrResourceKey key1(GrCacheID(domain, key1Data), 0);
569 564
570 GrCacheID::Key key2Data; 565 GrCacheID::Key key2Data;
571 key2Data.fData64[0] = 1; 566 key2Data.fData64[0] = 1;
572 key2Data.fData64[1] = 0; 567 key2Data.fData64[1] = 0;
573 GrResourceKey key2(GrCacheID(domain, key2Data), t, 0); 568 GrResourceKey key2(GrCacheID(domain, key2Data), 0);
574 569
575 // Test changing resources sizes (both increase & decrease). 570 // Test changing resources sizes (both increase & decrease).
576 { 571 {
577 context->setResourceCacheLimits(3, 30000); 572 context->setResourceCacheLimits(3, 30000);
578 GrResourceCache2* cache2 = context->getResourceCache2(); 573 GrResourceCache2* cache2 = context->getResourceCache2();
579 cache2->purgeAllUnlocked(); 574 cache2->purgeAllUnlocked();
580 SkASSERT(0 == cache2->getResourceCount() && 0 == cache2->getResourceByte s()); 575 SkASSERT(0 == cache2->getResourceCount() && 0 == cache2->getResourceByte s());
581 576
582 TestResource* a = new TestResource(context->getGpu()); 577 TestResource* a = new TestResource(context->getGpu());
583 a->cacheAccess().setContentKey(key1); 578 a->cacheAccess().setContentKey(key1);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 // Set the cache size to double the resource count because we're going to cr eate 2x that number 637 // Set the cache size to double the resource count because we're going to cr eate 2x that number
643 // resources, using two different key domains. Add a little slop to the byte s because we resize 638 // resources, using two different key domains. Add a little slop to the byte s because we resize
644 // down to 1 byte after creating the resource. 639 // down to 1 byte after creating the resource.
645 context->setResourceCacheLimits(2 * kResourceCnt, 2 * kResourceCnt + 1000); 640 context->setResourceCacheLimits(2 * kResourceCnt, 2 * kResourceCnt + 1000);
646 GrResourceCache2* cache2 = context->getResourceCache2(); 641 GrResourceCache2* cache2 = context->getResourceCache2();
647 cache2->purgeAllUnlocked(); 642 cache2->purgeAllUnlocked();
648 SkASSERT(0 == cache2->getResourceCount() && 0 == cache2->getResourceBytes()) ; 643 SkASSERT(0 == cache2->getResourceCount() && 0 == cache2->getResourceBytes()) ;
649 644
650 GrCacheID::Domain domain0 = GrCacheID::GenerateDomain(); 645 GrCacheID::Domain domain0 = GrCacheID::GenerateDomain();
651 GrCacheID::Domain domain1 = GrCacheID::GenerateDomain(); 646 GrCacheID::Domain domain1 = GrCacheID::GenerateDomain();
652 GrResourceKey::ResourceType t = GrResourceKey::GenerateResourceType();
653 647
654 GrCacheID::Key keyData; 648 GrCacheID::Key keyData;
655 memset(&keyData, 0, sizeof(keyData)); 649 memset(&keyData, 0, sizeof(keyData));
656 650
657 for (int i = 0; i < kResourceCnt; ++i) { 651 for (int i = 0; i < kResourceCnt; ++i) {
658 TestResource* resource; 652 TestResource* resource;
659 keyData.fData32[0] = i; 653 keyData.fData32[0] = i;
660 654
661 GrResourceKey key0(GrCacheID(domain0, keyData), t, 0); 655 GrResourceKey key0(GrCacheID(domain0, keyData), 0);
662 resource = SkNEW_ARGS(TestResource, (context->getGpu())); 656 resource = SkNEW_ARGS(TestResource, (context->getGpu()));
663 resource->cacheAccess().setContentKey(key0); 657 resource->cacheAccess().setContentKey(key0);
664 resource->setSize(1); 658 resource->setSize(1);
665 resource->unref(); 659 resource->unref();
666 660
667 GrResourceKey key1(GrCacheID(domain1, keyData), t, 0); 661 GrResourceKey key1(GrCacheID(domain1, keyData), 0);
668 resource = SkNEW_ARGS(TestResource, (context->getGpu())); 662 resource = SkNEW_ARGS(TestResource, (context->getGpu()));
669 resource->cacheAccess().setContentKey(key1); 663 resource->cacheAccess().setContentKey(key1);
670 resource->setSize(1); 664 resource->setSize(1);
671 resource->unref(); 665 resource->unref();
672 } 666 }
673 667
674 REPORTER_ASSERT(reporter, TestResource::NumAlive() == 2 * kResourceCnt); 668 REPORTER_ASSERT(reporter, TestResource::NumAlive() == 2 * kResourceCnt);
675 REPORTER_ASSERT(reporter, cache2->getBudgetedResourceBytes() == 2 * kResourc eCnt); 669 REPORTER_ASSERT(reporter, cache2->getBudgetedResourceBytes() == 2 * kResourc eCnt);
676 REPORTER_ASSERT(reporter, cache2->getBudgetedResourceCount() == 2 * kResourc eCnt); 670 REPORTER_ASSERT(reporter, cache2->getBudgetedResourceCount() == 2 * kResourc eCnt);
677 REPORTER_ASSERT(reporter, cache2->getResourceBytes() == 2 * kResourceCnt); 671 REPORTER_ASSERT(reporter, cache2->getResourceBytes() == 2 * kResourceCnt);
678 REPORTER_ASSERT(reporter, cache2->getResourceCount() == 2 * kResourceCnt); 672 REPORTER_ASSERT(reporter, cache2->getResourceCount() == 2 * kResourceCnt);
679 for (int i = 0; i < kResourceCnt; ++i) { 673 for (int i = 0; i < kResourceCnt; ++i) {
680 keyData.fData32[0] = i; 674 keyData.fData32[0] = i;
681 GrResourceKey key0(GrCacheID(domain0, keyData), t, 0); 675 GrResourceKey key0(GrCacheID(domain0, keyData), 0);
682 REPORTER_ASSERT(reporter, cache2->hasContentKey(key0)); 676 REPORTER_ASSERT(reporter, cache2->hasContentKey(key0));
683 GrResourceKey key1(GrCacheID(domain0, keyData), t, 0); 677 GrResourceKey key1(GrCacheID(domain0, keyData), 0);
684 REPORTER_ASSERT(reporter, cache2->hasContentKey(key1)); 678 REPORTER_ASSERT(reporter, cache2->hasContentKey(key1));
685 } 679 }
686 680
687 cache2->purgeAllUnlocked(); 681 cache2->purgeAllUnlocked();
688 REPORTER_ASSERT(reporter, TestResource::NumAlive() == 0); 682 REPORTER_ASSERT(reporter, TestResource::NumAlive() == 0);
689 REPORTER_ASSERT(reporter, cache2->getBudgetedResourceBytes() == 0); 683 REPORTER_ASSERT(reporter, cache2->getBudgetedResourceBytes() == 0);
690 REPORTER_ASSERT(reporter, cache2->getBudgetedResourceCount() == 0); 684 REPORTER_ASSERT(reporter, cache2->getBudgetedResourceCount() == 0);
691 REPORTER_ASSERT(reporter, cache2->getResourceBytes() == 0); 685 REPORTER_ASSERT(reporter, cache2->getResourceBytes() == 0);
692 REPORTER_ASSERT(reporter, cache2->getResourceCount() == 0); 686 REPORTER_ASSERT(reporter, cache2->getResourceCount() == 0);
693 687
694 for (int i = 0; i < kResourceCnt; ++i) { 688 for (int i = 0; i < kResourceCnt; ++i) {
695 keyData.fData32[0] = i; 689 keyData.fData32[0] = i;
696 GrResourceKey key0(GrCacheID(domain0, keyData), t, 0); 690 GrResourceKey key0(GrCacheID(domain0, keyData), 0);
697 REPORTER_ASSERT(reporter, !cache2->hasContentKey(key0)); 691 REPORTER_ASSERT(reporter, !cache2->hasContentKey(key0));
698 GrResourceKey key1(GrCacheID(domain0, keyData), t, 0); 692 GrResourceKey key1(GrCacheID(domain0, keyData), 0);
699 REPORTER_ASSERT(reporter, !cache2->hasContentKey(key1)); 693 REPORTER_ASSERT(reporter, !cache2->hasContentKey(key1));
700 } 694 }
701 } 695 }
702 696
703 697
704 //////////////////////////////////////////////////////////////////////////////// 698 ////////////////////////////////////////////////////////////////////////////////
705 DEF_GPUTEST(ResourceCache, reporter, factory) { 699 DEF_GPUTEST(ResourceCache, reporter, factory) {
706 for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) { 700 for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) {
707 GrContextFactory::GLContextType glType = static_cast<GrContextFactory::G LContextType>(type); 701 GrContextFactory::GLContextType glType = static_cast<GrContextFactory::G LContextType>(type);
708 if (!GrContextFactory::IsRenderingGLContext(glType)) { 702 if (!GrContextFactory::IsRenderingGLContext(glType)) {
(...skipping 19 matching lines...) Expand all
728 test_duplicate_content_key(reporter); 722 test_duplicate_content_key(reporter);
729 test_duplicate_scratch_key(reporter); 723 test_duplicate_scratch_key(reporter);
730 test_remove_scratch_key(reporter); 724 test_remove_scratch_key(reporter);
731 test_purge_invalidated(reporter); 725 test_purge_invalidated(reporter);
732 test_cache_chained_purge(reporter); 726 test_cache_chained_purge(reporter);
733 test_resource_size_changed(reporter); 727 test_resource_size_changed(reporter);
734 test_large_resource_count(reporter); 728 test_large_resource_count(reporter);
735 } 729 }
736 730
737 #endif 731 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrTexturePriv.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698