| Index: src/gpu/GrResourceCache.cpp
|
| diff --git a/src/gpu/GrResourceCache.cpp b/src/gpu/GrResourceCache.cpp
|
| index 2b842a8f08b686e80a2d2ec4943c74c0e75d9e32..5cb1dd2a94f0b2933503500a0c8b93e9ee35aaea 100644
|
| --- a/src/gpu/GrResourceCache.cpp
|
| +++ b/src/gpu/GrResourceCache.cpp
|
| @@ -8,8 +8,7 @@
|
|
|
|
|
| #include "GrResourceCache.h"
|
| -#include "GrGpuResource.h"
|
| -
|
| +#include "GrGpuResourceCacheAccess.h"
|
| #include "SkChecksum.h"
|
| #include "SkGr.h"
|
| #include "SkMessageBus.h"
|
| @@ -101,7 +100,7 @@ void GrResourceCache::insertResource(GrGpuResource* resource) {
|
| fHighWaterCount = SkTMax(fCount, fHighWaterCount);
|
| fHighWaterBytes = SkTMax(fBytes, fHighWaterBytes);
|
| #endif
|
| - if (resource->cacheAccess().isBudgeted()) {
|
| + if (resource->resourcePriv().isBudgeted()) {
|
| ++fBudgetedCount;
|
| fBudgetedBytes += size;
|
| #if GR_CACHE_STATS
|
| @@ -109,9 +108,9 @@ void GrResourceCache::insertResource(GrGpuResource* resource) {
|
| fBudgetedHighWaterBytes = SkTMax(fBudgetedBytes, fBudgetedHighWaterBytes);
|
| #endif
|
| }
|
| - if (resource->cacheAccess().getScratchKey().isValid()) {
|
| + if (resource->resourcePriv().getScratchKey().isValid()) {
|
| SkASSERT(!resource->cacheAccess().isWrapped());
|
| - fScratchMap.insert(resource->cacheAccess().getScratchKey(), resource);
|
| + fScratchMap.insert(resource->resourcePriv().getScratchKey(), resource);
|
| }
|
|
|
| this->purgeAsNeeded();
|
| @@ -123,14 +122,14 @@ void GrResourceCache::removeResource(GrGpuResource* resource) {
|
| size_t size = resource->gpuMemorySize();
|
| --fCount;
|
| fBytes -= size;
|
| - if (resource->cacheAccess().isBudgeted()) {
|
| + if (resource->resourcePriv().isBudgeted()) {
|
| --fBudgetedCount;
|
| fBudgetedBytes -= size;
|
| }
|
|
|
| fResources.remove(resource);
|
| - if (resource->cacheAccess().getScratchKey().isValid()) {
|
| - fScratchMap.remove(resource->cacheAccess().getScratchKey(), resource);
|
| + if (resource->resourcePriv().getScratchKey().isValid()) {
|
| + fScratchMap.remove(resource->resourcePriv().getScratchKey(), resource);
|
| }
|
| if (resource->getContentKey().isValid()) {
|
| fContentHash.remove(resource->getContentKey());
|
| @@ -217,8 +216,8 @@ GrGpuResource* GrResourceCache::findAndRefScratchResource(const GrScratchKey& sc
|
| }
|
|
|
| void GrResourceCache::willRemoveScratchKey(const GrGpuResource* resource) {
|
| - SkASSERT(resource->cacheAccess().getScratchKey().isValid());
|
| - fScratchMap.remove(resource->cacheAccess().getScratchKey(), resource);
|
| + SkASSERT(resource->resourcePriv().getScratchKey().isValid());
|
| + fScratchMap.remove(resource->resourcePriv().getScratchKey(), resource);
|
| }
|
|
|
| void GrResourceCache::willRemoveContentKey(const GrGpuResource* resource) {
|
| @@ -268,14 +267,14 @@ void GrResourceCache::notifyPurgeable(GrGpuResource* resource) {
|
|
|
| if (resource->cacheAccess().isWrapped()) {
|
| release = true;
|
| - } else if (!resource->cacheAccess().isBudgeted()) {
|
| + } else if (!resource->resourcePriv().isBudgeted()) {
|
| // Check whether this resource could still be used as a scratch resource.
|
| - if (resource->cacheAccess().getScratchKey().isValid()) {
|
| + if (resource->resourcePriv().getScratchKey().isValid()) {
|
| // We won't purge an existing resource to make room for this one.
|
| bool underBudget = fBudgetedCount < fMaxCount &&
|
| fBudgetedBytes + resource->gpuMemorySize() <= fMaxBytes;
|
| if (underBudget) {
|
| - resource->cacheAccess().makeBudgeted();
|
| + resource->resourcePriv().makeBudgeted();
|
| } else {
|
| release = true;
|
| }
|
| @@ -287,7 +286,7 @@ void GrResourceCache::notifyPurgeable(GrGpuResource* resource) {
|
| bool overBudget = fBudgetedCount > fMaxCount || fBudgetedBytes > fMaxBytes;
|
|
|
| // Also purge if the resource has neither a valid scratch key nor a content key.
|
| - bool noKey = !resource->cacheAccess().getScratchKey().isValid() &&
|
| + bool noKey = !resource->resourcePriv().getScratchKey().isValid() &&
|
| !resource->getContentKey().isValid();
|
| if (overBudget || noKey) {
|
| release = true;
|
| @@ -314,7 +313,7 @@ void GrResourceCache::didChangeGpuMemorySize(const GrGpuResource* resource, size
|
| #if GR_CACHE_STATS
|
| fHighWaterBytes = SkTMax(fBytes, fHighWaterBytes);
|
| #endif
|
| - if (resource->cacheAccess().isBudgeted()) {
|
| + if (resource->resourcePriv().isBudgeted()) {
|
| fBudgetedBytes += delta;
|
| #if GR_CACHE_STATS
|
| fBudgetedHighWaterBytes = SkTMax(fBudgetedBytes, fBudgetedHighWaterBytes);
|
| @@ -332,7 +331,7 @@ void GrResourceCache::didChangeBudgetStatus(GrGpuResource* resource) {
|
|
|
| size_t size = resource->gpuMemorySize();
|
|
|
| - if (resource->cacheAccess().isBudgeted()) {
|
| + if (resource->resourcePriv().isBudgeted()) {
|
| ++fBudgetedCount;
|
| fBudgetedBytes += size;
|
| #if GR_CACHE_STATS
|
| @@ -418,7 +417,7 @@ void GrResourceCache::processInvalidContentKeys(
|
| for (int i = 0; i < msgs.count(); ++i) {
|
| GrGpuResource* resource = this->findAndRefContentResource(msgs[i].key());
|
| if (resource) {
|
| - resource->cacheAccess().removeContentKey();
|
| + resource->resourcePriv().removeContentKey();
|
| resource->unref(); // will call notifyPurgeable, if it is indeed now purgeable.
|
| }
|
| }
|
| @@ -455,13 +454,13 @@ void GrResourceCache::validate() const {
|
| if (resource->cacheAccess().isScratch()) {
|
| SkASSERT(!resource->getContentKey().isValid());
|
| ++scratch;
|
| - SkASSERT(fScratchMap.countForKey(resource->cacheAccess().getScratchKey()));
|
| + SkASSERT(fScratchMap.countForKey(resource->resourcePriv().getScratchKey()));
|
| SkASSERT(!resource->cacheAccess().isWrapped());
|
| - } else if (resource->cacheAccess().getScratchKey().isValid()) {
|
| - SkASSERT(!resource->cacheAccess().isBudgeted() ||
|
| + } else if (resource->resourcePriv().getScratchKey().isValid()) {
|
| + SkASSERT(!resource->resourcePriv().isBudgeted() ||
|
| resource->getContentKey().isValid());
|
| ++couldBeScratch;
|
| - SkASSERT(fScratchMap.countForKey(resource->cacheAccess().getScratchKey()));
|
| + SkASSERT(fScratchMap.countForKey(resource->resourcePriv().getScratchKey()));
|
| SkASSERT(!resource->cacheAccess().isWrapped());
|
| }
|
| const GrContentKey& contentKey = resource->getContentKey();
|
| @@ -469,10 +468,10 @@ void GrResourceCache::validate() const {
|
| ++content;
|
| SkASSERT(fContentHash.find(contentKey) == resource);
|
| SkASSERT(!resource->cacheAccess().isWrapped());
|
| - SkASSERT(resource->cacheAccess().isBudgeted());
|
| + SkASSERT(resource->resourcePriv().isBudgeted());
|
| }
|
|
|
| - if (resource->cacheAccess().isBudgeted()) {
|
| + if (resource->resourcePriv().isBudgeted()) {
|
| ++budgetedCount;
|
| budgetedBytes += resource->gpuMemorySize();
|
| }
|
|
|