-
Notifications
You must be signed in to change notification settings - Fork 6k
[profiling] CPU Profiling support for iOS #18087
Conversation
chinmaygarde
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some initial comments. All minor, direction looks sound.
| ui_thread.reset(); | ||
| raster_thread.reset(); | ||
| io_thread.reset(); | ||
| profiler_thread.reset(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Profiling applies to all shells in the process. Ideally, there would only be one profiler in the process at any given time with the shells having to ability to turn this on or off. How about putting this thread by the concurrent message loop threads in DartVM (which is also process global) or just using the one of the threads in the concurrent thread pool?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@chinmaygarde I agree that there only needs to be one profiler for all the shells. Moving this to the concurrent thread loop is a more involved change, given that the concurrent thread loops don't have scheduling mechanisms (at fixed delays).
Mind if I file an issue for this and address it in a follow up change. I think this will be useful as-is.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good.
| total_cpu_usage += current_thread_cpu_usage; | ||
| } | ||
|
|
||
| kernel_return_code = vm_deallocate(mach_task_self(), (vm_offset_t)threads, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will be leaked if thread_info does not return KERN_SUCCESS above because of the early return. Consider using fml::ScopedCleanupClosure or a fml::UniqueObject for an RAII wrapper around threads.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did we just find a memory link in Tencent's performance library https://github.com/Tencent/matrix/blob/58d9c6ba248a5e58ed8c69b3b69b41b3b098832b/matrix/matrix-iOS/Matrix/WCCrashBlockMonitor/CrashBlockPlugin/Main/BlockMonitor/Handler/WCPowerConsumeStackCollector.mm#L642 ?
Anyway, I think https://github.com/Tencent/matrix/ might be a useful reference once we're getting more profiling metrics.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I think its a leak in their lib. I've moved to using an RAII container, I tried UniqueObject but given that the Free method in the traits would require me to wire in num_threads as well, I decided to use an RAII class.
| mach_msg_type_number_t thread_info_count = THREAD_BASIC_INFO_COUNT; | ||
| kernel_return_code = | ||
| thread_info(threads[i], THREAD_BASIC_INFO, | ||
| (thread_info_t)&basic_thread_info, &thread_info_count); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here and elsewhere, avoid C-style casts (go/fluttercpp#Casting).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TIL: go link can also have a hash anchor tag!
shell/profiling/profiler.h
Outdated
|
|
||
| namespace flutter { | ||
|
|
||
| struct CpuUsageInfo { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: CPUUsageInfo? The casing seems off either way. Your call.
shell/profiling/profiler.h
Outdated
|
|
||
| namespace flutter { | ||
|
|
||
| struct CpuUsageInfo { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please add docs in Doxygen format for these fields. Specifically, the following clarifications would help me.
- Is
num_threadsthe threads used by the process, shell, or more likenproc? - Is total CPU usage a percentage? Is it normalized to logical core count?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Is it normalized to logical core count?" is especially important to clarify. Different platforms may report normalized or unnormalized results so we probably have to convert on our side. AFAIK, iOS can report 100% on a single-threaded process while adb can only report up to 25% on a single-threaded process if there are 4 cores.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done!
shell/profiling/profiler.h
Outdated
| CpuUsage cpu_usage, | ||
| int num_samples_per_sec); | ||
|
|
||
| void Start(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
bool Start() const; The return type because it would be easier for caller to check for errors and prefer const correctness always (go/fluttercpp#Use_of_const)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done!
shell/profiling/profiler.h
Outdated
| // application. Sometimes the sampler can fail, hence the optional. | ||
| using CpuUsage = std::function<std::optional<CpuUsageInfo>(void)>; | ||
|
|
||
| class Profiler { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here and elsewhere, docs in doxygen format.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
cc: @AlbertWang0116 for situational awareness. |
| mach_msg_type_number_t thread_info_count = THREAD_BASIC_INFO_COUNT; | ||
| kernel_return_code = | ||
| thread_info(threads[i], THREAD_BASIC_INFO, | ||
| (thread_info_t)&basic_thread_info, &thread_info_count); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TIL: go link can also have a hash anchor tag!
shell/profiling/profiler.h
Outdated
|
|
||
| namespace flutter { | ||
|
|
||
| struct CpuUsageInfo { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Is it normalized to logical core count?" is especially important to clarify. Different platforms may report normalized or unnormalized results so we probably have to convert on our side. AFAIK, iOS can report 100% on a single-threaded process while adb can only report up to 25% on a single-threaded process if there are 4 cores.
shell/profiling/profiler.h
Outdated
| // application. Sometimes the sampler can fail, hence the optional. | ||
| using CpuUsage = std::function<std::optional<CpuUsageInfo>(void)>; | ||
|
|
||
| class Profiler { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
|
||
| namespace flutter { | ||
|
|
||
| std::optional<flutter::CpuUsageInfo> CpuUsageIOS() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not very familiar with Objective C++: is there any specific reason why one can't define this function in a .cpp or .mm file?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Moved it to a .mm file.
| } | ||
| const double current_thread_cpu_usage = | ||
| basic_thread_info.cpu_usage / static_cast<float>(TH_USAGE_SCALE); | ||
| total_cpu_usage += current_thread_cpu_usage; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if we also have to consider the difference between big (high performance) cores and small (high efficiency) cores? A 100% big core thread probably consumes more energy than a 100% small core thread (https://en.wikipedia.org/wiki/Apple_A12) so we might have to normalize accordingly. So far I couldn't Google any code that treats different cores separately so I'm Ok with this approach.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
very interesting point. I haven't considered this.
| // initialized. | ||
| fml::MessageLoop::EnsureInitializedForCurrentThread(); | ||
|
|
||
| // TODO (kaushikiska): enable Profiler thread only in debug configurations. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"in debug" -> "in debug and profile"?
shell/profiling/profiler.h
Outdated
|
|
||
| // Return value is the total CPU time spent by all threads owned by the current | ||
| // application. Sometimes the sampler can fail, hence the optional. | ||
| using CpuUsage = std::function<std::optional<CpuUsageInfo>(void)>; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rename CpuUsage to CpuUsageGenerator? My first glance of CpuUsage makes me think that it's the same as CpuUsageInfo.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Moved this to ProfileSample struct.
shell/profiling/profiler.cc
Outdated
| RunTask(task_delay); | ||
| } | ||
|
|
||
| void Profiler::RunTask(fml::TimeDelta task_delay) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: rename RunTask(task_delay) to SampleRepeatedly(sample_interval)? RunTask seems to suggest that it's running only once.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
shell/profiling/profiler.cc
Outdated
| namespace flutter { | ||
|
|
||
| Profiler::Profiler(fml::RefPtr<fml::TaskRunner> profiler_task_runner, | ||
| CpuUsage cpu_usage, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's the plan when we add more to the profiler, such as memory or gpu usages?
We can add GpuUsage, MemoryUsage, ..., to the initialization list but it can get very long.
Shall we just send in a Sampler instead of CpuUsage (or CpuUsageGenerator)? Each platform can implement its own Sampler where calling Sampler() returns a ProfileSample that currently only has cpu usages, but can later expand?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yup, makes sense.
| #define TRACE_EVENT_ASYNC_BEGIN1(a, b, c, d, e) TRACE_ASYNC_BEGIN(a, b, c, d, e) | ||
| #define TRACE_EVENT_ASYNC_END1(a, b, c, d, e) TRACE_ASYNC_END(a, b, c, d, e) | ||
| #define TRACE_EVENT_INSTANT0(a, b) TRACE_INSTANT(a, b, TRACE_SCOPE_THREAD) | ||
| #define TRACE_EVENT_INSTANT1(a, b, k1, v1) \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TRACE_EVENT_INSTANT1 seems to be unused.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's nice to have 0, 1 and 2 rather than just 0 and 2. If you feel strongly about this, I can remove it.
a0bfd17 to
b6e8980
Compare
liyuqian
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Most look good! Left a few minor comments below. Defer the final LGTM to Chinmay as the threading issue seems to be the biggest concern so far.
|
|
||
| // RAII holder for `thread_array_t` this is so any early returns in | ||
| // `ProfilerMetricsIOS::CpuUsage` don't leak them. | ||
| class MachThreads { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems that we can also do task_threads(mach_task_self(), &mach_threads.threads, &mach_threads.thread_count); inside the constructor of this class.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it would make failing early by returning std::nullopt rather ugly. I left it as is for now.
| double total_cpu_usage; | ||
| }; | ||
|
|
||
| struct ProfileSample { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We may need doxygen docs for all public classes and functions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done, i've added them for places where i think they would add value and left them out at places where i don't think they'd add more value over the method name for example.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BTW, I have found this plugin to be really useful in helping dealing with some of the more tedious aspects of generating documentation stubs https://packagecontrol.io/packages/DoxyDoxygen
| ui_thread.reset(); | ||
| raster_thread.reset(); | ||
| io_thread.reset(); | ||
| profiler_thread.reset(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good.
| double total_cpu_usage; | ||
| }; | ||
|
|
||
| struct ProfileSample { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BTW, I have found this plugin to be really useful in helping dealing with some of the more tedious aspects of generating documentation stubs https://packagecontrol.io/packages/DoxyDoxygen
|
This pull request is not suitable for automatic merging in its current state.
|
See flutter.dev/go/engine-cpu-profiling for details
|
This pull request is not suitable for automatic merging in its current state.
|
|
"Mac Web Engine" failure was a flake. I've submitted this PR and will keep an eye out for LUCI failures. |
[email protected]:flutter/engine.git/compare/3953c3ccd15a...88b9d42 git log 3953c3c..88b9d42 --first-parent --oneline 2020-05-07 [email protected] Remove the global engine entry timestamp (flutter/engine#18182) 2020-05-07 [email protected] Roll src/third_party/dart e86e4d61834a..ce62ad2e8b40 (13 commits) (flutter/engine#18201) 2020-05-07 [email protected] Roll src/third_party/skia 2871ab0727bf..edea19858ccc (3 commits) (flutter/engine#18198) 2020-05-07 [email protected] Fixed ChildSceneLayer elevation issue on Fuchsia. (flutter/engine#18144) 2020-05-07 [email protected] [profiling] CPU Profiling support for iOS (flutter/engine#18087) 2020-05-07 [email protected] Roll src/third_party/skia e3d1de7c5281..2871ab0727bf (1 commits) (flutter/engine#18197) 2020-05-07 [email protected] Roll src/third_party/dart 733153eb517c..e86e4d61834a (6 commits) (flutter/engine#18195) 2020-05-07 [email protected] Roll src/third_party/skia 3b2db26c59d6..e3d1de7c5281 (4 commits) (flutter/engine#18192) 2020-05-07 [email protected] Roll fuchsia/sdk/core/mac-amd64 from jMJqf... to 1MVsE... (flutter/engine#18194) 2020-05-07 [email protected] Roll fuchsia/sdk/core/linux-amd64 from RpHTv... to MhpFP... (flutter/engine#18191) 2020-05-07 [email protected] Roll src/third_party/skia 88d04cb51acf..3b2db26c59d6 (1 commits) (flutter/engine#18190) 2020-05-07 [email protected] Roll src/third_party/dart 4da5b40fb6dc..733153eb517c (23 commits) (flutter/engine#18188) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
[email protected]:flutter/engine.git/compare/3953c3ccd15a...88b9d42 git log 3953c3c..88b9d42 --first-parent --oneline 2020-05-07 [email protected] Remove the global engine entry timestamp (flutter/engine#18182) 2020-05-07 [email protected] Roll src/third_party/dart e86e4d61834a..ce62ad2e8b40 (13 commits) (flutter/engine#18201) 2020-05-07 [email protected] Roll src/third_party/skia 2871ab0727bf..edea19858ccc (3 commits) (flutter/engine#18198) 2020-05-07 [email protected] Fixed ChildSceneLayer elevation issue on Fuchsia. (flutter/engine#18144) 2020-05-07 [email protected] [profiling] CPU Profiling support for iOS (flutter/engine#18087) 2020-05-07 [email protected] Roll src/third_party/skia e3d1de7c5281..2871ab0727bf (1 commits) (flutter/engine#18197) 2020-05-07 [email protected] Roll src/third_party/dart 733153eb517c..e86e4d61834a (6 commits) (flutter/engine#18195) 2020-05-07 [email protected] Roll src/third_party/skia 3b2db26c59d6..e3d1de7c5281 (4 commits) (flutter/engine#18192) 2020-05-07 [email protected] Roll fuchsia/sdk/core/mac-amd64 from jMJqf... to 1MVsE... (flutter/engine#18194) 2020-05-07 [email protected] Roll fuchsia/sdk/core/linux-amd64 from RpHTv... to MhpFP... (flutter/engine#18191) 2020-05-07 [email protected] Roll src/third_party/skia 88d04cb51acf..3b2db26c59d6 (1 commits) (flutter/engine#18190) 2020-05-07 [email protected] Roll src/third_party/dart 4da5b40fb6dc..733153eb517c (23 commits) (flutter/engine#18188) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
[email protected]:flutter/engine.git/compare/3953c3ccd15a...5e7d6d0 git log 3953c3c..5e7d6d0 --first-parent --oneline 2020-05-07 [email protected] Roll src/third_party/skia edea19858ccc..0066adefa97d (3 commits) (flutter/engine#18203) 2020-05-07 [email protected] Remove the global engine entry timestamp (flutter/engine#18182) 2020-05-07 [email protected] Roll src/third_party/dart e86e4d61834a..ce62ad2e8b40 (13 commits) (flutter/engine#18201) 2020-05-07 [email protected] Roll src/third_party/skia 2871ab0727bf..edea19858ccc (3 commits) (flutter/engine#18198) 2020-05-07 [email protected] Fixed ChildSceneLayer elevation issue on Fuchsia. (flutter/engine#18144) 2020-05-07 [email protected] [profiling] CPU Profiling support for iOS (flutter/engine#18087) 2020-05-07 [email protected] Roll src/third_party/skia e3d1de7c5281..2871ab0727bf (1 commits) (flutter/engine#18197) 2020-05-07 [email protected] Roll src/third_party/dart 733153eb517c..e86e4d61834a (6 commits) (flutter/engine#18195) 2020-05-07 [email protected] Roll src/third_party/skia 3b2db26c59d6..e3d1de7c5281 (4 commits) (flutter/engine#18192) 2020-05-07 [email protected] Roll fuchsia/sdk/core/mac-amd64 from jMJqf... to 1MVsE... (flutter/engine#18194) 2020-05-07 [email protected] Roll fuchsia/sdk/core/linux-amd64 from RpHTv... to MhpFP... (flutter/engine#18191) 2020-05-07 [email protected] Roll src/third_party/skia 88d04cb51acf..3b2db26c59d6 (1 commits) (flutter/engine#18190) 2020-05-07 [email protected] Roll src/third_party/dart 4da5b40fb6dc..733153eb517c (23 commits) (flutter/engine#18188) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
[email protected]:flutter/engine.git/compare/3953c3ccd15a...e5a7ca5 git log 3953c3c..e5a7ca5 --first-parent --oneline 2020-05-07 [email protected] Handle leak of message handle when no engine present (flutter/engine#18157) 2020-05-07 [email protected] add docs to platformviewios (and some drive-by changes) (flutter/engine#17593) 2020-05-07 [email protected] Roll src/third_party/skia 0066adefa97d..c66cd987f7c0 (4 commits) (flutter/engine#18206) 2020-05-07 [email protected] Roll src/third_party/skia edea19858ccc..0066adefa97d (3 commits) (flutter/engine#18203) 2020-05-07 [email protected] Remove the global engine entry timestamp (flutter/engine#18182) 2020-05-07 [email protected] Roll src/third_party/dart e86e4d61834a..ce62ad2e8b40 (13 commits) (flutter/engine#18201) 2020-05-07 [email protected] Roll src/third_party/skia 2871ab0727bf..edea19858ccc (3 commits) (flutter/engine#18198) 2020-05-07 [email protected] Fixed ChildSceneLayer elevation issue on Fuchsia. (flutter/engine#18144) 2020-05-07 [email protected] [profiling] CPU Profiling support for iOS (flutter/engine#18087) 2020-05-07 [email protected] Roll src/third_party/skia e3d1de7c5281..2871ab0727bf (1 commits) (flutter/engine#18197) 2020-05-07 [email protected] Roll src/third_party/dart 733153eb517c..e86e4d61834a (6 commits) (flutter/engine#18195) 2020-05-07 [email protected] Roll src/third_party/skia 3b2db26c59d6..e3d1de7c5281 (4 commits) (flutter/engine#18192) 2020-05-07 [email protected] Roll fuchsia/sdk/core/mac-amd64 from jMJqf... to 1MVsE... (flutter/engine#18194) 2020-05-07 [email protected] Roll fuchsia/sdk/core/linux-amd64 from RpHTv... to MhpFP... (flutter/engine#18191) 2020-05-07 [email protected] Roll src/third_party/skia 88d04cb51acf..3b2db26c59d6 (1 commits) (flutter/engine#18190) 2020-05-07 [email protected] Roll src/third_party/dart 4da5b40fb6dc..733153eb517c (23 commits) (flutter/engine#18188) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
[email protected]:flutter/engine.git/compare/3953c3ccd15a...15f72b8 git log 3953c3c..15f72b8 --first-parent --oneline 2020-05-07 [email protected] Support EventChannel C++ plugin API for Linux/Windows (flutter/engine#17015) 2020-05-07 [email protected] Handle leak of message handle when no engine present (flutter/engine#18157) 2020-05-07 [email protected] add docs to platformviewios (and some drive-by changes) (flutter/engine#17593) 2020-05-07 [email protected] Roll src/third_party/skia 0066adefa97d..c66cd987f7c0 (4 commits) (flutter/engine#18206) 2020-05-07 [email protected] Roll src/third_party/skia edea19858ccc..0066adefa97d (3 commits) (flutter/engine#18203) 2020-05-07 [email protected] Remove the global engine entry timestamp (flutter/engine#18182) 2020-05-07 [email protected] Roll src/third_party/dart e86e4d61834a..ce62ad2e8b40 (13 commits) (flutter/engine#18201) 2020-05-07 [email protected] Roll src/third_party/skia 2871ab0727bf..edea19858ccc (3 commits) (flutter/engine#18198) 2020-05-07 [email protected] Fixed ChildSceneLayer elevation issue on Fuchsia. (flutter/engine#18144) 2020-05-07 [email protected] [profiling] CPU Profiling support for iOS (flutter/engine#18087) 2020-05-07 [email protected] Roll src/third_party/skia e3d1de7c5281..2871ab0727bf (1 commits) (flutter/engine#18197) 2020-05-07 [email protected] Roll src/third_party/dart 733153eb517c..e86e4d61834a (6 commits) (flutter/engine#18195) 2020-05-07 [email protected] Roll src/third_party/skia 3b2db26c59d6..e3d1de7c5281 (4 commits) (flutter/engine#18192) 2020-05-07 [email protected] Roll fuchsia/sdk/core/mac-amd64 from jMJqf... to 1MVsE... (flutter/engine#18194) 2020-05-07 [email protected] Roll fuchsia/sdk/core/linux-amd64 from RpHTv... to MhpFP... (flutter/engine#18191) 2020-05-07 [email protected] Roll src/third_party/skia 88d04cb51acf..3b2db26c59d6 (1 commits) (flutter/engine#18190) 2020-05-07 [email protected] Roll src/third_party/dart 4da5b40fb6dc..733153eb517c (23 commits) (flutter/engine#18188) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
[email protected]:flutter/engine.git/compare/3953c3ccd15a...23cca32 git log 3953c3c..23cca32 --first-parent --oneline 2020-05-07 [email protected] Manual Roll of Dart 39e0e75fcf...ce62ad2e8b (flutter/engine#18211) 2020-05-07 [email protected] Support EventChannel C++ plugin API for Linux/Windows (flutter/engine#17015) 2020-05-07 [email protected] Handle leak of message handle when no engine present (flutter/engine#18157) 2020-05-07 [email protected] add docs to platformviewios (and some drive-by changes) (flutter/engine#17593) 2020-05-07 [email protected] Roll src/third_party/skia 0066adefa97d..c66cd987f7c0 (4 commits) (flutter/engine#18206) 2020-05-07 [email protected] Roll src/third_party/skia edea19858ccc..0066adefa97d (3 commits) (flutter/engine#18203) 2020-05-07 [email protected] Remove the global engine entry timestamp (flutter/engine#18182) 2020-05-07 [email protected] Roll src/third_party/dart e86e4d61834a..ce62ad2e8b40 (13 commits) (flutter/engine#18201) 2020-05-07 [email protected] Roll src/third_party/skia 2871ab0727bf..edea19858ccc (3 commits) (flutter/engine#18198) 2020-05-07 [email protected] Fixed ChildSceneLayer elevation issue on Fuchsia. (flutter/engine#18144) 2020-05-07 [email protected] [profiling] CPU Profiling support for iOS (flutter/engine#18087) 2020-05-07 [email protected] Roll src/third_party/skia e3d1de7c5281..2871ab0727bf (1 commits) (flutter/engine#18197) 2020-05-07 [email protected] Roll src/third_party/dart 733153eb517c..e86e4d61834a (6 commits) (flutter/engine#18195) 2020-05-07 [email protected] Roll src/third_party/skia 3b2db26c59d6..e3d1de7c5281 (4 commits) (flutter/engine#18192) 2020-05-07 [email protected] Roll fuchsia/sdk/core/mac-amd64 from jMJqf... to 1MVsE... (flutter/engine#18194) 2020-05-07 [email protected] Roll fuchsia/sdk/core/linux-amd64 from RpHTv... to MhpFP... (flutter/engine#18191) 2020-05-07 [email protected] Roll src/third_party/skia 88d04cb51acf..3b2db26c59d6 (1 commits) (flutter/engine#18190) 2020-05-07 [email protected] Roll src/third_party/dart 4da5b40fb6dc..733153eb517c (23 commits) (flutter/engine#18188) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
[email protected]:flutter/engine.git/compare/3953c3ccd15a...e7ee47d git log 3953c3c..e7ee47d --first-parent --oneline 2020-05-08 [email protected] [web] Implement matrix parameter for linear gradient (flutter/engine#18208) 2020-05-08 [email protected] Reland again "Remove layer integral offset snapping flutter#17112" (flutter/engine#18160) 2020-05-08 [email protected] Roll src/third_party/skia c66cd987f7c0..0dc207f836da (5 commits) (flutter/engine#18212) 2020-05-08 [email protected] Refactor GLFW embedding to support headless mode (flutter/engine#18205) 2020-05-07 [email protected] Manual Roll of Dart 39e0e75fcf...ce62ad2e8b (flutter/engine#18211) 2020-05-07 [email protected] Support EventChannel C++ plugin API for Linux/Windows (flutter/engine#17015) 2020-05-07 [email protected] Handle leak of message handle when no engine present (flutter/engine#18157) 2020-05-07 [email protected] add docs to platformviewios (and some drive-by changes) (flutter/engine#17593) 2020-05-07 [email protected] Roll src/third_party/skia 0066adefa97d..c66cd987f7c0 (4 commits) (flutter/engine#18206) 2020-05-07 [email protected] Roll src/third_party/skia edea19858ccc..0066adefa97d (3 commits) (flutter/engine#18203) 2020-05-07 [email protected] Remove the global engine entry timestamp (flutter/engine#18182) 2020-05-07 [email protected] Roll src/third_party/dart e86e4d61834a..ce62ad2e8b40 (13 commits) (flutter/engine#18201) 2020-05-07 [email protected] Roll src/third_party/skia 2871ab0727bf..edea19858ccc (3 commits) (flutter/engine#18198) 2020-05-07 [email protected] Fixed ChildSceneLayer elevation issue on Fuchsia. (flutter/engine#18144) 2020-05-07 [email protected] [profiling] CPU Profiling support for iOS (flutter/engine#18087) 2020-05-07 [email protected] Roll src/third_party/skia e3d1de7c5281..2871ab0727bf (1 commits) (flutter/engine#18197) 2020-05-07 [email protected] Roll src/third_party/dart 733153eb517c..e86e4d61834a (6 commits) (flutter/engine#18195) 2020-05-07 [email protected] Roll src/third_party/skia 3b2db26c59d6..e3d1de7c5281 (4 commits) (flutter/engine#18192) 2020-05-07 [email protected] Roll fuchsia/sdk/core/mac-amd64 from jMJqf... to 1MVsE... (flutter/engine#18194) 2020-05-07 [email protected] Roll fuchsia/sdk/core/linux-amd64 from RpHTv... to MhpFP... (flutter/engine#18191) 2020-05-07 [email protected] Roll src/third_party/skia 88d04cb51acf..3b2db26c59d6 (1 commits) (flutter/engine#18190) 2020-05-07 [email protected] Roll src/third_party/dart 4da5b40fb6dc..733153eb517c (23 commits) (flutter/engine#18188) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
[email protected]:flutter/engine.git/compare/3953c3ccd15a...403931f git log 3953c3c..403931f --first-parent --oneline 2020-05-08 [email protected] Add FlValue (flutter/engine#18185) 2020-05-08 [email protected] [SkParagraph] Copy text height behavior to the Skia paragraph style (flutter/engine#18178) 2020-05-08 [email protected] [web] Implement matrix parameter for linear gradient (flutter/engine#18208) 2020-05-08 [email protected] Reland again "Remove layer integral offset snapping flutter#17112" (flutter/engine#18160) 2020-05-08 [email protected] Roll src/third_party/skia c66cd987f7c0..0dc207f836da (5 commits) (flutter/engine#18212) 2020-05-08 [email protected] Refactor GLFW embedding to support headless mode (flutter/engine#18205) 2020-05-07 [email protected] Manual Roll of Dart 39e0e75fcf...ce62ad2e8b (flutter/engine#18211) 2020-05-07 [email protected] Support EventChannel C++ plugin API for Linux/Windows (flutter/engine#17015) 2020-05-07 [email protected] Handle leak of message handle when no engine present (flutter/engine#18157) 2020-05-07 [email protected] add docs to platformviewios (and some drive-by changes) (flutter/engine#17593) 2020-05-07 [email protected] Roll src/third_party/skia 0066adefa97d..c66cd987f7c0 (4 commits) (flutter/engine#18206) 2020-05-07 [email protected] Roll src/third_party/skia edea19858ccc..0066adefa97d (3 commits) (flutter/engine#18203) 2020-05-07 [email protected] Remove the global engine entry timestamp (flutter/engine#18182) 2020-05-07 [email protected] Roll src/third_party/dart e86e4d61834a..ce62ad2e8b40 (13 commits) (flutter/engine#18201) 2020-05-07 [email protected] Roll src/third_party/skia 2871ab0727bf..edea19858ccc (3 commits) (flutter/engine#18198) 2020-05-07 [email protected] Fixed ChildSceneLayer elevation issue on Fuchsia. (flutter/engine#18144) 2020-05-07 [email protected] [profiling] CPU Profiling support for iOS (flutter/engine#18087) 2020-05-07 [email protected] Roll src/third_party/skia e3d1de7c5281..2871ab0727bf (1 commits) (flutter/engine#18197) 2020-05-07 [email protected] Roll src/third_party/dart 733153eb517c..e86e4d61834a (6 commits) (flutter/engine#18195) 2020-05-07 [email protected] Roll src/third_party/skia 3b2db26c59d6..e3d1de7c5281 (4 commits) (flutter/engine#18192) 2020-05-07 [email protected] Roll fuchsia/sdk/core/mac-amd64 from jMJqf... to 1MVsE... (flutter/engine#18194) 2020-05-07 [email protected] Roll fuchsia/sdk/core/linux-amd64 from RpHTv... to MhpFP... (flutter/engine#18191) 2020-05-07 [email protected] Roll src/third_party/skia 88d04cb51acf..3b2db26c59d6 (1 commits) (flutter/engine#18190) 2020-05-07 [email protected] Roll src/third_party/dart 4da5b40fb6dc..733153eb517c (23 commits) (flutter/engine#18188) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
[email protected]:flutter/engine.git/compare/3953c3ccd15a...9193d8f git log 3953c3c..9193d8f --first-parent --oneline 2020-05-08 [email protected] Roll src/third_party/skia 0dc207f836da..a14084ba1b41 (3 commits) (flutter/engine#18219) 2020-05-08 [email protected] Add FlValue (flutter/engine#18185) 2020-05-08 [email protected] [SkParagraph] Copy text height behavior to the Skia paragraph style (flutter/engine#18178) 2020-05-08 [email protected] [web] Implement matrix parameter for linear gradient (flutter/engine#18208) 2020-05-08 [email protected] Reland again "Remove layer integral offset snapping flutter#17112" (flutter/engine#18160) 2020-05-08 [email protected] Roll src/third_party/skia c66cd987f7c0..0dc207f836da (5 commits) (flutter/engine#18212) 2020-05-08 [email protected] Refactor GLFW embedding to support headless mode (flutter/engine#18205) 2020-05-07 [email protected] Manual Roll of Dart 39e0e75fcf...ce62ad2e8b (flutter/engine#18211) 2020-05-07 [email protected] Support EventChannel C++ plugin API for Linux/Windows (flutter/engine#17015) 2020-05-07 [email protected] Handle leak of message handle when no engine present (flutter/engine#18157) 2020-05-07 [email protected] add docs to platformviewios (and some drive-by changes) (flutter/engine#17593) 2020-05-07 [email protected] Roll src/third_party/skia 0066adefa97d..c66cd987f7c0 (4 commits) (flutter/engine#18206) 2020-05-07 [email protected] Roll src/third_party/skia edea19858ccc..0066adefa97d (3 commits) (flutter/engine#18203) 2020-05-07 [email protected] Remove the global engine entry timestamp (flutter/engine#18182) 2020-05-07 [email protected] Roll src/third_party/dart e86e4d61834a..ce62ad2e8b40 (13 commits) (flutter/engine#18201) 2020-05-07 [email protected] Roll src/third_party/skia 2871ab0727bf..edea19858ccc (3 commits) (flutter/engine#18198) 2020-05-07 [email protected] Fixed ChildSceneLayer elevation issue on Fuchsia. (flutter/engine#18144) 2020-05-07 [email protected] [profiling] CPU Profiling support for iOS (flutter/engine#18087) 2020-05-07 [email protected] Roll src/third_party/skia e3d1de7c5281..2871ab0727bf (1 commits) (flutter/engine#18197) 2020-05-07 [email protected] Roll src/third_party/dart 733153eb517c..e86e4d61834a (6 commits) (flutter/engine#18195) 2020-05-07 [email protected] Roll src/third_party/skia 3b2db26c59d6..e3d1de7c5281 (4 commits) (flutter/engine#18192) 2020-05-07 [email protected] Roll fuchsia/sdk/core/mac-amd64 from jMJqf... to 1MVsE... (flutter/engine#18194) 2020-05-07 [email protected] Roll fuchsia/sdk/core/linux-amd64 from RpHTv... to MhpFP... (flutter/engine#18191) 2020-05-07 [email protected] Roll src/third_party/skia 88d04cb51acf..3b2db26c59d6 (1 commits) (flutter/engine#18190) 2020-05-07 [email protected] Roll src/third_party/dart 4da5b40fb6dc..733153eb517c (23 commits) (flutter/engine#18188) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
See flutter.dev/go/engine-cpu-profiling for details