[linux-audio-dev] FLTK/X11 question

Billy Biggs vektor at dumbterm.net
Wed Sep 25 17:13:46 UTC 2002

Steve Harris (S.W.Harris at ecs.soton.ac.uk):

> On Wed, Sep 25, 2002 at 06:12:31 +0200, Tim Goetze wrote:
> > >> I seem to remeber that on the Amiga and in GL I could issue a call to wait
> > >> for the next vertical blank, forcing the redraw to be in sync with the
> > >> video hardware. Is there an equivalent in FLTK or X?
> > >> 
> > >> How do other people get round this?
> > 
> > i'd look at the GL kernel support sites, they might have a patch that
> > creates some sort of a '/dev/retrace', or add it to GLX. with vanilla
> > linux/X there's no way to do this except busy-wait reading inb
> > (0x3da) afaik. 
> There is a copy-on-next-vert-refresh call in X, I think. Part of the
> dbe extension.

  I don't think so.  X tears all the time.  I think that DBE does
something else, the main X server doesn't page flip.

> I dont think I can use it with FLTK though, as I can't find a way of
> drawing onto an non-screen surface and then using the dbe.
> Its probably just a bad choice of toolkit. GDK and SDL seem to be able
> to do it.

  Nope, SDL applications tear all the time also.

  The reason is that to handle the vertical interrupt, you need to have
a kernel driver that provides it/does the right thing.  nVidia's binary
driver does it for GL games in fullscreen.  No DRI drivers can do it,
which is why and DRI-based GL driver tears like mad even fullscreen.
Michel Danzer has just donne a patch to export an ioctl for the retrace
interrupt on the Radeons though, but that's a new development.

  For video overlay surfaces it's a bit easier: most cards can page flip
their overlay surfaces easily.  So, you won't see tearing with
XVideo-based apps in general.


Billy Biggs
vektor at dumbterm.net

More information about the Linux-audio-dev mailing list