SGI's vfc
(video format compiler) lets you compile
.vfo
files, with a variety of screen sizes and scan rates,
for at least a couple of kinds of graphics hardware: Infinite Reality
and the O2's CRM graphics. You can then install these .vfo
files
in the appropriate place,
/usr/gfx/ucode/KONA/dg4/vof
/usr/gfx/ucode/CRM/vof
xscreen
or /usr/gfx/setmon
to activate them.
Although the O2 doesn't include a stereo-glasses port by default, it
can be purchased cheaply enough ($200-$300, marketing code STEREO-XEYE).
SGI supplies a 1024x768_96s
stereo-in-a-window format,
that's not especially high resolution, so I tried to use vfc to build
a higher-res one.
Unfortunately, if you do the obvious thing, it
setmon
reports No match for requested format.
But with some small patches to the SGI-supplied StereoTemplate.def, it can be made to work.
I posted a note to comp.sys.sgi.graphics about this around 4/29/1999.
I vfc 02/09/99 Video Format Compiler, 1.0
The SGI-supplied/usr/gfx/ucode/vfc/vfs/StereoTemplate.def
file seems to work fine for building formats for IR graphics, but not for O2s. A patch to the standard version appears below, and a complete updated file is in this www directory.To build and use one:
- Make sure "xscreen" says you're in a 16x16 or 32x32 framebuffer mode, not just "16" or "32". It needs to be right for the X server to offer any stereo-in-a-window visuals. If you need to change the display depth, you'll need to restart the X server. You can also do this by editing the file
in which the display depth ("16", "32", "16x16", or "32x32") appears in the second line./var/X11/Xvc/Crm0_TimingTable
- Write something like the supplied 1240x980_84s.vfs file (or just use it).
make XXXxYYY_FFs.vfo
- Copy corresponding .vfo file to
/usr/gfx/ucode/CRM/vfo/
directory. The X server looks there and nowhere else./usr/gfx/setmon -n XXXxYYY_FFs
Note: unfortunately, you can't just rename the .vfo file to something handy, likenicestereo.vfo
, and invoke it withsetmon -n nicestereo
. It turns out that setmon doesn't make the X server look for a .vfo file matching its argument name; instead, setmon knows the syntax of format names, parses them, and asks the X server for a format with the given size and frequency.- If the picture looks bad (distorted on screen edges, monitor won't sync, etc.) then tweak parameters (HBP, HACT, VACT, FPS, etc.) in .vfs file.
- Re-make, re-install, re-setmon.
- If you screw up and the monitor goes blank or otherwise awry, try
to restore a safe (non-stereo) default./usr/gfx/setmon -n 72
My O2's monitor has survived several weeks' operation on the enclosed 1240x980_84s.vfo without apparent harm. Your mileage may vary.
setmon -n ...
)
into a non-stereo mode, or into the SGI-supplied 1024x768_96s mode.
/usr/gfx/ucode/CRM/vfo/
directory. Can't guess why this is,
either. Workarounds: just use /usr/gfx/setmon rather than xscreen to load
video formats; to check properties of video formats, try e.g. the enclosed
listformats
(or meddle with its source to show other properties).
Or, temporarily remove the new .vfo file(s) from
/usr/gfx/ucode/CRM/vof
. Sorry.
vfc
works on Octanes,
it looks as though the relevant files are supplied. Furthermore, the
Octane .vfo files all claim to have been compiled with vfc. Unfortunately,
I haven't found any combination of tweaks to get any .vfs file, even for
non-stereo formats, to compile on the Octane yet. If anyone succeeds,
I'd love to hear about it.
Stuart Levy, slevy@ncsa.uiuc.edu
From slevy Thu Apr 29 15:12:28 CDT 1999 Newsgroups: comp.sys.sgi.graphics Subject: Re: Video Format Compiler Source [Here's how to build O2 stereo formats] Summary: Expires: References: <372086FB.D9C6023@boeing.com> <7g638e$am4$1@niri.ncsa.uiuc.edu> <7g7fu7$3gsa9@fido.engr.sgi.com> <7g8mk4$gee$1@niri.ncsa.uiuc.edu> Sender: Followup-To: Distribution: Organization: NCSA, University of Illinois Urbana-Champaign Keywords: Cc: In article <7g8mk4$gee$1@niri.ncsa.uiuc.edu>, Stuart Levywrote: >In article <7g7fu7$3gsa9@fido.engr.sgi.com>, >Paul Spencer wrote: > [I'd written...] >>> Clearly there's *some* way to compile a format-file that Xsgi interprets >>> correctly, since the SGI-distributed .vfo works great. >> >>Note that formats distributed by SGI may not be straight compiled ones; >>we can tweak them, or just generate them by hand. >> >>In any case; try adding the line >> >>#define STEREO_FMT 2 >> >>to your .vfs file, and changing ActiveLinesPerFrame to 1536 (768 * 2). > After building a little vfo decompiler (to extract the named values >from the .vfo fields), and comparing the recompiled .vfo with the SGI-supplied one, I figured out what was wrong with the SGI-supplied .def files. I'll report it here in case anyone else wants to try compiling stereo formats for O2s. Mine is now running (fairly) happily with a 1200x900_76s format, and I'll try others when it's working well. You'll need to patch /usr/gfx/ucode/vfc/vfs/StereoTemplate.def, setting ActiveLinesPerFrame to the full (doubled) number of lines in two stereo fields, and also to change the "repeat" clauses in each field to compensate. You can't do this by just doubling VACT in the .vfs file. Thanks to Paul Spencer and others for help with this! -- Stuart Levy, slevy@ncsa.uiuc.edu --- /usr/gfx/ucode/vfc/vfs/StereoTemplate.def Thu Apr 29 13:56:18 1999 +++ O2StereoTemplate.def Thu Apr 29 13:58:22 1999 @@ -83,13 +83,13 @@ General { ActivePixelsPerLine = HACT; - ActiveLinesPerFrame = VACT; + ActiveLinesPerFrame = 2*VACT; /* Doubled for O2 */ FramesPerSecond = FPS / 2; FieldsPerFrame = 2; TotalLinesPerFrame = 2 * (VSYNC + VBP + VACT + VFP); TotalPixelsPerLine = (HSYNC + HBP + HACT + HFP); FormatName = FORMAT_NAME; - SerratedCSyncOnHSync = true; + /* SerratedCSyncOnHSync = true; Do this only for IR, not O2 */ } #define CVT_PIXEL_CLOCK(p) ((p * VideoClockRatioNumerator) / VideoClockRatioDenominator) @@ -171,7 +171,7 @@ Active = { - repeat ActiveLinesPerFrame + repeat ActiveLinesPerFrame/2 { Length = 1.0H; Low = 0 usec; @@ -245,7 +245,7 @@ Active = { - repeat ActiveLinesPerFrame + repeat ActiveLinesPerFrame/2 { Length = 1.0H; Low = 0 usec;