Skip to content

Commit bc90132

Browse files
authored
Revert "Add support for trace counters with variable arguments and instrument the raster cache. (flutter#8094)" (flutter#8122)
This reverts commit 2a0d354.
1 parent 2a0d354 commit bc90132

File tree

4 files changed

+19
-126
lines changed

4 files changed

+19
-126
lines changed

flow/raster_cache.cc

+2-33
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@ static RasterCacheResult Rasterize(
9797
bool checkerboard,
9898
const SkRect& logical_rect,
9999
std::function<void(SkCanvas*)> draw_function) {
100-
TRACE_EVENT0("flutter", "RasterCachePopulate");
101100
SkIRect cache_rect = RasterCache::GetDeviceBounds(logical_rect, ctm);
102101

103102
const SkImageInfo image_info = SkImageInfo::MakeN32Premul(
@@ -130,6 +129,8 @@ RasterCacheResult RasterizePicture(SkPicture* picture,
130129
const SkMatrix& ctm,
131130
SkColorSpace* dst_color_space,
132131
bool checkerboard) {
132+
TRACE_EVENT0("flutter", "RasterCachePopulate");
133+
133134
return Rasterize(context, ctm, dst_color_space, checkerboard,
134135
picture->cullRect(),
135136
[=](SkCanvas* canvas) { canvas->drawPicture(picture); });
@@ -239,7 +240,6 @@ void RasterCache::SweepAfterFrame() {
239240
SweepOneCacheAfterFrame<PictureCache, PictureCache::iterator>(picture_cache_);
240241
SweepOneCacheAfterFrame<LayerCache, LayerCache::iterator>(layer_cache_);
241242
picture_cached_this_frame_ = 0;
242-
TraceStatsToTimeline();
243243
}
244244

245245
void RasterCache::Clear() {
@@ -259,35 +259,4 @@ void RasterCache::SetCheckboardCacheImages(bool checkerboard) {
259259
Clear();
260260
}
261261

262-
void RasterCache::TraceStatsToTimeline() const {
263-
#if FLUTTER_RUNTIME_MODE != FLUTTER_RUNTIME_MODE_RELEASE
264-
265-
size_t layer_cache_count = 0;
266-
size_t layer_cache_bytes = 0;
267-
size_t picture_cache_count = 0;
268-
size_t picture_cache_bytes = 0;
269-
270-
for (const auto& item : layer_cache_) {
271-
const auto dimensions = item.second.image.image_dimensions();
272-
layer_cache_count++;
273-
layer_cache_bytes += dimensions.width() * dimensions.height() * 4;
274-
}
275-
276-
for (const auto& item : picture_cache_) {
277-
const auto dimensions = item.second.image.image_dimensions();
278-
picture_cache_count++;
279-
picture_cache_bytes += dimensions.width() * dimensions.height() * 4;
280-
}
281-
282-
FML_TRACE_COUNTER("flutter", "RasterCache",
283-
reinterpret_cast<int64_t>(this), //
284-
"LayerCount", layer_cache_count, //
285-
"LayerMBytes", layer_cache_bytes * 1e-6, //
286-
"PictureCount", picture_cache_count, //
287-
"PictureMBytes", picture_cache_bytes * 1e-6 //
288-
);
289-
290-
#endif // FLUTTER_RUNTIME_MODE != FLUTTER_RUNTIME_MODE_RELEASE
291-
}
292-
293262
} // namespace flow

flow/raster_cache.h

-7
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,6 @@ class RasterCacheResult {
3333

3434
void draw(SkCanvas& canvas, const SkPaint* paint = nullptr) const;
3535

36-
SkISize image_dimensions() const {
37-
return image_ ? image_->dimensions() : SkISize::Make(0, 0);
38-
};
39-
4036
private:
4137
sk_sp<SkImage> image_;
4238
SkRect logical_rect_;
@@ -91,7 +87,6 @@ class RasterCache {
9187
void Prepare(PrerollContext* context, Layer* layer, const SkMatrix& ctm);
9288

9389
RasterCacheResult Get(const SkPicture& picture, const SkMatrix& ctm) const;
94-
9590
RasterCacheResult Get(Layer* layer, const SkMatrix& ctm) const;
9691

9792
void SweepAfterFrame();
@@ -132,8 +127,6 @@ class RasterCache {
132127
bool checkerboard_images_;
133128
fml::WeakPtrFactory<RasterCache> weak_factory_;
134129

135-
void TraceStatsToTimeline() const;
136-
137130
FML_DISALLOW_COPY_AND_ASSIGN(RasterCache);
138131
};
139132

fml/trace_event.cc

+12-24
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,22 @@
44

55
#include "flutter/fml/trace_event.h"
66

7-
#include "flutter/fml/logging.h"
7+
#include "third_party/dart/runtime/include/dart_tools_api.h"
88

99
namespace fml {
1010
namespace tracing {
1111

12-
void TraceTimelineEvent(TraceArg category_group,
13-
TraceArg name,
14-
TraceIDArg identifier,
15-
Dart_Timeline_Event_Type type,
16-
const std::vector<const char*>& names,
17-
const std::vector<std::string>& values) {
18-
const auto argument_count = std::min(names.size(), values.size());
19-
20-
std::vector<const char*> c_values;
21-
c_values.resize(argument_count, nullptr);
22-
23-
for (size_t i = 0; i < argument_count; i++) {
24-
c_values[i] = values[i].c_str();
25-
}
26-
27-
Dart_TimelineEvent(
28-
name, // label
29-
Dart_TimelineGetMicros(), // timestamp0
30-
identifier, // timestamp1_or_async_id
31-
type, // event type
32-
argument_count, // argument_count
33-
const_cast<const char**>(names.data()), // argument_names
34-
const_cast<const char**>(c_values.data()) // argument_values
12+
void TraceCounter(TraceArg category_group, TraceArg name, TraceIDArg count) {
13+
auto count_string = std::to_string(count);
14+
const char* arg_names[] = {name};
15+
const char* arg_values[] = {count_string.c_str()};
16+
Dart_TimelineEvent(name, // label
17+
Dart_TimelineGetMicros(), // timestamp0
18+
0, // timestamp1_or_async_id
19+
Dart_Timeline_Event_Counter, // event type
20+
1, // argument_count
21+
arg_names, // argument_names
22+
arg_values // argument_values
3523
);
3624
}
3725

fml/trace_event.h

+5-62
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313

1414
#include <trace/event.h>
1515

16+
#define FML_TRACE_COUNTER(category_group, name, count) \
17+
TRACE_COUNTER(category_group, name, 0u, name, count)
1618
#define TRACE_EVENT0(a, b) TRACE_DURATION(a, b)
1719
#define TRACE_EVENT1(a, b, c, d) TRACE_DURATION(a, b, c, d)
1820
#define TRACE_EVENT2(a, b, c, d, e, f) TRACE_DURATION(a, b, c, d, e, f)
@@ -26,11 +28,8 @@
2628
#include <cstddef>
2729
#include <cstdint>
2830
#include <string>
29-
#include <type_traits>
30-
#include <vector>
3131

3232
#include "flutter/fml/macros.h"
33-
#include "third_party/dart/runtime/include/dart_tools_api.h"
3433

3534
#if !defined(OS_FUCHSIA)
3635

@@ -46,8 +45,8 @@
4645
// from trace/event.h on Fuchsia.
4746
//
4847
// TODO(chinmaygarde): All macros here should have the FML prefix.
49-
#define FML_TRACE_COUNTER(category_group, name, counter_id, arg1, args...) \
50-
::fml::tracing::TraceCounter(category_group, name, counter_id, arg1, ##args);
48+
#define FML_TRACE_COUNTER(category_group, name, count) \
49+
::fml::tracing::TraceCounter(category_group, name, count);
5150

5251
#define TRACE_EVENT0(category_group, name) \
5352
::fml::tracing::TraceEvent0(category_group, name); \
@@ -100,63 +99,7 @@ namespace tracing {
10099
using TraceArg = const char*;
101100
using TraceIDArg = int64_t;
102101

103-
void TraceTimelineEvent(TraceArg category_group,
104-
TraceArg name,
105-
TraceIDArg id,
106-
Dart_Timeline_Event_Type type,
107-
const std::vector<const char*>& names,
108-
const std::vector<std::string>& values);
109-
110-
inline std::string TraceToString(const char* string) {
111-
return std::string{string};
112-
}
113-
114-
inline std::string TraceToString(std::string string) {
115-
return string;
116-
}
117-
118-
template <typename T, typename = std::enable_if_t<std::is_arithmetic<T>::value>>
119-
std::string TraceToString(T string) {
120-
return std::to_string(string);
121-
}
122-
123-
inline void SplitArgumentsCollect(std::vector<const char*>& keys,
124-
std::vector<std::string>& values) {}
125-
126-
template <typename Key, typename Value, typename... Args>
127-
void SplitArgumentsCollect(std::vector<const char*>& keys,
128-
std::vector<std::string>& values,
129-
Key key,
130-
Value value,
131-
Args... args) {
132-
keys.emplace_back(key);
133-
values.emplace_back(TraceToString(value));
134-
SplitArgumentsCollect(keys, values, args...);
135-
}
136-
137-
inline std::pair<std::vector<const char*>, std::vector<std::string>>
138-
SplitArguments() {
139-
return {};
140-
}
141-
142-
template <typename Key, typename Value, typename... Args>
143-
std::pair<std::vector<const char*>, std::vector<std::string>>
144-
SplitArguments(Key key, Value value, Args... args) {
145-
std::vector<const char*> keys;
146-
std::vector<std::string> values;
147-
SplitArgumentsCollect(keys, values, key, value, args...);
148-
return std::make_pair(std::move(keys), std::move(values));
149-
}
150-
151-
template <typename... Args>
152-
void TraceCounter(TraceArg category,
153-
TraceArg name,
154-
TraceIDArg identifier,
155-
Args... args) {
156-
auto split = SplitArguments(args...);
157-
TraceTimelineEvent(category, name, identifier, Dart_Timeline_Event_Counter,
158-
split.first, split.second);
159-
}
102+
void TraceCounter(TraceArg category_group, TraceArg name, TraceIDArg count);
160103

161104
void TraceEvent0(TraceArg category_group, TraceArg name);
162105

0 commit comments

Comments
 (0)