header

 

main menu
L3D
News
Archives
Links

3D accelerators
3Dfx Interactive
3DLabs
ATI-const.
Intel
Matrox
Number 9
nVidia
S3
SiS

Guides,articles
XF863D Status Report
3dfx install guide
Banshee/V3 guide
Q3Test Readme
WTF is GLX?


New Page
Network sites
Fullon3D
Get 3DNow!
X11Spy
Gizmo3D
CPU Gurus


Latest .plan files
Apr 22, 14:28 : James Monroe
Apr 22, 03:30 : Alex "Cybermind" Redman
Apr 21, 19:15 : Rick Johnson
Apr 21, 19:05 : Joe Siegler
Apr 21, 14:46 : Charlie Wiederhold

 

 

 

Did you know, we get owned by phr0q again?
New Voodoo2 Glide Release
DCypher.Net and ProcessTree merge
Do distributed computing and get a chance to win
New 3dfx Voodoo3/ Banshee drivers
Mandrake running under W2K
Quake3 Demo/update v 1.16n
Software updates
XFree 4 now here
SiN ported to Linux
OpenAL
Q3 Point Release
announce

 


Have some news? Submit it! Get Involved!

This is a mirror of the XFree86 3D Status Report with the kind permission of A.C. Aitchison

XFree86 3D Status Report

This document was first written in June 1998. At that time 3D on XFree86 meant software, either PEX5, or OpenGL using Mesa. The aim of this document was to describe the technical problems that needed to be solved and to mention projects that were working on them.

Since then 3D on XFree86 has moved on a lot; the next release of XFree86 will include hardware accelerated OpenGL for several brands of card. When XFree86 v4.0 is shipped by the likes of RedHat, Debian and SuSE this page will be obsolete.

Right now (July 1999) XFree86 v4.0 (pre-release snapshots available at http://www.xfree86.org/snapshots/) is not ready for the average user, so there is a need for a page describing the projects providing OpenGL for XFree86 for different hardware. Rewriting this page as a list of hardware with links for each project doesn't appeal to me, and http://www.linux3d.org/hardware.html (aka http://glide.xxedgexx.com/hardware.html) does that well.

You should also look at: http://reality.sgi.com/ripperda_engr/glx/, http://glx.on.openprojects.net/ and http://www.linux3d.org/.


Throughout this document I shall refer to Linux; usually the same will be true for FreeBSD/OpenBSD/NetBSD and sometimes also for OS/2 running XFree86.

News

2 June. Nvidia have released drivers for their RIVA family.

3D graphics for Unix / X windows

There are 2 standards for 3D graphics on X window platforms; X3D-PEX, and OpenGL.

X3D-PEX, sometimes called PEX-5, is a version of the Phigs 3D graphics library, extended to form an extension to the X-server. Is almost obsolete.

OpenGL® was developed by Silicon Graphics from their IRIX GL language, and is a registered trademark of Silicon Graphics, Inc. They have made the specification (but not an implementation) freely available, so that developers are not at the mercy of incompatible implementations from different vendors. The official OpenGL web site is http://www.opengl.org/. Silicon Graphics also have a useful OpenGL web page at http://www.sgi.com/Technology/openGL/.

OpenGL started life on X windows systems; in such setups it is common to run a program on one machine, but have the display appear on another. There is thus an extension to X windows, called GLX, which allows OpenGL requests to be efficiently packaged as X requests.

Commercial 3D for Linux

Xi Graphics produce Accelerated-X/OGL http://www.xig.com/Pages/3D%20AX%20Page.html. This is a Technology Demo and distrubution is limited to serious developers and certain key organizations.

Metro Link produce Metro OpenGL 1.3 http://www.metrolink.com/opengl/index.html, which includes "One FREE Upgrade when Hardware Acceleration is Released". Metro Extreme 3D http://www.metrolink.com/extrem3d.html will provide this hardware acceleration. An Early Access Release For 3DLabs Glint Chips is now available - see http://www.metrolink.com/press/eae3dpress.html

Mesa

OpenGL® is a registered trademark of Silicon Graphics, Inc., who quite reasonably only licence the name to be used by products which have been tested to comply with the specification. Since testing costs money, there are no free licenced versions of OpenGL. However for anyone looking for a freely available library which utilizes the OpenGL command syntax or state machine Brian Paul's library Mesa http://www.mesa3d.org/, is the first choice. It is freely available in all the usual free software meanings; see http://www.mesa3d.org/#Disclaimer for the legal statement of compatibility.

Mesa runs under Microsoft operating systems as well as most Unix systems. For Linux it can run either on your X server or on the console using SVGAlib. The only down-side to Mesa is that it runs in software only on most systems; see http://www.mesa3d.org/#Hardware for the 3D hardware which can accelerate Mesa.

Hardware Acceleration for Mesa: 3Dfx Voodoo

The 3DFx Voodoo, Voodoo-Rush and Voodoo2 only do 3D acceleration, so another graphics chip (which is often on another graphics card) does the 2D work. Mesa can use the combination of 2D and 3D chips in2 different ways.

The simplest way is for the OpenGL application to take over the full screen, thus no 2D work is needed.

Alternatively, if you want OpenGL in a window, the Voodoo and Voodoo-2 can draw the picture in their frame-buffer, and then have Mesa copy the picture back to the X server screen. Although the copy is relatively slow, this is still faster than software only rendering on all but the fastest CPUs. Brian implemented this as a hack, and was surprised how well it works; it has even been able to accelerate 2 different windows simultaneously under certain conditions.

The Voodoo Rush supports rendering into windows directly (ie without copying the data back to the 2D system).

The latest versions of the Glide library are available at http://glide.xxedgexx.com/3DfxRPMS.html and include an X server for AT3D /Voodoo-Rush based systems, apparently based on the XFree86 3.3.2 SVGA server.

The 2.2 Linux kernel (and the latest 2.1.x kernels) include a device driver for /dev/3dfx that allows Glide applications to run without root privileges. More details are at the 3DfxRPMS page above. In addition 3Dfx have a private news group on news://news.3dfx.com/3dfx.linux.dev.glide (this address used to be news://news.3dfx.com/3dfx.glide.linux). Steve Baker tells me that this is where most of the action is for stuff like /dev/3dfx. If you are a Linux/Mesa/3Dfx user, you should certainly look at that news feed once in a while.

The Banshee and Voodoo3 are combined 2D and 3D chips; so they require integrated 3D and Xserver software like all the hardware below. Integrated servers are available at http://glide.xxedgexx.com/3DfxRPMS_vb_glibc.html.

Hardware Acceleration for Mesa: other hardware

Systems based on the 3Dfx Voodoo have 2 graphics chips: the Voodoo and a 2D chip. With this design the X server can have exclusive use of the 2D chip and Mesa can have exclusive use of the Voodoo. However, many other 3D graphics cards have the 2D and 3D parts on the same chip, but having 2 different programs talking to the same chip at the same time is likely to cause confusion unless the programs synchronize and coordinate their actions.

S3 provide a library for MS Windows which allows Mesa and MS Windows to synchronize access to the chip. Someone from S3 has suggesting that he might port this library to XFree86 in his spare time, but until then Mesa/S3/3D hardware acceleration only works under MS Windows. Many other manufacturers provide an OpenGL driver for MS Windows (usually Windows NT, sometime Windows 95) so are less interested in supporting Mesa.

See below for news of Nvidia's drivers for the RIVA family, and for news of a prototype GLX module which supports the Permedia 2 chip.

The GGI project http://www.ggi-project.org/ aims to provide a software layer underneath the X server and Mesa which talks to the hardware and could resolve conflicts between them; this is the same approach that SGI use on many of their systems. From Mesa version 3, GGI support is included as standard. XGGI is an X server which runs on top of GGI; as of 27th Dec. 1998 it "still needs more work". GGI has developed a lot since I wrote the following section, including some integration into the latest Linux kernels. I ought to reexamine it - it may now be a viable alternative to the XFree86 / GLX approach described below.

GLX and XFree86

Most people on Linux systems are using XFree86. The obvious way to get Mesa working with XFree86 is to use Mesa as the basis for a GLX module for XFree86; since this turns 2 programs into one, synchronising access to the graphic hardware is simplified.

Team 1

The first step is to get a software GLX module running; Steve Parker http://www.cs.utah.edu/~sparker/xfree86-3d/ started this effort by produced a version of Mesa http://www.cs.utah.edu/~sparker/xfree86-3d/download/ which includes the GLX protocol. With this an SGI should be able to display OpenGL directly onto a Linux box, although I have never tried it (with the standard Mesa I believe you need to run Mesa on the SGI). Henry Worth converted this into an OpenGL XFree86 module which was developed first by Simon Pogarcic of SuSE (/http://www.suse.de/~sim/), and then Terence Ripperda http://reality.sgi.com/ripperda_engr/glx

With support from Elsa AG, Simon Pogarcic and David Bucciarelli have designed an API http://www.suse.de/~sim/aclapi.txt.pl and a library - MLX http://www.suse.de/~sim/mlx.html which are intended to clarify writing hardware support for Mesa and GLX. A first pre-alpha implementation for Permedia 2 graphic cards is available at ftp://ftp.suse.com/pub/projects/3d/mlxlib/.

The team have a website at http://glx.on.openprojects.net/ and drivers for the Matrox G200 and the NVIDIA RIVA/TNT family

Team 2

Precision Insight, supported by Red Hat, have a Direct Rendering Infrastructure project (http://www.precisioninsight.com/DRI021699.html) based on Mesa, which from June 1999, is being released back into XFree86 source code (including the pre v4.0 snapshots http://www.xfree86.org/snapshots/) as sections are completed.

This infrastructure will fully support direct hardware rendering into multiple X windows. The sample implementation (SI) of this infrastructure will support MESA in software only, and will contain a limited set of hardware accelerated functions to demonstrate how complete hardware support can be added for any 3D hardware. See http://www.precisioninsight.com/dr/dr.html for the technical details.

Silicon Graphics have released their GLX source code; press release at http://www.sgi.com/newsroom/press_releases/1999/february/opengl.html and full details at http://www.sgi.com/software/opensource/glx/, and are working with Precision Insight to enhance the GLX source code for use with XFree86.

It is interesting to see that rival commercial Linux distributors RedHat and SuSE are both involved in integrating Mesa and XFree86. I hope that two teams gives us a strong product or products, and that we don't end up with hurt feelings and stretched resources.

Putting OpenGL and XFree86 into a single process (single-threaded) gives a much more sluggish response than the original Mesa library, although the rendering speed is not noticeably altered. A multi-threaded version of the X server should make the server responsive again.

Hardware implementations of the GLX module

Nvidia RIVA 128, RIVA 128ZX, RIVA TNT, RIVA TNT2

Nvidia have released development drivers with some hardware acceleration for their RIVA chips, see http://www.nvidia.com/Products.nsf/htmlmedia/software_drivers.html. These are not as fast as their Microsoft Windows drivers yet, but NVidia appear to be actively working with XFree86, Mesa and PI, to ensure that their hardware has good OpenGL performance with XFree86 v4.0. Nvidia worked with Terence Ripperda's GLX project, and the source for these drivers is available from that team.

Matrox G200

Terence Ripperda's GLX project has a driver for the Matrox G200. The G400 has some internal differences, and I haven't heard whether this driver can get the best out of this card.

Thomas Götz ( German: http://www.jura.uni-tuebingen.de/~goetz/, English: http://www.jura.uni-tuebingen.de/~goetz/indexeng.html) has added hardware acceleration for the Matrox Millennium and Mystique. This is a "design-check", not production code, but I've had it working successfully in single window mode on my Millennium.

A NASA Project

According to http://parallel.nas.nasa.gov/Parallel/Projects/FOGL/ there is a NASA project to get OpenGL on free Unixes. Nothing was ready to release when I read the page in February 1999.

Mesa and Microsoft Operating Systems

While Mesa build and run on Microsoft Operation Systems (DOS and Windows 3.x/95/98/NT) there are many different development environments (compilers) in use on them, and each one appears to require separate support. Since Microsoft and Silicon Graphics both provide OpenGL on some of these OSes, Brian has not made this a high priority. Alt.Software http://www.altsoftware.com/Fopengl.html have used Mesa to add OpenGL support on top of DirectX 6, thus making it available on any 3D hardware supported by these operating systems.

Managing Graphics Hardware Vendor Relationships in the Linux Developer Community

Finally, can I encourage all Open Software developers to read this paper by Frank LaMonica of Precision Insight Inc. (http://www.precisioninsight.com/alspaper.html).


A.C.Aitchison@dpmms.cam.ac.uk
Last modified: Mon Jul 26 13:44:22 1999
footer

All rights reserved. Copyright C 1999 by Linux3D.net