| Index: tests/ResourceCacheTest.cpp
|
| diff --git a/tests/ResourceCacheTest.cpp b/tests/ResourceCacheTest.cpp
|
| index 0ac64edd0758ce104e3354eb8017a8446d4309a0..a733d39afe0ff4bd1621c4c4dd12feb374b9cb6d 100644
|
| --- a/tests/ResourceCacheTest.cpp
|
| +++ b/tests/ResourceCacheTest.cpp
|
| @@ -249,35 +249,22 @@ public:
|
| * For example, textures have width, height, ... */
|
| enum SimulatedProperty { kA_SimulatedProperty, kB_SimulatedProperty };
|
|
|
| - TestResource(GrGpu* gpu, size_t size, GrGpuResource::LifeCycle lifeCycle)
|
| - : INHERITED(gpu, lifeCycle)
|
| + TestResource(GrGpu* gpu, SkBudgeted budgeted = SkBudgeted::kYes, size_t size = kDefaultSize)
|
| + : INHERITED(gpu)
|
| , fToDelete(nullptr)
|
| , fSize(size)
|
| - , fProperty(kA_SimulatedProperty) {
|
| + , fProperty(kA_SimulatedProperty)
|
| + , fIsScratch(false) {
|
| ++fNumAlive;
|
| - this->registerWithCache();
|
| + this->registerWithCache(budgeted);
|
| }
|
|
|
| - TestResource(GrGpu* gpu, GrGpuResource::LifeCycle lifeCycle)
|
| - : INHERITED(gpu, lifeCycle)
|
| - , fToDelete(nullptr)
|
| - , fSize(kDefaultSize)
|
| - , fProperty(kA_SimulatedProperty) {
|
| - ++fNumAlive;
|
| - this->registerWithCache();
|
| - }
|
| -
|
| - TestResource(GrGpu* gpu)
|
| - : INHERITED(gpu, kCached_LifeCycle)
|
| - , fToDelete(nullptr)
|
| - , fSize(kDefaultSize)
|
| - , fProperty(kA_SimulatedProperty) {
|
| - ++fNumAlive;
|
| - this->registerWithCache();
|
| + static TestResource* CreateScratch(GrGpu* gpu, SkBudgeted budgeted,
|
| + SimulatedProperty property) {
|
| + return new TestResource(gpu, budgeted, property, kScratchConstructor);
|
| }
|
| -
|
| - static TestResource* CreateScratch(GrGpu* gpu, SimulatedProperty property, bool cached = true) {
|
| - return new TestResource(gpu, property, cached, kScratchConstructor);
|
| + static TestResource* CreateWrapped(GrGpu* gpu, size_t size = kDefaultSize) {
|
| + return new TestResource(gpu, size);
|
| }
|
|
|
| ~TestResource() {
|
| @@ -307,20 +294,34 @@ public:
|
| static size_t ExpectedScratchKeySize() {
|
| return sizeof(uint32_t) * (kScratchKeyFieldCnt + GrScratchKey::kMetaDataCnt);
|
| }
|
| -
|
| private:
|
| static const int kScratchKeyFieldCnt = 6;
|
|
|
| - TestResource(GrGpu* gpu, SimulatedProperty property, bool cached, ScratchConstructor)
|
| - : INHERITED(gpu, cached ? kCached_LifeCycle : kUncached_LifeCycle)
|
| + TestResource(GrGpu* gpu, SkBudgeted budgeted, SimulatedProperty property, ScratchConstructor)
|
| + : INHERITED(gpu)
|
| , fToDelete(nullptr)
|
| , fSize(kDefaultSize)
|
| - , fProperty(property) {
|
| - GrScratchKey scratchKey;
|
| - ComputeScratchKey(fProperty, &scratchKey);
|
| - this->setScratchKey(scratchKey);
|
| + , fProperty(property)
|
| + , fIsScratch(true) {
|
| ++fNumAlive;
|
| - this->registerWithCache();
|
| + this->registerWithCache(budgeted);
|
| + }
|
| +
|
| + // Constructor for simulating resources that wrap backend objects.
|
| + TestResource(GrGpu* gpu, size_t size)
|
| + : INHERITED(gpu)
|
| + , fToDelete(nullptr)
|
| + , fSize(size)
|
| + , fProperty(kA_SimulatedProperty)
|
| + , fIsScratch(false) {
|
| + ++fNumAlive;
|
| + this->registerWithCacheWrapped();
|
| + }
|
| +
|
| + void computeScratchKey(GrScratchKey* key) const override {
|
| + if (fIsScratch) {
|
| + ComputeScratchKey(fProperty, key);
|
| + }
|
| }
|
|
|
| size_t onGpuMemorySize() const override { return fSize; }
|
| @@ -329,6 +330,7 @@ private:
|
| size_t fSize;
|
| static int fNumAlive;
|
| SimulatedProperty fProperty;
|
| + bool fIsScratch;
|
| typedef GrGpuResource INHERITED;
|
| };
|
| int TestResource::fNumAlive = 0;
|
| @@ -418,15 +420,15 @@ static void test_budgeting(skiatest::Reporter* reporter) {
|
|
|
| // Create a scratch, a unique, and a wrapped resource
|
| TestResource* scratch =
|
| - TestResource::CreateScratch(context->getGpu(), TestResource::kB_SimulatedProperty);
|
| + TestResource::CreateScratch(context->getGpu(), SkBudgeted::kYes, TestResource::kB_SimulatedProperty);
|
| scratch->setSize(10);
|
| TestResource* unique = new TestResource(context->getGpu());
|
| unique->setSize(11);
|
| unique->resourcePriv().setUniqueKey(uniqueKey);
|
| - TestResource* wrapped = new TestResource(context->getGpu(), GrGpuResource::kBorrowed_LifeCycle);
|
| + TestResource* wrapped = TestResource::CreateWrapped(context->getGpu());
|
| wrapped->setSize(12);
|
| TestResource* unbudgeted =
|
| - new TestResource(context->getGpu(), GrGpuResource::kUncached_LifeCycle);
|
| + new TestResource(context->getGpu(), SkBudgeted::kNo);
|
| unbudgeted->setSize(13);
|
|
|
| // Make sure we can't add a unique key to the wrapped resource
|
| @@ -461,7 +463,7 @@ static void test_budgeting(skiatest::Reporter* reporter) {
|
| unbudgeted->gpuMemorySize() == cache->getResourceBytes());
|
|
|
| // Now try freeing the budgeted resources first
|
| - wrapped = new TestResource(context->getGpu(), GrGpuResource::kBorrowed_LifeCycle);
|
| + wrapped = TestResource::CreateWrapped(context->getGpu());
|
| scratch->setSize(12);
|
| unique->unref();
|
| cache->purgeAllUnlocked();
|
| @@ -506,7 +508,9 @@ static void test_unbudgeted(skiatest::Reporter* reporter) {
|
| TestResource* unbudgeted;
|
|
|
| // A large uncached or wrapped resource shouldn't evict anything.
|
| - scratch = TestResource::CreateScratch(context->getGpu(), TestResource::kB_SimulatedProperty);
|
| + scratch = TestResource::CreateScratch(context->getGpu(), SkBudgeted::kYes,
|
| + TestResource::kB_SimulatedProperty);
|
| +
|
| scratch->setSize(10);
|
| scratch->unref();
|
| REPORTER_ASSERT(reporter, 1 == cache->getResourceCount());
|
| @@ -524,7 +528,7 @@ static void test_unbudgeted(skiatest::Reporter* reporter) {
|
| REPORTER_ASSERT(reporter, 21 == cache->getBudgetedResourceBytes());
|
|
|
| size_t large = 2 * cache->getResourceBytes();
|
| - unbudgeted = new TestResource(context->getGpu(), large, GrGpuResource::kUncached_LifeCycle);
|
| + unbudgeted = new TestResource(context->getGpu(), SkBudgeted::kNo, large);
|
| REPORTER_ASSERT(reporter, 3 == cache->getResourceCount());
|
| REPORTER_ASSERT(reporter, 21 + large == cache->getResourceBytes());
|
| REPORTER_ASSERT(reporter, 2 == cache->getBudgetedResourceCount());
|
| @@ -536,7 +540,7 @@ static void test_unbudgeted(skiatest::Reporter* reporter) {
|
| REPORTER_ASSERT(reporter, 2 == cache->getBudgetedResourceCount());
|
| REPORTER_ASSERT(reporter, 21 == cache->getBudgetedResourceBytes());
|
|
|
| - wrapped = new TestResource(context->getGpu(), large, GrGpuResource::kBorrowed_LifeCycle);
|
| + wrapped = TestResource::CreateWrapped(context->getGpu(), large);
|
| REPORTER_ASSERT(reporter, 3 == cache->getResourceCount());
|
| REPORTER_ASSERT(reporter, 21 + large == cache->getResourceBytes());
|
| REPORTER_ASSERT(reporter, 2 == cache->getBudgetedResourceCount());
|
| @@ -563,7 +567,8 @@ void test_unbudgeted_to_scratch(skiatest::Reporter* reporter);
|
| GrResourceCache* cache = mock.cache();
|
|
|
| TestResource* resource =
|
| - TestResource::CreateScratch(context->getGpu(), TestResource::kA_SimulatedProperty, false);
|
| + TestResource::CreateScratch(context->getGpu(), SkBudgeted::kNo,
|
| + TestResource::kA_SimulatedProperty);
|
| GrScratchKey key;
|
| TestResource::ComputeScratchKey(TestResource::kA_SimulatedProperty, &key);
|
|
|
| @@ -623,8 +628,10 @@ static void test_duplicate_scratch_key(skiatest::Reporter* reporter) {
|
|
|
| // Create two resources that have the same scratch key.
|
| TestResource* a = TestResource::CreateScratch(context->getGpu(),
|
| + SkBudgeted::kYes,
|
| TestResource::kB_SimulatedProperty);
|
| TestResource* b = TestResource::CreateScratch(context->getGpu(),
|
| + SkBudgeted::kYes,
|
| TestResource::kB_SimulatedProperty);
|
| a->setSize(11);
|
| b->setSize(12);
|
| @@ -667,9 +674,9 @@ static void test_remove_scratch_key(skiatest::Reporter* reporter) {
|
| GrResourceCache* cache = mock.cache();
|
|
|
| // Create two resources that have the same scratch key.
|
| - TestResource* a = TestResource::CreateScratch(context->getGpu(),
|
| + TestResource* a = TestResource::CreateScratch(context->getGpu(), SkBudgeted::kYes,
|
| TestResource::kB_SimulatedProperty);
|
| - TestResource* b = TestResource::CreateScratch(context->getGpu(),
|
| + TestResource* b = TestResource::CreateScratch(context->getGpu(), SkBudgeted::kYes,
|
| TestResource::kB_SimulatedProperty);
|
| a->unref();
|
| b->unref();
|
| @@ -726,9 +733,9 @@ static void test_scratch_key_consistency(skiatest::Reporter* reporter) {
|
| GrResourceCache* cache = mock.cache();
|
|
|
| // Create two resources that have the same scratch key.
|
| - TestResource* a = TestResource::CreateScratch(context->getGpu(),
|
| + TestResource* a = TestResource::CreateScratch(context->getGpu(), SkBudgeted::kYes,
|
| TestResource::kB_SimulatedProperty);
|
| - TestResource* b = TestResource::CreateScratch(context->getGpu(),
|
| + TestResource* b = TestResource::CreateScratch(context->getGpu(), SkBudgeted::kYes,
|
| TestResource::kB_SimulatedProperty);
|
| a->unref();
|
| b->unref();
|
| @@ -888,7 +895,7 @@ static void test_purge_invalidated(skiatest::Reporter* reporter) {
|
| // Add three resources to the cache. Only c is usable as scratch.
|
| TestResource* a = new TestResource(context->getGpu());
|
| TestResource* b = new TestResource(context->getGpu());
|
| - TestResource* c = TestResource::CreateScratch(context->getGpu(),
|
| + TestResource* c = TestResource::CreateScratch(context->getGpu(), SkBudgeted::kYes,
|
| TestResource::kA_SimulatedProperty);
|
| a->resourcePriv().setUniqueKey(key1);
|
| b->resourcePriv().setUniqueKey(key2);
|
|
|