forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
skia_memory_dump_provider.cc
52 lines (43 loc) · 1.86 KB
/
skia_memory_dump_provider.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "skia_memory_dump_provider.h"
#include "base/trace_event/memory_allocator_dump.h"
#include "base/trace_event/memory_dump_manager.h"
#include "base/trace_event/process_memory_dump.h"
#include "skia/ext/skia_trace_memory_dump_impl.h"
#include "third_party/skia/include/core/SkGraphics.h"
namespace skia {
// static
SkiaMemoryDumpProvider* SkiaMemoryDumpProvider::GetInstance() {
return base::Singleton<
SkiaMemoryDumpProvider,
base::LeakySingletonTraits<SkiaMemoryDumpProvider>>::get();
}
SkiaMemoryDumpProvider::SkiaMemoryDumpProvider() = default;
SkiaMemoryDumpProvider::~SkiaMemoryDumpProvider() = default;
bool SkiaMemoryDumpProvider::OnMemoryDump(
const base::trace_event::MemoryDumpArgs& args,
base::trace_event::ProcessMemoryDump* process_memory_dump) {
if (args.level_of_detail ==
base::trace_event::MemoryDumpLevelOfDetail::BACKGROUND) {
auto* glyph_cache_dump =
process_memory_dump->CreateAllocatorDump("skia/sk_glyph_cache");
glyph_cache_dump->AddScalar(
base::trace_event::MemoryAllocatorDump::kNameSize,
base::trace_event::MemoryAllocatorDump::kUnitsBytes,
SkGraphics::GetFontCacheUsed());
auto* resource_cache_dump =
process_memory_dump->CreateAllocatorDump("skia/sk_resource_cache");
resource_cache_dump->AddScalar(
base::trace_event::MemoryAllocatorDump::kNameSize,
base::trace_event::MemoryAllocatorDump::kUnitsBytes,
SkGraphics::GetResourceCacheTotalBytesUsed());
return true;
}
SkiaTraceMemoryDumpImpl skia_dumper(args.level_of_detail,
process_memory_dump);
SkGraphics::DumpMemoryStatistics(&skia_dumper);
return true;
}
} // namespace skia