From guest  Thu Jun 16 12:51:15 1994
From: "Drew Hess" <dhess@vision.arc.nasa.gov>
Message-Id: <9406161250.ZM21841@airy.arc.nasa.gov>
Date: Thu, 16 Jun 1994 12:50:48 -0700
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: info-performer@sgi.sgi.com
Subject: multiple pfChannels vs. multiple pfPipes
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

I want to render several views of the same scene on a 4-processor Onyx/RE2 (one
RE2 pipeline at this point) in a Performer application.

Is it generally better to configure Performer to use one pfPipe and multiple
pfChannels, using channel groups to share as much state information as
possible; or should I use multiple pfPipes and split the number of channels up
evenly among the pfPipes?

Also, if I get a second RE2 pipeline then obviously I would want multiple
pfPipes, but assuming I still need more pfChannels than I have hardware
pipelines, then I would assume the same partitioning issue applies.  (That is,
do I create 2 pfPipes -- one for each RE2 pipeline -- and split up the
pfChannels among them or do I create multiple pfPipes per hardware pipeline and
reduce the number of pfChannels per software pipe (i.e. pfPipes)?)

Thanks

-dwh-
dhess@vision.arc.nasa.gov
dhess@cs.stanford.edu



From guest  Thu Jun 16 13:27:27 1994
From: aaron@qbert.dseg.ti.com (Aaron Hightower)
Subject: Re: multiple pfChannels vs. multiple pfPipes
To: iris-performer@sgi.sgi.com
Date: Thu, 16 Jun 1994 15:30:21 -0500 (CDT)
X-Mailer: ELM [version 2.4 PL23]
Content-Type: text
Content-Length: 2411      
Status: OR


"Attribution from author Drew Hess"
> From holodeck.asd.sgi.com!guest Thu Jun 16 15:09:57 1994
> From: "Drew Hess" <dhess@vision.arc.nasa.gov>
> Message-Id: <9406161250.ZM21841@airy.arc.nasa.gov>
> Date: Thu, 16 Jun 1994 12:50:48 -0700
> X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
> To: info-performer@sgi.com
> Subject: multiple pfChannels vs. multiple pfPipes
> Content-Type: text/plain; charset=us-ascii
> Mime-Version: 1.0
> 
> I want to render several views of the same scene on a 4-processor Onyx/RE2 (one
> RE2 pipeline at this point) in a Performer application.
> 
> Is it generally better to configure Performer to use one pfPipe and multiple
> pfChannels, using channel groups to share as much state information as
> possible; or should I use multiple pfPipes and split the number of channels up
> evenly among the pfPipes?

From the man page for pfPipe:

  A pfPipe is tied to a specific hardware pipeline according to the
  hardware screen that the graphics window is opened on.  In initFunc,
  scrnselect should be used to select a hardware pipeline.  If initFunc is
  NULL, the full-screen window will be opened on the hardware pipeline
  whose id corresponds to the pfPipe id, e.g.- scrnselect(1); will be used
  for pfPipe number 1.  For best performance only one pfPipe should render
                            ^^^^^^^^^^^^^^^^
  to a given hardware pipeline.  If multiple views on a single screen are
  desired, use multiple pfChannels.

> Also, if I get a second RE2 pipeline then obviously I would want multiple
> pfPipes, but assuming I still need more pfChannels than I have hardware
> pipelines, then I would assume the same partitioning issue applies.  (That is,
> do I create 2 pfPipes -- one for each RE2 pipeline -- and split up the
> pfChannels among them or do I create multiple pfPipes per hardware pipeline and
> reduce the number of pfChannels per software pipe (i.e. pfPipes)?)

Hope this helps,
         _                                                      _
        | |    *-------------------------------------------*   | |  
      __| |___ |  Aaron.Hightower@dseg.ti.com 214.575.6759 | __| |___
      \      / |      Simulation & Planning Technology     | \      /
       \_   /  |       6620 Chase Oaks Blvd  M/S 8518      |  \_   /
         \ (   |               Plano TX 75023              |    \ (
          \/   *-------------------------------------------*     \/



From guest  Tue Jun 21 11:16:36 1994
Message-Id: <9406211816.AA22934@surreal.asd.sgi.com>
To: "Ran Yakir" <rany@bvr.co.il>
Cc: info-performer@sgi.sgi.com
Subject: Re: multi-channel synchronizing 
In-Reply-To: Your message of "Tue, 21 Jun 94 20:23:37 -0000."
             <9406212023.ZM11108@amcor.bvr.co.il> 
Date: Tue, 21 Jun 94 11:16:27 -0700
From: Jim Helman <jimh@surreal>
Status: OR

I can think of two things that might contribute to this:

1) You don't mention whether your pipes are genlocked.
When driving multiple pipes from the same Performer
application, it's important that the pipes be genlocked for
good synchronization.

2) There's a bug in 1.2 regarding the vertical retrace clock
initialization in multiple hardware pipes.  We don't
initialize them so they can be out of sync.  The workaround
is to do it yourself by simulataneously (i.e. within the
same video field) calling pfInitVClock(0.0).  A good place
to do this synchronization is during the first invocation of
the channel draw callback.  Something like this should work:

	if first invocation of a channel draw callback on this pfPipe
	{
	    wait for other draw processes to reach this point
            
	    /* block on pipe until next retrace */
	    gsync();
            cpack(0x000000);

	    /* initialize clocks */
            pfInitVClock(0.0f);
	}

rgds,

-jim helman

jimh@surreal.asd.sgi.com
415/390-1151






From guest  Tue Jun 21 10:24:47 1994
From: "Ran Yakir" <rany@bvr.co.il>
Message-Id: <9406212023.ZM11108@amcor.bvr.co.il>
Date: Tue, 21 Jun 1994 20:23:37 +0000
X-Face: aaaaaaaaaaljasddfjsdlkfjasd
X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail)
To: info-performer@sgi.sgi.com
Subject: multi-channel synchronizing
Content-Type: text/plain; charset=us-ascii
Mime-Version: 1.0
Status: O

Hi

I'm trying to run a dual piped system, which, upon arrival of hardware, should
become triple piped. Right now I have only 4 CPUs on my ONYX, su I use
PFMP_APP_CULLDRAW. The weird thing is that the left and right channels don't
seem to synchronize. Although their cull-draws run on different processors,
they tend not to run concurrently. Moreover, they skip frames in a manner that
channel 0 does frame # N, channel 1 does (N+1), channel 0 does (N+2), channel 1
does (N+3), and so on ... . Sometimes they suddenly sync, and run concurrently,
but not for long.
Just to be sure its not an overload, I asked pfFrameRate to be 10Hz (100 msec),
while the whole draw/cull thing takes less then 20 msec. I do plush the pipe at
the end of each frame to get accurate timing results.
In addition, I used the cpu locking utils from libpfutil, and runed as root, so
that they don't switch processors on me. And ofcourse I run with PFPHASE_LOCK.

Can anyone understand what that is ?


Ran



-- 
 __                                  | Ran Yakir
 /_)  _  __   \  / _   / o __        | Graphics App. Chief Engineer
/ )_ (_(_) )   \/ (_(_/<_(_)(        | BVR Technologies Ltd.
              _/                     |   
-------------------------------------+--------------------------------
Phone :                              | E-mail : rany@bvr.co.il
  Work : 972-3-5715671               |
  Res. : 972-3-6995364               |
Fax    : 972-3-5715668               |






