| @@ -0,0 +1,66 @@ | |||
| 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 | |||