From b48fde966570bb2043ff7bf66b523ae664cd4c85 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Mon, 24 Oct 2022 15:29:25 -0700 Subject: [PATCH 1/3] Cleanup animator tracing --- shell/common/animator.cc | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/shell/common/animator.cc b/shell/common/animator.cc index dacf8fad50d6b..2663f03d6470d 100644 --- a/shell/common/animator.cc +++ b/shell/common/animator.cc @@ -104,10 +104,6 @@ void Animator::BeginFrame( // We have acquired a valid continuation from the pipeline and are ready // to service potential frame. FML_DCHECK(producer_continuation_); - fml::tracing::TraceEventAsyncComplete( - "flutter", "VsyncSchedulingOverhead", - frame_timings_recorder_->GetVsyncStartTime(), - frame_timings_recorder_->GetBuildStartTime()); const fml::TimePoint frame_target_time = frame_timings_recorder_->GetVsyncTargetTime(); dart_frame_deadline_ = FxlToDartOrEarlier(frame_target_time); @@ -195,6 +191,10 @@ bool Animator::CanReuseLastLayerTree() { void Animator::DrawLastLayerTree( std::unique_ptr frame_timings_recorder) { + // This method is very cheap, but this makes it explicitly clear in trace + // files. + TRACE_EVENT0("flutter", "Animator::DrawLastLayerTree"); + pending_frame_semaphore_.Signal(); // In this case BeginFrame doesn't get called, we need to // adjust frame timings to update build start and end times, @@ -208,6 +208,12 @@ void Animator::DrawLastLayerTree( void Animator::RequestFrame(bool regenerate_layer_tree) { if (regenerate_layer_tree) { + // This even will be closed by BeginFrame. BeginFrame will only be called if + // regenerating the layer tree. + // If a frame has been requested to update an external texture, this will be + // false and no BeginFrame call will happen. + TRACE_EVENT_ASYNC_BEGIN0("flutter", "Frame Request Pending", + frame_request_number_); regenerate_layer_tree_ = true; } @@ -225,13 +231,10 @@ void Animator::RequestFrame(bool regenerate_layer_tree) { // To support that, we need edge triggered wakes on VSync. task_runners_.GetUITaskRunner()->PostTask( - [self = weak_factory_.GetWeakPtr(), - frame_request_number = frame_request_number_]() { + [self = weak_factory_.GetWeakPtr()]() { if (!self) { return; } - TRACE_EVENT_ASYNC_BEGIN0("flutter", "Frame Request Pending", - frame_request_number); self->AwaitVSync(); }); frame_scheduled_ = true; From d1bedffe78243b93afb93a5bcf2bf0ee4ea81ba3 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Tue, 25 Oct 2022 21:41:05 -0700 Subject: [PATCH 2/3] Update shell/common/animator.cc Co-authored-by: Jonah Williams --- shell/common/animator.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/common/animator.cc b/shell/common/animator.cc index 2663f03d6470d..a350d87652136 100644 --- a/shell/common/animator.cc +++ b/shell/common/animator.cc @@ -208,7 +208,7 @@ void Animator::DrawLastLayerTree( void Animator::RequestFrame(bool regenerate_layer_tree) { if (regenerate_layer_tree) { - // This even will be closed by BeginFrame. BeginFrame will only be called if + // This event will be closed by BeginFrame. BeginFrame will only be called if // regenerating the layer tree. // If a frame has been requested to update an external texture, this will be // false and no BeginFrame call will happen. From 6e2511ff5c0a39617cc46830354b38ef1810a2d1 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Wed, 26 Oct 2022 09:54:25 -0700 Subject: [PATCH 3/3] format --- shell/common/animator.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/shell/common/animator.cc b/shell/common/animator.cc index a350d87652136..6468f0f45f627 100644 --- a/shell/common/animator.cc +++ b/shell/common/animator.cc @@ -208,10 +208,10 @@ void Animator::DrawLastLayerTree( void Animator::RequestFrame(bool regenerate_layer_tree) { if (regenerate_layer_tree) { - // This event will be closed by BeginFrame. BeginFrame will only be called if - // regenerating the layer tree. - // If a frame has been requested to update an external texture, this will be - // false and no BeginFrame call will happen. + // This event will be closed by BeginFrame. BeginFrame will only be called + // if regenerating the layer tree. If a frame has been requested to update + // an external texture, this will be false and no BeginFrame call will + // happen. TRACE_EVENT_ASYNC_BEGIN0("flutter", "Frame Request Pending", frame_request_number_); regenerate_layer_tree_ = true;