仍然闪烁

This commit is contained in:
2026-08-02 18:58:35 +08:00
parent ffaca5b05f
commit 9a39f88427
54 changed files with 2257 additions and 2424 deletions
+36 -1
View File
@@ -50,6 +50,8 @@ std::string source_text(Refresh_Limit_Source source) {
switch (source) {
case Refresh_Limit_Source::Unknown:
return "unknown";
case Refresh_Limit_Source::Input:
return "input";
case Refresh_Limit_Source::Render:
return "render";
case Refresh_Limit_Source::Paint:
@@ -78,6 +80,30 @@ std::string outcome_text(Frame_Outcome outcome) {
}
return "unknown";
}
std::string bottleneck_text(Low_Latency_Bottleneck_State state) {
switch (state) {
case Low_Latency_Bottleneck_State::Unknown:
return "unknown";
case Low_Latency_Bottleneck_State::Input_Limited:
return "input";
case Low_Latency_Bottleneck_State::Producer_Limited:
return "producer";
case Low_Latency_Bottleneck_State::Consumer_Limited:
return "consumer";
case Low_Latency_Bottleneck_State::User_Limited:
return "user";
}
return "unknown";
}
std::string production_strategy_text(Low_Latency_Production_Strategy strategy) {
switch (strategy) {
case Low_Latency_Production_Strategy::Latency_Eager:
return "latency_eager";
case Low_Latency_Production_Strategy::Cost_Balanced:
return "cost_balanced";
}
return "latency_eager";
}
std::string csv_escape(const std::string& value) {
std::string escaped;
escaped.reserve(value.size() + 2);
@@ -149,10 +175,19 @@ public:
<< frame.input_version << ','
<< outcome_text(frame.outcome) << ','
<< source_text(refresh.source) << ','
<< source_text(refresh.candidate_source) << ','
<< bottleneck_text(refresh.stable_bottleneck) << ','
<< bottleneck_text(refresh.candidate_bottleneck) << ','
<< refresh.candidate_age_ns << ','
<< refresh.candidate_samples << ','
<< production_strategy_text(refresh.production_strategy) << ','
<< refresh.render_period_ns << ','
<< refresh.paint_period_ns << ','
<< refresh.user_period_ns << ','
<< refresh.target_period_ns << ','
<< refresh.effective_min_render_interval_ns << ','
<< refresh.repeated_frame_count << ','
<< refresh.underrun_count << ','
<< duration_ms(frame.render_request_ns, frame.render_begin_ns) << ','
<< duration_ms(frame.prepare_begin_ns, frame.prepare_end_ns) << ','
<< duration_ms(frame.draw_begin_ns, frame.draw_end_ns) << ','
@@ -209,7 +244,7 @@ private:
return value;
}
static std::string header() {
return "frame_id,input_version,outcome,limit_source,render_period_ns,paint_period_ns,user_period_ns,target_period_ns,request_wait_ms,prepare_ms,draw_ms,render_ms,middle_wait_ms,update_wait_ms,paint_ms,frame_age_ms,render_queue_wait_ns,ready_queue_wait_ns,present_queue_wait_ns,paint_return_wait_ns,raw_input_count,prepared_output_count,cache_hit_count,cache_miss_count,cache_rebuild_count,cache_rebuild_time_ns,cache_compose_time_ns,cache_image_bytes,cache_image_area,cache_hit_ratio,pixel_width,pixel_height,core_data_time_ns,render_begin_time_ns,render_end_time_ns,transition_12_ns,transition_23_ns,paint_begin_time_ns,paint_end_time_ns,transition_32_ns,superseded_time_ns,renderable_stats,renderable_cache_stats";
return "frame_id,input_version,outcome,limit_source,candidate_source,stable_bottleneck,candidate_bottleneck,candidate_age_ns,candidate_samples,production_strategy,render_period_ns,paint_period_ns,user_period_ns,target_period_ns,effective_min_render_interval_ns,repeated_frame_count,underrun_count,request_wait_ms,prepare_ms,draw_ms,render_ms,middle_wait_ms,update_wait_ms,paint_ms,frame_age_ms,render_queue_wait_ns,ready_queue_wait_ns,present_queue_wait_ns,paint_return_wait_ns,raw_input_count,prepared_output_count,cache_hit_count,cache_miss_count,cache_rebuild_count,cache_rebuild_time_ns,cache_compose_time_ns,cache_image_bytes,cache_image_area,cache_hit_ratio,pixel_width,pixel_height,core_data_time_ns,render_begin_time_ns,render_end_time_ns,transition_12_ns,transition_23_ns,paint_begin_time_ns,paint_end_time_ns,transition_32_ns,superseded_time_ns,renderable_stats,renderable_cache_stats";
}
};
Frame_Performance_Logger& frame_log() {