| Index: tests/ResourceCacheTest.cpp
|
| diff --git a/tests/ResourceCacheTest.cpp b/tests/ResourceCacheTest.cpp
|
| index 5fef3d0e75b6276db2210de644c37b83aefcf399..930bd1217c601b1c89a538d2fcfaf2b4e63f94e7 100644
|
| --- a/tests/ResourceCacheTest.cpp
|
| +++ b/tests/ResourceCacheTest.cpp
|
| @@ -173,7 +173,7 @@ static void test_no_key(skiatest::Reporter* reporter) {
|
| REPORTER_ASSERT(reporter, 0 == cache2->getResourceBytes());
|
| }
|
|
|
| -static void test_wrapped(skiatest::Reporter* reporter) {
|
| +static void test_budgeting(skiatest::Reporter* reporter) {
|
| SkAutoTUnref<GrContext> context(GrContext::CreateMockContext());
|
| REPORTER_ASSERT(reporter, SkToBool(context));
|
| if (NULL == context) {
|
| @@ -199,6 +199,9 @@ static void test_wrapped(skiatest::Reporter* reporter) {
|
| REPORTER_ASSERT(reporter, content->cacheAccess().setContentKey(contentKey));
|
| TestResource* wrapped = new TestResource(context->getGpu(), true);
|
| scratch->setSize(12);
|
| + TestResource* unbudgeted = new TestResource(context->getGpu());
|
| + unbudgeted->setSize(13);
|
| + unbudgeted->cacheAccess().setBudgeted(false);
|
|
|
| // Make sure we can't add a content key to the wrapped resource
|
| keyData.fData8[0] = 1;
|
| @@ -207,49 +210,60 @@ static void test_wrapped(skiatest::Reporter* reporter) {
|
| REPORTER_ASSERT(reporter, NULL == cache2->findAndRefContentResource(contentKey2));
|
|
|
| // Make sure sizes are as we expect
|
| - REPORTER_ASSERT(reporter, 3 == cache2->getResourceCount());
|
| + REPORTER_ASSERT(reporter, 4 == cache2->getResourceCount());
|
| REPORTER_ASSERT(reporter, scratch->gpuMemorySize() + content->gpuMemorySize() +
|
| - wrapped->gpuMemorySize() == cache2->getResourceBytes());
|
| + wrapped->gpuMemorySize() + unbudgeted->gpuMemorySize() ==
|
| + cache2->getResourceBytes());
|
| REPORTER_ASSERT(reporter, 2 == cache2->getBudgetedResourceCount());
|
| REPORTER_ASSERT(reporter, scratch->gpuMemorySize() + content->gpuMemorySize() ==
|
| cache2->getBudgetedResourceBytes());
|
|
|
| // Our refs mean that the resources are non purgable.
|
| cache2->purgeAllUnlocked();
|
| - REPORTER_ASSERT(reporter, 3 == cache2->getResourceCount());
|
| + REPORTER_ASSERT(reporter, 4 == cache2->getResourceCount());
|
| REPORTER_ASSERT(reporter, scratch->gpuMemorySize() + content->gpuMemorySize() +
|
| - wrapped->gpuMemorySize() == cache2->getResourceBytes());
|
| + wrapped->gpuMemorySize() + unbudgeted->gpuMemorySize() ==
|
| + cache2->getResourceBytes());
|
| REPORTER_ASSERT(reporter, 2 == cache2->getBudgetedResourceCount());
|
| REPORTER_ASSERT(reporter, scratch->gpuMemorySize() + content->gpuMemorySize() ==
|
| cache2->getBudgetedResourceBytes());
|
|
|
| // Unreffing the wrapped resource should free it right away.
|
| wrapped->unref();
|
| - REPORTER_ASSERT(reporter, 2 == cache2->getResourceCount());
|
| - REPORTER_ASSERT(reporter, scratch->gpuMemorySize() + content->gpuMemorySize() ==
|
| - cache2->getResourceBytes());
|
| + REPORTER_ASSERT(reporter, 3 == cache2->getResourceCount());
|
| + REPORTER_ASSERT(reporter, scratch->gpuMemorySize() + content->gpuMemorySize() +
|
| + unbudgeted->gpuMemorySize() == cache2->getResourceBytes());
|
|
|
| - // Now try freeing the other two resources first
|
| + // Now try freeing the budgeted resources first
|
| wrapped = new TestResource(context->getGpu(), true);
|
| scratch->setSize(12);
|
| content->unref();
|
| cache2->purgeAllUnlocked();
|
| - REPORTER_ASSERT(reporter, 2 == cache2->getResourceCount());
|
| - REPORTER_ASSERT(reporter, scratch->gpuMemorySize() + wrapped->gpuMemorySize() ==
|
| - cache2->getResourceBytes());
|
| + REPORTER_ASSERT(reporter, 3 == cache2->getResourceCount());
|
| + REPORTER_ASSERT(reporter, scratch->gpuMemorySize() + wrapped->gpuMemorySize() +
|
| + unbudgeted->gpuMemorySize() == cache2->getResourceBytes());
|
| REPORTER_ASSERT(reporter, 1 == cache2->getBudgetedResourceCount());
|
| REPORTER_ASSERT(reporter, scratch->gpuMemorySize() == cache2->getBudgetedResourceBytes());
|
|
|
| scratch->unref();
|
| cache2->purgeAllUnlocked();
|
| - REPORTER_ASSERT(reporter, 1 == cache2->getResourceCount());
|
| - REPORTER_ASSERT(reporter, wrapped->gpuMemorySize() == cache2->getResourceBytes());
|
| + REPORTER_ASSERT(reporter, 2 == cache2->getResourceCount());
|
| + REPORTER_ASSERT(reporter, unbudgeted->gpuMemorySize() + wrapped->gpuMemorySize() ==
|
| + cache2->getResourceBytes());
|
| REPORTER_ASSERT(reporter, 0 == cache2->getBudgetedResourceCount());
|
| REPORTER_ASSERT(reporter, 0 == cache2->getBudgetedResourceBytes());
|
|
|
| wrapped->unref();
|
| + REPORTER_ASSERT(reporter, 1 == cache2->getResourceCount());
|
| + REPORTER_ASSERT(reporter, unbudgeted->gpuMemorySize() == cache2->getResourceBytes());
|
| + REPORTER_ASSERT(reporter, 0 == cache2->getBudgetedResourceCount());
|
| + REPORTER_ASSERT(reporter, 0 == cache2->getBudgetedResourceBytes());
|
| +
|
| + unbudgeted->unref();
|
| REPORTER_ASSERT(reporter, 0 == cache2->getResourceCount());
|
| REPORTER_ASSERT(reporter, 0 == cache2->getResourceBytes());
|
| + REPORTER_ASSERT(reporter, 0 == cache2->getBudgetedResourceCount());
|
| + REPORTER_ASSERT(reporter, 0 == cache2->getBudgetedResourceBytes());
|
| }
|
|
|
| static void test_duplicate_scratch_key(skiatest::Reporter* reporter) {
|
| @@ -578,7 +592,7 @@ DEF_GPUTEST(ResourceCache, reporter, factory) {
|
|
|
| // The below tests create their own mock contexts.
|
| test_no_key(reporter);
|
| - test_wrapped(reporter);
|
| + test_budgeting(reporter);
|
| test_duplicate_content_key(reporter);
|
| test_duplicate_scratch_key(reporter);
|
| test_purge_invalidated(reporter);
|
|
|