1 /* 2 * Copyright 2006 The Android Open Source Project 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 #include "include/core/SkGraphics.h" 9 10 #include "src/core/SkBitmapProcState.h" 11 #include "src/core/SkBlitMask.h" 12 #include "src/core/SkBlitRow.h" 13 #include "src/core/SkCpu.h" 14 #include "src/core/SkImageFilter_Base.h" 15 #include "src/core/SkMemset.h" 16 #include "src/core/SkOpts.h" 17 #include "src/core/SkResourceCache.h" 18 #include "src/core/SkStrikeCache.h" 19 #include "src/core/SkSwizzlePriv.h" 20 #include "src/core/SkTypefaceCache.h" 21 Init()22void SkGraphics::Init() { 23 // SkGraphics::Init() must be thread-safe and idempotent. 24 SkCpu::CacheRuntimeFeatures(); 25 SkOpts::Init(); 26 SkOpts::Init_BitmapProcState(); 27 SkOpts::Init_BlitMask(); 28 SkOpts::Init_BlitRow(); 29 SkOpts::Init_Memset(); 30 SkOpts::Init_Swizzler(); 31 } 32 33 /////////////////////////////////////////////////////////////////////////////// 34 DumpMemoryStatistics(SkTraceMemoryDump * dump)35void SkGraphics::DumpMemoryStatistics(SkTraceMemoryDump* dump) { 36 SkResourceCache::DumpMemoryStatistics(dump); 37 SkStrikeCache::DumpMemoryStatistics(dump); 38 } 39 PurgeAllCaches()40void SkGraphics::PurgeAllCaches() { 41 SkGraphics::PurgeFontCache(); 42 SkGraphics::PurgeResourceCache(); 43 SkImageFilter_Base::PurgeCache(); 44 } 45 46 /////////////////////////////////////////////////////////////////////////////// 47 GetFontCacheLimit()48size_t SkGraphics::GetFontCacheLimit() { 49 return SkStrikeCache::GlobalStrikeCache()->getCacheSizeLimit(); 50 } 51 SetFontCacheLimit(size_t bytes)52size_t SkGraphics::SetFontCacheLimit(size_t bytes) { 53 return SkStrikeCache::GlobalStrikeCache()->setCacheSizeLimit(bytes); 54 } 55 GetFontCacheUsed()56size_t SkGraphics::GetFontCacheUsed() { 57 return SkStrikeCache::GlobalStrikeCache()->getTotalMemoryUsed(); 58 } 59 GetFontCacheCountLimit()60int SkGraphics::GetFontCacheCountLimit() { 61 return SkStrikeCache::GlobalStrikeCache()->getCacheCountLimit(); 62 } 63 SetFontCacheCountLimit(int count)64int SkGraphics::SetFontCacheCountLimit(int count) { 65 return SkStrikeCache::GlobalStrikeCache()->setCacheCountLimit(count); 66 } 67 GetFontCacheCountUsed()68int SkGraphics::GetFontCacheCountUsed() { 69 return SkStrikeCache::GlobalStrikeCache()->getCacheCountUsed(); 70 } 71 PurgeFontCache()72void SkGraphics::PurgeFontCache() { 73 SkStrikeCache::GlobalStrikeCache()->purgeAll(); 74 SkTypefaceCache::PurgeAll(); 75 } 76 PurgePinnedFontCache()77void SkGraphics::PurgePinnedFontCache() { 78 SkStrikeCache::GlobalStrikeCache()->purgePinned(); 79 } 80 81 static int gTypefaceCacheCountLimit = 1024; // historical default value 82 GetTypefaceCacheCountLimit()83int SkGraphics::GetTypefaceCacheCountLimit() { 84 return gTypefaceCacheCountLimit; 85 } 86 SetTypefaceCacheCountLimit(int count)87int SkGraphics::SetTypefaceCacheCountLimit(int count) { 88 const int prev = gTypefaceCacheCountLimit; 89 gTypefaceCacheCountLimit = count; 90 return prev; 91 } 92 93 static SkGraphics::OpenTypeSVGDecoderFactory gSVGDecoderFactory = nullptr; 94 95 SkGraphics::OpenTypeSVGDecoderFactory SetOpenTypeSVGDecoderFactory(OpenTypeSVGDecoderFactory svgDecoderFactory)96SkGraphics::SetOpenTypeSVGDecoderFactory(OpenTypeSVGDecoderFactory svgDecoderFactory) { 97 OpenTypeSVGDecoderFactory old(gSVGDecoderFactory); 98 gSVGDecoderFactory = svgDecoderFactory; 99 return old; 100 } 101 GetOpenTypeSVGDecoderFactory()102SkGraphics::OpenTypeSVGDecoderFactory SkGraphics::GetOpenTypeSVGDecoderFactory() { 103 return gSVGDecoderFactory; 104 } 105