RFC: Change OML_sync_control UST to CLOCK_MONOTONIC
Michel Dänzer
michel at daenzer.net
Mon Jun 11 03:02:28 PDT 2012
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.
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Debian, X and DRI developer
More information about the dri-devel
mailing list