Re: Driving MCO & DG4-8, DG5-8

New Message Reply Date view Thread view Subject view Author view

Jean Daigle (jaydee++at++ATSaerospace.com)
Mon, 7 Apr 1997 15:29:25 -0400


Hi!

On Apr 7, 10:23am, Ralph Seguin wrote:
...
} I need to redo a bunch of our code ASAP to support both the MCO and the
} DG4-8 (DG5-8??).
}
} What I'd like to be able to drive (under Performer 2.1):
}
} Onyx/RE2, 2xRM4, MCO
}
} Onyx2/IR, 2xRM7, DG4-8
}

Note that Performer 2.1 is officially supported _only_ on Onyx iR.
Technically, it is _not_ supported on either of the machines described
above. YMMV. See the Performer FAQ referenced below.

} How do I associate a pfChannel with a channel on the DG4-8? Or, is it
} automagic?
}
} Anybody got sample code to handle multiple different configurations like
} this?

...
} =======================================================================
} List Archives, FAQ, FTP: http://www.sgi.com/Technology/Performer/
} Submissions: info-performer++at++sgi.com
} Admin. requests: info-performer-request++at++sgi.com
}-- End of excerpt from Ralph Seguin

DG4-8 and MCO work analogously. All the phyisical channels (video
outputs) on a hardware graphics pipe reside on the same X display
and screen (e.g., you can drag xterms between them; mouse tracks
transparently, etc.). The physical channels can be pictured as
rectangular cutouts on a big managed display area (in fact,
/usr/gfx/gfxinfo reports the pixel dimensions of this managed area).

A pfPipeWindow is mapped to a window on the X display surface, and
is described by pixel boundaries within the managed area for the
display. pfChannels have fractional limits within the viewport.
>From the /usr/share/Performer/src/pguide/libpf/C/multichan.c example:

    p = pfGetPipe(0);
    pw = pfNewPWin(p);
    pfPWinFullScreen(pw);
        ...

    for (loop=0; loop < 4; loop++)
    {
        chan[loop] = pfNewChan(p);
        ...
    }

    pfChanViewport (chan[0], 0.0, 0.5, 0.0, 0.5);
    pfChanViewport (chan[1], 0.5, 1.0, 0.0, 0.5);
    pfChanViewport (chan[2], 0.5, 1.0, 0.5, 1.0);
    pfChanViewport (chan[3], 0.0, 0.5, 0.5, 1.0);

With MCO on RE^2, one must cunningly select the channel viewports
to match the limits of the fixed physical channels output by the
MCO mode in effect. The four channels above would map nicely onto
the four physical channels output by the 4++at++960x620_60 MCO mode
on RE^2. The sample library source code in /usr/share/Performer
/src/lib/libpfutil/mco.c has some further examples, but is not
exhaustive (it hard codes a few well known MCO modes and guesses
which is active).

With iR, the ircombine utility can be used to create a custom
tiling of video formats for the physical channel outputs, and
then download this information to the pipe.

If you are really pressed for time, I would recommend creating
an iR .cmb video combination file with the same layout (not
necessarily same resolutions) as the RE^2 mode you intend to use.
Then, hard-code fractional channel viewports as above to match
the setup on both machines.

There are two alternate, more general approaches. Firstly,
one can parse the output of /usr/gfx/gfxinfo to infer the
managed display area, and positions of active channels. This
is vulnerable to changes in the implementation of the utility
(it broke for the first release of Onyx iR, for example).

More generally, if the SGI-VIDEO-CONTROL X extension (libXsgivc)
is present (as of IRIX 6.2, I believe), a programmatic API can
be used to glean the same information (see, for example, the
man page for glXChannelRectSGIX).

Good luck! Hope this helps.

Regards,
Jean Daigle.

 --------------------------------------------------------------------
| Jean Daigle ATS Aerospace Inc. |
| Manager, 1250 Boul Marie-Victorin |
| Real Time Graphics & Entertainment St. Bruno, QC J3V 6B8 |
| Tel: (514) 441-9000 |
| Jean.Daigle++at++ATSaerospace.com Fax: (514) 441-6789 |
 --------------------------------------------------------------------
=======================================================================
List Archives, FAQ, FTP: http://www.sgi.com/Technology/Performer/
            Submissions: info-performer++at++sgi.com
        Admin. requests: info-performer-request++at++sgi.com


New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:55:01 PDT

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