
                     3Dfx VooDoo device driver for Mesa 2.3



This software is distributed under the terms of the GNU Library
General Public License, see the LICENSE.TXT file for details.

What do you need ?

	- A PC with a 3Dfx Voodoo Graphics or Voodoo Rush based board
	  (Monster 3D, R3D, Obsidian, Stingray 128/3D, etc.);

	- The Mesa Library 2.3;

	- The 3Dfx Glide library 2.2 or later for your OS

	- If using Windows/NT/DOS, a compiler supported by the Glide library
	  (Micro$oft VC++ (tested), Watcom (tested), etc.);

	- If using Linux, the GCC compiler.

	- A lot of patience, this is an alpha release.


Tested on:

	Windows 95 - David Bucciarelli (tech.hmw@plus.it)
	Windows NT - Henri Fousse (arnaud@pobox.oleane.com)
	MS-DOS
	Linux - Daryll Strauss, Brian Paul


What is able to do ?

	- It is able accelerate points, lines and polygon with flat
	  shading, gouraud shading, Z-buffer, texture mapping. There is also
          the support for rendering in a window with the Voodoo Rush chipset.


How to compile for MS Windows (provided by David Bucciarelli)
	For the MSVC++:
	- The glide2x.lib has to be in the default MSVC++ lib directory;

	- The Glide headers have to be in the default MSVC++ include directory;

	- Edit the Mesa-2.3/mesafx.bat file and change the
	  "set MSVC=h:\winapps\msdev"
	  to point to the directory where you have installed the MSVC++;

	- Go to the directory Mesa-2.3 and run the mesafx.bat;

	- The script will compile everything (Mesa-2.3/lib/fxMesa.lib,
	  Mesa-2.3/lib/fxTk.lib, Mesa-2.3/lib/fxGLUT.lib and Voodoo demos);

	- At the end, you will be in the Mesa-2.3/3Dfx/demos directory;

	- Try some demo (fire.exe, teapot.exe, etc.) in order to check if
	  everthing is OK;

	- I have checked this procedure only on my PC, I hope that it will
	  work with any MSVC++ installation;

	- I think that you can easy change the Makefile.fx files in order
	  to work with other kind of compilers;

	- To discover how open the 3Dfx screen, read the sources under
	  the Mesa-2.3/3Dfx/demos directory. You can use the fxTk emulator for
	  old programs or the Henri's port of the GLUT 3.3 library. If you
	  are going to write new programs use the fxGLUT library.


How to compile for Linux (provided by Brian Paul):

	- NOTE: at this time (June 17, 1997), 3Dfx has not yet released
	  the Linux version of Glide to the general public.

	- Install the 3Dfx Glide library and headers in /usr/local/lib and
	  /usr/local/include, respectively.  You don't _have_ to put the
	  files in /usr/local but it's what Mesa expects by default.
	  Specifically, you should have:

		/usr/local/lib/libglide.so
		/usr/local/lib/libtexus.so

		/usr/local/include/3dfx.h
		/usr/local/include/glide.h
		/usr/local/include/glidesys.h
		/usr/local/include/glideutl.h
		/usr/local/include/gump.h
		/usr/local/include/sst1vid.h
		/usr/local/include/texus.h

	- In the Mesa-2.3 directory type "make linux-glide"

	- Compilation _should_ finish without errors.

	- Set your LD_LIBRARY_PATH environment variable so that the
	  libglide.so and Mesa library files can be found:

	  setenv LD_LIBRARY_PATH "/usr/local/lib:/FOOBAR/Mesa-2.3/lib"

	  Replace FOOBAR with the actual path to where you installed Mesa.

	- You'll have to run Glide-based programs as root or set the suid
	  bit on executables.

	- Try the demo programs!
	  The programs in the samples/ directory usually need the -db flag.

	- Look in the 3Dfx directory for more stuff.


Know BUGS and problems:

	- maximum texture size: 256x256 (this is an hardware limit);

	- the texture memory is never released;

	- the texture memory is ever allocated for a texture with all mipmap
	  levels active (also if you don't use mipmapping);

	- only GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB and GL_RGBA
	  texture channels (unsigned char) supported;

	- only one context supported;

        - use the glBindTexture extension (standard in OpenGL 1.1) for texture
	  mapping (the old way: glTexImage inside a display list, download
	  the texture map each time that you call the display list !!!);

	- use triangles and quads strip: they are a LOT faster than sparse
	  trianlges and quads;

	- the alpha buffer doesn't yet works but you can use all the glBlend
	  functions that don't use the alpha buffer (all functions without
	  the DST_ALPHA);

	- texture mapping and fog don't work with glOrtho;

	- very simple Bitmap support (but the GLUT and Tk font functions work
	  fine);

	- no pixel draw support;

	- color index mode not implemented


Did you find a lot BUGs and problems ? Good, send me (David) an email.


A special thanks goes to Henri Fousse (he has written several parts of
the v0.15).

The most update places where find Mesa VooDoo driver related informations are
the Mesa mailing list and my driver WEB page
(http://www-hmw.caribel.pisa.it/fxmesa/index.shtml)


David Bucciarelli (tech.hmw@plus.it)

Humanware s.r.l. 
Via XXIV Maggio 62
Pisa, Italy
Tel./Fax +39-50-554108
email: info.hmw@plus.it
www: www-hmw.caribel.pisa.it
