profiler zone collapse wip
This commit is contained in:
parent
9ef91e48a0
commit
aa78bf649a
@ -594,6 +594,7 @@ i32 W32_Main(void)
|
|||||||
LARGE_INTEGER qpc = Zi;
|
LARGE_INTEGER qpc = Zi;
|
||||||
QueryPerformanceCounter(&qpc);
|
QueryPerformanceCounter(&qpc);
|
||||||
W32.startup_qpc = qpc.QuadPart;
|
W32.startup_qpc = qpc.QuadPart;
|
||||||
|
W32.startup_tsc = __rdtsc();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calibrate TSC
|
// 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_ns = (end_qpc.QuadPart - start_qpc.QuadPart) * W32.ns_per_qpc;
|
||||||
f64 elapsed_tsc = end_tsc - start_tsc;
|
f64 elapsed_tsc = end_tsc - start_tsc;
|
||||||
W32.ns_per_tsc = elapsed_ns / elapsed_tsc;
|
W32.ns_per_tsc = elapsed_ns / elapsed_tsc;
|
||||||
W32.startup_tsc = end_tsc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load module funcs
|
// Load module funcs
|
||||||
|
|||||||
@ -5924,6 +5924,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//- Zone tracks
|
//- Zone tracks
|
||||||
|
ProfZoneDF("Build zones")
|
||||||
{
|
{
|
||||||
f32 zone_collapse_threshold_px = 5;
|
f32 zone_collapse_threshold_px = 5;
|
||||||
for (VisTrack *vis_track = first_vis_track; vis_track; vis_track = vis_track->next)
|
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_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);
|
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;
|
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;
|
b32 reached_end_of_view = 0;
|
||||||
for (u64 chunk_zone_idx = 0; chunk_zone_idx < chunk->zones_count && !reached_end_of_visible_chunk; ++chunk_zone_idx)
|
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];
|
V_Zone *zone = &chunk->zones[chunk_zone_idx];
|
||||||
|
|
||||||
i64 visual_zone_start_ns = MaxI64(zone->start_ns, profiler->view_ns);
|
i64 zone_start_ns = zone->start_ns;
|
||||||
i64 visual_zone_end_ns = MinI64(zone->end_ns, profiler->view_ns + view_range_len_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;
|
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));
|
UI_Key zone_box = UI_KeyF("Zone %F", FmtUint(zone->id));
|
||||||
if (UI_HotAbsolute(zone_box))
|
if (UI_HotAbsolute(zone_box))
|
||||||
@ -5969,7 +5979,6 @@ void V_TickForever(WaveLaneCtx *lane)
|
|||||||
hovered_zone = zone;
|
hovered_zone = zone;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Dim in HSV space
|
|
||||||
|
|
||||||
Vec4 zone_color = zone->color;
|
Vec4 zone_color = zone->color;
|
||||||
// Vec4 zone_color_bd = Zi;
|
// Vec4 zone_color_bd = Zi;
|
||||||
@ -6067,7 +6076,6 @@ void V_TickForever(WaveLaneCtx *lane)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user