Acknowledgements
================

The following individuals and groups are to be acknowledged for their
contributions to Mesa over the years. This list is far from complete and
somewhat dated, unfortunately.

-  Early Mesa development was done while Brian was part of the `SSEC
   Visualization Project <https://www.ssec.wisc.edu/~billh/vis.html>`__
   at the University of Wisconsin. He'd like to thank Bill Hibbard for
   letting him work on Mesa as part of that project.
-  John Carmack of id Software, Inc. funded Keith Whitwell in 1999 in
   order to optimize Mesa's vertex transformation module. This is a very
   substantial piece of work.
-  Precision Insight, Inc., VA Linux Systems, Inc., and most recently,
   Tungsten Graphics, Inc. have supported the ongoing development of
   Mesa.
-  The `Mesa <https://www.mesa3d.org>`__ website and Git repository are
   hosted by `freedesktop.org <https://freedesktop.org/>`__.
-  `alt.software <https://web.archive.org/web/20131110021426/http://www.altsoftware.com/>`__
   contributed the Direct3D driver.
-  **Bernd Barsuhn** wrote the evaluator code for (splines, patches) in
   Mesa.
-  **Bernhard Tschirren** wrote the Allegro DJGPP driver.
-  **Bogdan Sikorski** wrote the GLU NURBS and polygon tessellator in
   Mesa.
-  **Charlie Wallace** wrote the MS-DOS driver.
-  **CJ Beyer** was the `www.mesa3d.org <https://www.mesa3d.org>`__
   webmaster.
-  **Darren Abbott** provided the OS/2 driver.
-  **David Bucciarelli** wrote and maintained the 3Dfx Glide driver.
   Thousands of Linux/Quake players thank David!
-  **Gareth Hughes** wrote new GLU 1.2 Polygon Tessellation code (now
   superseded by SGI SI GLU).
-  **Holger Waechtler** contributed AMD 3DNow! assembly code which
   accelerates vertex transformation in Mesa 3.1. Holger also
   implemented the :ext:`GL_EXT_texture_env_combine` extension.
-  **Jeroen van der Zijp** and **Thorsten Ohl** contributed the Xt/Motif
   widget code.
-  **John Stone** provided the multi-threading support in Mesa 3.0.
-  **John Watson** assisted with web page design.
-  **Josh Vanderhoof** contributed Intel x86 assembly code which
   accelerates vertex transformation in Mesa 3.x.
-  **Jouk Jansen** contributed and continues to maintain the VMS
   support.
-  **Karl Schultz** has been maintaining the Windows driver.
-  **Keith Whitwell** has made extension contributions to Mesa since
   1999.
-  **Kendall Bennett** wrote the SciTech MGL driver.
-  **Klaus Niederkrueger** contributed many improvements to Mesa's
   software rasterizer.
-  **Mark Kilgard** contributed antialiased line improvements and
   several extensions.
-  **Michael Pichler** contributed *many* bug fixes
-  **Miklos Fazekas** wrote and maintains the Macintosh driver.
-  **Pascal Thibaudeau** wrote the NeXT driver.
-  **Pedro Vazquez** setup and maintains the Mesa Mailing list.
-  **Randy Frank** contributed *many* bug fixes.
-  **Stefan Zivkovic** wrote the Amiga driver.
-  **Stephane Rehel** provided the Cygnus Win32 support
-  **Ted Jump** maintained the makefiles and project files for Windows
   95/98/NT compilation for some time.
-  **Uwe Maurer** wrote the LibGGI driver for Mesa-3.0.
-  **Victor Ng-Thow-Hing** wrote the Amiwin driver for the Amiga.

Apologies to anyone who's been omitted. Please send corrections and
additions to Brian.
