aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/gpu/GrGpuResource.h
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2017-03-22 10:04:27 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-22 14:42:11 +0000
commitfbb56ce83fc717b7c6722324bbccd1ae73c350a4 (patch)
tree0025d8cca6e55eb2fd25b370f7c1bded5e5e910c /include/gpu/GrGpuResource.h
parentb667fe2f67a072da74d7a7da32cae4f06a2f0ee4 (diff)
Add a new GrResourceCache purging mechanism for purging unused resources.
The client may call GrContext::purgeResourceNotUsedSince() with a stead_clock::time_point and all resources that have been purgeable since before that time point are purged. This is intended to replace the "max unused flushes" purging mechanism once Chrome adopts it. Change-Id: I28881dd2959cc01c0acca81b2d6001ee5626439d Reviewed-on: https://skia-review.googlesource.com/8920 Commit-Queue: Brian Salomon <bsalomon@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com> Reviewed-by: Eric Karl <ericrk@google.com>
Diffstat (limited to 'include/gpu/GrGpuResource.h')
-rw-r--r--include/gpu/GrGpuResource.h25
1 files changed, 14 insertions, 11 deletions
diff --git a/include/gpu/GrGpuResource.h b/include/gpu/GrGpuResource.h
index e0a7903f1d..1c4cbfa104 100644
--- a/include/gpu/GrGpuResource.h
+++ b/include/gpu/GrGpuResource.h
@@ -8,6 +8,7 @@
#ifndef GrGpuResource_DEFINED
#define GrGpuResource_DEFINED
+#include <chrono>
#include "GrResourceKey.h"
#include "GrTypesPriv.h"
@@ -315,28 +316,30 @@ private:
void makeUnbudgeted();
#ifdef SK_DEBUG
- friend class GrGpu; // for assert in GrGpu to access getGpu
+ friend class GrGpu; // for assert in GrGpu to access getGpu
#endif
+
// An index into a heap when this resource is purgeable or an array when not. This is maintained
// by the cache.
- int fCacheArrayIndex;
+ int fCacheArrayIndex;
// This value reflects how recently this resource was accessed in the cache. This is maintained
// by the cache.
- uint32_t fTimestamp;
- uint32_t fExternalFlushCntWhenBecamePurgeable;
+ uint32_t fTimestamp;
+ uint32_t fExternalFlushCntWhenBecamePurgeable;
+ std::chrono::steady_clock::time_point fTimeWhenBecamePurgeable;
static const size_t kInvalidGpuMemorySize = ~static_cast<size_t>(0);
- GrScratchKey fScratchKey;
- GrUniqueKey fUniqueKey;
+ GrScratchKey fScratchKey;
+ GrUniqueKey fUniqueKey;
// This is not ref'ed but abandon() or release() will be called before the GrGpu object
// is destroyed. Those calls set will this to NULL.
- GrGpu* fGpu;
- mutable size_t fGpuMemorySize;
+ GrGpu* fGpu;
+ mutable size_t fGpuMemorySize;
- SkBudgeted fBudgeted;
- bool fRefsWrappedObjects;
- const UniqueID fUniqueID;
+ SkBudgeted fBudgeted;
+ bool fRefsWrappedObjects;
+ const UniqueID fUniqueID;
typedef GrIORef<GrGpuResource> INHERITED;
friend class GrIORef<GrGpuResource>; // to access notifyAllCntsAreZero and notifyRefCntIsZero.