Brian Paul | ecc88c1 | 1999-02-23 03:41:13 +0000 | [diff] [blame] | 1 | |
| 2 | Mesa 3.0 MITS Information |
| 3 | |
| 4 | |
| 5 | This software is distributed under the terms of the GNU Library |
| 6 | General Public License, see the LICENSE file for details. |
| 7 | |
| 8 | |
| 9 | This document is a preliminary introduction to help you get |
| 10 | started. For more detaile information consult the web page. |
| 11 | |
| 12 | http://10-dencies.zkm.de/~mesa/ |
| 13 | |
| 14 | |
| 15 | |
| 16 | Version 0.1 (Yes it's very alpha code so be warned!) |
| 17 | Contributors: |
| 18 | Emil Briggs (briggs@bucky.physics.ncsu.edu) |
| 19 | David Bucciarelli (tech.hmw@plus.it) |
| 20 | Andreas Schiffler (schiffler@zkm.de) |
| 21 | |
| 22 | |
| 23 | |
| 24 | 1. Requirements: |
| 25 | Mesa 3.0. |
| 26 | An SMP capable machine running Linux 2.x |
| 27 | libpthread installed on your machine. |
| 28 | |
| 29 | |
| 30 | 2. What does MITS stand for? |
| 31 | MITS stands for Mesa Internal Threading System. By adding |
| 32 | internal threading to Mesa it should be possible to improve |
| 33 | performance of OpenGL applications on SMP machines. |
| 34 | |
| 35 | |
| 36 | 3. Do applications have to be recoded to take advantage of MITS? |
| 37 | No. The threading is internal to Mesa and transparent to |
| 38 | applications. |
| 39 | |
| 40 | |
| 41 | 4. Will all applications benefit from the current implementation of MITS? |
| 42 | No. This implementation splits the processing of the vertex buffer |
| 43 | over two threads. There is a certain amount of overhead involved |
| 44 | with the thread synchronization and if there is not enough work |
| 45 | to be done the extra overhead outweighs any speedup from using |
| 46 | dual processors. You will not for example see any speedup when |
| 47 | running Quake because it uses GL_POLYGON and there is only one |
| 48 | polygon for each vertex buffer processed. Test results on a |
| 49 | dual 200 Mhz. Pentium Pro system show that one needs around |
| 50 | 100-200 vertices in the vertex buffer before any there is any |
| 51 | appreciable benefit from the threading. |
| 52 | |
| 53 | |
| 54 | 5. Are there any parameters that I can tune to try to improve performance. |
| 55 | Yes. You can try to vary the size of the vertex buffer which is |
| 56 | define in VB_MAX located in the file src/vb.h from your top level |
| 57 | Mesa distribution. The number needs to be a multiple of 12 and |
| 58 | the optimum value will probably depend on the capabilities of |
| 59 | your machine and the particular application you are running. |
| 60 | |
| 61 | |
| 62 | 6. Are there any ways I can modify the application to improve its |
| 63 | performance with the MITS? |
| 64 | Yes. Try to use as many vertices between each Begin/End pair |
| 65 | as possbile. This will reduce the thread synchronization |
| 66 | overhead. |
| 67 | |
| 68 | |
| 69 | 7. What sort of speedups can I expect? |
| 70 | On some benchmarks performance gains of up to 30% have been |
| 71 | observerd. Others may see no gain at all and in a few rare |
| 72 | cases even some degradation. |
| 73 | |
| 74 | |
| 75 | 8. What still needs to be done? |
| 76 | Lots of testing and benchmarking. |
| 77 | A portable implementation that works within the Mesa thread API. |
| 78 | Threading of additional areas of Mesa to improve performance |
| 79 | even more. |
| 80 | |
| 81 | |
| 82 | |
| 83 | Installation: |
| 84 | |
| 85 | 1. This assumes that you already have a working Mesa 3.0 installation |
| 86 | from source. |
| 87 | 2. Place the tarball MITS.tar.gz in your top level Mesa directory. |
| 88 | 3. Unzip it and untar it. It will replace the following files in |
| 89 | your Mesa source tree so back them up if you want to save them. |
| 90 | |
| 91 | |
| 92 | README.MITS |
| 93 | Make-config |
| 94 | Makefile |
| 95 | mklib.glide |
| 96 | src/vbxform.c |
| 97 | src/vb.h |
| 98 | |
| 99 | 4. Rebuild Mesa using the command |
| 100 | |
| 101 | make linux-386-glide-mits |
| 102 | |