clutter/frame-clock: Log updates to max update duration estimate
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4282>
This commit is contained in:
parent
7cc3dede2f
commit
dbd82f47a5
@ -360,10 +360,18 @@ maybe_update_longterm_max_duration_us (ClutterFrameClock *frame_clock,
|
||||
if (frame_clock->longterm_max_update_duration_us >
|
||||
frame_clock->shortterm_max_update_duration_us)
|
||||
{
|
||||
int64_t old_duration_us;
|
||||
|
||||
/* Exponential drop-off toward the short-term max */
|
||||
old_duration_us = frame_clock->longterm_max_update_duration_us;
|
||||
frame_clock->longterm_max_update_duration_us -=
|
||||
(frame_clock->longterm_max_update_duration_us -
|
||||
frame_clock->shortterm_max_update_duration_us) / 2;
|
||||
|
||||
CLUTTER_NOTE (FRAME_TIMINGS,
|
||||
"Maximum update duration estimate updated: %ldµs → %ldµs",
|
||||
old_duration_us,
|
||||
frame_clock->longterm_max_update_duration_us);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -496,6 +504,7 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock,
|
||||
int64_t dispatch_to_swap_us, swap_to_rendering_done_us, swap_to_flip_us;
|
||||
int64_t dispatch_time_us = presented_frame->dispatch_time_us;
|
||||
int64_t flip_time_us = presented_frame->flip_time_us;
|
||||
int64_t max_duration_us;
|
||||
|
||||
if (frame_info->cpu_time_before_buffer_swap_us == 0)
|
||||
{
|
||||
@ -523,6 +532,8 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock,
|
||||
swap_to_rendering_done_us,
|
||||
swap_to_flip_us);
|
||||
|
||||
max_duration_us = get_max_update_duration_us (frame_clock);
|
||||
|
||||
frame_clock->shortterm_max_update_duration_us =
|
||||
CLAMP (presented_frame->dispatch_lateness_us + dispatch_to_swap_us +
|
||||
MAX (swap_to_rendering_done_us, swap_to_flip_us) +
|
||||
@ -530,6 +541,14 @@ clutter_frame_clock_notify_presented (ClutterFrameClock *frame_clock,
|
||||
frame_clock->shortterm_max_update_duration_us,
|
||||
2 * frame_clock->refresh_interval_us);
|
||||
|
||||
if (frame_clock->shortterm_max_update_duration_us > max_duration_us)
|
||||
{
|
||||
CLUTTER_NOTE (FRAME_TIMINGS,
|
||||
"Maximum update duration estimate updated: %ldµs → %ldµs",
|
||||
max_duration_us,
|
||||
frame_clock->shortterm_max_update_duration_us);
|
||||
}
|
||||
|
||||
maybe_update_longterm_max_duration_us (frame_clock, frame_info);
|
||||
|
||||
presented_frame->got_measurements = TRUE;
|
||||
|
Loading…
x
Reference in New Issue
Block a user