StereoDisplay

Author: Horst Vollhardt
Last modified: 14.09.2000
URL: http://reality.sgi.com/horstv_basel/Stereo/

News

FAQ: Fullscreen stereo on Octane Duo ?

FAQ: O2: Error: GLwMDrawingArea: requested visual not supported ?

FAQ: How does O find the correct stereo mode ?

Irix 6.5 and higher: Because 6.5 incorporates most of the patches for 6.2, 6.3, and 6.4, stereo should work without any stereo specific patches under 6.5. Currently, there are no 6.5 stereo patches available.

Octane SE, SSE, and MXE: The only significant difference between these graphics and the corresponding "I"-graphics is the performance. Therefore, almost everything on this page referring to SI, SSI, or MXI applies to these graphics as well.

Motivations

This page is collection of experiences I made and questions I was asked while supporting O from Alwyn Jones, Department of Molecular Biology, Uppsala, Sweden. Therefore, most of the topics are related to stereo viewing and O. Although, you may find answers to more general questions about stereo viewing, for example which stereo configurations are available on which graphics configuration. After introducing some terms used on this page, I will start with a section containing questions and answers about stereo viewing on the current Silicon Graphics hardware. Next, I want to give an overview about the currently supported stereo configurations for the various SGI workstations. ... and there is more to come in the future ... Another extremely useful page (e.g., stereo modes, the hardware, etc.) is Christi Garvins StereoView Minutia. If you have additional questions or feedback, please feel free to contact me.

Note: The patch numbers given on this page may change over time, because older patches get replaced by newer once. If you can not get a particular patch from Supportfolio over the web, go to the patch browse page and lookup the given patch number. This will point you the the current patch.


Glossary

In this section some terms used on the page will be explained. Some parts of the description were taken from Christi Garvins StereoView Minutia.

Fullscreen Stereo: Same as Splitscreen Stereo. Fullscreen stereo divides the complete screen into top and bottom halves. Therefore, the pixels are not square anymore. The left eye views only the top half of the framebuffer, the right eye views the bottom part. The windowing system takes care for putting up menus, popups, etc. in both the top and bottom halves of the screen in order to make the appearance of windows correct. Fullscreen stereo is supported on most platforms, including the ones listed below.

ircombine: (/usr/gfx/ircombine) On Onyx systems, this tool is used to configure the display. It has a powerful and flexible GUI to control all the possible resolutions and video modes provided by the InifiteReality graphics. It can be used on the command line as well. You can define and store display configurations on disk to be used later with setmon. For more information see man ircombine.

Quadbuffered Stereo: Same as Stereo-In-A-Window. Quadbuffer stereo uses a separate buffer for the left and right eye, resulting in four buffers used by the stereo application. Only the stereo window is in stereo mode. Therefore, this method does not require the windowing system to render its widgets in two places. This method renders and displays square pixels usually at a higher screen resolution resulting in higher image quality, especially for anti-aliased rendering.

setmon: (/usr/gfx/setmon) This tool can be used to switch into a different display configuration (e.g., into stereo mode). O automatically calls this command when the user hits F1. The general syntax is: setmon FORMAT (FORMAT is either a video format or a predefined configuration like 72HZ). The available configurations vary with the different graphics systems and are stored in a directory under /usr/gfx/. For more information see man setmon.

Splitscreen Stereo: Same as Fullscreen Stereo.

Stereo-In-A-Window: Same as Quadbuffered Stereo.

Video Formats: To describe a specific video format the following notation is used: WIDTHxHEIGHT@HZ (WIDTH, HEIGHT define the resolution of the screen, whereas HZ defines the screen refresh rate). This translates into the following format for setmon: WIDTHxHEIGHT_HZs . The optional s defines a stereo format.

xscreen: (/usr/bin/X11/xscreen). Xscreen provides an easy-to-use GUI to functions like the ones performed by setmon. It is only available on the O2. For more information see man xscreen.

Xserver: The xserver is the application which handles the display and other devices like the mouse or the keyboard. It manages the graphics on the screen. Some graphics systems require that the xserver is shutdown and restarted before entering a specific stereo mode. See below which platforms are affected.


FAQ

24" Monitor

   ... which of these Onyx2 IR quad stereo formats are supported by the wide screen 24" monitor?

1024x768@96
1024x768@120
1120x840@96
1280x1024@114
1280x1024@120

   The 1024x768@96, 1024x768@120, and 1120x840@96 work with the 24" monitors. From the specifications I assume that the monitor is not able to display 1280x1024@114. I've heard that some older monitor models turn blank when enabling a standard resolution off 1024x768@96.

Quadbuffered stereo on the O2

   ... I was told that it was possible to run O in a stereo window on an O2. Considering that we haven't been able to get stereo at all on our O2's I was surprised, and would like to know what our sysops are missing!

   You need 2 patches for the O2 (Patch 1979 and 2083). With these patches installed, O can automatically switch into stereo-in-a-window.
BTW.: Patch 1979 increases the graphics performance up to 20%

   ... we installed the two patches you specified for our O2 (1979 + 2083) and now, running O 6.1.2 I get this ERROR when I try to switch into stereo (key F1):

Error: GLwMDrawingArea: requested visual not supported

and the window closes. The program runs fine in mono.

   ... "Stereo-in-a-window" don't work when you start from a single framebuffer configuration, like in your case. You have to set your framebuffer to 1280x1024_75 32+32 (see man xscreen). You should make this the default. It uses a bit more memory for the double buffered windows but you get a better image quality. The 16+16 setting won't work (I don't know why).

Screen resolution

   OK, we set the framebuffer to 32 + 32 using xscreen, and got stereo-in-a-window to work on the O2. I notice that the size of the other windows on the screen changes (and the fonts look bigger, not exactly what I had expected).

   This is absolutely correct. What you are seeing, is the effect of reducing the screen resolution (1280x1024 -> 1024x768), which in turn is like increasing the pixel size (to fill the space on the monitor). The only thing that changes is the graphics window of O. It gets smaller (pixel x pixel) in order to fit in the new screen space.

O in stereo on which machines

   More generally, I would like to know whether O can be run in stereo on the currently available SGI systems - i.e. on the O2's and on the OCTANEs (with the different graphics options SI, SSI, MXI). I'd like to know specifically, in each case, whether full screen or window stereo is possible, and what steps to take (equipment, patches) to make it run. ...

   First of all, O is running on all of our current (and older, e.g. Indy) machines in stereo. You may have to install some patches or use a trick (I will explain later). It can be used in stereo-in-a-window on all of our current machines (O2, Indigo2 Impact, Octane, Onyx2).

Indigo2 Impact
On the Impact you need the Patch 1447 (or its successor which is 1935). All Impacts can do stereo-in-a-window, but only the MaxImpact can switch automatically. On the HighImpact and SolidImpact you need to perform the following steps before starting O.

  1. /usr/gfx/setmon -x 1024x768_96s
    Turns the display permanently into quadbuffered mode.
  2. Kill the X-Session/X-Server. The easiest way is to hit the following 4 keys simultaneously:
    [left Shift] + [left Ctrl] + [F12] + [/ on keypad]
  3. Log in again and start O

Octane
The Octane SSI, SSE, MXI, and MXE can switch automatically into stereo-in-a-window, but there are some problems reported. You should install Patch 2289 or its successor 2391. If this doesn't help, you can use the 3 steps I explained above to switch into stereo mode by hand. The Octane SI/E can do stereo-in-a-window, but can not switch automatically. You have to perform the same steps like for the Indigo2 SolidImpact.

Startup of O

   How does O find the correct stereo mode ?
Why does O use a wrong/unavailable stereo mode ?
What does O (print) on startup ?

   You will find the detailed description below.

Octane Duo

   Fullscreen stereo mode on Duo ? Fullscreen does not work on the second head.

   To use O in fullscreen stereo mode on the second head of an Octane DUO, you have to execute the following commands :
  1. launch O
  2. press F1 key
  3. in a shell : % setmon -p 0 STR_TOP
  4. => then O is in fullscreen stereo mode
You have to add the "-p 0" option due to a bug which will be fixed in IRIX 6.5.7.

Thanks to Francois Michoux, SGI France.

   The bug was fixed in IRIX 6.5.7 but with IRIX 6.5.9 it is broken again. A bug report has been filed.

Thanks to Doug Bloomberg, SGI Federal.


Configurations

Machine Graphics Quadbuffered
Resolution
Remarks
All(1) All(1) --- Fullscreen (Splitscreen): 1280x492@120 is available on all platforms. VTX, RE, RE2, Reality, IR, and RM additionally support a resolution of 1280x512@120.
Indigo XS, XZ, Elan --- Only Fullscreen/Splitscreen stereo is available.
Indy XL, XZ, XGE ---
Indigo2 XL, XZ, Elan, Extreme ---
SolidImpact
HighImpact
1024x768@96
Quadbuffered: Xserver has to be restarted(2) after the resolution has changed (setmon -x: permanent change). This means the user has to logout.
Patches:
1447
1592 (replaces 1447)
1690 (replaces 1592)
1899 (replaces 1690)
2159 (replaces 1899)
1935 (replaces 2159)
2677 (replaces 1935)
3133 (replaces 2677)
MaxImpact 1024x768@96
1280x1024@68(3)
Patches:
1447
1592 (replaces 1447)
1690 (replaces 1592)
1899 (replaces 1690)
2159 (replaces 1899)
1935 (replaces 2159)
2677 (replaces 1935)
3133 (replaces 2677)
Crimson RE 640x512@120
815x611@120
960x680@108
1025x768@96
 
Onyx VTX, RE2, IR 640x512@120
815x611@120
960x680@108
1025x768@96
Patches:
1808
2327 (replaces 1808)
3003 (for IR, replaces 2327)
O2 CRM 1024x768@96 Note: The O2 is the only current platform for which you need additional hardware (stereo adapter) in order to get stereo viewing.
Fullscreen: The O2 uses the framebuffer line 0-491 and 512-1003, whereas all other systems use 0-491 and 532-1023. Currently, fullscreen stereo does not work correctly when you use glViewport(0,0,...). Use glViewport(1,0,...) instead.
Quadbuffered: You have to use the 32+32 frame buffer depth (xscreen). All other configs don't work.
Patches (required for quadbuffered):
1979
2387 (replaces 1979)
2862 (replaces 2387)
2943 (replaces 2862)
3141 (replaces 2943)
3298 (replaces 3141)
3443 (replaces 3298, support contract required)

 and
2083
2447 (replaces 2083)
2942 (replaces 2447)
3239 (replaces 2942)
Caution: You shouldn't make a stereo visual permanent (with xscreen or setmon) like on the Impact. If you kill the Xserver your machine may hang and you have to reboot.
Onyx2 MXI 1024x768@96  
Reality, IR, RM 640x512@120
815x611@120
960x680@108
1024x768@96
1024x768@120
1120x840@96
1280x1024@114(4)
1280x1024@120(4)
Use ircombine to configure the display, because by default not all stereo-in-a-window .cmb files for setmon exist on the IR (see man setmon). In order to work with setmon (and O which uses setmon) configure the display with ircombine and store the configuration at /usr/gfx/ucode/KONA/dg4/cmb . Use the WidthxHeight_Hzs.cmb format for the file name.
Octane SI, SE 1024x768@96 Quadbuffered: Xserver has to be restarted(2) after the resolution has changed (setmon -x: permanent change). This means the user has to logout.

Patches:
2289 (replaced by 2391)
2391 (replaced by 2599)
2599 (replaced by 2604)
2604 (replaced by 2771)
2771 (replaced by 2843)
2843 (replaced by 2895)
2895 (replaced by 2990)
2990 (replaced by 3132)
3132 (replaced by 3154)
3154

Quadbuffered stereo should work without this patch. There are some reports that this patch breaks stereo on the SI/E.
SSI, SSE, MXI, MXE 1024x768@96 Patches: (required)
2289 (replaced by 2391)
2391 (replaced by 2599)
2599 (replaced by 2604)
2604 (replaced by 2771)
2771 (replaced by 2843)
2843 (replaced by 2895)
2895 (replaced by 2990)
2990 (replaced by 3132)
3132 (replaced by 3154)
3154

First tests of Octane MXI with IRIX 6.5beta: no problems with quadbuffered stereo.

(1) This means everything released after the first Indigo (incl.). To be more precise, every configuration mentioned in this table.

(2) The easiest way to restart the Xserver, is to press the following 4 keys simultaneously:

    [left Ctrl] + [left Shift] + [F12] + [/ on keypad]

(3) Quadbuffered stereo at 1280x1024 for Indigo2. The corresponding visuals are:

(4) The 24'' monitors are not able to display this setting.


How does O find the correct stereo mode ?
Why does O use a wrong/unavailable stereo mode ?
What does O (print) on startup ?

The stereo part of O is written to be independent of the actual graphics system. Unfortunately, every graphics system has its own locations for the video formats, its own naming conventions for the files and its own output format of the various graphics commands. For example:

Graphics    Directory                       Extension
Octane SE   /usr/gfx/ucode/MGRAS/vof	    *.sdb
Octane MXE  /usr/gfx/ucode/MGRAS/vof/2RSS   *.sdb
O2  	    /usr/gfx/ucode/CRM/vof 	    *.vfo
Indy 	    /usr/gfx/ucode/NG1/vof	    *.u
Indigo2 XS  /usr/gfx/ucode/GR2/vof 	    *.vfo
Onyx RE     /usr/gfx/ucode/RE/dg2/vof	    *.vfo
Onyx IR     /usr/gfx/ucode/KONA/dg4/vfo     *.cmb
Even worse, the InfiniteReality uses additional 'combination' files, because it has to support multiple graphic pipes.

To support all types of graphics systems even future ones, O uses the following algorithm to find the best stereo mode:

  1. Test if quadbuffered stereo is possible. Output:
        initStereo: gStereoBufferAvailable=0, gSGISteroAvailable=1
        
    'gStereoBufferAvailable=0' means quadbuffered not available, but 'gSGISteroAvailable=1' says that splitscreen stereo is possible.

  2. Get the name of the graphics board by running '/usr/gfx/gfxinfo'. Output:
        graphBoard is "..."
        

  3. From the 'gfxinfo' output, O tries to find the current monitor frequency. Unfortunately, the output format of 'gfxinfo' varies between different graphics systems and OS versions. Therefore, you will see very often:
        ...guessing monitor frequency to 72HZ
        The monitor was set to '72'
        
    Which is not always true, but the best guess so far.

  4. Next, O will search all possible stereo video formats, by doing a recursive 'ls -R1' into '/usr/gfx/ucode'. It selects all files with the format 'widthXheight_freq' no matter what extension they have. Output:
        found settings: 1024x768_60     1024x768_72     1024x768_96s
        1280x1024_49    1280x1024_50    1280x1024_59    ...
        
    From this list the best stereo format is picked. This part is the most critical one. Because sometimes, there are directories or files below '/usr/gfx/ucode' which do not belong to the actual graphics system or are not supported by the actual graphics setting. In this case you get an error message when you hit 'F1'. A 'quick-and-dirty' solution to this problem is to remove or rename these files. You better move them somewhere else to be able to restore them.

    If there was no stereo format found but 'gStereoBufferAvailable=1' is true, then '1024x768_96s' is assumed.


    How to get patches ?

    All patches can be downloaded over the WWW. A good point to start is the Supportfolio Online page. Before you can start downloading, you have to get a SurfZone ID. It's free, you only have to register yourself. Once you have it, you can start searching for specific patches.


    Still to come ...


    This page is under construction and maintained by Horst Vollhardt, horstv@sgi.com. Feel free to contact me if you have questions or feedback.