FlightGear’s graphics engine is based on a graphics library called OpenGL. Its primary
advantage is its platform independence, i. e., programs written with OpenGL support can
be compiled and executed on several platforms, given the proper drivers having been
installed in advance. Thus, independent of if you want to run the binaries only or if you
want to compile the program yourself you must have some sort of OpenGL support
installed for your video card.
This should be your first aid in case something goes wrong with your Linux 3-D
setup.
Unfortunately, there are so many graphics boards, chips and drivers out there that we
are unable to provide a complete description for all systems. Given the present market
dominance of NVIDIA combined with the fact that their chips have indeed been proven
powerful for running FlightGear, we will concentrate on NVIDIA drivers in what
follows.
At present, this page has drivers for all NVIDIA chips for the following Linux
distributions: RedHat 7.1, Redhat 7.0, Redhat 6.2, Redhat 6.1, Mandrake 7.1, Mandrake
7.2, SuSE 7.1, SuSE 7.0 in several formats (.rpm, .tar.gz). These drivers support OpenGL
natively and do not need any additional stuff.
The page named above contains a detailed README and InstallationGuide giving a step-by-step description, making it unnecessary to copy the material
here.
Again, you may first try the drivers coming with your graphics card. Usually they should
include OpenGL support. If for whatever reason the maker of your board did not include
this feature into the driver, you should install the Detonator reference drivers made by
NVIDIA (which might be a good idea anyway). These are available in three
different versions (Windows 95/98/ME, Windows 2000, Windows NT) from
Just read carefully the Release notes to be found on that page. Notably do not forget to
uninstall your present driver and install a standard VGA graphics adapter before
switching to the new NVIDIA drivers first.
With the Glide drivers no longer provided by 3DFX there seems to be little chance to
get it running (except to find older OpenGL drivers somewhere on the net or
privately). All pages which formerly provided official support or instructions for
3DFX are gone now. For an alternative, you may want to check the next section,
though.
There is now an attempt to build a program which detects the graphics chip on your
board and automatically installs the appropriate OpenGL drivers. This is called
OpenGL Setup and is presently in beta stage. It’s home page can be found at
Notably, with 3DFX now having been taken over by NVIDIA, manufacturer’s support
already has disappeared. However with XFree86-4.x (with x at least being greater than 1)
Voodoo3 cards are known to be pretty usable in 16 bit color mode. Newer cards should
work fine as well. If you are still running a version of Xfree86 3.X and run into problems,
consider an upgrade. The recent distributions by Debian or SuSE have been reported to
work well.
There is support for ATI chips in XFree86-4.1 and greater. Lots of AGP boards based on
the Rage128 chip - from simple Rage128 board to ATI Xpert2000 - are mostly usable for
FlightGear. Since XFree86-4.1 you can use early Radeon chips - up to Radeon7500 with
XFree86-4.2.
Setting up proper OpenGL support with a recent Linux distribution should be pretty
simple. As an example SuSE ships everything you need plus some small shell scripts to
adjust the missing bits automagically. If you just want to execute pre-built binaries of
FlightGear, then you’re done by using the supplied FlightGear package plus the
mandantory runtime libraries (and kernel modules). The package manager will tell you
which ones to choose.
In case you want to run a self-made kernel, you want to compile FlightGear
yourself, you’re tweaking your X server configuration file yourself or you even run a
homebrewed Linux ”distribution” (this means, you want to compile everything yourself),
this chapter might be useful for you.
Now let’s have a look at the parts that build OpenGL support on Linux. First there’s a
Linux kernel with support for your graphics adapter.
Examples on which graphics hardware is supported natively by Open Source drivers
are provided on
There are a few graphics chip families that are not directly or no more than partly
supported by XFree86, the X window implementation on Linux, because vendors don’t
like to provide programming information on their chips. In these cases - notably
IBM/DIAMOND/now: ATI FireGL graphics boards and NVIDIA GeForce based cards -
you depend on the manufacturers will to follow the ongoing development of the XFree86
graphics display infrastructure. These boards might prove to deliver impressing
performance but in many cases - considering the CPU’s speed you find in today’s
PC’s - you have many choices which all lead to respectable performance of
FlightGear.
As long as you use a distribution provided kernel, you can expect to find all
necessary kernel modules at the appropriate location. If you compile the kernel yourself,
then you have to take care of two sub-menus in the kernel configuration menu. You’ll
find them in the ”Character devices” menu. Please notice that AGP support is not
compulsory for hardware accelerated OpenGL support on Linux. This also works quite
fine with some PCI cards (3dfx Voodoo3 PCI for example, in case you still own one).
Although every modern PC graphics card utilizes the AGP ’bus’ for fast data
transfer.
Besides ”AGP Support” for your chipset - you might want to ask your mainboard
manual which one is on - you definitely want to activate ”Direct Rendering Manager”
for your graphics board. Please note that recent releases of XFree86 - namely
4.1.0 and higher might not be supported by the DRI included in older Linux
kernels. Also newer 2.4.x kernels from 2.4.8 up to 2.4.17 do not support DRI in
XFree86-4.0.x.
After building and installing your kernel modules and the kernel itself this task might
be completed by loading the ’agpgart’ module manually or, in case you linked it into the
kernel, by a reboot in purpose to get the new kernel up and running. While booting your
kernel on an AGP capable mainboard you may expect boot messages like this one:
> Linux agpgart interface v0.99 (c) Jeff Hartmann > gpgart: Maximum main memory to use for agp memory:439M > agpgart: Detected Via Apollo Pro chipset > agpgart: AGP aperture is 64M @ 0xe4000000
If you don’t encounter such messages on Linux kernel boot, then you might have
missed the right chip set. Part one of activation hardware accelerated OpenGL support on
your Linux system is now completed.
The second part consists of configuring your X server for OpenGL. This is not a big
deal as it simply consists of to instructions to load the appropriate modules on startup of
the X server. This is done by editing the configuration file /etc/X11/XF86Config.
Today’s Linux distributions are supposed to provide a tool that does this job
for you on your demand. Please make sure there are these two instructions:
Load ''glx''
Load ''dri''
in the ”Module” section your X server configuration file. If everything is right
the X server will take care of loading the appropriate Linux kernel module for
DRI support of your graphics card. The right Linux kernel module name is
determined by the ’Driver’ statement in the ”Device” section of the XF86Config.
Please see three samples on how such a ”Device” section should look like:
Section ''Device''
BoardName ''3dfx Voodoo3 PCI''
BusID ''0:8:0''
Driver ''tdfx''
Identifier ''Device[0]''
Screen 0
VendorName ''3Dfx''
EndSection
Section ''Device''
BoardName ''ATI Xpert2000 AGP''
BusID ''1:0:0''
Driver ''ati''
Option ''AGPMode'' ''1''
Identifier ''Device[0]''
Screen 0
VendorName ''ATI''
EndSection
Section ''Device''
BoardName ''ATI Radeon 32 MB DDR AGP''
BusID ''1:0:0''
Driver ''radeon''
Option ''AGPMode'' ''4''
Identifier ''Device[0]''
Screen 0
VendorName ''ATI''
EndSection
By using the Option ”AGPMode” you can tune AGP performance as long as the
mainboard and the graphics card permit. The BusID on AGP systems should always be
set to ”1:0:0” - because you only have one AGP slot on your board - whereas the PCI
BusID differs with the slot your graphics card has been applied to. ’lspci’ might be your
friend in desperate situations. Also a look at the end of /var/log/XFree86.0.log, which
should be written on X server startup, should point to the PCI slot where your card
resides.
This has been the second part of installing hardware accelerated OpenGL support on
your Linux box.
The third part carries two subparts: First there are the OpenGL runtime libraries,
sufficient to run existing appliactions. For compiling FlightGear you also need the suiting
developmental headers. As compiling the whole X window system is not subject to this
abstract we expect that your distribution ships the necessary libraries and headers. In case
you told your package manager to install some sort of OpenGL support you are
supposed to find some OpenGL test utilities, at least there should be ’glxinfo’ or
’gl-info’.
These command-line utilities are useful to say if the previous steps where
successfull. If they refuse to start, then your package manager missed something because
he should have known that these utilities usually depend on the existence of OpenGL
runtime libraries. If they start, then you’re one step ahead. Now watch the output of this
tool and and have a look at the line that starts with
mind the word ’Indirect’, then it’s you who missed something, because OpenGL gets
dealt with in a software library running solely on your CPU. In this case you might want
to have a closer look at the preceding paragraphs of this chapter. Now please
make sure all necessary libraries are at their proper location. You will need three
OpenGL libraries for running FlightGear. In most cases you will find them in
/usr/lib/:
/usr/lib/libGL.so.1
/usr/lib/libGLU.so.1
/usr/lib/libglut.so.3
These may be the libraries itself or symlinks to appropriate libraries located in some
other directories. Depending on the distribution you use these libraries might be shipped
in different packages. SuSE for example ships libGL in package ’xf86_glx’, libGLU in
’xf86glu’ and libglut in ’mesaglut’. Additionally for FlightGear you need libplib which
is part of the ’plib’ package.
For compiling FlightGear yourself - as already mentioned - you need the appropriate
header files which often reside in /usr/include/GL/. Two are necessary for libGL and they
come in - no, not ’xf86glx-devel’ (o.k., they do but they do not work correctly) but in
’mesa-devel’:
/usr/include/GL/gl.h
/usr/include/GL/glx.h
One comes with libGLU in ’xf86glu-devel’:
/usr/include/GL/glu.h
and one with libglut in ’mesaglut-devel’
/usr/include/GL/glut.h
The ’plib’ package comes with some more libraries and headers that are too
many to be mentioned here. If all this is present and you have a comfortable
compiler environment, then you are ready to compile FlightGear and enjoy the
result.
Further information on OpenGL issues of specific XFree86 releases is available here:
You should receive the updates automatically for Mac OSX.
One final word: We would recommend that you test your OpenGL support with one
of the programs that accompany the drivers, to be absolutely confident that
it is functioning well. There are also many little programs, often available as
screen savers, that can be used for testing. It is important that you are confident
in your graphics acceleration because FlightGear will try to run the card as
fast as possible. If your drivers aren’t working well, or are unstable, you will
have difficulty tracking down the source of any problems and have a frustrating
time.