gl_dev Release Notes

1 Introduction

2 Installation Information

3 Changes and Additions

4 Bug Fixes

5 Known Problems and Workarounds

6 OpenGL

A gl_dev Man Pages

 



                                  - 1 -



       1.  Introduction

       These release notes describe the Graphics Library
       Development Environment for IRIX 5.2.  OpenGL information
       can be found in Chapter 6.

       Note:  Packaged with your software is a separate sheet that
              contains the Software License Agreement.  This
              software is provided to you solely under the terms
              and conditions of the Software License Agreement.
              Please take a few moments to review the Agreement.

       This document contains the following chapters:

         1.  Introduction

         2.  Installation Information

         3.  Changes and Additions

         4.  Bug Fixes

         5.  Known Problems and Workarounds

         6.  OpenGL


       1.1  Release_Identification_Information

       Following is the release identification information for GL
       Development Software:

       Software Option Product        GL Development
                                      Software

       Version                        5.2
       Product Code                   SC4-IDO-5.2

       System Software Requirements   IRIX 5.2 or later



       1.2  Online_Release_Notes

       After you install the online documentation for a product
       (the relnotes subsystem), you can view the release notes on
       your screen.

       If you have a graphics system, select ``Release Notes'' from
       the Tools submenu of the Toolchest. This displays the
       grelnotes(1) graphical browser for the online release notes.











                                  - 2 -



       Refer to the grelnotes(1) man page for information on
       options to this command.

       If you do not have a graphics system, you can use the
       relnotes command.  Refer to the relnotes(1) man page for
       accessing the online release notes.

       1.3  Product_Support

       Silicon Graphics, Inc., provides a comprehensive product
       support maintenance program for its products.

       If you are in the U.S. or Canada and would like support for
       your Silicon Graphics-supported products, contact the
       Technical Assistance Center at 1-800-800-4SGI.  If you are
       outside these areas, contact the Silicon Graphics subsidiary
       or authorized distributor in your country.










































 



                                  - 1 -



       2.  Installation_Information

       This chapter lists supplemental information to the IRIS
       Software Installation Guide.  The information listed here is
       product-specific; use it with the Installation Guide to
       install this product.

       2.1  Graphics_Library_Development_Environment_Subsystems

       The GL Development Environment includes these subsystems:

       gl_dev.man.gldev              These are the man pages for
                                     the GL calls in all languages.

       gl_dev.man.relnotes           These release notes.

       gl_dev.sw.gldebug             This subsystem contains the
                                     gldebug product.  It allows
                                     you to debug GL programs
                                     inline with traces and
                                     breakpoints at GL calls.


       2.2  GL Development Environment Subsystem Disk Space
            Requirements

       This section lists the subsystems (and their sizes) of the
       GL Development Environment option.

       If you are installing this option for the first time, the
       subsystems marked ``default'' are the ones that are
       installed if you use the ``go'' menu item.  To install a
       different set of subsystems, use the ``install,''
       ``remove,'' ``keep,'' and ``step'' commands in inst to
       customize the list of subsystems to be installed, then
       select the ``go'' menu item.

       Note:  The listed subsystem sizes are approximate. Refer to
              the IRIS Software Installation Guide for information
              on finding exact sizes.

       Subsystem Name                          Subsystem Size
                                               (512-byte blocks)

       gl_dev.books.OpenGL_PG (default)              13862
       gl_dev.books.OpenGL_Porting (default)          2909

       gl_dev.books.OpenGL_RM (default)               5324
       gl_dev.man.gldebug                                6













                                  - 2 -



       gl_dev.man.gldev (default)                     3866

       gl_dev.man.glprof                                31
       gl_dev.man.relnotes (default)                    52

       gl_dev.sw.gldebug                              2816
       gl_dev.sw.gldev (default)                      2070

       gl_dev.sw.glprof                              10959
       gl_dev.sw.oglsamples                          18353



       2.3  Installation_Method

       All of the subsystems for GL Development Environment can be
       installed using IRIX.  You do not need to use the miniroot.
       Refer to the IRIS Software Installation Guide for complete
       installation instructions.


       2.4  Prerequisites

       To use gl_dev, you must install x_dev.sw to get the libX11
       libraries.


































 



                                  - 1 -



       3.  Changes_and_Additions

       The IRIS GL now supports new image processing features on
       RealityEngine:

          o Calls to allocate framebuffer space (the ILbuffer) to
            be used as image storage/cache and use it as the source
            or destination of drawing and pixel transfers.  Note
            that this is not exactly the same as the AUXbuffers in
            OpenGL.  See ilbuffer.

          o Modifications to texture loading.  Texture memory
            represents a warpable, wrappable image store with very
            fast fill and resampling (image rotate, zoom, and copy)
            rates.  The modifications are to allow:

               - raster-order load of image data to texture memory
                 with most pixmode and pixel transfer operations.

               - loading subimages into texture memory.  This is
                 the basic tool that, along with texture coordinate
                 wrapping, allows fast panning over a large image.
                 See subtexload and fbsubtexload.

            The source for the image data can be either host memory
            or the frame buffer.

          o Operators on pixel transfers (lrectwrite, rectcopy,
            lrectread).  The operations are:

               - Convolve 3x3, 5x5, 7x7, separable and general. See
                 convolve.

               - Lookup tables. See tlutbind.

               - image statistics: hgram and minmax

          o The IRIS GL can now transfer a single component of a
            framebuffer (ABGR) image so that image storage is
            extended by a factor of 4.

          o Several OpenGL-like commands were added to pixmode,
            primarily CPM_INPUT_TYPE, PM_INPUT_FORMAT,
            PM_OUTPUT_TYPE, PM_OUTPUT_FORMAT.

       Several IRIS GL man pages are new or were changed in 5.1 or
       5.0.1:

       convolve       ildraw         readcomponent
       fbsubtexload   istexloaded    readsource
       gethgram       minmax         subtexload











                                  - 2 -



       getminmax      pixelmap       texbind
       hgram          pixeltransfer  texdef
       ilbuffer       pixmode        texdef2d

          o Using libsphere, RealityEngine systems can now draw
            high-speed ``bitmap'' spheres.  They are Phong-shaded
            and are limited only by the back-end fill rate.  There
            are some limitations, but they now work in perspective
            as well.

          o On RealityEngine systems, pixmode(PM_SIZE,64) is now
            fully supported and documented.

          o On RealityEngine systems, non-multisample primitive
            performance has been improved.

          o On RealityEngine systems, the Multi-Channel Option now
            supports cursors on multiple screens.

          o Field-sequential RGB format requires the IMP7 ASIC on
            the RM4 board. Use /usr/gfx/gfxinfo -v as root and
            verify that the last digit of the RM version number is
            ``2'' or more.

          o On RealityEngine systems, performance was enhanced for
            pixel transfer operations using some pixmode features
            (PM_ADD24, PM_SHIFT, etc).

          o On RealityEngine systems, performance was enhanced for
            mode changing operations such as texbind and lmbind.





























 



                                  - 1 -



       4.  Bug_Fixes

       4.1  Bug_Fixes_Between_IRIX_5.1_and_5.2

          o On RealityEngine, video framelock is not yet
            implemented.  (135462)

          o On VGX, setmonitor(3g) can sometimes wedge the system.
            (165317)

          o On Onyx, exiting an IrisGL program that used sproc
            might hang the graphics pipe. (174634)

          o On RealityEngine, using swinopen and overlays might
            produce the wrong effect. (174935)

          o On RealityEngine, a rare case involving 5-sided
            polygons with two-sided lighting would hang the pipe
            (174951).

          o On RealityEngine, an OpenGL texture defined inside a
            display list could not be shared by multiple rendering
            contexts. (175222)

          o On RealityEngine, running certain programs (involving
            colormap manipulation) and then logging out would cause
            the X server to fail to reset. (175792)

          o On RealityEngine, the OpenGL gluNurbsSurface call would
            not render correctly in all cases.  The symptoms
            included filled surfaces not being rendered at all, and
            outlined surfaces not being tessellated correctly.
            (176770)

          o On systems other than RealityEngine the getmultisample
            call was returning unreasonable values. (177371)

          o On RealityEngine and VGX(T) systems, using the "-
            overlay" option on Xsgi prevented the visual login
            window from appearing.  (177469)

          o On RealityEngine, removal of underlay windows was not
            being handled correctly, causing the underlay planes to
            "show through" in some cases.  (177563)

          o On GTX, VGX(T), and RealityEngine, some mixed-model
            applications using dgl accessed uninitialized data
            structures and dumped core on startup.  (177793)

          o On all systems, scrnselect could dump core if called
            before winopen. (180410)











                                  - 2 -



          o On Onyx, programs using v2s and compiled under IRIX
            4.0.X generated incorrect vertex coordinates under IRIX
            5.1. (180500)

          o On RealityEngine, opaque windows created in the overlay
            planes left "holes" when they were removed.  (181217)

          o On RealityEngine, some trimmed NURBS surfaces were not
            rendered correctly.  (181304)

          o On RealityEngine, the OpenGL raster position was not
            updated correctly when the associated window was moved.
            (182101)

          o On RealityEngine, creating multiple OpenGL contexts
            could fail under some circumstances.  (182704)

          o On RealityEngine, sharing a display list between
            multiple OpenGL contexts was not implemented.  (182708)

          o On RealityEngine, OpenGL attribute push/pop failed for
            certain attributes (notably PIXEL_MODE).  (182764)

          o On RealityEngine, under certain conditions texturing
            during multisampling caused a pipeline timeout.
            (183853)

          o On RealityEngine, underlay windows created in field-
            sequential mode caused a significant performance
            degradation.  (184288)

          o On RealityEngine under IRIX 5.1.1, there was a problem
            that often prevented xdm from reopening the display
            after logout.  (184440)

          o On RealityEngine, OpenGL glTexGen failed in
            GL_OBJECT_LINEAR and GL_EYE_LINEAR modes.  (184932)

          o On RealityEngine, pixel zooming in OpenGL did not
            always work correctly.  (184968)

          o On all systems, dgl would attempt to initialize a
            remote display even when no GL drawing was requested.
            (185446)

          o On RealityEngine, there was a performance problem with
            TX_TEXTURE_IDLE.  (185629)

          o On all systems, dgl I/O operations could not recover
            from an interrupted system call.  This caused problems
            for applications using timer signals.  (186562)











                                  - 3 -



          o On RealityEngine, xlock would generate an incorrect
            display when used in hop mode.  (186686)

          o On RealityEngine, subtexload could cause a kernel hang
            under certain conditions.  (186813)

          o On RealityEngine, pixmode(PM_ZDATA) failed in color
            index mode.  (188308)

          o On RealityEngine, OpenGL viewport clipping was
            incorrect under certain conditions (including disabled
            scissoring).  (188828)

          o On RealityEngine, rectcopy from the right buffer to the
            left buffer failed.  (188985)

          o On RealityEngine, attribute push/pop failed under
            certain circumstances.  (189828)

          o On RealityEngine, buffer swap could fail in the
            presence of unmapped overlay windows.  (190560)

          o On VGX, readdisplay not reading underlay planes.
            (190941)

          o On RealityEngine, byte and short versions of glNormal
            don't work.  (193388)

          o On servers, dgl call to gversion doesn't work.
            (194247)

          o On VGX(T), linewidthf(1.0f) for AA lines gives width of
            2.  (196763)

          o On XS, XZ, Elan, and Extreme,  Concave Polygon
            decomposition in some cases was broken. This has been
            rewritten to work correctly for all cases.  (145984)

          o On XS, XZ, Elan, and Extreme, user Clip Planes were
            sometimes transformed incorrectly. This has now been
            fixed.  (171206)

          o On XS, XZ, Elan, and Extreme, in lmcolor mode, Nurbs
            were being rendered incorrectly. This is fixed.
            (172421)

          o On XS, XZ, Elan, and Extreme, material changes per
            vertex were sometimes being processed incorrectly for
            primitives such as Tmeshes, Qstrips, etc.. This
            resulted in bad visual artifacts. This is fixed.
            (177466)











                                  - 4 -



          o On XS, XZ, Elan, and Extreme, many lmcolor bugs have
            been fixed to ensure correctness and good performance.
            (egs. 145400)

          o On XS, XZ, Elan, and Extreme, many two-sided lighting
            bugs have been fixed to ensure correct behavior.  (egs.
            176075)

          o On XS, XZ, Elan, and Extreme, numerous miscellaneous
            lighting bugs are now fixed.  (egs. 154589, 154589,
            189048)

          o On XS, XZ, Elan, and Extreme, some small DMA's are
            faster now.  (181478)

          o On XS, XZ, Elan, and Extreme, GL Screen Savers such as
            bongo and ep were broken and would display only a
            single column of pixels. Any program that opened a
            large viewport could have been affected by this same
            problem. This is now fixed.  (170756)

          o On XS, XZ, Elan, and Extreme, lines would jitter when
            lots of graphics programs were running. This is now
            taken care of.  (144438)

          o On XS, XZ, Elan, and Extreme, large (actually huge)
            Characters used to do bad stuff to the graphics system.
            This is now taken care of.  (154686)

          o On Indy and Indigo2 XL systems, creating a GL window
            with an origin offscreen more than 2048 pixels would
            cause a segmentation fault when using z buffer. (also
            from 177186)

          o Indy and Indigo2 XL graphics libraries were made to
            avoid problems with clipping when the viewport
            transformation generated vertices with negative w
            values.  This had caused a bus error when called from
            certain applications. (181333)

          o In Indy and Indigo2 XL OpenGL graphics libraries,
            changes were made to prevent floating point exception
            in __glNptSmoothRGBLine_asm. (184033)

          o On Indy and Indigo2 XL systems GL library, a problem
            was fixed with blendfunction(BF_SA, BF_MSA).  Alpha
            values set through lmcolor() were ignored. (185166)

          o On Indy and Indigo2 XL systems GL library, changes were
            made to avoid floating point exceptions generated in
            _pmovedraw.  (171725)











                                  - 5 -



          o On Indy and Indigo2 XL systems OpenGL library, changes
            were made to avoid floating point exceptions in
            __glNptComputeSlopes. (171759)

          o GLXgetconfig will not fail on 24 bit Indy and Indigo2
            XL GL graphics when no visual matches the template.  In
            particular, if a user requests a 2 bit overlay visual,
            a pointer will be returned to an 8 bit overlay visual.
            (180458)

          o On systems with Starter, Express, and Newport graphics,
            there is a floating point exception in
            SetInitialParameters. (181108)

          o Drawing inconsistency-rounding incorrectly in Y for
            sbox-between Indy and Indigo2. (172602)

          o In Indy and Indigo2 XL OpenGL graphics libraries,
            changes were made to avoid segmentation faults in
            clipped, z-buffered lines. (194200)

          o In Indy and Indigo2 XL GL libraries, a clipping related
            bug was fixed to avoid segmentation faults in zbuffered
            lines (192755).

          o In Indy and Indigo2 XL GL libraries, a fix was made in
            the texture LOD selection code for certain orientations
            of polygons, and in the alpha blended textures.
            (188161 and 188213)

          o In Indy and Indigo2 XL GL libraries, a spotlight bug
            was fixed when a spotlights cutoff was much greater
            than the angle at which the specular effect was nil.
            (191626)

          o In Indy and Indigo2 XL GL libraries, a bug in
            lrectwrite into overlay planes was fixed. (186996)

          o In Indy and Indigo2 XL OpenGL libraries, several
            unreported bugs were fixed with z-buffered lines, pixel
            operations, context switching, bitmap writes, and
            picking.

          o In Indy and Indigo2 XL GL libraries, several unreported
            bugs were fixed with concave polygon decomposition,
            fogged line clipping and excessive floating point
            exceptions.















                                  - 6 -



       4.2  Bug_Fixes_Between_IRIX_5.0.1_and_5.1

          o Crimson Elan could get an MP bus timeout error message.
            This has been fixed.

          o The tolerance for NURBS knot values was changed to
            10.0e-6.

          o gl_x_dev was renamed gl_dev since it no longer contains
            any X development products.

          o On RealityEngine systems, a rectcopy call could corrupt
            the z-buffer.  This has been fixed.

          o Several problems with multi-headed RealityEngine and
            SkyWriter systems on MP-bus systems were fixed.

          o On Onyx RealityEngine systems, certain conditions
            caused the message Bad CP command encountered to be
            printed on the console.  This has been made much less
            likely to occur due to errors in hardware.  Errors in
            user programs may still cause this message to be
            printed.

          o Frequent calls to dither caused the video output of
            RealityEngine systems to shift. This has been fixed.

          o Picking of polygons was broken on 5.0.1 RealityEngine
            systems. This has been fixed.

          o The Distributed Graphics Library (DGL) was broken in
            5.0.1. This has been fixed, but you should look at the
            discussion in Chapter 5 of these release notes.

          o A problem where texgen and ``old-style'' polygons could
            crash graphics on RealityEngine systems was fixed.

          o Returned z-buffer values obtained from lrectread had
            bytes swapped on RealityEngine systems. This has been
            fixed.

          o PAL mode on the composite video output of RealityEngine
            systems was not working.  It now works.

          o Calls to lrectread and lrectwrite of exactly 2048
            pixels wide could hang VGX graphics. This has been
            fixed.















                                  - 7 -



       4.3  Bug_Fixes_Between_IRIX_5.0_and_5.0.1

          o Double buffering in an overlay window of a GLXDraw
            widget now works.  The only constraints are that the
            overlay GL window must have a main framebuffer GL
            window associated with it, for example:

            GLXconfig rgb_ov[] = {
                       { GLX_NORMAL,   GLX_RGB,        TRUE} ,
                       { GLX_OVERLAY,  GLX_BUFSIZE,    4} ,
                       { GLX_OVERLAY,  GLX_DOUBLE,     TRUE} ,
                       { 0,            0,              0}
              };

            and the overlay GL window will be clipped to the main
            framebuffer GL window's extents.

          o New RealityEngine features are now supported by
            gldebug: constants for texdef2d and glcompat, and
            support for texdef3d.

          o gldebug no longer requires the DISPLAY environment
            variable to be set.

          o Graphics programs using the Distributed Graphics
            Library (DGL) no longer have errors when mixing
            connection types (DGLLOCAL vs.  DGLTSOCKET).

          o Calls to lrectwrite with the pixmode PM_STRIDE
            parameter set with more than 511 lines caused a kernel
            panic.  This has been fixed.

          o The ARCS PROM now handles different screen resolutions.

          o Overlay planes now work in mixed model, double-buffered
            applications.

          o The GL routine afunction now works on RealityEngine
            systems.

          o On RealityEngine, The behavior of swapbuffers could be
            unpredictable with many calls to winset and
            drawmode(OVERDRAW).  This is now fixed.

          o Several problems related to lighting when using
            shademodel(FLAT) or two-sided lighting have been fixed
            on RealityEngine.















                                  - 8 -



       4.4  Bug_Fixes_Between_4.0.5_and_5.0

          o On RealityEngine systems, pixmode use combined with
            rectcopy to/from the z-buffer no longer hangs the pipe.

          o On RealityEngine systems, multiple GL programs doing
            lrectwrites no longer hang the pipe.

          o On RealityEngine systems, PM_ADD24, PM_RTOL, PM_ZDATA,
            and PM_BTOT now work correctly.

          o On RealityEngine systems, readdisplay is no longer off
            by one pixel.

          o On RealityEngine systems, moving multi-sampling GL
            windows now copies all bits.

          o On RealityEngine systems, GL underlays are more robust.

          o On RealityEngine systems, pupdraw menus draw faster.

          o On RealityEngine systems, the overlay visual now works,
            including double-buffered overlays.

          o On RealityEngine systems, picking and feedback are much
            more robust.

          o On RealityEngine systems, IL ilchain no longer displays
            wrong data.

          o On RealityEngine systems, combining GL windows using
            texturing with GL windows using fog no longer hangs the
            pipe.

          o On RealityEngine systems, tengen no longer forgets its
            parameters when texturing is turned off.

          o On RealityEngine systems, DGL now supports new texdef
            and tevdef options.

          o On RealityEngine systems, 1600x1200_60 video format
            should now always produce stable video.

          o On RealityEngine systems, /usr/gfx/setmon -s now sets
            sync correctly.

          o On RealityEngine systems, 960x680_60 cursor position is
            now correct.

          o On dual-head RealityEngine systems, changing video
            formats on the fly now works correctly.











                                  - 9 -



          o On dual-head RealityEngine systems, the cursor tracks
            correctly on the second head even if it is running a
            different format from the first head.

          o On RealityEngine systems, mixed-model GL programs can
            now use GLX_RGBSIZE correctly.

          o On RealityEngine systems, multisampling combined with
            blendcolor sometimes blended incorrectly.

          o On RealityEngine systems, PYM_HOLLOW and PYM_SHRINK now
            work correctly.

          o On RealityEngine systems, color index values are now
            clamped correctly.

          o On RealityEngine systems, depthcueing now works
            correctly in all cases.

          o On RealityEngine systems, setlinestyle now does not
            hang the pipe.

          o On dual-head systems, getgdesc now gives correct
            answers before winopen.  Using DGL, double-precision GL
            calls no longer fail.

          o On VGX and RealityEngine systems, nurbs are more
            reliable.

          o Using lrectwrite over DGL, pixmode variants are more
            reliable.

          o gversion before a call to fork works correctly.


























 



                                  - 1 -



       5.  Known_Problems_and_Workarounds

          o On all RealityEngine systems, when RGBsize(8) is set,
            z-buffer readbacks might return incorrect data.

          o On RealityEngine systems, pixel transfers larger than
            2048 x 2048 do not work.

          o On RealityEngine systems, texture coordinates from the
            t3f command are not correctly transformed by the 3x3
            texture matrix.

          o On XS, XZ, Elan, and Extreme systems, when rendering
            with concave(TRUE), very small concave and convex
            polygons (less than 1 pixel in size in screen space)
            fail to draw sometimes. Users should avoid setting
            concave(TRUE) when drawing data sets that do not
            contain concave polygons. The only solution for such
            very small concave polygons is for you the user to
            tesselate the concave polygon into triangles.

          o On VGX systems, two-sided lighting might render
            incorrectly on old-style rectangles.

          o On VGX systems, lsetdepth malfunctions when using GL/X
            mixed-model.

          o The 4Dgifts program zrgb.c demonstrates that the IP4GT
            drops polygons sometimes when the polygons are near
            clipped.

          o If you install the optional GL Profiler software
            subsystem (gl_dev.sw.glprof) on a system that does not
            support OpenGL, the X server will erroneously report
            that it supports the GLX (OpenGL) extension to the X
            protocol, even though it does not in fact support this
            extension.  This is due to the presence of the file
            /usr/lib/X11/dyDDX/glx.so, which is necessary for the
            proper functioning of glprof_sim.  If your system does
            not support OpenGL, this file will be present only if
            you have installed gl_dev.sw.glprof, and its presence
            will not cause your system to support OpenGL.  If your
            system does not support OpenGL, and you install
            gl_dev.sw.glprof while the system is running using the
            IRIX (not miniroot) software installation technique,
            you must restart the X server so that it will recognize
            the presence of /usr/lib/X11/dyDDX/glx.so.















                                  - 2 -



       5.1  RealityEngine_with_Multi-Channel_Option

          o When installing Multi-Channel Option hardware on a
            system equipped with RealityEngine graphics where IRIX
            5.1 is already installed, you must manually specify the
            VME address of the Multi-Channel Option if it is not
            the default.  See the MCO Installation Guide for
            details on the vs2addrset program.

            Note that if the Multi-Channel Option hardware is
            already installed, installing IRIX 5.1 automatically
            specifies the default address.

          o Now that cursor tracking works on most formats, it
            should be noted that it still does not work in dual
            field-sequential RGB mode.

          o The 3@1025x768 format requires that the RealityEngine
            graphics organization be manually configured to support
            10-bit RGB without alpha.  To do so, edit the file
            /usr/bin/X11/X.  The file appears as:

             #! /bin/sh
             #
             #  /usr/bin/X11/X
             #  initialize graphics device and start X Window System
             #  $Revision: 1.1 $
             #
             glGammaFile=/etc/config/system.glGammaVal
             glGammaDefault="1.7"

             if /etc/chkconfig windowsystem; then
                    if [ -x /usr/gfx/gfxinit ]; then
                            /usr/gfx/gfxinit
                            if [ -r $glGammaFile -a -s $glGammaFile ] ; then


            Modify the file to include the following statements
            between line 11 and line 12:

                            PIXDENS=PIX32_RGB10
                            export PIXDENS

            The file should appear as:

             #
             #  /usr/bin/X11/X
             #  initialize graphics device and start X Window System
             #  $Revision: 1.1 $
             #
             glGammaFile=/etc/config/system.glGammaVal











                                  - 3 -



             glGammaDefault="1.7"

             if /etc/chkconfig windowsystem; then
                    if [ -x /usr/gfx/gfxinit ]; then
                            PIXDENS=PIX32_RGB10
                            export PIXDENS
                            /usr/gfx/gfxinit
                            if [ $? -eq 0 -a -x /usr/bin/X11/Xsgi ]; then



















































 



                                  - 1 -



       6.  OpenGL

       OpenGL is supported on Indy, Indigo, Indigo2, RealityEngine
       and some PI systems. Here is the complete list:

         Indy - XL 8/24 bits
         Indigo - Starter, XS, XS24, XZ, Elan
         IndigoII - XL, XZ, Extreme
         Crimson - Starter, XS, XS24, Elan, Extreme,
                   RealityEngine
         Onyx - VTX, RealityEngine, RealityEngine2
         4D30/35 - Elan

       All these implementations pass Level 0 of the conformance
       tests (i.e., the "mustpass" test suite) and most of the
       balance of the test suite.

       OpenGL is not currently supported on PI's without Elan
       graphics, VGX(T) or GTX.

       6.1  Documentation

       The following documentation is available for OpenGL:

          o The OpenGL Programming Guide (Addison-Wesley, 1993) is
            a comprehensive guide to programming with OpenGL.

          o The OpenGL Reference Manual (Addison-Wesley, 1992)
            contains an overview of OpenGL and man pages for all
            OpenGL, GLX and GLU functions.

          o The OpenGL Porting Guide describes how to port programs
            that were written for IRIS GL.

          o The IRIS Programming Notes include documentation for
            X11, GL/GLX, Font Manager and mixed model programming
            in IRIS GL.

       The IRIS Development Option documentation includes an online
       copy of The OpenGL Porting Guide, an online copy of the IRIS
       Programming Notes, and man pages for all OpenGL, GLX and GLU
       functions. It also comes with a hardcopy of the OpenGL
       Programming Guide.  You may also order a hardcopy of the
       porting guide (part number M4-OGLPort-5.1) and the OpenGL
       Reference Manual (part number M4-OGLMAN-1.0).

       If you're porting from IRIS GL to OpenGL, the best approach
       is to convert your program to a mixed-model program first
       (see the IRIS Programming Notes) and then consult The OpenGL
       Porting Guide for more information.












                                  - 2 -



       Unlike IrisGL, OpenGL processes are not allowed to share
       file descriptors.  This means that OpenGL processes should
       not specify PR_SFDS or PR_SALL when calling sproc.  OpenGL
       processes may share access to the graphics hardware if they
       access the graphics device through unique file descriptors.

       6.2  Known_problems_in_5.2

       The following problems exist in 5.0.1, 5.1x and 5.2:

          o Textures loaded using glPixelMap might be corrupted
            when enough textures are loaded to cause kernel
            management of texture memory.  Corruption should occur
            only if the glPixelMap has changed or been disabled
            since the original load.

          o Line stippling for antialiased lines is not quite
            correct on Onyx systems.

          o On Indy and Indigo2 XL systems under 5.2, enabling
            polygon stipple may not take effect immediately.  An
            application fix for the problem is to respecify the
            current shade model after enabling stipple.

          o Different OpenGL processes which render to the same
            window using direct rendering will not share the
            software ancillary buffers on that window.

          o X and OpenGL do not coordinate swapping on double-
            buffered windows properly.

          o During direct rendering, software buffers that are
            associated with the window are not freed when the
            window is destroyed, but rather when the display
            connection is closed. (The machine type determines
            which buffers are implemented in software; on Indigo
            Starter and Indy, for example, depth buffer, stencil
            buffer, and accum buffer are all software buffers.)

            A workaround has been included to force the buffers to
            be cleaned up, at the cost of an extra X connection.
            To enable this feature, do

                    setenv GL_CHECK_WINDOW_DESTROY y

            before the first glXCreateContext. It will check for
            window destroy events and clean up memory the next time
            any rendering context is bound to a new window.

          o If an OpenGL program does a server grab using its X
            connection, then for the duration of the grab it should











                                  - 3 -



            not render OpenGL into any window that the client doing
            the grab did not create.  Otherwise a deadlock occurs.
            The client is still able to do X rendering.  This holds
            for both local and remote rendering.

          o No locking of display list structures is done on behalf
            of indirect OpenGL contexts that share display list
            spaces.  Applications that use such contexts should use
            their own mechanisms to ensure mutual exclusion when
            defining or destroying display lists.

          o When running OpenGL applications that use indirect
            rendering, it is normal for more than one instance of
            Xsgi, the SGI X server, to show up under ps.  They
            represent multiple threads of the X server, used to
            implement indirect rendering.

          o No extensions to OpenGL have been implemented.

          o You may notice some discrepancies between the OpenGL
            Reference Manual which is available through InSight and
            the man pages you see when you type "man glXxx" in a
            shell window. If so, you should believe what you see in
            the shell window.

          o On Indy and Indigo2 XL systems under 5.2, the best
            performance for pixel operations is achieved when using
            one of the following pixel type/formats:
            GL_UNSIGNED_BYTE/GL_RGBA, GL_UNSIGNED_BYTE or
            GL_UNSIGNED_SHORT/GL_COLOR_INDEX.

       6.3  Known_problems_in_5.0.1_and_5.1x

          o For RealityEngine systems, visuals that include a 12-
            bit accumulation buffer do not pass the conformance
            tests.  The 12-bit accumulation buffer is implemented
            using unsigned arithmetic, but the OpenGL specification
            requires signed arithmetic. The 24-bit accumulation
            buffer implementation is conforming.

          o The command glCopyContext is not functional on Onyx
            systems.

          o Using the 4Dwm menubar ``Quit'' or ``Close'' items to
            kill an OpenGL application that uses an indirect
            context will occasionally cause X server threads to not
            get freed when the application terminates.

          o Once an OpenGL indirect context has been made current
            to a window, avoid making it current to a pixmap.
            Likewise, once an indirect context has been made











                                  - 4 -



            current to a pixmap, avoid making it current to a
            window.

          o Multiple OpenGL renderers rendering to the same window
            does not always work.

          o For RealityEngine systems, the border texels for the
            glTexImage1D and glTexImage2D calls are ignored.

          o These releases are not `tuned' nor are they thoroughly
            tested.
















































 



                                  - 1 -



       1.  gl_dev_Man_Pages

       This appendix contains the man page(s) for gl_dev.  These
       man pages appear on-line when you type:

       man commandname

       Printed copies of these man pages are included; they are not
       included in the on-line release notes.