Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
SkDiscardableMemoryPool.h
Go to the documentation of this file.
1/*
2 * Copyright 2013 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkDiscardableMemoryPool_DEFINED
9#define SkDiscardableMemoryPool_DEFINED
10
13
14#ifndef SK_LAZY_CACHE_STATS
15 #ifdef SK_DEBUG
16 #define SK_LAZY_CACHE_STATS 1
17 #else
18 #define SK_LAZY_CACHE_STATS 0
19 #endif
20#endif
21
22/**
23 * An implementation of Discardable Memory that manages a fixed-size
24 * budget of memory. When the allocated memory exceeds this size,
25 * unlocked blocks of memory are purged. If all memory is locked, it
26 * can exceed the memory-use budget.
27 */
29public:
30 virtual size_t getRAMUsed() = 0;
31 virtual void setRAMBudget(size_t budget) = 0;
32 virtual size_t getRAMBudget() = 0;
33
34 /** purges all unlocked DMs */
35 virtual void dumpPool() = 0;
36
37 #if SK_LAZY_CACHE_STATS
38 /**
39 * These two values are a count of the number of successful and
40 * failed calls to SkDiscardableMemory::lock() for all DMs managed
41 * by this pool.
42 */
43 virtual int getCacheHits() = 0;
44 virtual int getCacheMisses() = 0;
45 virtual void resetCacheHitsAndMisses() = 0;
46 #endif
47
48 /**
49 * This non-global pool can be used for unit tests to verify that
50 * the pool works.
51 */
52 static sk_sp<SkDiscardableMemoryPool> Make(size_t size);
53};
54
55/**
56 * Returns (and creates if needed) a threadsafe global
57 * SkDiscardableMemoryPool.
58 */
60
61#if !defined(SK_DEFAULT_GLOBAL_DISCARDABLE_MEMORY_POOL_SIZE)
62#define SK_DEFAULT_GLOBAL_DISCARDABLE_MEMORY_POOL_SIZE (128 * 1024 * 1024)
63#endif
64
65#endif // SkDiscardableMemoryPool_DEFINED
SkDiscardableMemoryPool * SkGetGlobalDiscardableMemoryPool()
virtual void dumpPool()=0
static sk_sp< SkDiscardableMemoryPool > Make(size_t size)
virtual size_t getRAMUsed()=0
virtual void setRAMBudget(size_t budget)=0
virtual size_t getRAMBudget()=0