From 05e70247c31ae927074ef27ea9893634a8dda543 Mon Sep 17 00:00:00 2001 From: "twiz@google.com" Date: Fri, 27 Jan 2012 19:12:00 +0000 Subject: 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 --- include/gpu/GrContext.h | 6 +++++- samplecode/SampleApp.cpp | 11 +++++++++++ src/gpu/GrContext.cpp | 4 ++++ 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 @@ -208,6 +208,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. */ @@ -315,4 +320,3 @@ private: #endif #endif - -- cgit v1.2.3