drm: Use vblank time from page flip handler
This commit is contained in:
parent
779d8f1bee
commit
a659fef806
4 changed files with 8 additions and 5 deletions
|
@ -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 )
|
if ( g_DRM.crtc->id != crtc_id )
|
||||||
return;
|
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
|
// TODO: get the fbids_queued instance from data if we ever have more than one in flight
|
||||||
|
|
||||||
|
|
|
@ -494,7 +494,8 @@ static inline void stats_printf( const char* format, ...)
|
||||||
uint64_t get_time_in_nanos()
|
uint64_t get_time_in_nanos()
|
||||||
{
|
{
|
||||||
timespec ts;
|
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;
|
return ts.tv_sec * 1'000'000'000ul + ts.tv_nsec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ int vblank_init( void )
|
||||||
return g_vblankPipe[ 0 ];
|
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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,4 +2,4 @@
|
||||||
|
|
||||||
int vblank_init( void );
|
int vblank_init( void );
|
||||||
|
|
||||||
void vblank_mark_possible_vblank( void );
|
void vblank_mark_possible_vblank( uint64_t nanos );
|
||||||
|
|
Loading…
Reference in a new issue