Since we have a precise start/end time for the sample, the actual time the HW was read back is within that interval, and more likely closer to the mean of the interval. Use the mean sample time when estimating the vblank time. Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> --- drivers/gpu/drm/drm_vblank.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c index da7b0b0c1090..79a5461d3773 100644 --- a/drivers/gpu/drm/drm_vblank.c +++ b/drivers/gpu/drm/drm_vblank.c @@ -710,15 +710,18 @@ drm_crtc_vblank_helper_get_vblank_timestamp_internal( delta_ns = div_s64(1000000LL * (vpos * mode->crtc_htotal + hpos), mode->crtc_clock); + /* Estimate when the sample was taken */ + stime += (etime - stime) >> 2; + /* Subtract time delta from raw timestamp to get final * vblank_time timestamp for end of vblank. */ - *vblank_time = ktime_sub_ns(etime, delta_ns); + *vblank_time = ktime_sub_ns(stime, delta_ns); if (!drm_debug_enabled(DRM_UT_VBL)) return true; - ts_etime = ktime_to_timespec64(etime); + ts_etime = ktime_to_timespec64(stime); ts_vblank_time = ktime_to_timespec64(*vblank_time); DRM_DEBUG_VBL("crtc %u : v p(%d,%d)@ %lld.%06ld -> %lld.%06ld [e %d us, %d rep]\n", -- 2.27.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx