From: Allan Schaffer (allan++at++sgi.com)
Date: 07/10/2001 15:39:31
On Jul 9, 5:42pm, Yves Strube wrote:
> I am using Performer in a program which consist of multiple processes
> and use a locked frame rate. Performer runs in only one of these
> processes. The processes use real-time priorities so that the process
> with the highest priority runs whenever it wants to run.
> When I call pfFrame to perform the CULL and DRAW stages, processes with
> a lower priority than the Performer process are no longer executed until
> the vertical retrace is detected by Performer. So Performer does a busy
> wait for the vertical retrace.
> I am using Performer 2.4 with Linux Kernel 2.2.18. The former Performer
> version did *not* perform a busy wait but I would prefer to stay with
> 2.4.
This is accurate, in Performer 2.4 we added "emulation" of the sync
to vertical retrace in the Performer processes so that pfPhase would
perform its timings accurately.
I think (but haven't tested) there are two workarounds
to avoid the busy-wait emulation:
1. If you call pfVideoRate(-1) before the first pfFrame() all the
synchronization logic, including the busy wait, will be
skipped.
2. [The "correct" situation] If the video_sync extension is
reported by GLX, and the glXWaitVideoSyncSGI() and
glXGetVideoSyncSGI() routines exist in your GLX implementation,
then they will be called by Performer instead of using
busy-wait emulation of them.
Good luck,
Allan
-- Allan Schaffer allan++at++sgi.com Engineering Manager, OpenGL Performer 1-650-933-2160 Silicon Graphics http://reality.sgi.com/allan
This archive was generated by hypermail 2b29 : Tue Jul 10 2001 - 15:40:13 PDT