diff options
Diffstat (limited to 'src/gpu/GrTest.cpp')
-rw-r--r-- | src/gpu/GrTest.cpp | 55 |
1 files changed, 18 insertions, 37 deletions
diff --git a/src/gpu/GrTest.cpp b/src/gpu/GrTest.cpp index 7a44942a16..2889e9709e 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)); |