This commit is contained in:
2026-08-29 14:00:25 +08:00
parent 899223c7a7
commit 4ff2220e38
14 changed files with 452 additions and 60 deletions
+77
View File
@@ -387,6 +387,44 @@ protected:
statistic_value("backend_execute_ms", "p95");
state.counters[prefix + "backend_execute_max_ms"] =
statistic_value("backend_execute_ms", "maximum");
constexpr std::array detailed_backend_statistics{
"backend_target_acquire_ms",
"backend_structure_check_ms",
"backend_query_ms",
"backend_runtime_plan_ms",
"backend_runtime_execute_ms",
"backend_mvp_update_ms",
"backend_frame_begin_ms",
"backend_frame_plan_ms",
"backend_external_register_ms",
"backend_frame_attach_ms",
"backend_frame_execute_ms",
"backend_frame_finish_ms"};
constexpr std::array detailed_drp_statistics{
"backend_drp_validation_ms",
"backend_drp_state_ms",
"backend_drp_buffer_create_ms",
"backend_drp_texture_create_ms",
"backend_drp_shader_create_ms",
"backend_drp_shader_compile_ms",
"backend_drp_shader_module_create_ms",
"backend_drp_pipeline_create_ms",
"backend_drp_binding_create_ms",
"backend_drp_upload_ms",
"backend_drp_transfer_ms",
"backend_drp_record_ms"};
for (const std::string_view name : detailed_backend_statistics) {
state.counters[prefix + std::string{name} + "/p95"] =
statistic_value(name, "p95");
state.counters[prefix + std::string{name} + "/max"] =
statistic_value(name, "maximum");
}
for (const std::string_view name : detailed_drp_statistics) {
state.counters[prefix + std::string{name} + "/p95"] =
statistic_value(name, "p95");
state.counters[prefix + std::string{name} + "/max"] =
statistic_value(name, "maximum");
}
state.counters[prefix + "backend_submit_queue_ms"] =
statistic_value("backend_submit_queue_ms", "average");
state.counters[prefix + "backend_submit_queue_p95_ms"] =
@@ -546,6 +584,45 @@ public:
<< std::setw(10) << counter(prefix + "slot_backpressure")
<< std::setw(9) << counter(prefix + "scene_rejected")
<< '\n';
constexpr std::array detailed_backend_statistics{
std::pair{"acquire", "backend_target_acquire_ms"},
std::pair{"structure", "backend_structure_check_ms"},
std::pair{"query", "backend_query_ms"},
std::pair{"runtime-plan", "backend_runtime_plan_ms"},
std::pair{"runtime-exec", "backend_runtime_execute_ms"},
std::pair{"mvp", "backend_mvp_update_ms"},
std::pair{"frame-begin", "backend_frame_begin_ms"},
std::pair{"frame-plan", "backend_frame_plan_ms"},
std::pair{"external", "backend_external_register_ms"},
std::pair{"attach", "backend_frame_attach_ms"},
std::pair{"frame-exec", "backend_frame_execute_ms"},
std::pair{"finish", "backend_frame_finish_ms"}};
output << " backend-detail " << id;
for (const auto& [label, statistic] :
detailed_backend_statistics)
output << " " << label << "95/max="
<< counter(prefix + statistic + "/p95") << "/"
<< counter(prefix + statistic + "/max");
output << '\n';
constexpr std::array detailed_drp_statistics{
std::pair{"validate", "backend_drp_validation_ms"},
std::pair{"state", "backend_drp_state_ms"},
std::pair{"buffer", "backend_drp_buffer_create_ms"},
std::pair{"texture", "backend_drp_texture_create_ms"},
std::pair{"shader", "backend_drp_shader_create_ms"},
std::pair{"shader-compile", "backend_drp_shader_compile_ms"},
std::pair{"shader-module", "backend_drp_shader_module_create_ms"},
std::pair{"pipeline", "backend_drp_pipeline_create_ms"},
std::pair{"binding", "backend_drp_binding_create_ms"},
std::pair{"upload", "backend_drp_upload_ms"},
std::pair{"transfer", "backend_drp_transfer_ms"},
std::pair{"record", "backend_drp_record_ms"}};
output << " drp-detail " << id;
for (const auto& [label, statistic] : detailed_drp_statistics)
output << " " << label << "95/max="
<< counter(prefix + statistic + "/p95") << "/"
<< counter(prefix + statistic + "/max");
output << '\n';
}
output << "aggregate_fps=" << counter("aggregate_fps")
<< " min_fps=" << counter("minimum_plot_fps")