NOTE: this information is obsolete for Mesa 3.1. Due to the big changes in the Mesa code, the threads support is out of date. Someone will have to review/update it. Mesa Threads README ------------------- Mesa 2.6 is the starting point for an effort to make Mesa safe in multithreaded applications. The files src/mthreads.c and src/mthreads.h provide a platform independent threads API which Mesa uses internally to provide thread-safe operation. 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). Here's the current list of targets which enable multithreaded handling in Mesa: linux-386-pthread for Linux w/ Intel assembly and linuxthreads sunos5-thread for Suns with SunOS 5.x, using Solaris threads sunos5-pthread for Suns with SunOS 5.[56] using POSIX threads sunos5-gcc-thread for Suns with SunOS 5.x and GCC, using Solaris threads sunos5-gcc-pthread for Suns with SunOS 5.[56] and GCC, using POSIX threads In order to use Mesa with a multithreaded application, Mesa must be compiled using one of the thread-enabled configurations. In cases where a platform supports multiple APIs which are acceptable to Mesa, Mesa must be built with the same threads API as the application in order for things to work properly. For example, Solaris >= 2.5 support both POSIX threads and Sun's own threads API. 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. Since this effort is still very much a work in progress, not all aspects of Mesa are thread safe. As of this release (Mesa 2.6) only the osmesa drivers have been made MT-safe. As work continues, other drivers such as the X11 drivers will also incorporate MT-safe features. 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 develop MT-safe Mesa, please send email to j.stone@acm.org and poliwoda@volumegraphics.com who are the two most directly involved in this effort currently. Similarly, if you have problems using the MT-safe builds of Mesa, please send us comments/bugs etc. Future versions of Mesa will include more extensive documentation related to multithreading. This is the first release of our work, so please bear with us. Regards, John Stone -- j.stone@acm.org johns@cs.umr.edu Christoph Poliwoda -- poliwoda@volumegraphics.com