diff options
author | twiz@google.com <twiz@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-01-27 19:12:00 +0000 |
---|---|---|
committer | twiz@google.com <twiz@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-01-27 19:12:00 +0000 |
commit | 05e70247c31ae927074ef27ea9893634a8dda543 (patch) | |
tree | 250f9c0108d71c934e3e9ce1eda507eed7b12844 | |
parent | 78c6ed0a597b4a3765a366b47f4e3e0677118141 (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.h | 6 | ||||
-rw-r--r-- | samplecode/SampleApp.cpp | 11 | ||||
-rw-r--r-- | src/gpu/GrContext.cpp | 4 | ||||
-rw-r--r-- | src/gpu/GrResourceCache.h | 6 |
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 - |