On 06/11/2012 03:02 AM, Michel D?nzer wrote: > On Son, 2012-06-10 at 11:56 +0000, Joakim Plate wrote: >> 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? > > From the GLX_OML_sync_control spec: > > The Unadjusted System Time (or UST) is a 64-bit monotonically > increasing counter [...] > > So, without having thought a lot about potential ramifications, I'm > inclined to say that CLOCK_MONOTONIC should indeed be used.
Maybe. Isn't CLOCK_MONOTONIC per-process? UST is supposed to be relatively consistent across the system. Some relevant was elided above: "The Unadjusted System Time (or UST) is a 64-bit monotonically increasing counter that is available throughout the system. UST is not a resource that is controlled by OpenGL, so it is not defined further as part of this extension." do_gettimeofday is definitely the wrong choice, but it was the best thing that I knew to use back in 2002(ish) when I wrote that code. I'm just not sure CLOCK_MONOTONIC is quite right either. What's behind door #3? :)