"frame_number", \
recorder->GetFrameNumberTraceArg())
#define TRACE_EVENT1_WITH_FLOW_IDS(category_group, name, flow_id_count, flow_ids, arg1_name, arg1_val)
22 {
23
24
25
26
27
28
29class FrameTimingsRecorder {
30 public:
31
32
33
34 enum class State : uint32_t {
36 kVsync,
37 kBuildStart,
38 kBuildEnd,
39 kRasterStart,
40 kRasterEnd,
41 };
42
43
44 FrameTimingsRecorder();
45
46
47 explicit FrameTimingsRecorder(uint64_t frame_number);
48
49 ~FrameTimingsRecorder();
50
51
53
54
55
56
58
59
61
62
64
65
67
68
70
71
73
74
76
77
78 size_t GetLayerCacheCount() const;
79
80
81 size_t GetLayerCacheBytes() const;
82
83
84 size_t GetPictureCacheCount() const;
85
86
87 size_t GetPictureCacheBytes() const;
88
89
91
92
94
95
97
98
100
101
102 std::unique_ptr<FrameTimingsRecorder> CloneUntil(
State state);
103
104
105
106 FrameTiming RecordRasterEnd(const RasterCache* cache = nullptr);
107
108
109
110
111 uint64_t GetFrameNumber() const;
112
113
114 const char* GetFrameNumberTraceArg() const;
115
116
117 FrameTiming GetRecordedTime() const;
118
119
120
121
122
123
124
125
127
128 private:
129 FML_FRIEND_TEST(FrameTimingsRecorderTest, ThrowWhenRecordBuildBeforeVsync);
131 ThrowWhenRecordRasterBeforeBuildEnd);
132
138
139 static std::atomic<uint64_t> frame_number_gen_;
140
141 mutable std::mutex state_mutex_;
142 State state_ = State::kUninitialized;
143
144 const uint64_t frame_number_;
145 const std::string frame_number_trace_arg_val_;
146
154
155 size_t layer_cache_count_;
156 size_t layer_cache_bytes_;
157 size_t picture_cache_count_;
158 size_t picture_cache_bytes_;
159
160
161 FrameTiming timing_;
162
164};
165
166}
167
168#endif
#define FML_DISALLOW_COPY_ASSIGN_AND_MOVE(TypeName)
#define FML_FRIEND_TEST(test_case_name, test_name)