Sun Microsystems, Inc.  Sun System Handbook - ISO 3.4 June 2011 Internal/Partner Edition
   Home | Current Systems | Former STK Products | EOL Systems | Components | General Info | Search | Feedback

Asset ID: 1-71-1007443.1
Update Date:2009-02-23
Keywords:

Solution Type  Technical Instruction Sure

Solution  1007443.1 :   Sun[TM] OpenGL(R) for Solaris[TM] - FAQ  


Related Items
  • Sun Ultra 5 Workstation
  •  
  • Solaris SPARC Operating System
  •  
  • Sun Ultra 10 Workstation
  •  
Related Categories
  • GCS>Sun Microsystems>Desktops>Workstations
  •  
  • GCS>Sun Microsystems>Operating Systems>Solaris Operating System
  •  

PreviouslyPublishedAs
210284


Description
This article addresses the frequently asked questions using Sun OpenGL(R) for Solaris[TM].

Steps to Follow
Contents:
1. After installing OpenGL software, my application still fails to run. Why?
2. How do I enable Xinerama multi-screen displays and what do I need to get OpenGL
running in Xinerama mode?
3. Is Sun OpenGL available for Solaris/Intel platforms?
4. Where can I get OpenGL GLUT libraries?
5. Where are the contents of OpenGL software packages installed?
6. Which Sun OpenGL software packages are required for 32-Bit run-time?
7. Which Sun OpenGL software packages are required for 64-Bit run-time?
8. How can I find out the release version number of OpenGL library I am using?
9. How come my glVertex*(), glNormal*(), etc. calls don't show in dbx()?
10. Can I run a program that uses OpenGL 1.0 extensions?
11. Running and viewing stereo applications
12. How many GLX windows can I used simultaneously?
13. Error using GLw: requested visual not supported
14. Emulating single-buffer using double-buffer context
15. How can I use OpenGL with overlay?
16. Using OpenGL for Solaris in C++ environment
17. General performance tips
18. Performance Tip: Rescale Normal
19. How can I obtain the list of OpenGL packages installed?
20. Can I use OpenGL if I mount /usr/openwin?
21. Why does ps(1) show my OpenGL application using so much space?
22. Where can you download opengl?
23. what are the System Requirements for Sun OpenGL?
24. ogl_install_check fails following message: cannot find GLX visual
1. After installing OpenGL software, my OpenGL application still fails to run. Why?
Most of the time, this problem can be attributed to one the of the following reasons:
The window server was not restarted after the installation of OpenGL software.
Xsun window server only loads server extension modules (GLX, PEX, etc.) at server initiation time or at the first invocation of the extension protocol. In order to ensure that the OpenGL GLX server extension module is loaded by the Xsun server, it is necessary to restart the Xsun window server after installing the OpenGL packages. If you are running OpenWindow, you can restart the window server by simply logging out and logging back in. On systems running CDE, you'll need to restart to Xsun window server by exiting the desktop session.
Some required software packages were not installed
To verify installation, refer to: Verifying OpenGL Installation
2. How do I enable Xinerama mode for multi-screen displays and what do I need to get OpenGL running in Xinerama mode?
To enable Xinerama mode (single logical screen) on multi-screen displays, add +xinerama to Xsun command in the /usr/dt/config/Xservers file. For examples:
:0 Local local_uid@console root /usr/openwin/bin/Xsun :0 -nobanner +xinerama -dev /dev/fb0 -dev /dev/fb1
You need to install Sun OpenGL 1.2.1 (or later release) in order to run your OpenGL-based applications seamlessly in multi-screen Xinerama mode; older release of Sun OpenGL will render only to one screen of the displays.
3. Is Sun OpenGL available for Solaris/Intel platforms?
Sun OpenGL is currently only available for Solaris/SPARC platforms. At this time, there is no plan for Sun to productize Sun OpenGL for Solaris/Intel platforms. There are some OpenGL implementations for Solaris/Intel platforms available from third party: Mesa, and Xi Graphics OpenGL are two that we are aware of.
4. Where can I get OpenGL GLUT libraries?
Source code for OpenGL GLUT libraries can be downloaded from the GLUT website. Instructions
for downloading precompiled GLUT for Solaris are on the Sun OpenGL demo website.
5. Where are the contents of OpenGL software packages installed?
SUNWglrt
OpenGL client-side runtime
libraries/usr/openwin/libGLXserver extension
/usr/openwin/server/modules
Generic OpenGL libraries
/usr/openwin/lib/GL
Generic OpenGL device
pipeline
/usr/openwin/lib/GL/devhandlers
xglinfo test program
/usr/openwin/demo/GL
ogl_install_check
/usr/openwin/demo/GL
SUNWglh
OpenGL header files
/usr/openwin/share/include/GL
OpenGL widget header files
/usr/openwin/share/include/X11/Glw
SUNWglrtu
UltraSPARC OpenGL libraries
/usr/openwin/platform/sun4u/lib/GL
SUNWgldoc
OpenGL documentation, man
pages, and specifications
/usr/openwin/share/src/GL/docs
/usr/openwin/share/man
/usr/openwin/share/src/GL/docs/specs
SUNWgleg
OpenGL utilities and example
programs
/usr/openwin/share/src/GL/contrib
SUNWafbgl
Device pipeline for Elite 3D
/usr/openwin/lib/GL/devhandler
SUNWffbgl
Device pipeline for Creator and
Creator 3D Graphics frame
buffers
/usr/openwin/lib/GL/devhandler
SUNWglrtx
OpenGL 64-bit runtime
libraries
/usr/openwin/lib/sparcv9
64-bit Generic OpenGL
libraries
/usr/openwin/platform/sun4u/lib/sparcv9/GL
64-bit ogl_install_check
/usr/openwin/demo/GL/sparcv9
SUNWffbgx
64-bit device pipeline for
Creator and Creator 3D
Graphics frame buffers
/usr/openwin/lib/sparcv9/GL/devhandler
SUNWafbgx
64-bit device pipeline for Elite
3D Graphics frame buffers
/usr/openwin/lib/sparcv9/GL/devhandler
6. Which Sun OpenGL software packages are required for 64-Bit run-time?
The following five packages are required to run Sun OpenGL 1.1.2 for Solaris 64-Bit applications
on the Creator/Creator3D accelerator.
SUNWffbgx
SUNWffbgl
SUNWglrt
SUNWglrtu
SUNWglrtx
The following five packages are required to run Sun OpenGL 1.1.2 for Solaris 64-Bit applications
on the Elite3D accelerator.
SUNWafbgx
SUNWafbgl
SUNWglrt
SUNWglrtu
SUNWglrtx
7. Which Sun OpenGL software packages are required for 32-Bit run-time?
The following three packages are required to run Sun OpenGL 1.1.2 for Solaris applications on
the Creator family accelerator.
SUNWffbgl
SUNWglrt
SUNWglrtu
The following three packages are required to run Sun OpenGL 1.1.2 for Solaris applications on
the Elite3D family accelerator.
SUNWafbgl
SUNWglrt
SUNWglrtu
8. How can I find out the release version number of OpenGL library I am using?
1)  pkginfo -l SUNWglrt
PKGINST:  SUNWglrt
NAME:  Sun OpenGL for Solaris Runtime Libraries
CATEGORY:  application
ARCH:  sparc
VERSION:  1.2,REV=1999.07.13
BASEDIR:  /usr
VENDOR:  Sun Microsystems, Inc.
DESC:  Sun OpenGL 1.2 for Solaris Runtime Libraries
PSTAMP:  mimic990713042855
INSTDATE:  Oct 21 1999 13:53
HOTLINE:  Please contact your local service provider
STATUS:  completely installed
FILES:     36 installed pathnames
12 shared pathnames
13 directories11 executables26454 blocks used (approx)
2) Programmatically, by calling glGetString(GL_VERSION)
(see glGetString man page for more details)
3) Running the Sun OpenGL for Solaris install_check demo program:
% /usr/openwin/demo/GL/ogl_install_check
9. How come my glVertex*(), glNormal*(), etc. calls don't show in dbx()?
To use dbx() or SLI successfully on Sun OpenGL for Solaris application developers will need to recompile their application, using the -DSUN_OGL_NO_VERTEX_MACROS compilation flag.
Without the SUN_OGL_NO_VERTEX_MACRO compilation flag, all calls to glVertex*(), glNormal*(), glColor*(), glIndex*() and glTexCoord*() will be translated into internal, performance-enhanced routines.
These function calls will NOT show up when dbx() is used, or when performing SLI-related interposing of OpenGL for Solaris applications.
10. Can I run a program that uses the OpenGL 1.0 extensions?
Yes, with some caveats. Several OpenGL 1.0 Extensions, defined by other OpenGL vendors, were incorporated into the default OpenGL version 1.1 (and later) specification. The extension API bindings may have changed since OpenGL 1.0.
Refer to: OpenGL Architecture Review Board or to OpenGL Specification, for details on the OpenGL ARB and the OpenGL Specification, respectively.
11. What come my stereo application doesn't come up in stereo?
If you aren't running the windows system in stereo then the stereo buffers can't be accessed by applications running in the windows system.
To set up your Creator3D for stereo:
1) Exit the window system
2) Run "ffbconfig -res stereo"
3) Restart the window system
To set up your Elite3D for stereo:
1) Exit the window system
2) Run "afbconfig -res stereo"
3) Restart the window system
Now any program using stereo buffers can take advantage of the Creator3D/Elite3D stereo hardware buffers.
Various vendors supply the hardware necessary for viewing stereo images, including StereoGraphics, who make low-end and high-end stereo glasses. For more information: For more information, contact:
StereoGraphics Corp
StereoGraphics Corporation
2171 E. Francisco Blvd
San Rafael CA 94901 USA
Phone: (415) 459-4500
Phone2: (800) 783-2660
Fax: (415) 459-3020
12. What is the maximum number of GLX windows that can be used simultaneously?
Each window that is created and to which is attached a GLX context uses a file descriptor for DGA (Direct Graphics Access) information.
The per-process maximum number of open file descriptors can be found, and changed, using the "limit" command:
% limit descriptors
descriptors     64
This implies you have up to 64 direct GLX contexts (assuming you have no other things going in that process that use up file descriptors)
This limit can be increased as follows:
% limit descriptors 128
This will up the number of file descriptors available for use DGA and other uses to 128. The sysdef(1M) command will tell you what the maximum number of file descriptors (among other things) is.
In addition to the limit on descriptors, there is a limit on the number of hardware double buffered windows. On Creator 3D/Elite3D, you have up to 32 double buffered windows, beyond that OpenGL defaults to single bufffered mode.
13. When using XtAppCreateShell to initialize the toplevel widget, we receive the following error message:
"GLwMDrawingArea: requested visual not supported"
This failure is generated because there is no OpenGL-capable visual that meets the application selected visual criteria. In particular, the error will be reported if the application asked for a single-buffered visual (which is default mode) on systems with Creator3D. This is because on Creator3D/Elite3D, all OpenGL visuals are double-buffered visuals.
You caninstruct GL widgets topick a double-buffered visual by specifying GLwNdoublebuffer attribute in the GLwCreateMDrawArea arglist.
For example:/* Create a double buffer widget, in RGB mode,  */
/* and manage it  */
count = 0;
XtSetArg(args[count], GLwNrgba, TRUE ); count++;
XtSetArg(args[count], GLwNdepthSize, 23 ); count++;
XtSetArg(args[count], GLwNallocateBackground, TRUE ); count++;
XtSetArg(args[count], GLwNdoublebuffer, TRUE ); count++;
glW = GLwCreateMDrawingArea( frame, "glW", args, count );
14. How do I emulate single buffer behavior using double-buffered visuals?
You can simulate single buffer behavior using double-buffered context by calling glDrawBuffer
(GL_FRONT) and avoiding calls to glXSwapBuffers.
15. How can I use OpenGL with overlay?
Rendering to an Overlay visual is supported in OpenGL for Solaris
Examples showing the usage of OpenGL rendering to an overlay window are included in OpenGL for Solaris product. If you installed the SUNWgleg package from the OpenGL for Graphics@Sun distribution to the default installed location, the overlay examples can be found in:
/usr/openwin/share/src/GL/contrib/examples/sun/overlay.
Depending on the version of Solaris, overlay visuals may not be present by default, but it can be
enabled by running the following (as root):
For Creator 3D
# /usr/sbin/ffbconfig -expvis enable -sov enable
For Elite 3D
# /usr/sbin/afbconfig -expvis enable -sov enable
You need to restart the window sytem after issuing the above command.
You can verify if the presence of a GL-capable overlay visual by running:
% /usr/openwin/demo/GL/xglinfo | grep OVERLAY
If it returns something like:
OVERLAY(1) SINGLE buffered MONO COLOR INDEX visual   GL Sizes: ColorIndex=8,
that means your system has a GL-capable overlay visual and you should be able to Sun ogl_overlay
examples.
16. Using OpenGL and C++
Any C++ application linking to the OpenGL library, should be compiled with the -mt compilation flag.
Starting with OpenGL 1.1.1 for Solaris, OpenGL is delivered as an MT-hot library. The change to MT-hot requires the usage of the -mt compilation flag. So, to assure forward compatibility with OpenGL 1.1.1 for Solaris and subsequent releases, all C++ OpenGL applications should begin using this flag.
MT-safe: applications can use multithreaded function calls
MT-hot : functions spawn threads taking advantage of multiple processors to improve functional
performance.
17. My OpenGL application seems kind of slow. What I can do?
The performance problems may be due to:
1) Running in indirect mode
2) Using an unaccelerated feature
Whenever possible, OpenGL renders directly to the frame buffer bypassing the X server.  This is enabled by Sun's Direct Graphics Access(DGA) mechanism for locking portions of the screen.  However, a Solaris security feature allows only the user who originally logged in to the window system to use DGA to lock portions of the screen. Non-owners of the window system do not 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 the user's own environment using su, the application will not run via DGA even though the second user is running the application locally.
Run
% /usr/openwin/demo/GL/ogl_install_check
If the OpenGL GLX Server status report from the program says GLX context is indirect, the login
permissions need to be edited to enable DGA access for all users.
As super-user, edit permissions to allow world read/write access to the following devices:
# chmod 666 /dev/mouse /dev/kbd /dev/sound/* /dev/fbs/*
This will enable access by all users for the duration of the current window system session.
Edit the /etc/logindevperm file and change the default permissions of all of the devices listed in the file to 0666 to allow world read/write access.
For example, the following lines in logindevperm, the 0600 should be changed to 0666 so that the next time you log in and restart the window system, it will 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: Doing the above, will make your system no longer secure.
If you are running in direct mode and still see slow performance. You may be using an unaccelerated feature. For best performance:
1) Use display list or vertex array whenever possible.
2) Use consistent data types between glBegin/glEnd pair.
3) Avoid unneccesary use of "compute intensive " attributes; such as lighting, user clip planes, anti-aliasing, texturing, blending, etc.
Refer to Chapter 3 of the OpenGL for Solaris Implementation and Performance Guide for more details.
Implementation and Performance Guide
18. Performance Tip: Rescale Normal.
Using GL_RESCALE_NORMAL_EXT instead of GL_NORMALIZE can increase application
performance significantly.  GL_NORMALIZE tells OpenGL to normalize vertex normals after the
transform stage.  This requires a square root plus several multiplies and divides.
If the normals are already unit length before being transformed, using GL_RESCALE_NORMAL_EXT
tells OpenGL to correct the transformation matrix used for normals so that the normal lengths are
preserved without additional computation.
19. How can I obtain the list of OpenGL packages installed?
% pkginfo | grep OpenGL
application SUNWafbgl
Sun OpenGL for Solaris Elite3D Support
application SUNWafbgx
Sun OpenGL for Solaris 64-bit Elite3D Support
application SUNWffbgl
Sun OpenGL for Solaris Creator Graphics (FFB) Support
application SUNWffbgx
Sun OpenGL for Solaris 64-bit Creator Graphics (FFB) Support
application SUNWgldoc
Sun OpenGL for Solaris Documentation and Man Pages
application SUNWgleg
Sun OpenGL for Solaris Utilities and Example Programs
application SUNWglh
Sun OpenGL for Solaris Header Files
application SUNWglrt
Sun OpenGL for Solaris Runtime Libraries
application SUNWglrtu
Sun OpenGL for Solaris Platform Specific Runtime Libs
application SUNWglrtx
Sun OpenGL for Solaris 64-bit Runtime Libraries
20. Can I use OpenGL if I mount /usr/openwin?
Yes, you can use OpenGL with a mounted /usr/openwin provided the opengl packages are installed in the system from which you mount /usr/openwin. If your LD_LIBRARY_PATH is set only to /usr/lib (default), then you need to create the following links to use OpenGL.
# cd /usr/lib
# ln -s /usr/openwin/lib/libGL.so.1 libGL.so.1
# ln -s libGL.so.1 libGL.so
# ln -s /usr/openwin/lib/libGLU.so.1 libGLU.so.1
# ln -s libGLU.so.1 libGLU.so
# ln -s /usr/openwin/lib/libGLw.so.1 libGLw.so.1
# ln -s libGLw.so.1 libGLw.so
If you are using 64-bit libraries, then change all lib references to lib/sparcv9.
21. Why does ps(1) show my OpenGL application using so muchspace?
The large size being reported is attributable to the portion of the address space being mapped to the frame buffer. Note that address space which is mapped to frame buffer does not consume
workstation RAM.
22. Where can I download opengl
http://www.sun.com/software/graphics/OpenGL/
23.what are the System Requirements for Sun OpenGL?
Platform
UltraSPARC- and SPARC-basedsystems using the TCX, SX, GX, ZX, PGX, Creator and Elite3D family of framebuffers.
Operating System
Solaris[TM] 2.5.1, Solaris[TM] 2.6, Solaris[TM] 7, or Solaris[TM] 8 operating environments; Solaris 7 or Solaris 8 is recommended.
Recommended System Software PatchesTo run OpenGL on the PGX graphics available in the Ultra[TM] 5 and Ultra 10 systems, install one of the following patches:
Solaris 2.5.1 :patch 103792-19 (or later)
Solaris 2.6 :
patch 105362-19 (or later)
Solaris 2.7:patch 106146-13 9or later)
For systems equipped with Elite3D graphics accelerator, install the following patches:
Solaris 2.5.1 :
patch 105791-16 (or later)
Solaris 2.6 :
patch 105363-18 (or later)
Solaris 7 :
patch 106148-03 and patch 106144-05 (or later)
Window System
CDE or OpenWindows
Disk Space for End-Users Runtimes
32 MB for 32-Bit, 55 MB for 64-Bit
Disk Space for ISV Development
54 MB for 32-Bit, 77 MB for 64-Bit (total to build examples)
Memory
64 MB minimum requirement; 128 MB or greater recommended
24.SYNOPSIS: ogl_install_check fails following message: cannot find GLX visual
DETAIL DESCRIPTION:
The customer just upgraded his system from Solaris 2.5.1 to Solaris 2.6 using the upgrade
script and did not do a reinstall of the OS.
Now when he runs /usr/openwin/demo/GL/ogl_install_check, it fails with the following message:
cannot find GLX visual
SOLUTION SUMMARY:
The problem is that the default values for the OpenGL Expansion is not modified during the
upgrade to reflect the changes expected by Solaris 2.6.
The default settings are:
2.5.1      OpenGL Visual Expanion    disabled
2.6, 2.7   OpenGL Visual Expanion    enabled
After doing the upgrade to Solaris 2.6 the OpenGL Visual Expansion value is still defaulting
to 'disabled' and needs to be 'enabled'
To enable the OpenGL Visual Expansion do the following command as root:
	         ffbconfig -expvis enable
		            or
	         afbconfig -expvis enable (depending the framebuffer type)


Product
Solaris 2.6 Operating System
Solaris 7 Operating System
Solaris 2.5.1
Solaris 8 Operating System
Ultra 5 Workstation
Ultra 10 Workstation

OpenGL, FAQ, frequently asked questions
Previously Published As
22171

Attachments
This solution has no attachment
  Copyright © 2011 Sun Microsystems, Inc.  All rights reserved.
 Feedback