clutter/frame-clock: Add lateness to dispatch trace
To diagnose when missed frames are caused by dispatch being delayed rather than repaint scheduling producing the wrong dispatch time. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1928>
This commit is contained in:
parent
986658ade9
commit
17bb0a3de4
@ -657,8 +657,14 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
|
|||||||
ClutterFrameResult result;
|
ClutterFrameResult result;
|
||||||
int64_t ideal_dispatch_time_us, lateness_us;
|
int64_t ideal_dispatch_time_us, lateness_us;
|
||||||
|
|
||||||
|
#ifdef COGL_HAS_TRACING
|
||||||
|
int64_t this_dispatch_ready_time_us;
|
||||||
|
|
||||||
COGL_TRACE_BEGIN_SCOPED (ClutterFrameClockDispatch, "Frame Clock (dispatch)");
|
COGL_TRACE_BEGIN_SCOPED (ClutterFrameClockDispatch, "Frame Clock (dispatch)");
|
||||||
|
|
||||||
|
this_dispatch_ready_time_us = g_source_get_ready_time (frame_clock->source);
|
||||||
|
#endif
|
||||||
|
|
||||||
ideal_dispatch_time_us = (frame_clock->last_dispatch_time_us -
|
ideal_dispatch_time_us = (frame_clock->last_dispatch_time_us -
|
||||||
frame_clock->last_dispatch_lateness_us) +
|
frame_clock->last_dispatch_lateness_us) +
|
||||||
frame_clock->refresh_interval_us;
|
frame_clock->refresh_interval_us;
|
||||||
@ -719,6 +725,17 @@ clutter_frame_clock_dispatch (ClutterFrameClock *frame_clock,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef COGL_HAS_TRACING
|
||||||
|
if (this_dispatch_ready_time_us != -1 &&
|
||||||
|
G_UNLIKELY (cogl_is_tracing_enabled ()))
|
||||||
|
{
|
||||||
|
g_autofree char *description = NULL;
|
||||||
|
description = g_strdup_printf ("dispatched %ld µs late",
|
||||||
|
time_us - this_dispatch_ready_time_us);
|
||||||
|
COGL_TRACE_DESCRIBE (ClutterFrameClockDispatch, description);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
Loading…
Reference in New Issue
Block a user