On Thu, Jun 11, 2020 at 01:34:47PM +0100, Chris Wilson wrote:
> 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 <[email protected]>

Seems reasonable.

Reviewed-by: Ville Syrjälä <[email protected]>

> ---
>  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..a7043d268cca 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) >> 1;
> +
>       /* 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
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to