# Interval between guest PRESENTS, from the draw log's own per-frame
# gtick marker. Same capture as guest-frame-rate-cadence.txt.
#
# ⚠️ gtick is NOT guest-intended time. Canary's Clock::QueryGuestTickCount()
# is `host_tick_count * guest_tick_ratio` with the scalar at 1.0, i.e. HOST
# time rescaled. So these are wall-clock intervals and TEMPORAL-VERIFICATION
# applies to them in full.
#
# What they are good for is the SHAPE. Xenia locks vblank to 60 Hz when
# vsync is on and framerate_limit is 0 (graphics_system.cc: 'If VSYNC is
# enabled, but frames are not limited, lock framerate at default value of
# 60'). So the question with no phase in it is: does the guest present once
# per vblank (16.7 ms) or once per two (33.3 ms)?

frames 1..599   intervals n=594
span 671,751,499 ticks = 13.435 host-seconds
overall 44.21 presents per host-second

min      14.94 ms
Q1       16.47 ms
median   17.22 ms   <-- the mode of the distribution
Q3       30.43 ms
max     157.20 ms

histogram, in units of one 60 Hz vblank (16.667 ms):
   1 vblank(s) ( 16.67 ms) :  426  ############################################################
   2 vblank(s) ( 33.33 ms) :  146  ############################################################
   3 vblank(s) ( 50.00 ms) :   12  ############
   4 vblank(s) ( 66.67 ms) :    4  ####
   5 vblank(s) ( 83.34 ms) :    3  ###
   6 vblank(s) (100.00 ms) :    2  ##
   9 vblank(s) (150.00 ms) :    1  #

ONE vblank : 426/594 = 71.7%
TWO vblanks: 146/594 = 24.6%

# A guest hard-locked to 30 fps presents every SECOND vblank and would put
# the mass at 2. It is at 1. The tail at 2+ is dropped frames, which is the
# expected direction for a slow emulator -- a slow emulator cannot make
# intervals SHORTER than the guest asked for.
