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

Unified Diff: tests/ResourceCacheTest.cpp

Issue 257093002: Add size change notifications to GrResourceCache (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
« src/gpu/GrTexture.cpp ('K') | « src/gpu/GrTexture.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/ResourceCacheTest.cpp
diff --git a/tests/ResourceCacheTest.cpp b/tests/ResourceCacheTest.cpp
index 7262b43a0ff767ef0db36ecca6f1f23bbf5bffa0..cc8fe1c99a4c029a200229084ae90bedfcd2490e 100644
--- a/tests/ResourceCacheTest.cpp
+++ b/tests/ResourceCacheTest.cpp
@@ -61,7 +61,8 @@ public:
SK_DECLARE_INST_COUNT(TestResource);
robertphillips 2014/04/29 13:46:25 TestResouce(size_t size = kDefaultSize) ?
TestResource()
: fCache(NULL)
- , fToDelete(NULL) {
+ , fToDelete(NULL)
+ , fSize(100) {
++fAlive;
}
@@ -74,7 +75,12 @@ public:
}
}
- size_t gpuMemorySize() const SK_OVERRIDE { return 100; }
+ void setSize(size_t size) {
+ fSize = size;
+ this->didChangeGpuMemorySize();
+ }
+
+ size_t gpuMemorySize() const SK_OVERRIDE { return fSize; }
bool isValidOnGpu() const SK_OVERRIDE { return true; }
@@ -88,6 +94,7 @@ public:
private:
GrResourceCache* fCache;
TestResource* fToDelete;
+ size_t fSize;
static int fAlive;
typedef GrCacheable INHERITED;
@@ -174,6 +181,67 @@ static void test_cache_delete_on_destruction(skiatest::Reporter* reporter,
}
}
+static void test_resource_size_changed(skiatest::Reporter* reporter,
+ GrContext* context) {
robertphillips 2014/04/29 13:46:25 rm '\' ?
+ GrCacheID::Domain domain = GrCacheID::GenerateDomain();\
+ GrResourceKey::ResourceType t = GrResourceKey::GenerateResourceType();
+
+ GrCacheID::Key key1Data;
+ key1Data.fData64[0] = 0;
+ key1Data.fData64[1] = 0;
+ GrResourceKey key1(GrCacheID(domain, key1Data), t, 0);
+
+ GrCacheID::Key key2Data;
+ key2Data.fData64[0] = 1;
+ key2Data.fData64[1] = 0;
+ GrResourceKey key2(GrCacheID(domain, key2Data), t, 0);
+
robertphillips 2014/04/29 13:46:25 // Test changing resources sizes when they are non
+ {
+ GrResourceCache cache(3, 300);
+
+ TestResource* a = new TestResource();
+ a->setSize(100);
+ cache.addResource(key1, a);
+ a->unref();
+
+ TestResource* b = new TestResource();
+ b->setSize(100);
+ cache.addResource(key2, b);
+ b->unref();
+
+ REPORTER_ASSERT(reporter, 200 == cache.getCachedResourceBytes());
+ REPORTER_ASSERT(reporter, 2 == cache.getCachedResourceCount());
+
+ static_cast<TestResource*>(cache.find(key2))->setSize(200);
+ static_cast<TestResource*>(cache.find(key1))->setSize(50);
+
+ REPORTER_ASSERT(reporter, 250 == cache.getCachedResourceBytes());
+ REPORTER_ASSERT(reporter, 2 == cache.getCachedResourceCount());
+ }
robertphillips 2014/04/29 13:46:25 // Test changing resource size of exclusively held
+ {
+ GrResourceCache cache(3, 300);
+
+ TestResource* a = new TestResource();
+ a->setSize(100);
+ cache.addResource(key1, a);
+ a->unref();
+
+ TestResource* b = new TestResource();
+ b->setSize(100);
+ cache.addResource(key2, b);
+ b->unref();
+
+ REPORTER_ASSERT(reporter, 200 == cache.getCachedResourceBytes());
+ REPORTER_ASSERT(reporter, 2 == cache.getCachedResourceCount());
+
+ static_cast<TestResource*>(cache.find(key2))->setSize(201);
robertphillips 2014/04/29 13:46:25 What am I missing that makes key1 exclusively held
Chris Dalton 2014/04/30 16:47:39 I should have put a comment :) This is testing tha
robertphillips 2014/04/30 17:31:49 Ah okay - that needs a comment! :)
+ REPORTER_ASSERT(reporter, NULL == cache.find(key1));
+
+ REPORTER_ASSERT(reporter, 201 == cache.getCachedResourceBytes());
+ REPORTER_ASSERT(reporter, 1 == cache.getCachedResourceCount());
robertphillips 2014/04/29 13:46:25 Is there a way to check the detached size here? If
+ }
+}
+
////////////////////////////////////////////////////////////////////////////////
DEF_GPUTEST(ResourceCache, reporter, factory) {
for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) {
@@ -199,6 +267,7 @@ DEF_GPUTEST(ResourceCache, reporter, factory) {
test_cache(reporter, context, &canvas);
test_purge_invalidated(reporter, context);
test_cache_delete_on_destruction(reporter, context);
+ test_resource_size_changed(reporter, context);
}
}
« src/gpu/GrTexture.cpp ('K') | « src/gpu/GrTexture.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698