drm: Use vblank time from page flip handler

This commit is contained in:
Joshua Ashton 2022-01-25 14:35:55 +00:00 committed by Joshie
parent 779d8f1bee
commit a659fef806
4 changed files with 8 additions and 5 deletions

View file

@ -188,7 +188,9 @@ static void page_flip_handler(int fd, unsigned int frame, unsigned int sec, unsi
if ( g_DRM.crtc->id != crtc_id )
return;
vblank_mark_possible_vblank();
// This is the last vblank time
uint64_t vblanktime = sec * 1'000'000'000lu + usec * 1'000lu;
vblank_mark_possible_vblank(vblanktime);
// TODO: get the fbids_queued instance from data if we ever have more than one in flight

View file

@ -494,7 +494,8 @@ static inline void stats_printf( const char* format, ...)
uint64_t get_time_in_nanos()
{
timespec ts;
clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
// Kernel reports page flips with CLOCK_MONOTONIC.
clock_gettime(CLOCK_MONOTONIC, &ts);
return ts.tv_sec * 1'000'000'000ul + ts.tv_nsec;
}

View file

@ -77,7 +77,7 @@ int vblank_init( void )
return g_vblankPipe[ 0 ];
}
void vblank_mark_possible_vblank( void )
void vblank_mark_possible_vblank( uint64_t nanos )
{
g_lastVblank = get_time_in_nanos();
g_lastVblank = nanos;
}

View file

@ -2,4 +2,4 @@
int vblank_init( void );
void vblank_mark_possible_vblank( void );
void vblank_mark_possible_vblank( uint64_t nanos );