diff --git a/include/gpu/GrGpuResource.h b/include/gpu/GrGpuResource.h index bdf6257d4d..7896ab3e84 100644 --- a/include/gpu/GrGpuResource.h +++ b/include/gpu/GrGpuResource.h @@ -188,6 +188,10 @@ public: */ uint32_t getUniqueID() const { return fUniqueID; } + /** Returns the current content key for the resource. It will be invalid if the resource has not + been cached by its contents. */ + const GrContentKey& getContentKey() const { return fContentKey; } + /** * Attach a custom data object to this resource. The data will remain attached * for the lifetime of this resource (until it is abandoned or released). diff --git a/src/gpu/GrGpuResourceCacheAccess.h b/src/gpu/GrGpuResourceCacheAccess.h index aa2337d7f2..867252d783 100644 --- a/src/gpu/GrGpuResourceCacheAccess.h +++ b/src/gpu/GrGpuResourceCacheAccess.h @@ -33,7 +33,7 @@ public: * key, and does not have a content key. */ bool isScratch() const { - return !this->getContentKey().isValid() && fResource->fScratchKey.isValid() && + return !fResource->getContentKey().isValid() && fResource->fScratchKey.isValid() && this->isBudgeted(); } @@ -50,11 +50,6 @@ public: */ void removeScratchKey() const { fResource->removeScratchKey(); } - /** - * If the resource is currently cached by a content key, the key is returned, otherwise NULL. - */ - const GrContentKey& getContentKey() const { return fResource->fContentKey; } - /** * Is the resource object wrapping an externally allocated GPU resource? */ @@ -65,7 +60,7 @@ public: */ bool isBudgeted() const { bool ret = GrGpuResource::kCached_LifeCycle == fResource->fLifeCycle; - SkASSERT(ret || !this->getContentKey().isValid()); + SkASSERT(ret || !fResource->getContentKey().isValid()); return ret; } diff --git a/src/gpu/GrResourceCache2.cpp b/src/gpu/GrResourceCache2.cpp index 65894d3314..99c4270f99 100644 --- a/src/gpu/GrResourceCache2.cpp +++ b/src/gpu/GrResourceCache2.cpp @@ -132,8 +132,8 @@ void GrResourceCache2::removeResource(GrGpuResource* resource) { if (resource->cacheAccess().getScratchKey().isValid()) { fScratchMap.remove(resource->cacheAccess().getScratchKey(), resource); } - if (resource->cacheAccess().getContentKey().isValid()) { - fContentHash.remove(resource->cacheAccess().getContentKey()); + if (resource->getContentKey().isValid()) { + fContentHash.remove(resource->getContentKey()); } this->validate(); } @@ -225,9 +225,9 @@ bool GrResourceCache2::didSetContentKey(GrGpuResource* resource) { SkASSERT(!fPurging); SkASSERT(resource); SkASSERT(this->isInCache(resource)); - SkASSERT(resource->cacheAccess().getContentKey().isValid()); + SkASSERT(resource->getContentKey().isValid()); - GrGpuResource* res = fContentHash.find(resource->cacheAccess().getContentKey()); + GrGpuResource* res = fContentHash.find(resource->getContentKey()); if (NULL != res) { return false; } @@ -281,7 +281,7 @@ void GrResourceCache2::notifyPurgeable(GrGpuResource* resource) { // Also purge if the resource has neither a valid scratch key nor a content key. bool noKey = !resource->cacheAccess().getScratchKey().isValid() && - !resource->cacheAccess().getContentKey().isValid(); + !resource->getContentKey().isValid(); if (overBudget || noKey) { release = true; } @@ -435,18 +435,18 @@ void GrResourceCache2::validate() const { } if (resource->cacheAccess().isScratch()) { - SkASSERT(!resource->cacheAccess().getContentKey().isValid()); + SkASSERT(!resource->getContentKey().isValid()); ++scratch; SkASSERT(fScratchMap.countForKey(resource->cacheAccess().getScratchKey())); SkASSERT(!resource->cacheAccess().isWrapped()); } else if (resource->cacheAccess().getScratchKey().isValid()) { SkASSERT(!resource->cacheAccess().isBudgeted() || - resource->cacheAccess().getContentKey().isValid()); + resource->getContentKey().isValid()); ++couldBeScratch; SkASSERT(fScratchMap.countForKey(resource->cacheAccess().getScratchKey())); SkASSERT(!resource->cacheAccess().isWrapped()); } - const GrContentKey& contentKey = resource->cacheAccess().getContentKey(); + const GrContentKey& contentKey = resource->getContentKey(); if (contentKey.isValid()) { ++content; SkASSERT(fContentHash.find(contentKey) == resource); diff --git a/src/gpu/GrResourceCache2.h b/src/gpu/GrResourceCache2.h index d5c418238b..9c9900a424 100644 --- a/src/gpu/GrResourceCache2.h +++ b/src/gpu/GrResourceCache2.h @@ -194,7 +194,7 @@ private: struct ContentHashTraits { static const GrContentKey& GetKey(const GrGpuResource& r) { - return r.cacheAccess().getContentKey(); + return r.getContentKey(); } static uint32_t Hash(const GrContentKey& key) { return key.hash(); }