context->setResourceCacheLimits(oldMaxNum, oldMaxBytes);
}
-class TestResource : public GrCacheable {
+class TestResource : public GrGpuResource {
static const size_t kDefaultSize = 100;
public:
SK_DECLARE_INST_COUNT(TestResource);
- TestResource(size_t size = kDefaultSize)
- : fCache(NULL)
+ TestResource(GrGpu* gpu, size_t size = kDefaultSize)
+ : INHERITED(gpu, false)
+ , fCache(NULL)
, fToDelete(NULL)
, fSize(size) {
++fAlive;
fToDelete->setDeleteWhenDestroyed(NULL, NULL);
fCache->deleteResource(fToDelete->getCacheEntry());
}
+ this->release();
}
void setSize(size_t size) {
size_t gpuMemorySize() const SK_OVERRIDE { return fSize; }
- bool isValidOnGpu() const SK_OVERRIDE { return true; }
-
static int alive() { return fAlive; }
void setDeleteWhenDestroyed(GrResourceCache* cache, TestResource* resource) {
size_t fSize;
static int fAlive;
- typedef GrCacheable INHERITED;
+ typedef GrGpuResource INHERITED;
};
int TestResource::fAlive = 0;
GrResourceCache cache(5, 30000);
// Add two resources with the same key that delete each other from the cache when destroyed.
- TestResource* a = new TestResource();
- TestResource* b = new TestResource();
+ TestResource* a = new TestResource(context->getGpu());
+ TestResource* b = new TestResource(context->getGpu());
cache.addResource(key, a);
cache.addResource(key, b);
// Circle back.
b->unref();
// Add a third independent resource also with the same key.
- GrCacheable* r = new TestResource();
+ GrGpuResource* r = new TestResource(context->getGpu());
cache.addResource(key, r);
r->unref();
{
{
GrResourceCache cache(3, 30000);
- TestResource* a = new TestResource();
- TestResource* b = new TestResource();
+ TestResource* a = new TestResource(context->getGpu());
+ TestResource* b = new TestResource(context->getGpu());
cache.addResource(key, a);
cache.addResource(key, b);
}
{
GrResourceCache cache(3, 30000);
- TestResource* a = new TestResource();
- TestResource* b = new TestResource();
+ TestResource* a = new TestResource(context->getGpu());
+ TestResource* b = new TestResource(context->getGpu());
cache.addResource(key, a);
cache.addResource(key, b);
{
GrResourceCache cache(2, 300);
- TestResource* a = new TestResource(0);
+ TestResource* a = new TestResource(context->getGpu());
a->setSize(100); // Test didChangeGpuMemorySize() when not in the cache.
cache.addResource(key1, a);
a->unref();
- TestResource* b = new TestResource(0);
+ TestResource* b = new TestResource(context->getGpu());
b->setSize(100);
cache.addResource(key2, b);
b->unref();
{
GrResourceCache cache(2, 300);
- TestResource* a = new TestResource(100);
+ TestResource* a = new TestResource(context->getGpu(), 100);
cache.addResource(key1, a);
a->unref();
- TestResource* b = new TestResource(100);
+ TestResource* b = new TestResource(context->getGpu(), 100);
cache.addResource(key2, b);
b->unref();
{
GrResourceCache cache(2, 300);
- TestResource* a = new TestResource(100);
+ TestResource* a = new TestResource(context->getGpu(), 100);
cache.addResource(key1, a);
cache.makeExclusive(a->getCacheEntry());
- TestResource* b = new TestResource(100);
+ TestResource* b = new TestResource(context->getGpu(), 100);
cache.addResource(key2, b);
b->unref();