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
|