[next] [prev] [prev-tail] [tail] [up]

## Appendix B
Some words on OpenGL graphics drivers

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.

A good review on OpenGL drivers can be found at

http://www.flightgear.org/Hardware.

Specific information is collected for windows at

http://www.x-plane.com/SYSREQ/v5ibm.html

and for Macintosh at

http://www.x-plane.com/SYSREQ/v5mac.html.

An excellent place to look for documentation about Linux and 3-D accelerators is the Linux Quake HOWTO at

http://www.linuxquake.com.

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.

### B.1 NVIDIA chip based cards under Linux

Recent Linux distributions include and install anything needed to run OpenGL programs under Linux. Usually there is no need to install anything else.

If for whatever reason this does not work, you may try to download the most recent drivers from the NVIDIA site at

http://www.nvidia.com/Products/Drivers.nsf/Linux.html

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 Installation Guide giving a step-by-step description, making it unnecessary to copy the material here.

### B.2 NVIDIA chip based cards under Windows

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

http://www.nvidia.com/products.nsf/htmlmedia/detonator3.html

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.

### B.3 3DFX chip based cards under Windows

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.

### B.4 An alternative approach for Windows users

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

http://www.glsetup.com/.

We did not try this ourselves, but would suggest it for those completely lost.

### B.5 3DFX chip based cards under Linux

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.

### B.6 ATI chip based cards under Linux

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.

### B.7 Building your own OpenGL support under Linux

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

http://dri.sourceforge.net/status.phtml.

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

OpenGL renderer string:

If you find something like

OpenGL renderer string: FireGL2 / FireGL3 (Pentium3)

or

OpenGL renderer string: Mesa DRI Voodoo3 20000224

or

OpenGL renderer string: Mesa DRI Radeon 20010402

AGP 4x x86

OpenGL renderer string: Mesa GLX Indirect

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:

http://www.xfree86.org/<RELEASE NUMBER>/DRI.html

Additional reading on DRI:

http://www.precisioninsight.com/piinsights.html

In case you are missing some ’spare parts’:

http://dri.sourceforge.net/res.phtml

### B.8 OpenGL on Macintosh

OpenGL is pre-installed on Mac OS 9.x and later. You may find a newer version than the one installed for Mac OS 9.x at

http://www.apple.com/opengl

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.

[next] [prev] [prev-tail] [front] [up]