

Mesa Threads README
-------------------

Thread safety was introduced in Mesa 2.6 by John Stone and
Christoph Poliwoda.

It was redesigned in Mesa 3.3 so that thread safety is
supported by default (on systems which support threads,
that is).  There is no measurable penalty on single
threaded applications.

NOTE that the only _driver_ which is thread safe at this time
is the OS/Mesa driver!


At present the mthreads code supports three thread APIS:
  1) POSIX threads (aka pthreads).
  2) Solaris / Unix International threads.
  3) Win32 threads (Win 95/NT).

Support for other thread libraries can be added src/glthread.[ch]


In order to guarantee proper operation, it is
necessary for both Mesa and application code to use the same threads API.
So, if your application uses Sun's thread API, then you should build Mesa
using one of the targets for Sun threads.

The mtdemos directory contains some example programs which use 
multiple threads to render to osmesa rendering context(s).

Linux users should be aware that there exist many different POSIX
threads packages. The best solution is the linuxthreads package
(http://pauillac.inria.fr/~xleroy/linuxthreads/) as this package is the
only one that really supports multiprocessor machines (AFAIK). See
http://pauillac.inria.fr/~xleroy/linuxthreads/README for further
information about the usage of linuxthreads.

If you are interested in helping with thread safety work in Mesa
join the Mesa developers mailing list and post your proposal.


Regards,
  John Stone           -- j.stone@acm.org  johns@cs.umr.edu
  Christoph Poliwoda   -- poliwoda@volumegraphics.com


Version info:
   Mesa 2.6 - initial thread support.
   Mesa 3.3 - thread support mostly rewritten (Brian Paul)
