Index: src/gpu/GrTest.cpp |
diff --git a/src/gpu/GrTest.cpp b/src/gpu/GrTest.cpp |
index 7a44942a16216f253a65154e072c92b1dfbb1037..2889e9709e08661c8b6b8d39b0c5f77ac7fa0c87 100644 |
--- a/src/gpu/GrTest.cpp |
+++ b/src/gpu/GrTest.cpp |
@@ -140,47 +140,27 @@ void GrGpu::Stats::dump(SkString* out) { |
#endif |
#if GR_CACHE_STATS |
-void GrResourceCache::dumpStats(SkString* out) const { |
- this->validate(); |
- |
- int locked = fNonpurgeableResources.count(); |
- |
- struct Stats { |
- int fScratch; |
- int fExternal; |
- int fBorrowed; |
- int fAdopted; |
- size_t fUnbudgetedSize; |
- |
- Stats() : fScratch(0), fExternal(0), fBorrowed(0), fAdopted(0), fUnbudgetedSize(0) {} |
- |
- void update(GrGpuResource* resource) { |
- if (resource->cacheAccess().isScratch()) { |
- ++fScratch; |
- } |
- if (resource->cacheAccess().isExternal()) { |
- ++fExternal; |
- } |
- if (resource->cacheAccess().isBorrowed()) { |
- ++fBorrowed; |
- } |
- if (resource->cacheAccess().isAdopted()) { |
- ++fAdopted; |
- } |
- if (!resource->resourcePriv().isBudgeted()) { |
- fUnbudgetedSize += resource->gpuMemorySize(); |
- } |
- } |
- }; |
+void GrResourceCache::getStats(Stats* stats) const { |
+ stats->reset(); |
- Stats stats; |
+ stats->fTotal = this->getResourceCount(); |
+ stats->fNumNonPurgeable = fNonpurgeableResources.count(); |
+ stats->fNumPurgeable = fPurgeableQueue.count(); |
for (int i = 0; i < fNonpurgeableResources.count(); ++i) { |
- stats.update(fNonpurgeableResources[i]); |
+ stats->update(fNonpurgeableResources[i]); |
} |
for (int i = 0; i < fPurgeableQueue.count(); ++i) { |
- stats.update(fPurgeableQueue.at(i)); |
+ stats->update(fPurgeableQueue.at(i)); |
} |
+} |
+ |
+void GrResourceCache::dumpStats(SkString* out) const { |
+ this->validate(); |
+ |
+ Stats stats; |
+ |
+ this->getStats(&stats); |
float countUtilization = (100.f * fBudgetedCount) / fMaxCount; |
float byteUtilization = (100.f * fBudgetedBytes) / fMaxBytes; |
@@ -188,8 +168,9 @@ void GrResourceCache::dumpStats(SkString* out) const { |
out->appendf("Budget: %d items %d bytes\n", fMaxCount, (int)fMaxBytes); |
out->appendf("\t\tEntry Count: current %d" |
" (%d budgeted, %d external(%d borrowed, %d adopted), %d locked, %d scratch %.2g%% full), high %d\n", |
- this->getResourceCount(), fBudgetedCount, stats.fExternal, stats.fBorrowed, |
- stats.fAdopted, locked, stats.fScratch, countUtilization, fHighWaterCount); |
+ stats.fTotal, fBudgetedCount, stats.fExternal, stats.fBorrowed, |
+ stats.fAdopted, stats.fNumNonPurgeable, stats.fScratch, countUtilization, |
+ fHighWaterCount); |
out->appendf("\t\tEntry Bytes: current %d (budgeted %d, %.2g%% full, %d unbudgeted) high %d\n", |
SkToInt(fBytes), SkToInt(fBudgetedBytes), byteUtilization, |
SkToInt(stats.fUnbudgetedSize), SkToInt(fHighWaterBytes)); |