| |
| Mesa 3.0 MITS Information |
| |
| |
| This software is distributed under the terms of the GNU Library |
| General Public License, see the LICENSE file for details. |
| |
| |
| This document is a preliminary introduction to help you get |
| started. For more detaile information consult the web page. |
| |
| http://10-dencies.zkm.de/~mesa/ |
| |
| |
| |
| Version 0.1 (Yes it's very alpha code so be warned!) |
| Contributors: |
| Emil Briggs (briggs@bucky.physics.ncsu.edu) |
| David Bucciarelli (tech.hmw@plus.it) |
| Andreas Schiffler (schiffler@zkm.de) |
| |
| |
| |
| 1. Requirements: |
| Mesa 3.0. |
| An SMP capable machine running Linux 2.x |
| libpthread installed on your machine. |
| |
| |
| 2. What does MITS stand for? |
| MITS stands for Mesa Internal Threading System. By adding |
| internal threading to Mesa it should be possible to improve |
| performance of OpenGL applications on SMP machines. |
| |
| |
| 3. Do applications have to be recoded to take advantage of MITS? |
| No. The threading is internal to Mesa and transparent to |
| applications. |
| |
| |
| 4. Will all applications benefit from the current implementation of MITS? |
| No. This implementation splits the processing of the vertex buffer |
| over two threads. There is a certain amount of overhead involved |
| with the thread synchronization and if there is not enough work |
| to be done the extra overhead outweighs any speedup from using |
| dual processors. You will not for example see any speedup when |
| running Quake because it uses GL_POLYGON and there is only one |
| polygon for each vertex buffer processed. Test results on a |
| dual 200 Mhz. Pentium Pro system show that one needs around |
| 100-200 vertices in the vertex buffer before any there is any |
| appreciable benefit from the threading. |
| |
| |
| 5. Are there any parameters that I can tune to try to improve performance. |
| Yes. You can try to vary the size of the vertex buffer which is |
| define in VB_MAX located in the file src/vb.h from your top level |
| Mesa distribution. The number needs to be a multiple of 12 and |
| the optimum value will probably depend on the capabilities of |
| your machine and the particular application you are running. |
| |
| |
| 6. Are there any ways I can modify the application to improve its |
| performance with the MITS? |
| Yes. Try to use as many vertices between each Begin/End pair |
| as possbile. This will reduce the thread synchronization |
| overhead. |
| |
| |
| 7. What sort of speedups can I expect? |
| On some benchmarks performance gains of up to 30% have been |
| observerd. Others may see no gain at all and in a few rare |
| cases even some degradation. |
| |
| |
| 8. What still needs to be done? |
| Lots of testing and benchmarking. |
| A portable implementation that works within the Mesa thread API. |
| Threading of additional areas of Mesa to improve performance |
| even more. |
| |
| |
| |
| Installation: |
| |
| 1. This assumes that you already have a working Mesa 3.0 installation |
| from source. |
| 2. Place the tarball MITS.tar.gz in your top level Mesa directory. |
| 3. Unzip it and untar it. It will replace the following files in |
| your Mesa source tree so back them up if you want to save them. |
| |
| |
| README.MITS |
| Make-config |
| Makefile |
| mklib.glide |
| src/vbxform.c |
| src/vb.h |
| |
| 4. Rebuild Mesa using the command |
| |
| make linux-386-glide-mits |
| |