Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(250)

Side by Side Diff: src/gpu/GrResourceCache.cpp

Issue 977143002: skia: Add tracing for skia's budget (Closed) Base URL: https://chromium.googlesource.com/skia.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2014 Google Inc. 3 * Copyright 2014 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #include "GrResourceCache.h" 10 #include "GrResourceCache.h"
11 #include "GrGpuResourceCacheAccess.h" 11 #include "GrGpuResourceCacheAccess.h"
12 #include "GrTracing.h"
12 #include "SkChecksum.h" 13 #include "SkChecksum.h"
13 #include "SkGr.h" 14 #include "SkGr.h"
14 #include "SkMessageBus.h" 15 #include "SkMessageBus.h"
15 #include "SkTSort.h" 16 #include "SkTSort.h"
16 17
17 DECLARE_SKMESSAGEBUS_MESSAGE(GrUniqueKeyInvalidatedMessage); 18 DECLARE_SKMESSAGEBUS_MESSAGE(GrUniqueKeyInvalidatedMessage);
18 19
19 ////////////////////////////////////////////////////////////////////////////// 20 //////////////////////////////////////////////////////////////////////////////
20 21
21 GrScratchKey::ResourceType GrScratchKey::GenerateResourceType() { 22 GrScratchKey::ResourceType GrScratchKey::GenerateResourceType() {
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 95
95 // We must set the timestamp before adding to the array in case the timestam p wraps and we wind 96 // We must set the timestamp before adding to the array in case the timestam p wraps and we wind
96 // up iterating over all the resources that already have timestamps. 97 // up iterating over all the resources that already have timestamps.
97 resource->cacheAccess().setTimestamp(this->getNextTimestamp()); 98 resource->cacheAccess().setTimestamp(this->getNextTimestamp());
98 99
99 this->addToNonpurgeableArray(resource); 100 this->addToNonpurgeableArray(resource);
100 101
101 size_t size = resource->gpuMemorySize(); 102 size_t size = resource->gpuMemorySize();
102 SkDEBUGCODE(++fCount;) 103 SkDEBUGCODE(++fCount;)
103 fBytes += size; 104 fBytes += size;
105
106 // TRACE_COUNTER2(TRACE_DISABLED_BY_DEFAULT("skia.gpu.cache"), "fBytes", fByt es);
bsalomon 2015/03/04 18:08:27 what's with this?
107
104 #if GR_CACHE_STATS 108 #if GR_CACHE_STATS
105 fHighWaterCount = SkTMax(this->getResourceCount(), fHighWaterCount); 109 fHighWaterCount = SkTMax(this->getResourceCount(), fHighWaterCount);
106 fHighWaterBytes = SkTMax(fBytes, fHighWaterBytes); 110 fHighWaterBytes = SkTMax(fBytes, fHighWaterBytes);
107 #endif 111 #endif
108 if (resource->resourcePriv().isBudgeted()) { 112 if (resource->resourcePriv().isBudgeted()) {
109 ++fBudgetedCount; 113 ++fBudgetedCount;
110 fBudgetedBytes += size; 114 fBudgetedBytes += size;
115 TRACE_COUNTER2(TRACE_DISABLED_BY_DEFAULT("skia.gpu.cache"), "skia budget ", "used",
116 fBudgetedBytes, "free", fMaxBytes - fBudgetedBytes);
111 #if GR_CACHE_STATS 117 #if GR_CACHE_STATS
112 fBudgetedHighWaterCount = SkTMax(fBudgetedCount, fBudgetedHighWaterCount ); 118 fBudgetedHighWaterCount = SkTMax(fBudgetedCount, fBudgetedHighWaterCount );
113 fBudgetedHighWaterBytes = SkTMax(fBudgetedBytes, fBudgetedHighWaterBytes ); 119 fBudgetedHighWaterBytes = SkTMax(fBudgetedBytes, fBudgetedHighWaterBytes );
114 #endif 120 #endif
115 } 121 }
116 if (resource->resourcePriv().getScratchKey().isValid()) { 122 if (resource->resourcePriv().getScratchKey().isValid()) {
117 SkASSERT(!resource->cacheAccess().isWrapped()); 123 SkASSERT(!resource->cacheAccess().isWrapped());
118 fScratchMap.insert(resource->resourcePriv().getScratchKey(), resource); 124 fScratchMap.insert(resource->resourcePriv().getScratchKey(), resource);
119 } 125 }
120 126
121 this->purgeAsNeeded(); 127 this->purgeAsNeeded();
122 } 128 }
123 129
124 void GrResourceCache::removeResource(GrGpuResource* resource) { 130 void GrResourceCache::removeResource(GrGpuResource* resource) {
125 this->validate(); 131 this->validate();
126 SkASSERT(this->isInCache(resource)); 132 SkASSERT(this->isInCache(resource));
127 133
128 if (resource->isPurgeable()) { 134 if (resource->isPurgeable()) {
129 fPurgeableQueue.remove(resource); 135 fPurgeableQueue.remove(resource);
130 } else { 136 } else {
131 this->removeFromNonpurgeableArray(resource); 137 this->removeFromNonpurgeableArray(resource);
132 } 138 }
133 139
134 size_t size = resource->gpuMemorySize(); 140 size_t size = resource->gpuMemorySize();
135 SkDEBUGCODE(--fCount;) 141 SkDEBUGCODE(--fCount;)
136 fBytes -= size; 142 fBytes -= size;
137 if (resource->resourcePriv().isBudgeted()) { 143 if (resource->resourcePriv().isBudgeted()) {
138 --fBudgetedCount; 144 --fBudgetedCount;
139 fBudgetedBytes -= size; 145 fBudgetedBytes -= size;
146 TRACE_COUNTER2(TRACE_DISABLED_BY_DEFAULT("skia.gpu.cache"), "skia budget ", "used",
147 fBudgetedBytes, "free", fMaxBytes - fBudgetedBytes);
140 } 148 }
141 149
142 if (resource->resourcePriv().getScratchKey().isValid()) { 150 if (resource->resourcePriv().getScratchKey().isValid()) {
143 fScratchMap.remove(resource->resourcePriv().getScratchKey(), resource); 151 fScratchMap.remove(resource->resourcePriv().getScratchKey(), resource);
144 } 152 }
145 if (resource->getUniqueKey().isValid()) { 153 if (resource->getUniqueKey().isValid()) {
146 fUniqueHash.remove(resource->getUniqueKey()); 154 fUniqueHash.remove(resource->getUniqueKey());
147 } 155 }
148 this->validate(); 156 this->validate();
149 } 157 }
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 SkASSERT(this->isInCache(resource)); 352 SkASSERT(this->isInCache(resource));
345 353
346 ptrdiff_t delta = resource->gpuMemorySize() - oldSize; 354 ptrdiff_t delta = resource->gpuMemorySize() - oldSize;
347 355
348 fBytes += delta; 356 fBytes += delta;
349 #if GR_CACHE_STATS 357 #if GR_CACHE_STATS
350 fHighWaterBytes = SkTMax(fBytes, fHighWaterBytes); 358 fHighWaterBytes = SkTMax(fBytes, fHighWaterBytes);
351 #endif 359 #endif
352 if (resource->resourcePriv().isBudgeted()) { 360 if (resource->resourcePriv().isBudgeted()) {
353 fBudgetedBytes += delta; 361 fBudgetedBytes += delta;
362 TRACE_COUNTER2(TRACE_DISABLED_BY_DEFAULT("skia.gpu.cache"), "skia budget ", "used",
363 fBudgetedBytes, "free", fMaxBytes - fBudgetedBytes);
354 #if GR_CACHE_STATS 364 #if GR_CACHE_STATS
355 fBudgetedHighWaterBytes = SkTMax(fBudgetedBytes, fBudgetedHighWaterBytes ); 365 fBudgetedHighWaterBytes = SkTMax(fBudgetedBytes, fBudgetedHighWaterBytes );
356 #endif 366 #endif
357 } 367 }
358 368
359 this->purgeAsNeeded(); 369 this->purgeAsNeeded();
360 this->validate(); 370 this->validate();
361 } 371 }
362 372
363 void GrResourceCache::didChangeBudgetStatus(GrGpuResource* resource) { 373 void GrResourceCache::didChangeBudgetStatus(GrGpuResource* resource) {
364 SkASSERT(resource); 374 SkASSERT(resource);
365 SkASSERT(this->isInCache(resource)); 375 SkASSERT(this->isInCache(resource));
366 376
367 size_t size = resource->gpuMemorySize(); 377 size_t size = resource->gpuMemorySize();
368 378
369 if (resource->resourcePriv().isBudgeted()) { 379 if (resource->resourcePriv().isBudgeted()) {
370 ++fBudgetedCount; 380 ++fBudgetedCount;
371 fBudgetedBytes += size; 381 fBudgetedBytes += size;
372 #if GR_CACHE_STATS 382 #if GR_CACHE_STATS
373 fBudgetedHighWaterBytes = SkTMax(fBudgetedBytes, fBudgetedHighWaterBytes ); 383 fBudgetedHighWaterBytes = SkTMax(fBudgetedBytes, fBudgetedHighWaterBytes );
374 fBudgetedHighWaterCount = SkTMax(fBudgetedCount, fBudgetedHighWaterCount ); 384 fBudgetedHighWaterCount = SkTMax(fBudgetedCount, fBudgetedHighWaterCount );
375 #endif 385 #endif
376 this->purgeAsNeeded(); 386 this->purgeAsNeeded();
377 } else { 387 } else {
378 --fBudgetedCount; 388 --fBudgetedCount;
379 fBudgetedBytes -= size; 389 fBudgetedBytes -= size;
380 } 390 }
391 TRACE_COUNTER2(TRACE_DISABLED_BY_DEFAULT("skia.gpu.cache"), "skia budget", " used",
392 fBudgetedBytes, "free", fMaxBytes - fBudgetedBytes);
381 393
382 this->validate(); 394 this->validate();
383 } 395 }
384 396
385 void GrResourceCache::internalPurgeAsNeeded() { 397 void GrResourceCache::internalPurgeAsNeeded() {
386 SkASSERT(this->overBudget()); 398 SkASSERT(this->overBudget());
387 399
388 bool stillOverbudget = true; 400 bool stillOverbudget = true;
389 while (fPurgeableQueue.count()) { 401 while (fPurgeableQueue.count()) {
390 GrGpuResource* resource = fPurgeableQueue.peek(); 402 GrGpuResource* resource = fPurgeableQueue.peek();
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 return true; 633 return true;
622 } 634 }
623 if (index < fNonpurgeableResources.count() && fNonpurgeableResources[index] == resource) { 635 if (index < fNonpurgeableResources.count() && fNonpurgeableResources[index] == resource) {
624 return true; 636 return true;
625 } 637 }
626 SkDEBUGFAIL("Resource index should be -1 or the resource should be in the ca che."); 638 SkDEBUGFAIL("Resource index should be -1 or the resource should be in the ca che.");
627 return false; 639 return false;
628 } 640 }
629 641
630 #endif 642 #endif
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698