PowerStorm® 300/350 UNIX Graphics Support Release Notes



Tru64 UNIX

» Tru64 UNIX V5.1B-6
» Tru64 UNIX V5.1B-5
» Documentation
» Information library
» Software web index
» Software products library
» Patch database
» Services
» Developer & Solution Partner Program
» Send us your comments
» Support Statements

Evolving business value

» Tru64 UNIX to HP-UX 11i transition benefits calculator
» Alpha RetainTrust Program
» Transition

Related links

» Alpha systems
» HP-UX 11i
» Integrity servers
» Linux
» HP storage
» HP solutions
HP-UX 11i: measurably better TCO!
October 2001

Operating System and Version: Tru64TM UNIX V5.0A V5.1 V5.1A
Tru64TM UNIX V4.0F V4.0G
COSIX®64 V5.0A V5.1 V5.1A
Software Version: Version 2.2

© 1999, 2001 Compaq Computer Corporation

COMPAQ and PowerStorm Registered in U.S. Patent and Trademark Office. Tru64 is a trademark of Compaq Information Technologies Group, L.P. in the United States and/or other countries. COSIX is a registered trademark of China National Computer Software and Technology Service Corporation, Beijing, China. Microsoft, Windows and Windows NT are registered trademarks of Microsoft Corporation in the United States and/or other countries. Motif, UNIX, and the "X" device are registered trademarks of The Open Group in the United States and/or other countries. All other product names mentioned herein may be trademarks or registered trademarks of their respective companies.

Compaq shall not be liable for technical or editorial errors or omissions contained herein. The information in this document is subject to change without notice.


The limited warranties for Compaq products are exclusively set forth in the documentation accompanying such products. Nothing herein should be construed as constituting a further or additional warranty.

Table of Contents


1 Release Information for PowerStorm 300/350
1.1 Product Summary
1.1.1 Product Enhancements
1.1.2 Product Bug Fixes
1.2 Overlay Support
1.2.1 Technical Background
1.2.2 Window Managers for Overlays
1.3 Multiple Colormaps
1.4 Multihead Support
1.4.1 Matching X Server Primary Screen with VGA Console
1.4.2 PanoramiX Support
1.5 Supported Video Modes
1.5.1 Supported Stereo Resolutions on PowerStorm 350
1.6 Synchronizing Flips with Vertical Retrace
1.7 Default Texel Size
1.8 Double-Buffer-Aware XGetImage
1.9 Thread-Safe OpenGL
1.10 Limitations and Restrictions
1.10.1 Backing Store and Save Under are Disabled
1.10.2 OpenGL Restrictions Stereo Unsupported on PowerStorm 300 Rendering Mono to Stereo Visual Destination Alpha Unsupported Single Stencil Plane Requesting Indirect Rendering GLX Pixmap Support Texture Filtering of Line Primitives 4D Vertex and Texture Coordinate Handling Antialiasing in Color Index Mode Texture Mapping and Performance OPEN3D License Required


Table 2-1 Supported Video Modes


This document contains the release notes for PowerStorm 300/350 UNIX Graphics Support for Tru64 UNIX. Release notes are supplied in HTML format and are located in the following location after installing the software kit:


This guide is intended for anyone who has purchased the Compaq® PowerStorm 300 or PowerStorm 350 option. A knowledge of Tru64 UNIX installation is recommended. For more information on future releases or updates, please refer to the following URL:

1 Release Information for PowerStorm 300/350

1.1 Product Summary

PowerStorm 300/350 UNIX Graphics Support contains the following components:
  • 3X0DEVICE422/522/523
    • Device-dependent libraries for the X server.
    • Kernel device driver for the PowerStorm 300 and PowerStorm 350 devices.
  • 3X0GLBASE422/522/523
    • OpenGL direct-rendered graphics support libraries. These libraries are used by applications written to the OpenGL V1.1 and GLX V1.2 standards.
PowerStorm 300/350 V2.2 is available in three kits:
  • Subset Version 523 supports Tru64 UNIX V5.1A
  • Subset Version 522 supports Tru64 UNIX V5.0A and V5.1
  • Subset Version 422 supports Tru64 UNIX V4.0F and V4.0G

1.1.1 Product Enhancements

This release of the PowerStorm 300/350 will be supported on Tru64 UNIX V5.0A, V5.1, and V5.1A as well as Tru64 UNIX V4.0F and V4.0G.

1.1.2 Product Bug Fixes

The following bugs were fixed for V2.2 of PowerStorm 300/350:
  • Using the non-thread safe version of the OpenGL library, after destroying one context and creating a new one, a segmentation fault was happening in the glXMakeCurrent call on the new context.
  • When running in direct rendering mode and using the same gl context to render into two different windows, sometimes bitmaps were not being displayed.
  • When running in indirect rendering mode and using the same gl context to render into two different windows, sometimes the display in one of the windows would be corrupted.
  • When drawing polygons or triangles using polygon mode GL_LINE at the bottom and right edge of the gl viewport, extra lines would be drawn along the edge of the viewport.
  • When using the Xserver's -screenOrder command line option to ignore one or more of the physical screens, sometimes there is a problem creating the context for a 3D application.
  • When XFillRectangle was called with values outside of the window, the filled rectangle would not always get clipped. This resulted in pixels sometimes being displayed outside of the window.

1.2 Overlay Support

The PowerStorm 300 and PowerStorm 350 support 8-bit double-buffered overlays. The following section describes this overlay support and how to use it.

1.2.1 Technical Background

An overlay window is an 8-plane PseudoColor visual. A colormap created with that visual would have 255 entries available to the user. Entry 0 is always the transparent pixel.

To get the visualIDs of the overlay visuals, you need to get the SERVER_OVERLAY_VISUALS property from the root window. To retrieve the property and interpret the data associated with it, consider the following example:

format: 32
The contents of the property is a LIST of the following data structure:

    overlay_visual: VISUALID
    transparent_type: {None, TransparentPixel, TransparentMask}
    value: CARD32
    layer: CARD32
The PowerStorm 300 server returns a list that contains three elements, one for each overlay visual. The PowerStorm 350 server returns five. The elements consist of four long-words as described above.

You would typically receive the following information:

0x00000027  /* VisualID */
0x00000001  /* Indicates that the transparent_type is TransparentPixel */
0x00000000  /* The transparent pixel's value is 0 */
0x00000001  /* The layer is 1 */
Once you have a visualID, you can retrieve the rest of the information about the overlay visual and colormap by calling the routine XGetVisualInfo.

Overlay windows and regular windows are in different layers, so drawing in an overlay window will not disturb the pixels of the regular window, and vice versa. If you draw a transparent pixel into an overlay window, the pixel of the non-overlay window beneath that window will show through.

1.2.2 Window Managers for Overlays

It is strongly suggested that you share colormaps with the window manager, as the hardware supports only one colormap for the overlay planes. This can be achieved by querying the server property name SERVER_OVERLAY_COLORMAPS. This property will return the 32-bit value that is the overlay colormap ID. If you create and install your own colormap, you will have overlay colormaps alternating on the screen, which will have the effect of changing the colors of the window manager's borders and banners.

Tru64 UNIX supplies the dtwm window manager, which provides an option to support overlays. Use the -Overlay command line option (dtwm -Overlay) to allow the window manager to take advantage of the overlay planes. When the window manager overlay option is enabled, the borders of windows in the overlay planes are created in the overlays as well. This reduces the number of expose events for applications that create menus or other windows in the overlays. Borders of windows in the main image planes still reside in the main image planes.

Tru64 UNIX also supplies a Motif window manager with an option to support overlays. However, this window manager overlay option (/usr/bin/X11/mwm -Overlay) has numerous problems and is not recommended or supported.

1.3 Multiple Colormaps

The PowerStorm 300 and PowerStorm 350 support multiple, simultaneously installed colormaps. At most four colormaps may be installed at one time. Of these four colormaps, at most one may be an overlay colormap. Exceeding these limits will cause colormap flashing, also known as "technicolor."

Applications should not install or deinstall colormaps themselves. The window manager should perform these actions. However, the application is responsible for providing the window manager with hints as to which colormaps to install or deinstall. You provide this information using the Xlib function XSetWMColormapWindows(). This function sets the WM_COLORMAP_WINDOWS property for a given window.

For information on how to use this function and how the window manager interprets the property, see X Window System by Scheifler and Gettys, 3rd Edition, Digital Press (Section 14.1.11, Setting and Reading the WM_COLORMAP_WINDOWS Property, pages 425-426, and Section 4.1.8, Colormaps, page 649-651).

Applications developed on systems with only one colormap may appear incorrect on systems with multiple colormaps. There are several application errors that can cause this, but the most prevalent is not having the correct colormap associated with all the windows that require it. To correct this problem, use XChangeWindowAttributes() to set the colormap for all windows in the application that require the colormap.

1.4 Multihead Support

Multiple PowerStorm 300 or PowerStorm 350 boards may reside in the same system. Only one will be used for the VGA console. This board must have its VGA jumper (J8 on PS300, J4 on PS350) set to "enable," and must be in a lower numbered slot than the other boards. The other boards must have their VGA jumpers set to "disable." See your workstation or server user manual to determine slot numbering.

The supported number and configuration of multiple PowerStorm 300 and PowerStorm 350 boards vary by platform. Other documentation shipped with your workstation or server, or with your PowerStorm 300/350 option or driver software, will put specific limitations on the number and configuration of multihead support.

The PowerStorm 300/350 is not supported in conjunction with any other non-PowerStorm 300/350 graphics board residing in the system.

1.4.1 Matching X Server Primary Screen with VGA Console

PCI slots are not always probed by the system in the order of their slot numbers. Because of this, the order of X server screens will not necessarily correspond to the order of the slots in which the PowerStorm 300 and/or PowerStorm 350 boards reside.

The X server command line option -screenOrder may be used to alter the mapping of physical screens to logical screens. In particular, this can be useful if you desire the X server's primary screen to coincide with the VGA console.

1.4.2 PanoramiX Support

To quote from the Xdec man page:

      Enables the PanoramiX extension which allows a system 
      with multiple video monitors to operate the monitors as 
      a single large screen.

      Disables the PanoramiX extension.
Both conventional X windows and OpenGL windows can be dragged across screen boundaries when PanoramiX is enabled. Consult the Xdec man page for all relevant options. In particular, the following options will be of interest:

Any multihead configuration of screens supported in non-PanoramiX mode is also supported with PanoramiX enabled. Screen resolutions need not be consistent. The X server will compensate for non-rectangular configurations, or configurations with varying resolutions, by placing the single virtual screen on the largest complete rectangle that can be constructed from the available physical screens. The remaining regions will appear black, and will be treated as "off-screen." (Windows can be dragged off-screen, but some part of the window must remain "on-screen.")

In order to take advantage of the unique features of the PowerStorm 350, such as stereo rendering or the enlarged texture cache, all heads in the PanoramiX configuration must be PowerStorm 350s. If any PowerStorm 300 is present, all PowerStorm 350s will behave like PowerStorm 300s.

1.5 Supported Video Modes

The PowerStorm 300 and PowerStorm 350 each support a variety of video modes. The PowerStorm 350, with twice as much framebuffer memory as the PowerStorm 300, supports several additional modes. It is recommended that you set your refresh rate to be the highest value supported by both the PowerStorm board and by your monitor. Refer to the following table to see which modes are supported by each board.

Table 2-1: Supported Video Modes

ResolutionPowerStorm 300PowerStorm 350
640x48060, 72, 7560, 72, 75
800x60072, 75, 85, 12072, 75, 85, 120
1024x768 70, 75, 76, 8560, 70, 75, 76, 85, 100, 130
1152x864 60, 75, 8560, 75, 85, 90, 100, 110
1280x992 N/A85, 90, 100, 110, 120
1280x102460, 61, 66, 73, 75, 8560, 61, 66, 72, 73, 75, 85, 90, 100, 110, 120
1600x1200N/A60, 75, 85
1920x1200N/A60, 75

The default video mode is 1280x1024 at 75Hz. To change the default video mode, you must edit the X server's configuration file which is located at /usr/var/X11/Xserver.conf. Before attempting to change your resolution, make sure that the attached monitor will support this new video mode.

As an example, to switch to 1280x1024 at 85Hz:

! PowerStorm 300/350 Server args start
       -pn -bs -su -nice -2 -screen 1280x1024 -vsync 85
! PowerStorm 300/350 Server args end
You then need to restart the X server. When logged in remotely:

/usr/sbin/init.d/xlogin restart

1.5.1 Supported Stereo Resolutions on PowerStorm 350

Stereo is supported on the PowerStorm 350 at those resolutions in
Table 2-1 at and below 1280x1024. Although you should always set the refresh rate to the highest value supported by both the PowerStorm board and your monitor, it is particularly important when in stereo mode. The perceived refresh rate is effectively divided in half between the left and right image.

1280x992 is a special resolution which provides improved performance for clear operations when in stereo mode. This includes OpenGL glClear() calls. 1280x992 is therefore the recommended high-resolution video mode for use with stereo, although 1280x1024 will function correctly with some level of performance degradation.

1.6 Synchronizing Flips with Vertical Retrace

By default, for performance reasons, double-buffered window flips are not synchronized with vertical retrace. This results in visual artifacts when a buffer flip occurs during vertical retrace.

To enable this synchronization, add the following device-dependent argument to the X server command-line arguments discussed above:

! PowerStorm 300/350 Server args start
       -pn -bs -su -nice -2 -I -riFlipVSync
! PowerStorm 300/350 Server args end
The -I marks the beginning of device-dependent arguments. The -riFlipVSync enables synchronization of buffer flips with vertical retrace.

This synchronization will reduce performance on applications (including benchmarks!) which would otherwise have a frame rate that exceeds the refresh rate, in effect limiting the frame rate to the refresh rate. In some cases, the frame rate is further limited to half the refresh rate. In other words, a 60 Hz refresh rate with synchronization enabled will limit an application to roughly 30-60 frames per second.

1.7 Default Texel Size

When specifying a texture in OpenGL, the application may request the use of a particular internal format for GL_RGB (3 component) and GL_RGBA (4 component) textures. If the generic internal format of GL_RGB or GL_RGBA is used, the OpenGL implementation chooses which internal format (bit-depth) to use. The default behavior for our implementation is to use 16-bit texels, as this will effectively double the number of such textures that will fit in the texture cache, albeit at some loss of visual fidelity.

In order to make 32-bit texels the default for generic GL_RGB and GL_RGBA format textures, you must set a device-dependent command-line argument when invoking the X server:

! PowerStorm 300/350 Server args start
       -pn -bs -su -nice -2 -I -riDefaultTexel32
! PowerStorm 300/350 Server args end
See Sections
1.5 and 1.6 above for more information about setting command-line arguments for the X Server.

An application can explicitly request 32-bit texels by choosing an appropriate 32-bit internal format rather than a generic one. In this case, no change to X server arguments is necessary.

1.8 Double-Buffer-Aware XGetImage

XGetImage will return a window's visible pixels, as well as any pixels in inferior or overlapping windows, as long as their depths are consistent. However, windows created with OpenGL visuals inherently have different depths due to their ancillary buffers (back-buffer, Z-buffer, accumulation buffer, stencil planes, etc.). The contents returned by XGetImage for these regions are undefined, as specified by the X Window System. Our implementation will in fact return the expected results for single-buffered OpenGL visuals, but will return unexpected results after every other glXSwapBuffers call for double-buffered visuals.

The portable way to read the contents of OpenGL buffers is to use the glReadPixels call. However, if using XGetImage to serve this purpose is desirable, we have provided an option which will return the expected results, even for inferior or overlapping double-buffered OpenGL windows. The performance of XGetImage calls will be negatively impacted with this option enabled, so it should only be turned on if necessary.

To enable the double-buffer-aware XGetImage, you must set a device-dependent command-line argument when invoking the X server:

! PowerStorm 300/350 Server args start
       -pn -bs -su -nice -2 -I -riDBAwareGetImage
! PowerStorm 300/350 Server args end
See Sections
1.5 and 1.6 above for more information about setting command-line arguments for the X Server.

1.9 Thread-Safe OpenGL

Thread-safe versions of the OpenGL client libraries are available for use. These thread-safe versions allow users to run applications that make use of multiple rendering threads.

However, it should be noted that the performance of these thread-safe libraries may be significantly reduced. In most cases, the overhead of locking down contexts clearly outweighs the benefits of rendering from multiple threads. For example, the Viewperf benchmarks show a 3x to 5x performance degradation.

To enable the thread-safe OpenGL client libraries, you simply need to add a directory to your LD_LIBRARY_PATH environment variable before running your application. For example, assuming a csh-compatible shell:

setenv LD_LIBRARY_PATH /usr/opt/3X0/threadsafe
or if LD_LIBRARY_PATH is already defined:
setenv LD_LIBRARY_PATH /usr/opt/3X0/threadsafe:${LD_LIBRARY_PATH}

1.10 Limitations and Restrictions

This section of the document contains limitations and restrictions of the PowerStorm 300/350 hardware and software.

1.10.1 Backing Store and Save Under are Disabled

Backing store and save under are disabled by default. These X server features, when used in conjunction with OpenGL (3D) windows, will yield unexpected results. This is because OpenGL-specific framebuffer contents, such as back-buffer, Z-buffer, or stencil planes, are not included among the saved window contents.

Users running only 2D applications may prefer to enable backing store and save under, as these features may improve performance in some cases. To do this, you need to edit the server configuration file /usr/var/X11/Xserver.conf to remove the options currently disabling these features. Search for the following lines in this file:

! PowerStorm 300/350 Server args start
       -pn -su -bs -nice -2
! PowerStorm 300/350 Server args end
and remove the options that disable backing store and save under:

! PowerStorm 300/350 Server args start
       -pn -nice -2
! PowerStorm 300/350 Server args end
You then need to restart the X server. When logged in remotely:

/usr/sbin/init.d/xlogin restart

1.10.2 OpenGL Restrictions

This section describes OpenGL-related restrictions. Stereo Unsupported on PowerStorm 300
Stereo GLX visual support is not a feature of the PowerStorm 300. Rendering Mono to Stereo Visual
Some graphics boards have architectures that allow an application to draw simultaneously to both left and right buffers of a stereo visual. In other words, when glDrawBuffer() is set to GL_FRONT, GL_BACK, or GL_FRONT_AND_BACK, rendering is just as fast as if the glDrawBuffer() is set to GL_LEFT or GL_RIGHT alone.

The PowerStorm 350 does not have such an architecture. When glDrawBuffer() is set to GL_FRONT, GL_BACK, or GL_FRONT_AND_BACK, and the application is rendering to a stereo visual, the geometry must be sent through the OpenGL pipeline twice, sequentially. This leads to a performance reduction which happens to be significantly worse than having the application draw the same geometry twice (once to GL_LEFT and once to GL_RIGHT).

For this reason, it is important that you choose a mono visual when rendering the same view to both left and right buffers. If an application needs to alternate between rendering mono and stereo images, it can be written to switch between mono and stereo visuals rather than always using a stereo visual. Destination Alpha Unsupported
The PowerStorm 300/350's framebuffer is composed of three sets of chips. These are referred to as the A-chip, the B-chip, and the Z-chip. The A- and B-chips are front and back image planes, while the Z-chip contains the depth buffer and other miscellaneous planes. All chips contain 32-bits per pixel.

The A- and B-chips accommodate 8-bit channels for red, green, and blue. The remaining 8-bit channel is used for 8-bit overlay planes instead of a destination alpha channel. Most blending techniques only use the source alpha channel and do not require a destination alpha channel. Single Stencil Plane
The Z-chip, mentioned above, accommodates a 24-bit depth buffer. Seven of the remaining eight bits are used for pixel ownership, masking planes, and colormap tables. This leaves only one stencil plane. You may notice that the Windows NT software for the PowerStorm 300/350 offers four stencil planes. This is because the Windows NT window system does not have the same high demands for functionality, such as the ability to support windows of varying bit-depth on the same screen. Requesting Indirect Rendering
The PowerStorm 300 and PowerStorm 350 graphics boards are specifically optimized to run direct-rendered OpenGL applications. Some older applications were coded to request indirect-rendered OpenGL rendering contexts. Those applications will not perform optimally on modern graphics boards without intervention.

By default, OpenGL software for PowerStorm 300/350 forces a direct-rendered OpenGL rendering context whenever the connection is "direct," for example, when DISPLAY is :0. If necessary, this behavior can be overridden by defining the following environment variable:

setenv ALLOWINDIRECT GLX Pixmap Support
The PowerStorm 300/350 software does not provide hardware-accelerated rendering to GLX pixmaps. If your application requires this functionality, you must enable the generic software OpenGL renderer.

To do this, you need to edit the server configuration file /usr/var/X11/Xserver.conf to add the option for enabling the software renderer. Search for the following lines in this file:

! PowerStorm 300/350 Server args start
       -pn -su -bs -nice -2
! PowerStorm 300/350 Server args end
and add the option that enables the software renderer:

! PowerStorm 300/350 Server args start
       -pn -su -bs -nice -2 -I -riGLXuseSWindirect
! PowerStorm 300/350 Server args end
(The -I marks the beginning of device-dependent arguments.) You then need to restart the X server. When logged in remotely:

/usr/sbin/init.d/xlogin restart
Additionally, the OpenGL specification precludes direct-rendering to pixmaps. This further limits the performance of drawing to GLX pixmaps. To use GLX pixmaps when running on a local (:0 or direct:0) display, create an indirect rendering context and set the following environment variable, as discussed in section

It is recommended that any application that extensively uses GLX pixmap drawing be recoded to draw to the back buffer if appropriate. Performance will be significantly better on this and most other OpenGL-based graphics options.

No GLX pixmap rendering is supported for contexts marked direct. Texture Filtering of Line Primitives
There is a known bug in the texture filter selection for line primitives. Textured lines are not drawn correctly when the magnification filter is not the same as the minification filter. 4D Vertex and Texture Coordinate Handling
There are several cases of 4D vertices that are not handled correctly. The same is true of 4D texture coordinates. Antialiasing in Color Index Mode
The antialiasing modes (GL_POINT_SMOOTH, GL_LINE_SMOOTH, and GL_POLYGON_SMOOTH) are not supported in color-index mode. Nothing will be drawn in these cases, and a warning message will be issued. Texture Mapping and Performance
Many applications use multiple texture maps. For best performance, it is suggested that applications requiring multiple textures be written (or rewritten) to use the core OpenGL v1.1 texture object functionality or the texture object extension to OpenGL v1.0. OPEN3D License Required
An OPEN3D license must be installed in the system in order to use OpenGL functionality. If a user attempts to run an OpenGL application without a valid OPEN3D license installed, the X server will freeze and become unusable.