Re: DPLEX

New Message Reply Date view Thread view Subject view Author view

Jenny Zhao (zhz++at++dandan.engr.sgi.com)
Fri, 7 May 1999 19:17:25 -0700


If you run
perfly -h, you will get a long description of all the command line options.
In there, you can see:
    -M <mode> -Multipipe mode
        0 -> single pipe mode
        1 -> multipipe mode
        2[,h=<netId>...][,s=<dpyName>...] -> hyperpipe mode
            <netId> - hyperpipe network id (see hyperpipeinfo(1))
            <dpyName> - X display name for single pipe (including screen)
            - hyperpipe rendering pipelines must preceed single pipelines
            - no netIds will configure no hyperpipes
            - no dpyNames will configure no single pipes
            - no netIds and dpyNames will configure all hyperpipes

This is what you need to set to direct your DPLEX pipes (hyperpipes).

For example, to configurate a 3 channel reality center screen as
1 single pipe for the center channel, 1 hyperpipe for left and 1 hyperpipe for
right channel:
pipe channel
  0 0
  1 1
  2 2
  3 1
  4 2
where the center channel is channel 0, left is channel 1, right is channel 2.
(I am not good at drawing a picture in plain text. Try it on your paper)
Then the options are:
    -M 2,h=0, /* hyperpipe 0 consists of pipe(1, 3) */
            h=1, /* hyperpipe 1 consists of pipe(2, 4) */
         s=:0.0 /* single pipe for display :0.0 */
    -C 0, 2, 1 /* the first pipe is for center, 2nd for L, 3rd for R */

Here is a section of our new (unreleased) Performer manpage on Hyperpipe:
man pfConfig:
..

void pfHyperpipe(int n);
int pfGetHyperpipe(pfPipe *pipe);
int pfGetPipeHyperId(const pfPipe *pipe);

...

pfHyperpipe supports the hyperpipe hardware feature of
VGXT/Skywriter and Onyx/RealityEngine2 research systems, as well
as Onyx/InfiniteReality and Onyx2/InfiniteReality systems with
the DPLEX option.
n indicates the number of pfPipes that
should be configured together in hyperpipe mode.
pfHyperpipe should be called once for each hyperpipe group in the system that
is used by the application.

The first pfPipe in the new hyperpipe group will be the lowest
numbered pfPipe that is not currently assigned to another
hyperpipe group. This pfPipe is the master pfPipe. The slave
pfPipes are the next n-1 consecutive pfPipes. The master
pfPipe manages the pfPipeWindows and pfPipeVideoChannels for
the slave pfPipes. The application need only create or change
pfPipeWindows and pfPipeVideoChannels on the master pfPipe.
Performer will ensure that most attributes are propagated
to the slave objects. Those attributes that are graphics pipe
specific (i.e., VisualID or FBConfig) are not propagated, however.

Hyperpipes will run at a fraction of the system frame rate as defined
by pfFrameRate. For example, if the number of pipes in the hyperpipe
group is 2, then each pfPipe in the hyperpipe group will run at half the
system frame rate. Their aggregate rate will be equal to the system frame
rate.

pfGetHyperpipe returns the total number of pfPipes in the hyperpipe
group in which the given pfPipe belongs. pfGetPipeHyperId returns
the position of the given pfPipe in its hyperpipe group. The following
example configures a two-pipeline hyperpipe system. In this example, the
hyperpipe group pipes are screens 1 and 2 of the X display :0. This example
also configures screen 0 as a single, non-hyperpipe pipe.

Example 5: Hyperpipe Example

pfMultipipe(3); /* need 3 pipes, 2 for hyperpipe, 1 for single */
pfHyperpipe(2); /* configure the hyperpipe (pfPipe 0 and 1) */
pfConfig(); /* configure Performer */

/* assign screens 1 and 2 to the hyperpipe pfPipes 0 and 1 */
pfPipeScreen(pfGetPipe(0), 1);
pfPipeScreen(pfGetPipe(1), 2);

/* assign screen 0 to the single pfPipe 2 */
pfPipeScreen(pfGetPipe(2), 0);

/* create the pfPipeWindow and pfChannel for the hyperpipe */
pwin = pfNewPWin(pfGetPipe(0));
/*
 * config this pwin as needed
 *
 * if fbconfig or visualid must be assigned directly then get
 * the pwin using:
 * pwin = pfGetPipePWin(pfGetPipe(1), 0);
 *
 */

chan = pfNewChan(pfGetPipe(0));
/*
 * config the channel as needed
 */

/* create the pfPipeWindow and pfChannel for the single pipe */
pwin = pfNewPWin(pfGetPipe(2));
chan = pfNewChan(pfGetPipe(2));

The hyperpipe group configuration can be queried directly from GLX
(see glXQueryHyperpipeNetworkSGIX(3) for more information). This
information can be used to map pfPipes to physical screens.

On May 7, 3:26am, Lawrence Bertoldi wrote:
> Subject: DPLEX
> Hi Folks,
>
> I am looking for some info on running DPLEX mode in perfly.
>
> I am familiar with coding "hiperpipeness" (if you will) in performer,
> but I have not done this or witnessed it being set up.
> (I also don't happen to have a dplex machine in my back pocket to test
> with)
>
> I got the -M 2 and the -c <number of channels (or pipes)>
> but I'm not sure about if -C < a,b,c (which pipes to run as DPLEX)>
> is needed>
>
> Anyone out there currently running DPLEX?
> --
> See Ya,
>
> Lawrence Eugene Bertoldi Technical Consultant
> vnet 238-8949 Silicon Graphics
> phone 301-572-8949 Silver Spring MD.
> email lberto++at++clubfed.sgi.com
>
> "Bla Bla Bla!!"
> ~;-}>
> -----------------------------------------------------------------------
> List Archives, FAQ, FTP: http://www.sgi.com/software/performer/
> Submissions: info-performer++at++sgi.com
> Admin. requests: info-performer-request++at++sgi.com
>-- End of excerpt from Lawrence Bertoldi

-- 
Jenny Zhao        zhz++at++engr.sgi.com     650 933-5091	IRIS Performer Manager

New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2.0b2 on Fri May 07 1999 - 19:17:28 PDT

This message has been cleansed for anti-spam protection. Replace '++at++' in any mail addresses with the '@' symbol.