Solaris 9 Sun Hardware Platform Guide

OpenGL Software

The Sun OpenGL software for Solaris is the Sun native implementation of the OpenGL application programming interface (API). The OpenGL API is an industry-standard, vendor-neutral graphics library. It provides a small set of low-level geometric primitives and many basic and advanced 3D rendering features, such as modeling transformations, shading, lighting, anti-aliasing, texture mapping, fog, and alpha blending.

Supported Platforms

The Sun OpenGL 1.2.1 software for Solaris supports the following devices:

Removing Old Packages

If you have older versions of the Sun OpenGL software for Solaris packages, you must use the pkgrm command to remove them.

To Remove Old Packages
  1. Check to see whether any older versions of the OpenGL packages are installed using the pkginfo command.

    The pkginfo | egrep -i "OpenGL" command lists any existing OpenGL packages that you have installed.


    % pkginfo | egrep -i "OpenGL"
    application SUNWffbgl     Creator Graphics (FFB) OpenGL Support
    application SUNWglrt      OpenGL Runtime Libraries
    application SUNWglrtu     OpenGL Platform Specific Runtime Libraries
    application SUNWglwrt     OpenGL Widget Library
    application SUNWafbgl     Loadable pipeline for UPA Bus Elite3D graphics
    application SUNWgldoc     Solaris OpenGL Documentation and Man Pages
    application SUNWglh       Solaris OpenGL Header Files
    application SUNWglut      Solaris OpenGL Utilities and Example Programs
    application SUNWglwh      Solaris OpenGL Widget Header Files

  2. To remove the packages, become superuser:


    % su
    Password: superuser password
    

  3. Run pkgrm to remove all existing Sun OpenGL software for Solaris packages.


    # pkgrm SUNWglrt SUNWglh...
    

OpenGL Packages

Table 3-6 lists the packages that are provided with the Sun OpenGL software for Solaris.

Table 3-6 OpenGL Packages

Package Name 

Description 

Default Install Location 

SUNWglh

OpenGL header files 

/usr

SUNWglrt

OpenGL client-side runtime libraries 

/usr/openwin/lib

SUNWglsr

OpenGL generic SPARC software renderer 

/usr/openwin/lib

SUNWglrtu

OpenGL libraries specific to UltraSPARCTM

/usr/openwin/platform/sun4u/lib/GL

SUNWglsrz

OpenGL UltraSPARC software renderer 

/usr/openwin/platform/sun4u/lib/GL

SUNWafbgl

OpenGL device pipeline for Elite3D graphics accelerators 

/usr/openwin/lib/GL/devhandlers

SUNWffbgl

OpenGL device pipeline for Creator and Creator3D graphics accelerators 

/usr/openwin/lib/GL/devhandlers

SUNWifbgl

OpenGL device pipeline for Expert3D graphics accelerator 

/usr/openwin/lib/GL/devhandlers

SUNWglrtx

Sun OpenGL 64-bit Runtime Libraries 

/usr/openwin

SUNWglsrx

OpenGL 64-bit UltraSPARC software renderer 

/usr/openwin/platform/sun4u/lib/sparcv9/GL

SUNWafbgx

OpenGL 64-bit device pipeline for Elite3D graphics accelerator 

/usr/openwin/lib/sparcv9/GL/devhandlers

SUNWffbgx

OpenGL 64-bit device pipeline for Creator and Creator3D graphics accelerators 

/usr/openwin/lib/sparcv9/GL/devhandlers

SUNWifbgx

OpenGL 64-bit device pipeline for Expert3D graphics accelerator 

/usr/openwin/lib/sparcv9/GL/devhandlers

Installing OpenGL

See "Installing Supplement CD Software".

After Installing the Packages

After installing the packages, do the following:

To Verify Package Installation
  1. Exit the window system and restart it so that the window system loads the newly installed GLX server extension.

  2. To verify that the OpenGL libraries are installed correctly, run ogl_install_check.

    The ogl_install_check test program prints the version of the OpenGL library and renderer used, and renders a rotating wheel. The program returns the following output when it is run on an UltraSPARC Creator3D:


    OpenGL Vendor:             Sun Microsystems, Inc.
    OpenGL Version:            1.2.1 Sun OpenGL 1.2.1 for Solaris

For diagnostic purposes, the following values should be noted if Solaris OpenGL software problems are seen:


OpenGL Renderer:               Creator 3D, VIS
OpenGL Extension Support:      GL_EXT_texture3D
                               GL_SGI_color_table
                               GL_SUN_geometry_compression
                               GL_EXT_abgr
                               GL_EXT_rescale_normal
OpenGL GLX Server:             Detail Status Report
     GLX:     Context is direct.
     GLX:     OpenGL Rendering in use
     GLX:     Double Buffering in use
     GLX:     Color Buffer (GLX_BUFFER_SIZE) = 24 bits
     GLX:     Depth Buffer (GLX_DEPTH_SIZE) = 28 bits
     GLX:     Stencil Buffer (GLX_STENCIL_SIZE) = 4 bits
     GLX:     RGBA (True Color/Direct Color) Visual in use
OpenGL Library:                Detail Status Report
     Number of color bits (R/G/B/A): 8/8/8/0
     Frame Buffer Depth (GL_DEPTH_BITS):28

Unexpected Slow Local Rendering

Whenever possible, Sun OpenGL software for Solaris renders directly to the frame buffer, bypassing the X server. This is enabled by Sun's DGA mechanism for locking portions of the screen. However, a Solaris security feature only allows the user who originally logged in to the window system to use DGA to lock portions of the screen. Only owners of the window system have access to DGA.

If you notice poor performance when rendering locally, the cause may be this Solaris security feature. For example, if you start the window system, and another user at the workstation changes to that user's own environment using su, the application will not run via DGA even though the second user is running the application locally.

If you notice slow local rendering, run the ogl_install_check diagnostic program (found in /usr/openwin/demo/GL) to determine whether the application is running via DGA. If the OpenGL GLX server status report from the ogl_install_check program says that the GLX context is indirect, edit the login permissions to enable DGA access for all users.

To give all local users access to DGA, follow these steps:

To Give All Local Users Access to DGA
  1. Become superuser:


    % su
    Password: superuser password
    

  2. Edit permissions to allow world read/write access to the following devices:


    % chmod 666 /dev/mouse /dev/kbd /dev/sound/* /dev/fbs/*
    

    This enables DGA access for all users for the duration of the current window system session (subject to X authorization, see xhost(1)).

  3. Edit the /etc/logindevperm file and change the default permissions of all devices listed in the file to 0666 to allow world read/write access.

    For example, in the following lines in logindevperm, change 0600 to 0666 so that the next time you log in and restart your window system, it will still be accessible by all users.


    /dev/console     0600     /dev/mouse:/dev/kbd
    /dev/console     0600     /dev/sound/*       # audio devices
    /dev/console     0600     /dev/fbs/*         #frame buffers

    Note that your system is no longer secure.