| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |
| <html lang="en"> | |
| <head> | |
| <meta http-equiv="content-type" content="text/html; charset=utf-8"> | |
| <title>Performance Tips</title> | |
| <link rel="stylesheet" type="text/css" href="mesa.css"> | |
| </head> | |
| <body> | |
| <h1>Performance Tips</h1> | |
| <p> | |
| Performance tips for software rendering: | |
| </p> | |
| <ol> | |
| <li> Turn off smooth shading when you don't need it (glShadeModel) | |
| <li> Turn off depth buffering when you don't need it. | |
| <li> Turn off dithering when not needed. | |
| <li> Use double buffering as it's often faster than single buffering | |
| <li> Compile in the X Shared Memory extension option if it's supported | |
| on your system by adding -DSHM to CFLAGS and -lXext to XLIBS for | |
| your system in the Make-config file. | |
| <li> Recompile Mesa with more optimization if possible. | |
| <li> Try to maximize the amount of drawing done between glBegin/glEnd pairs. | |
| <li> Use the MESA_BACK_BUFFER variable to find best performance in double | |
| buffered mode. (X users only) | |
| <li> Optimized polygon rasterizers are employed when: | |
| rendering into back buffer which is an XImage | |
| RGB mode, not grayscale, not monochrome | |
| depth buffering is GL_LESS, or disabled | |
| flat or smooth shading | |
| dithered or non-dithered | |
| no other rasterization operations enabled (blending, stencil, etc) | |
| <li> Optimized line drawing is employed when: | |
| rendering into back buffer which is an XImage | |
| RGB mode, not grayscale, not monochrome | |
| depth buffering is GL_LESS or disabled | |
| flat shading | |
| dithered or non-dithered | |
| no other rasterization operations enabled (blending, stencil, etc) | |
| <li> Textured polygons are fastest when: | |
| using a 3-component (RGB), 2-D texture | |
| minification and magnification filters are GL_NEAREST | |
| texture coordinate wrap modes for S and T are GL_REPEAT | |
| GL_DECAL environment mode | |
| glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST ) | |
| depth buffering is GL_LESS or disabled | |
| <li> Lighting is fastest when: | |
| Two-sided lighting is disabled | |
| GL_LIGHT_MODEL_LOCAL_VIEWER is false | |
| GL_COLOR_MATERIAL is disabled | |
| No spot lights are used (all GL_SPOT_CUTOFFs are 180.0) | |
| No local lights are used (all position W's are 0.0) | |
| All material and light coefficients are >= zero | |
| <li> XFree86 users: if you want to use 24-bit color try starting your | |
| X server in 32-bit per pixel mode for better performance. That is, | |
| start your X server with | |
| startx -- -bpp 32 | |
| instead of | |
| startx -- -bpp 24 | |
| <li> Try disabling dithering with the MESA_NO_DITHER environment variable. | |
| If this env var is defined Mesa will disable dithering and the | |
| command glEnable(GL_DITHER) will be ignored. | |
| </ol> | |
| </body> | |
| </html> |