mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2025-01-17 04:15:44 +00:00
ae2e7405dd
In its original call location, this diagnostic/warning function gets called for each composition cycle even for client frames which have not yet been delivered for display, because the frames target display time "XrFrameEndInfo frameEndInfo.displayTime" (as provided by the OpenXR client) has not been reached yet. Iow. if a OpenXR client specifies a target frameEndInfo.displayTime in the future, to request frame presentation in the future, this will cause a flood of false "Frame late ..." messages by the compositor, despite nothing being wrong with the timing, until the frame is actually delivered. E.g., if frameEndInfo.displayTime is 1 second in the future, we'll get this for each client xrEndFrame() invocation: WARN [log_frame_time_diff] Frame late by 11.11ms! WARN [log_frame_time_diff] Frame late by 22.22ms! ... another 87 like these ... WARN [log_frame_time_diff] Frame late by 988.43ms! I think what we want is to only check client frames that are actually delivered the first time by multi_compositor_deliver_any_frames() for initial display in the current compositor work cycle, and then report if this first frame display onset was not on or close to the OpenXR client requested frameEndInfo.displayTime, but too early or too late, in violation of the clients wishes. Moving the call check and call of log_frame_time_diff() achieves this and gives meaningful debug output. Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com> |
||
---|---|---|
.. | ||
external | ||
xrt | ||
CMakeLists.txt |