Originally Published: Thursday, 15 June 2000 Author: Luke Groeninger
Published to: featured_articles/Featured Articles Page: 1/1 - [Std View]

Utah GLX

Utah GLX is an open source implementation of SGI's GLX protocol, which also uses several low-level Mesa drivers for several of today's latest 3D accelerators. The effects of having hardware accelerated OpenGL support in Linux are clear, and it is helping to move Linux into the high-end graphics and gaming markets.

Utah GLX is an open source implementation of SGI's GLX protocol, which also uses several low-level Mesa drivers for several of today's latest 3D accelerators. The effects of having hardware accelerated OpenGL support in Linux are clear, and it is helping to move Linux into the high-end graphics and gaming markets.

In its third year of development, the Utah GLX project has been traced back to the spring of 1997, but it may have existed even earlier than that. Originally written by Steven Parker, it eventually contained some hardware acceleration for the Matrox Millennium line of video cards. The hardware acceleration infrastructure of it was later improved upon by David Schmenk, which later allowed Wittawat Yamwong to write a new driver for the Matrox G200 video chipset when Matrox released the specifications in the spring of 1999. While not perfect, it was able to run Quake 2 correctly. Since then, support has been added for various chipsets, the most notable being the Matrox G400 chipset, when Matrox released their specifications. Development received another boost when programmer John Carmack, famous for his work in 3D gaming, became involved and helped use his knowledge to improve driver performance.

The current drivers support the Matrox G200 and G400 chipsets, the ATI RagePro chipset (but not the Rage 128 chipset), the NVidia Riva TNT series, the S3 ViRGE chipset, the SiS 6326 chipset, and the built in video display for the Intel i810 chipset. The Matrox drivers and ATI drivers are considered to be fairly stable: they can run Quake 3 properly at various levels of performance. The S3 driver is considered to be very unstable, and the drivers that NVIDIA provide for the TNT cards are better than the Utah code. The Utah GLX code will only work on XFree86 versions higher than 3.3.5, as 4.0 already has most of the features that it provides. Being based on the Mesa 3D Graphics Libraries, it provides full API compatibility with it, but bugs do sometimes cause graphical glitches.

Most of the drivers allow utilizing the AGP bus for faster transfers and texturing support through the agpgart module, which comes standard in all the development kernels and can be patched into the 2.2.x kernels. This allowed performance for the G400 chipset in particular to become very close to the windows drivers that Matrox has released. While most distributions don't enable this by default, it can easily be enabled with a patch and a recompile, and the improvement it gives makes it worth it.

Using the latest precompiled binary RPMs that Matrox supplied, I was able to get hardware OpenGL support working on Red Hat 6.2 by simply installing the RPM and restarting the X server. In order to get AGP support working correctly, I had to recompile the kernel with AGP support enabled, which did not take long, and after a quick reboot, AGP support was working correctly. While this helped performance, it does not make performance equivalent to what compiling your own binaries will give. By applying the necessary patches to the Mesa libraries, I was able to get a source tree to compile the proper binaries without any problems. I was able to run all of the OpenGL programs I could find without a hassle, with very good stability on my Matrox G400 MAX video card under XFree86 3.3.6.

Although just reaching a state of maturity, the code that Utah GLX provides has become obsolete with the introduction of XFree86 4.0 and DRI. Most of the programmers working on the Utah GLX project are working on the DRI code, and the Matrox and i810 drivers were ported from Utah to DRI, and have allowed stable drivers to be developed rapidly. The GLX portions that the Utah GLX code provides will be not be ported to XFree86 4.0, as it already includes the an official SGI module for it. As a result, the work on Utah GLX has stagnated recently.

The next, and perhaps the final, goal of the Utah GLX project is reaching a 1.0 release. While it seems easy, it is a big task and requires tracking down as many bugs as possible. The focus of this release will be support for those still running 3.3.x. After that, the focus of the developers will most likely be placed upon the DRI project, which promises to take 3D support in Linux to the next level.

Information on the Utah GLX project can be found at the Utah GLX Homepage and the source code is at the Utah GLX SourceForge site. For information on the Mesa 3D Graphics Library, visit the Mesa 3D Graphics Library Homepage and for source code go to the Mesa 3D SourceForge site. For DRI information, go to the Direct Rendering Project Homepage or visit the DRI SourceForge site.

Luke Groeninger, the Linux.com Hardware Correspondent, can be reached at dghost@linux.com with any complaints, comments and suggestions.