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