RFC: Change OML_sync_control UST to CLOCK_MONOTONIC
Joakim Plate
elupus at ecce.se
Sun Jun 10 04:56:34 PDT 2012
Hi,
I'm currently trying to make use of OML_sync_control extension to schedule
presentation of video frames in xbmc.
I've run into somewhat of a snag. It seem the spec doesn't specify what
time the UST clock really is, nor can i find any mention of it elsewhere
in docs.
Code wise it seem to be using do_gettimeofday(), which seems like a rather
poor choice given that it can jump forward and back in time due to
settimeofday calls.
We normally make use of clock_gettime(CLOCK_MONOTONIC) to timestamp display
of video frames, so to avoid major changes I'd need a way to convert to
gettimeofday (seem same as CLOCK_REALTIME).
Currently i'm trying:
struct timespec mon, rel;
clock_gettime(CLOCK_MONOTONIC, &mon);
clock_gettime(CLOCK_REALTIME , &rel);
ticks += (rel.tv_sec - mon.tv_sec) * 1000000000;
ticks += (rel.tv_nsec - mon.tv_nsec);
To convert between the two, but that is quite a hack both in the
possibility of clock changes and scheduling errors.
Is there a better way, or perhaps the DRI code should use CLOCK_MONOTONIC
in the first place?
Regards
/Joakim
More information about the dri-devel
mailing list