diff options
author | 2014-10-07 07:27:07 -0700 | |
---|---|---|
committer | 2014-10-07 07:27:07 -0700 | |
commit | d14e1a27643125bfef37fa0ed314b64c1fae22b7 (patch) | |
tree | f4ee6543d77aff0e233dace6c81403364b79fdba /src/gpu/GrResourceCache.h | |
parent | b109ac22b4ec3ab3478f5304c96564a0e9df6170 (diff) |
GrResourceCache2 manages scratch texture.
BUG=skia:2889
Review URL: https://codereview.chromium.org/608883003
Diffstat (limited to 'src/gpu/GrResourceCache.h')
-rw-r--r-- | src/gpu/GrResourceCache.h | 61 |
1 files changed, 6 insertions, 55 deletions
diff --git a/src/gpu/GrResourceCache.h b/src/gpu/GrResourceCache.h index 83337805a4..880a0a98b5 100644 --- a/src/gpu/GrResourceCache.h +++ b/src/gpu/GrResourceCache.h @@ -141,26 +141,13 @@ public: */ int getCachedResourceCount() const { return fEntryCount; } - // For a found or added resource to be completely exclusive to the caller - // both the kNoOtherOwners and kHide flags need to be specified - enum OwnershipFlags { - kNoOtherOwners_OwnershipFlag = 0x1, // found/added resource has no other owners - kHide_OwnershipFlag = 0x2 // found/added resource is hidden from future 'find's - }; - /** * Search for an entry with the same Key. If found, return it. * If not found, return null. - * If ownershipFlags includes kNoOtherOwners and a resource is returned - * then that resource has no other refs to it. - * If ownershipFlags includes kHide and a resource is returned then that - * resource will not be returned from future 'find' calls until it is - * 'freed' (and recycled) or makeNonExclusive is called. - * For a resource to be completely exclusive to a caller both kNoOtherOwners - * and kHide must be specified. */ - GrGpuResource* find(const GrResourceKey& key, - uint32_t ownershipFlags = 0); + GrGpuResource* find(const GrResourceKey& key); + + void makeResourceMRU(GrGpuResource*); /** * Add the new resource to the cache (by creating a new cache entry based @@ -168,14 +155,8 @@ public: * * Ownership of the resource is transferred to the resource cache, * which will unref() it when it is purged or deleted. - * - * If ownershipFlags includes kHide, subsequent calls to 'find' will not - * return 'resource' until it is 'freed' (and recycled) or makeNonExclusive - * is called. */ - void addResource(const GrResourceKey& key, - GrGpuResource* resource, - uint32_t ownershipFlags = 0); + void addResource(const GrResourceKey& key, GrGpuResource* resource); /** * Determines if the cache contains an entry matching a key. If a matching @@ -184,20 +165,6 @@ public: bool hasKey(const GrResourceKey& key) const { return SkToBool(fCache.find(key)); } /** - * Hide 'entry' so that future searches will not find it. Such - * hidden entries will not be purged. The entry still counts against - * the cache's budget and should be made non-exclusive when exclusive access - * is no longer needed. - */ - void makeExclusive(GrResourceCacheEntry* entry); - - /** - * Restore 'entry' so that it can be found by future searches. 'entry' - * will also be purgeable (provided its lock count is now 0.) - */ - void makeNonExclusive(GrResourceCacheEntry* entry); - - /** * Notify the cache that the size of a resource has changed. */ void didIncreaseResourceSize(const GrResourceCacheEntry*, size_t amountInc); @@ -237,15 +204,8 @@ public: #endif private: - enum BudgetBehaviors { - kAccountFor_BudgetBehavior, - kIgnore_BudgetBehavior - }; - - void internalDetach(GrResourceCacheEntry*, BudgetBehaviors behavior = kAccountFor_BudgetBehavior); - void attachToHead(GrResourceCacheEntry*, BudgetBehaviors behavior = kAccountFor_BudgetBehavior); - - void removeInvalidResource(GrResourceCacheEntry* entry); + void internalDetach(GrResourceCacheEntry*); + void attachToHead(GrResourceCacheEntry*); SkTMultiMap<GrResourceCacheEntry, GrResourceKey> fCache; @@ -253,11 +213,6 @@ private: typedef SkTInternalLList<GrResourceCacheEntry> EntryList; EntryList fList; -#ifdef SK_DEBUG - // These objects cannot be returned by a search - EntryList fExclusiveList; -#endif - // our budget, used in purgeAsNeeded() int fMaxCount; size_t fMaxBytes; @@ -266,14 +221,10 @@ private: #if GR_CACHE_STATS int fHighWaterEntryCount; size_t fHighWaterEntryBytes; - int fHighWaterClientDetachedCount; - size_t fHighWaterClientDetachedBytes; #endif int fEntryCount; size_t fEntryBytes; - int fClientDetachedCount; - size_t fClientDetachedBytes; // prevents recursive purging bool fPurging; |