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

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

Issue 418143004: Rename GrGpuObject to GrGpuResource (Closed) Base URL: https://skia.googlesource.com/skia.git@compact
Patch Set: Fix indents Created 6 years, 5 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 | « src/gpu/GrResourceCache.h ('k') | src/gpu/GrStencilAndCoverTextContext.cpp » ('j') | 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 2010 Google Inc. 3 * Copyright 2010 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 10
11 #include "GrResourceCache.h" 11 #include "GrResourceCache.h"
12 #include "GrGpuObject.h" 12 #include "GrGpuResource.h"
13 13
14 DECLARE_SKMESSAGEBUS_MESSAGE(GrResourceInvalidatedMessage); 14 DECLARE_SKMESSAGEBUS_MESSAGE(GrResourceInvalidatedMessage);
15 15
16 /////////////////////////////////////////////////////////////////////////////// 16 ///////////////////////////////////////////////////////////////////////////////
17 17
18 void GrGpuObject::didChangeGpuMemorySize() const { 18 void GrGpuResource::didChangeGpuMemorySize() const {
19 if (this->isInCache()) { 19 if (this->isInCache()) {
20 fCacheEntry->didChangeResourceSize(); 20 fCacheEntry->didChangeResourceSize();
21 } 21 }
22 } 22 }
23 23
24 /////////////////////////////////////////////////////////////////////////////// 24 ///////////////////////////////////////////////////////////////////////////////
25 25
26 GrResourceKey::ResourceType GrResourceKey::GenerateResourceType() { 26 GrResourceKey::ResourceType GrResourceKey::GenerateResourceType() {
27 static int32_t gNextType = 0; 27 static int32_t gNextType = 0;
28 28
29 int32_t type = sk_atomic_inc(&gNextType); 29 int32_t type = sk_atomic_inc(&gNextType);
30 if (type >= (1 << 8 * sizeof(ResourceType))) { 30 if (type >= (1 << 8 * sizeof(ResourceType))) {
31 SkFAIL("Too many Resource Types"); 31 SkFAIL("Too many Resource Types");
32 } 32 }
33 33
34 return static_cast<ResourceType>(type); 34 return static_cast<ResourceType>(type);
35 } 35 }
36 36
37 /////////////////////////////////////////////////////////////////////////////// 37 ///////////////////////////////////////////////////////////////////////////////
38 38
39 GrResourceCacheEntry::GrResourceCacheEntry(GrResourceCache* resourceCache, 39 GrResourceCacheEntry::GrResourceCacheEntry(GrResourceCache* resourceCache,
40 const GrResourceKey& key, 40 const GrResourceKey& key,
41 GrGpuObject* resource) 41 GrGpuResource* resource)
42 : fResourceCache(resourceCache), 42 : fResourceCache(resourceCache),
43 fKey(key), 43 fKey(key),
44 fResource(resource), 44 fResource(resource),
45 fCachedSize(resource->gpuMemorySize()), 45 fCachedSize(resource->gpuMemorySize()),
46 fIsExclusive(false) { 46 fIsExclusive(false) {
47 // we assume ownership of the resource, and will unref it when we die 47 // we assume ownership of the resource, and will unref it when we die
48 SkASSERT(resource); 48 SkASSERT(resource);
49 resource->ref(); 49 resource->ref();
50 } 50 }
51 51
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 // This functor just searches for an entry with only a single ref (from 190 // This functor just searches for an entry with only a single ref (from
191 // the texture cache itself). Presumably in this situation no one else 191 // the texture cache itself). Presumably in this situation no one else
192 // is relying on the texture. 192 // is relying on the texture.
193 class GrTFindUnreffedFunctor { 193 class GrTFindUnreffedFunctor {
194 public: 194 public:
195 bool operator()(const GrResourceCacheEntry* entry) const { 195 bool operator()(const GrResourceCacheEntry* entry) const {
196 return entry->resource()->unique(); 196 return entry->resource()->unique();
197 } 197 }
198 }; 198 };
199 199
200 GrGpuObject* GrResourceCache::find(const GrResourceKey& key, uint32_t ownershipF lags) { 200 GrGpuResource* GrResourceCache::find(const GrResourceKey& key, uint32_t ownershi pFlags) {
201 GrAutoResourceCacheValidate atcv(this); 201 GrAutoResourceCacheValidate atcv(this);
202 202
203 GrResourceCacheEntry* entry = NULL; 203 GrResourceCacheEntry* entry = NULL;
204 204
205 if (ownershipFlags & kNoOtherOwners_OwnershipFlag) { 205 if (ownershipFlags & kNoOtherOwners_OwnershipFlag) {
206 GrTFindUnreffedFunctor functor; 206 GrTFindUnreffedFunctor functor;
207 207
208 entry = fCache.find<GrTFindUnreffedFunctor>(key, functor); 208 entry = fCache.find<GrTFindUnreffedFunctor>(key, functor);
209 } else { 209 } else {
210 entry = fCache.find(key); 210 entry = fCache.find(key);
211 } 211 }
212 212
213 if (NULL == entry) { 213 if (NULL == entry) {
214 return NULL; 214 return NULL;
215 } 215 }
216 216
217 if (ownershipFlags & kHide_OwnershipFlag) { 217 if (ownershipFlags & kHide_OwnershipFlag) {
218 this->makeExclusive(entry); 218 this->makeExclusive(entry);
219 } else { 219 } else {
220 // Make this resource MRU 220 // Make this resource MRU
221 this->internalDetach(entry); 221 this->internalDetach(entry);
222 this->attachToHead(entry); 222 this->attachToHead(entry);
223 } 223 }
224 224
225 return entry->fResource; 225 return entry->fResource;
226 } 226 }
227 227
228 void GrResourceCache::addResource(const GrResourceKey& key, 228 void GrResourceCache::addResource(const GrResourceKey& key,
229 GrGpuObject* resource, 229 GrGpuResource* resource,
230 uint32_t ownershipFlags) { 230 uint32_t ownershipFlags) {
231 SkASSERT(NULL == resource->getCacheEntry()); 231 SkASSERT(NULL == resource->getCacheEntry());
232 // we don't expect to create new resources during a purge. In theory 232 // we don't expect to create new resources during a purge. In theory
233 // this could cause purgeAsNeeded() into an infinite loop (e.g. 233 // this could cause purgeAsNeeded() into an infinite loop (e.g.
234 // each resource destroyed creates and locks 2 resources and 234 // each resource destroyed creates and locks 2 resources and
235 // unlocks 1 thereby causing a new purge). 235 // unlocks 1 thereby causing a new purge).
236 SkASSERT(!fPurging); 236 SkASSERT(!fPurging);
237 GrAutoResourceCacheValidate atcv(this); 237 GrAutoResourceCacheValidate atcv(this);
238 238
239 GrResourceCacheEntry* entry = SkNEW_ARGS(GrResourceCacheEntry, (this, key, r esource)); 239 GrResourceCacheEntry* entry = SkNEW_ARGS(GrResourceCacheEntry, (this, key, r esource));
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 fEntryBytes, fHighWaterEntryBytes); 536 fEntryBytes, fHighWaterEntryBytes);
537 SkDebugf("\t\tDetached Entry Count: current %d high %d\n", 537 SkDebugf("\t\tDetached Entry Count: current %d high %d\n",
538 fClientDetachedCount, fHighWaterClientDetachedCount); 538 fClientDetachedCount, fHighWaterClientDetachedCount);
539 SkDebugf("\t\tDetached Bytes: current %d high %d\n", 539 SkDebugf("\t\tDetached Bytes: current %d high %d\n",
540 fClientDetachedBytes, fHighWaterClientDetachedBytes); 540 fClientDetachedBytes, fHighWaterClientDetachedBytes);
541 } 541 }
542 542
543 #endif 543 #endif
544 544
545 /////////////////////////////////////////////////////////////////////////////// 545 ///////////////////////////////////////////////////////////////////////////////
OLDNEW
« no previous file with comments | « src/gpu/GrResourceCache.h ('k') | src/gpu/GrStencilAndCoverTextContext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698