OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #ifndef GrGpuResource_DEFINED | 8 #ifndef GrGpuResource_DEFINED |
9 #define GrGpuResource_DEFINED | 9 #define GrGpuResource_DEFINED |
10 | 10 |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 SkASSERT(kInvalidGpuMemorySize != fGpuMemorySize); | 173 SkASSERT(kInvalidGpuMemorySize != fGpuMemorySize); |
174 } | 174 } |
175 return fGpuMemorySize; | 175 return fGpuMemorySize; |
176 } | 176 } |
177 | 177 |
178 /** | 178 /** |
179 * Gets an id that is unique for this GrGpuResource object. It is static in
that it does | 179 * Gets an id that is unique for this GrGpuResource object. It is static in
that it does |
180 * not change when the content of the GrGpuResource object changes. This wil
l never return | 180 * not change when the content of the GrGpuResource object changes. This wil
l never return |
181 * 0. | 181 * 0. |
182 */ | 182 */ |
183 uint32_t getUniqueID() const { return fUniqueID; } | 183 uint32_t uniqueID() const { return fUniqueID; } |
184 | 184 |
185 /** Returns the current unique key for the resource. It will be invalid if t
he resource has no | 185 /** Returns the current unique key for the resource. It will be invalid if t
he resource has no |
186 associated unique key. */ | 186 associated unique key. */ |
187 const GrUniqueKey& getUniqueKey() const { return fUniqueKey; } | 187 const GrUniqueKey& getUniqueKey() const { return fUniqueKey; } |
188 | 188 |
189 /** | 189 /** |
190 * Internal-only helper class used for manipulations of the resource by the
cache. | 190 * Internal-only helper class used for manipulations of the resource by the
cache. |
191 */ | 191 */ |
192 class CacheAccess; | 192 class CacheAccess; |
193 inline CacheAccess cacheAccess(); | 193 inline CacheAccess cacheAccess(); |
(...skipping 16 matching lines...) Expand all Loading... |
210 */ | 210 */ |
211 void abandon(); | 211 void abandon(); |
212 | 212 |
213 /** | 213 /** |
214 * Dumps memory usage information for this GrGpuResource to traceMemoryDump. | 214 * Dumps memory usage information for this GrGpuResource to traceMemoryDump. |
215 * Typically, subclasses should not need to override this, and should only | 215 * Typically, subclasses should not need to override this, and should only |
216 * need to override setMemoryBacking. | 216 * need to override setMemoryBacking. |
217 **/ | 217 **/ |
218 virtual void dumpMemoryStatistics(SkTraceMemoryDump* traceMemoryDump) const; | 218 virtual void dumpMemoryStatistics(SkTraceMemoryDump* traceMemoryDump) const; |
219 | 219 |
| 220 static uint32_t CreateUniqueID(); |
| 221 |
220 protected: | 222 protected: |
221 // This must be called by every non-wrapped GrGpuObject. It should be called
once the object is | 223 // This must be called by every non-wrapped GrGpuObject. It should be called
once the object is |
222 // fully initialized (i.e. only from the constructors of the final class). | 224 // fully initialized (i.e. only from the constructors of the final class). |
223 void registerWithCache(SkBudgeted); | 225 void registerWithCache(SkBudgeted); |
224 | 226 |
225 // This must be called by every GrGpuObject that references any wrapped back
end objects. It | 227 // This must be called by every GrGpuObject that references any wrapped back
end objects. It |
226 // should be called once the object is fully initialized (i.e. only from the
constructors of the | 228 // should be called once the object is fully initialized (i.e. only from the
constructors of the |
227 // final class). | 229 // final class). |
228 void registerWithCacheWrapped(); | 230 void registerWithCacheWrapped(); |
229 | 231 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 void removeUniqueKey(); | 274 void removeUniqueKey(); |
273 void notifyAllCntsAreZero(CntType) const; | 275 void notifyAllCntsAreZero(CntType) const; |
274 bool notifyRefCountIsZero() const; | 276 bool notifyRefCountIsZero() const; |
275 void removeScratchKey(); | 277 void removeScratchKey(); |
276 void makeBudgeted(); | 278 void makeBudgeted(); |
277 void makeUnbudgeted(); | 279 void makeUnbudgeted(); |
278 | 280 |
279 #ifdef SK_DEBUG | 281 #ifdef SK_DEBUG |
280 friend class GrGpu; // for assert in GrGpu to access getGpu | 282 friend class GrGpu; // for assert in GrGpu to access getGpu |
281 #endif | 283 #endif |
282 | |
283 static uint32_t CreateUniqueID(); | |
284 | |
285 // An index into a heap when this resource is purgeable or an array when not
. This is maintained | 284 // An index into a heap when this resource is purgeable or an array when not
. This is maintained |
286 // by the cache. | 285 // by the cache. |
287 int fCacheArrayIndex; | 286 int fCacheArrayIndex; |
288 // This value reflects how recently this resource was accessed in the cache.
This is maintained | 287 // This value reflects how recently this resource was accessed in the cache.
This is maintained |
289 // by the cache. | 288 // by the cache. |
290 uint32_t fTimestamp; | 289 uint32_t fTimestamp; |
291 | 290 |
292 static const size_t kInvalidGpuMemorySize = ~static_cast<size_t>(0); | 291 static const size_t kInvalidGpuMemorySize = ~static_cast<size_t>(0); |
293 GrScratchKey fScratchKey; | 292 GrScratchKey fScratchKey; |
294 GrUniqueKey fUniqueKey; | 293 GrUniqueKey fUniqueKey; |
295 | 294 |
296 // This is not ref'ed but abandon() or release() will be called before the G
rGpu object | 295 // This is not ref'ed but abandon() or release() will be called before the G
rGpu object |
297 // is destroyed. Those calls set will this to NULL. | 296 // is destroyed. Those calls set will this to NULL. |
298 GrGpu* fGpu; | 297 GrGpu* fGpu; |
299 mutable size_t fGpuMemorySize; | 298 mutable size_t fGpuMemorySize; |
300 | 299 |
301 SkBudgeted fBudgeted; | 300 SkBudgeted fBudgeted; |
302 bool fRefsWrappedObjects; | 301 bool fRefsWrappedObjects; |
303 const uint32_t fUniqueID; | 302 const uint32_t fUniqueID; |
304 | 303 |
305 typedef GrIORef<GrGpuResource> INHERITED; | 304 typedef GrIORef<GrGpuResource> INHERITED; |
306 friend class GrIORef<GrGpuResource>; // to access notifyAllCntsAreZero and n
otifyRefCntIsZero. | 305 friend class GrIORef<GrGpuResource>; // to access notifyAllCntsAreZero and n
otifyRefCntIsZero. |
307 }; | 306 }; |
308 | 307 |
309 #endif | 308 #endif |
OLD | NEW |