diff options
author | 2015-02-17 15:09:34 -0800 | |
---|---|---|
committer | 2015-02-17 15:09:34 -0800 | |
commit | f320e04c50a1c8a861bc1d8f50bf732044ff9843 (patch) | |
tree | 30ffbaae66557afaaffbeb72ed506254ad3d99eb /src/gpu/GrTest.cpp | |
parent | 91d1d621de03faa41528ba2581d172f3a41104ff (diff) |
Use an array of nonpurgeable resources in GrResourceCache
Review URL: https://codereview.chromium.org/932863004
Diffstat (limited to 'src/gpu/GrTest.cpp')
-rw-r--r-- | src/gpu/GrTest.cpp | 52 |
1 files changed, 30 insertions, 22 deletions
diff --git a/src/gpu/GrTest.cpp b/src/gpu/GrTest.cpp index 72fde041b1..ba9278ed50 100644 --- a/src/gpu/GrTest.cpp +++ b/src/gpu/GrTest.cpp @@ -79,27 +79,35 @@ void GrGpu::Stats::dump(SkString* out) { void GrResourceCache::dumpStats(SkString* out) const { this->validate(); - int locked = 0; - int scratch = 0; - int wrapped = 0; - size_t unbudgetedSize = 0; + int locked = fNonpurgeableResources.count(); + + struct Stats { + int fScratch; + int fWrapped; + size_t fUnbudgetedSize; + + Stats() : fScratch(0), fWrapped(0), fUnbudgetedSize(0) {} + + void update(GrGpuResource* resource) { + if (resource->cacheAccess().isScratch()) { + ++fScratch; + } + if (resource->cacheAccess().isWrapped()) { + ++fWrapped; + } + if (!resource->resourcePriv().isBudgeted()) { + fUnbudgetedSize += resource->gpuMemorySize(); + } + } + }; - ResourceList::Iter iter; - GrGpuResource* resource = iter.init(fResources, ResourceList::Iter::kHead_IterStart); + Stats stats; - for ( ; resource; resource = iter.next()) { - if (!resource->isPurgeable()) { - ++locked; - } - if (resource->cacheAccess().isScratch()) { - ++scratch; - } - if (resource->cacheAccess().isWrapped()) { - ++wrapped; - } - if (!resource->resourcePriv().isBudgeted()) { - unbudgetedSize += resource->gpuMemorySize(); - } + for (int i = 0; i < fNonpurgeableResources.count(); ++i) { + stats.update(fNonpurgeableResources[i]); + } + for (int i = 0; i < fPurgeableQueue.count(); ++i) { + stats.update(fPurgeableQueue.at(i)); } float countUtilization = (100.f * fBudgetedCount) / fMaxCount; @@ -108,11 +116,11 @@ 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 wrapped, %d locked, %d scratch %.2g%% full), high %d\n", - fCount, fBudgetedCount, wrapped, locked, scratch, countUtilization, + fCount, fBudgetedCount, stats.fWrapped, locked, stats.fScratch, countUtilization, fHighWaterCount); out->appendf("\t\tEntry Bytes: current %d (budgeted %d, %.2g%% full, %d unbudgeted) high %d\n", - (int)fBytes, (int)fBudgetedBytes, byteUtilization, - (int)unbudgetedSize, (int)fHighWaterBytes); + SkToInt(fBytes), SkToInt(fBudgetedBytes), byteUtilization, + SkToInt(stats.fUnbudgetedSize), SkToInt(fHighWaterBytes)); } #endif |