Index:
[thread]
[date]
[subject]
[author]
From: James Simmons <jsimmons@edgeglobal.com>
To : ggi-develop <ggi-develop@eskimo.com>
Date: Sun, 25 Apr 1999 08:43:54 -0400 (EDT)
XFree86-3D-status: a FAQ (fwd)
Take a look at the ggi section.
"My grandfather once told me that there are two kinds of people; those who
work and those who take credit. He told me to try to be the first group;
there was less competition there." -Indira Gandhi
James Simmons
System Admin EdgeNet Inc
Linux Kernel Developer
jsimmons@edgeglobal.com
http://www.edgeglobal.com/~jsimmons
---------- Forwarded message ----------
Date: Sun, 25 Apr 1999 00:00:05 +0100
From: Dr Andrew C Aitchison <A.C.Aitchison@dpmms.cam.ac.uk>
To: xfree86-3d@cs.utah.edu
Subject: XFree86-3D-status: a FAQ
This isn't an official FAQ for the XFree86-3D list, but it does attempt to
answer many of the questions that are asked on the list.
http://www.dpmms.cam.ac.uk/~werdna/XFree86-3D-status.html
Dr. Andrew C. Aitchison Computer Officer, DPMMS, Cambridge
A.C.Aitchison@dpmms.cam.ac.uk http://www.dpmms.cam.ac.uk/~werdna
------------------------------------------------------------------
XFree86 3D Status Report
A number of newsgroups and mailing lists have frequent requests for
information about hardware-accelerated 3D graphics on Linux,
FreeBSD/OpenBSD/NetBSD and other (usually Unix) platforms which run
the XFree86 X server; I've decided that it is time to collate a
pre-prepared answer. 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.
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
[1]http://www.opengl.org/. Silicon Graphics also have a useful OpenGL
web page at [2]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
[3]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
[4]http://www.metrolink.com/opengl/index.html, which includes "One
FREE Upgrade when Hardware Acceleration is Released". Metro Extreme 3D
[5]http://www.metrolink.com/extrem3d.html will provide this hardware
acceleration. An Early Access Release For 3DLabs Glint Chips is now
available - see [6]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
[7]http://www.mesa3d.org/, is the first choice. It is freely available
in all the usual free software meanings; see
[8]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 [9]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
[10]http://glide.xxedgexx.com/3DfxRPMS.html and include an X server
for AT3D /VoodooRush 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
[11]news://news.3dfx.com/3dfx.linux.dev.glide (this address used to be
[12]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.
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 a prototype GLX module which supports the
Permedia 2 chip.
The GGI project [13]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
[14]http://www.cs.utah.edu/~sparker/xfree86-3d/ started this effort by
produced a version of Mesa
[15]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 ([16]/http://www.suse.de/~sim/), and
then Terence Ripperda [17]http://reality.sgi.com/ripperda_engr/glx
With support from Elsa AG, Simon Pogarcic and David Bucciarelli have
designed an API [18]http://www.suse.de/~sim/aclapi.txt.pl and a
library - MLX [19]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
[20]ftp://ftp.suse.com/pub/projects/3d/mlxlib/.
The team are working on a driver for the Matrox G200, and have a
mailing list; subscribe by mailing
[21]g200-dev-request@lists.on.openprojects.net with "subscribe" in the
message body.
Team 2
Precision Insight, supported by Red Hat, have a Direct Rendering
Infrastructure project
([22]http://www.precisioninsight.com/DRI021699.html) based on Mesa,
which is scheduled to be released back into XFree86 in June 1999.
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
[23]http://www.precisioninsight.com/dr/dr.html for the technical
details.
Silicon Graphics have released their GLX source code; press release at
[24]http://www.sgi.com/newsroom/press_releases/1999/february/opengl.ht
ml and full details at
[25]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
Matrox Millennium and Mystique
Thomas Götz ( German: [26]http://www.jura.uni-tuebingen.de/~goetz/,
English: [27]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, and
I've heard rumours that this module runs on a Matrox G200 (and is
faster than software Mesa). If true this rumour would prove that the
G200 is compatible with the previous generation of Matrox 3D commands.
A NASA Project
According to [28]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 [29]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.
([30]http://www.precisioninsight.com/alspaper.html).
_________________________________________________________________
[31]A.C.Aitchison@dpmms.cam.ac.uk
Last modified: Wed Mar 31 07:33:54 1999
References
1. http://www.opengl.org/
2. http://www.sgi.com/Technology/openGL/
3. http://www.xig.com/Pages/3D%20AX%20Page.html
4. http://www.metrolink.com/opengl/index.html
5. http://www.metrolink.com/extrem3d.html
6. http://www.metrolink.com/press/eae3dpress.html
7. http://www.mesa3d.org/
8. http://www.mesa3d.org/#Disclaimer
9. http://www.mesa3d.org/#Hardware
10. http://glide.xxedgexx.com/3DfxRPMS.html
11. news://news.3dfx.com/3dfx.linux.dev.glide
12. news://news.3dfx.com/3dfx.glide.linux
13. http://www.ggi-project.org/
14. http://www.cs.utah.edu/~sparker/xfree86-3d/
15. http://www.cs.utah.edu/~sparker/xfree86-3d/download/
16. http://www.suse.de/~sim
17. http://reality.sgi.com/ripperda_engr/glx
18. http://www.suse.de/~sim/aclapi.txt.pl
19. http://www.suse.de/~sim/mlx.html
20. ftp://ftp.suse.com/pub/projects/3d/mlxlib/
21. mailto:g200-dev-request@lists.on.openprojects.net
22. http://www.precisioninsight.com/DRI021699.html
23. http://www.precisioninsight.com/dr/dr.html
24. http://www.sgi.com/newsroom/press_releases/1999/february/opengl.html
25. http://www.sgi.com/software/opensource/glx/
26. http://www.jura.uni-tuebingen.de/~goetz/
27. http://www.jura.uni-tuebingen.de/~goetz/indexeng.html
28. http://parallel.nas.nasa.gov/Parallel/Projects/FOGL/
29. http://www.altsoftware.com/Fopengl.html
30. http://www.precisioninsight.com/alspaper.html
31. mailto:A.C.Aitchison@dpmms.cam.ac.uk
Index:
[thread]
[date]
[subject]
[author]