From aa78bf649afd6103671056933571817b5656ae50 Mon Sep 17 00:00:00 2001 From: jacob Date: Wed, 1 Apr 2026 03:30:42 -0500 Subject: [PATCH] profiler zone collapse wip --- src/base/base_win32/base_win32.c | 2 +- src/pp/pp_vis/pp_vis_core.c | 28 ++++++++++++++++++---------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/base/base_win32/base_win32.c b/src/base/base_win32/base_win32.c index 33d1b12a..a79b9466 100644 --- a/src/base/base_win32/base_win32.c +++ b/src/base/base_win32/base_win32.c @@ -594,6 +594,7 @@ i32 W32_Main(void) LARGE_INTEGER qpc = Zi; QueryPerformanceCounter(&qpc); W32.startup_qpc = qpc.QuadPart; + W32.startup_tsc = __rdtsc(); } // Calibrate TSC @@ -616,7 +617,6 @@ i32 W32_Main(void) f64 elapsed_ns = (end_qpc.QuadPart - start_qpc.QuadPart) * W32.ns_per_qpc; f64 elapsed_tsc = end_tsc - start_tsc; W32.ns_per_tsc = elapsed_ns / elapsed_tsc; - W32.startup_tsc = end_tsc; } // Load module funcs diff --git a/src/pp/pp_vis/pp_vis_core.c b/src/pp/pp_vis/pp_vis_core.c index b1f7ef6f..54602349 100644 --- a/src/pp/pp_vis/pp_vis_core.c +++ b/src/pp/pp_vis/pp_vis_core.c @@ -5924,6 +5924,7 @@ void V_TickForever(WaveLaneCtx *lane) } //- Zone tracks + ProfZoneDF("Build zones") { f32 zone_collapse_threshold_px = 5; for (VisTrack *vis_track = first_vis_track; vis_track; vis_track = vis_track->next) @@ -5945,22 +5946,31 @@ void V_TickForever(WaveLaneCtx *lane) i64 visual_chunk_start_ns = MaxI64(chunk->start_ns, profiler->view_ns); i64 visual_chunk_end_ns = MinI64(chunk->end_ns, profiler->view_ns + view_range_len_ns); f64 visual_chunk_len_px = (visual_chunk_end_ns - visual_chunk_start_ns) / profiler->ns_per_px; - if (visual_chunk_len_px > zone_collapse_threshold_px) + + b32 should_collapse_chunk = visual_chunk_len_px <= zone_collapse_threshold_px; + + if (!should_collapse_chunk) { - b32 reached_end_of_visible_chunk = 0; - for (u64 chunk_zone_idx = 0; chunk_zone_idx < chunk->zones_count && !reached_end_of_visible_chunk; ++chunk_zone_idx) + b32 reached_end_of_view = 0; + for (u64 chunk_zone_idx = 0; chunk_zone_idx < chunk->zones_count && !reached_end_of_view; ++chunk_zone_idx) { V_Zone *zone = &chunk->zones[chunk_zone_idx]; - i64 visual_zone_start_ns = MaxI64(zone->start_ns, profiler->view_ns); - i64 visual_zone_end_ns = MinI64(zone->end_ns, profiler->view_ns + view_range_len_ns); + i64 zone_start_ns = zone->start_ns; + i64 zone_end_ns = MinI64(zone->end_ns, frame->time_ns); + + i64 visual_zone_start_ns = MaxI64(zone_start_ns, profiler->view_ns); + i64 visual_zone_end_ns = MinI64(zone_end_ns, profiler->view_ns + view_range_len_ns); f64 visual_zone_len_px = (visual_zone_end_ns - visual_zone_start_ns) / profiler->ns_per_px; - if (visual_zone_start_ns > view_end_ns || zone->end_ns == I64Max) + b32 zone_should_collapse = visual_zone_len_px <= zone_collapse_threshold_px; + + if (visual_zone_start_ns > view_end_ns) { - reached_end_of_visible_chunk = 1; + reached_end_of_view = 1; } - else if (visual_zone_end_ns >= view_start_ns && visual_zone_len_px > zone_collapse_threshold_px) + + if (visual_zone_end_ns >= view_start_ns && visual_zone_start_ns <= view_end_ns && !zone_should_collapse) { UI_Key zone_box = UI_KeyF("Zone %F", FmtUint(zone->id)); if (UI_HotAbsolute(zone_box)) @@ -5969,7 +5979,6 @@ void V_TickForever(WaveLaneCtx *lane) hovered_zone = zone; } - // TODO: Dim in HSV space Vec4 zone_color = zone->color; // Vec4 zone_color_bd = Zi; @@ -6067,7 +6076,6 @@ void V_TickForever(WaveLaneCtx *lane) } } } - } } }