aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar twiz@google.com <twiz@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-01-27 19:12:00 +0000
committerGravatar twiz@google.com <twiz@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-01-27 19:12:00 +0000
commit05e70247c31ae927074ef27ea9893634a8dda543 (patch)
tree250f9c0108d71c934e3e9ce1eda507eed7b12844
parent78c6ed0a597b4a3765a366b47f4e3e0677118141 (diff)
Expose functionality to purge the GPU texture cache while running SampleApp.
Press 'p' to purge the cache. A summary of the number of bytes of video memory released is output to the command prompt. Review URL: https://codereview.appspot.com/5587045 git-svn-id: http://skia.googlecode.com/svn/trunk@3097 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r--include/gpu/GrContext.h6
-rw-r--r--samplecode/SampleApp.cpp11
-rw-r--r--src/gpu/GrContext.cpp4
-rw-r--r--src/gpu/GrResourceCache.h6
4 files changed, 25 insertions, 2 deletions
diff --git a/include/gpu/GrContext.h b/include/gpu/GrContext.h
index d27b963d92..ca440a6243 100644
--- a/include/gpu/GrContext.h
+++ b/include/gpu/GrContext.h
@@ -75,6 +75,11 @@ public:
*/
void freeGpuResources();
+ /**
+ * Returns the number of bytes of GPU memory hosted by the texture cache.
+ */
+ size_t getGpuTextureCacheBytes() const;
+
///////////////////////////////////////////////////////////////////////////
// Textures
@@ -858,4 +863,3 @@ private:
};
#endif
-
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index d3d2aa708a..898bda0be8 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -1537,6 +1537,17 @@ bool SampleWindow::onHandleChar(SkUnichar uni) {
this->updateTitle();
}
return true;
+ case 'p':
+ {
+ GrContext* grContext = this->getGrContext();
+ if (grContext) {
+ size_t cacheBytes = grContext->getGpuTextureCacheBytes();
+ grContext->freeGpuResources();
+ SkDebugf("Purged %d bytes from the GPU resource cache.\n",
+ cacheBytes);
+ }
+ }
+ return true;
case 's':
fScale = !fScale;
this->inval(NULL);
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index 2132ed6ea7..975f6d0b90 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -115,6 +115,10 @@ void GrContext::freeGpuResources() {
GrSafeSetNull(fPathRendererChain);
}
+size_t GrContext::getGpuTextureCacheBytes() const {
+ return fTextureCache->getCachedResourceBytes();
+}
+
////////////////////////////////////////////////////////////////////////////////
int GrContext::PaintStageVertexLayoutBits(
diff --git a/src/gpu/GrResourceCache.h b/src/gpu/GrResourceCache.h
index e21c6050a1..f86fcd270f 100644
--- a/src/gpu/GrResourceCache.h
+++ b/src/gpu/GrResourceCache.h
@@ -209,6 +209,11 @@ public:
void setLimits(int maxResource, size_t maxResourceBytes);
/**
+ * Returns the number of bytes consumed by cached resources.
+ */
+ size_t getCachedResourceBytes() const { return fEntryBytes; }
+
+ /**
* Controls whether locks should be nestable or not.
*/
enum LockType {
@@ -315,4 +320,3 @@ private:
#endif
#endif
-