blob: d7de2f6413c602af32ee1dd88969d1f322f5045d [file] [log] [blame]
/*
* Copyright 2006 The Android Open Source Project
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "include/core/SkGraphics.h"
#include "src/core/SkBitmapProcState.h"
#include "src/core/SkBlitMask.h"
#include "src/core/SkBlitRow.h"
#include "src/core/SkCpu.h"
#include "src/core/SkImageFilter_Base.h"
#include "src/core/SkMemset.h"
#include "src/core/SkOpts.h"
#include "src/core/SkResourceCache.h"
#include "src/core/SkStrikeCache.h"
#include "src/core/SkSwizzlePriv.h"
#include "src/core/SkTypefaceCache.h"
void SkGraphics::Init() {
// SkGraphics::Init() must be thread-safe and idempotent.
SkCpu::CacheRuntimeFeatures();
SkOpts::Init();
SkOpts::Init_BitmapProcState();
SkOpts::Init_BlitMask();
SkOpts::Init_BlitRow();
SkOpts::Init_Memset();
SkOpts::Init_Swizzler();
}
///////////////////////////////////////////////////////////////////////////////
void SkGraphics::DumpMemoryStatistics(SkTraceMemoryDump* dump) {
SkResourceCache::DumpMemoryStatistics(dump);
SkStrikeCache::DumpMemoryStatistics(dump);
}
void SkGraphics::PurgeAllCaches() {
SkGraphics::PurgeFontCache();
SkGraphics::PurgeResourceCache();
SkImageFilter_Base::PurgeCache();
}
///////////////////////////////////////////////////////////////////////////////
size_t SkGraphics::GetFontCacheLimit() {
return SkStrikeCache::GlobalStrikeCache()->getCacheSizeLimit();
}
size_t SkGraphics::SetFontCacheLimit(size_t bytes) {
return SkStrikeCache::GlobalStrikeCache()->setCacheSizeLimit(bytes);
}
size_t SkGraphics::GetFontCacheUsed() {
return SkStrikeCache::GlobalStrikeCache()->getTotalMemoryUsed();
}
int SkGraphics::GetFontCacheCountLimit() {
return SkStrikeCache::GlobalStrikeCache()->getCacheCountLimit();
}
int SkGraphics::SetFontCacheCountLimit(int count) {
return SkStrikeCache::GlobalStrikeCache()->setCacheCountLimit(count);
}
int SkGraphics::GetFontCacheCountUsed() {
return SkStrikeCache::GlobalStrikeCache()->getCacheCountUsed();
}
void SkGraphics::PurgeFontCache() {
SkStrikeCache::GlobalStrikeCache()->purgeAll();
SkTypefaceCache::PurgeAll();
}
void SkGraphics::PurgePinnedFontCache() {
SkStrikeCache::GlobalStrikeCache()->purgePinned();
}
static int gTypefaceCacheCountLimit = 1024; // historical default value
int SkGraphics::GetTypefaceCacheCountLimit() {
return gTypefaceCacheCountLimit;
}
int SkGraphics::SetTypefaceCacheCountLimit(int count) {
const int prev = gTypefaceCacheCountLimit;
gTypefaceCacheCountLimit = count;
return prev;
}
static SkGraphics::OpenTypeSVGDecoderFactory gSVGDecoderFactory = nullptr;
SkGraphics::OpenTypeSVGDecoderFactory
SkGraphics::SetOpenTypeSVGDecoderFactory(OpenTypeSVGDecoderFactory svgDecoderFactory) {
OpenTypeSVGDecoderFactory old(gSVGDecoderFactory);
gSVGDecoderFactory = svgDecoderFactory;
return old;
}
SkGraphics::OpenTypeSVGDecoderFactory SkGraphics::GetOpenTypeSVGDecoderFactory() {
return gSVGDecoderFactory;
}