Current DRI3 specification
James Jones
jajones at nvidia.com
Mon Jun 10 10:02:21 PDT 2013
On 06/08/2013 11:18 AM, Daniel Stone wrote:
> Hi,
>
> On 7 June 2013 13:30, James Jones <jajones at nvidia.com> wrote:
>> We do need more than the 'make it pretty' requirement above though. What you
>> describe is what interactive rendering apps want, when you're translating
>> some sort of input into graphics with as little latency as possible.
>> Video/streaming apps would rather queue up several frames as close to the HW
>> presentation mechanism as possible to avoid hiccups, but have precise
>> control over when the frames present so they can still do A/V sync right
>> with the longer queues. That's where the OML-type stuff with counters and
>> timers becomes interesting. Those are the two important scenarios I know of
>> right now. I can't say for certain others don't exist.
>
> This is only true to the extent that the entire pipeline is totally
> predictable in terms of latency;
That doesn't sound right to me. I would think you want what I described
above in high-latency or fluctuating latency situations, where you want
to accurately do something a few hundred milliseconds in the future,
rather than inaccurately do something ASAP. The synchronization is
supposed to happen at the end of the pipeline, where more accuracy is
possible.
> given that isn't even remotely true
> with these kinds of system, timing feedback, to allow clients to
> adjust accordingly, is more important. GStreamer, for example, has
> really detailed code to feed back in frame timestamps and use the
> actual, rather than predicted, presentation time to adjust its clock.
Yes, if your system doesn't allow accurate semi-high latency
presentation, that's what you'd want. This idea is for a system that
does allow accurate presentation after a series of
maybe-not-so-predictable-latency operations though. I think ideally,
you have both: A framework that allows reliable latency when the
HW/driver supports it, AND accurate feedback to handle the situations
where the driver or hardware can't provide sufficiently reliable
presentation. I'm certainly not opposed to feedback mechanisms.
This isn't theoretical either. We have robust implementations of the
high latency/accurate mechanism in VDPAU and GL_NV_present_video:
ftp://download.nvidia.com/XFree86/vdpau/doxygen/html/group___vdp_presentation_queue.html
http://www.opengl.org/registry/specs/NV/present_video.txt
The general "list of fences" mechanism is theoretical at the moment, but
is the logical next step in generalizing both the high latency/reliable
and low-latency/best effort mechanisms IMHO. Over the past few years,
it's proven interesting to have mechanisms to synchronize graphics
processing at the front and end of the graphics pipeline (GL fences, EGL
fences, X fence syncs to a lesser extent). Having a similarly powerful
way to express synchronization at the beginning of the display pipeline
seems like it could be a useful tool as well.
Thanks,
-James
> Cheers,
> Daniel
>
More information about the xorg-devel
mailing list