home *** CD-ROM | disk | FTP | other *** search
/ Dream 57 / Amiga_Dream_57.iso / Linux / Libs / Mesa.txt < prev    next >
Text File  |  1998-09-18  |  28KB  |  719 lines

  1.  
  2.                                  Mesa 3.0
  3.  
  4.                      Copyright (C) 1995-1998  Brian Paul
  5.  
  6.  
  7.  
  8. Disclaimer
  9. ==========
  10.  
  11. Mesa is a 3-D graphics library with an API which is very similar to that
  12. of OpenGL*.  To the extent that Mesa utilizes the OpenGL command syntax
  13. or state machine, it is being used with authorization from Silicon Graphics,
  14. Inc.  However, the author makes no claim that Mesa is in any way a
  15. compatible replacement for OpenGL or associated with Silicon Graphics, Inc.
  16. Those who want a licensed implementation of OpenGL should contact a licensed
  17. vendor.  This software is distributed under the terms of the GNU Library
  18. General Public License, see the LICENSE file for details.
  19.  
  20. While Mesa is not a licensed OpenGL implementation, it is currently
  21. being tested with the OpenGL conformance tests.  For the current
  22. conformance status see the CONFORM file included in the Mesa distribution.
  23.  
  24. * OpenGL(R) is a registered trademark of Silicon Graphics, Inc.
  25.  
  26.  
  27.  
  28. Author
  29. ======
  30.  
  31. Brian Paul
  32. Avid Technology
  33. 1925 Andover St.
  34. Tewksbury, MA  01876
  35.  
  36. brianp@elastic.avid.com
  37.  
  38. My work on Mesa is in no way associated with my work at Avid Technology.
  39.  
  40. Formerly employed at the Space Science and Engineering Center at the
  41. University of Wisconsin - Madison.
  42.  
  43.  
  44.  
  45. Introduction
  46. ============
  47.  
  48. While Mesa uses the OpenGL API and mimics its semantics, it is
  49. important to understand that Mesa is not a real implementation of OpenGL
  50. since it is not licensed and has not been tested by the OpenGL conformance
  51. tests.  That said, Mesa is still a viable alternative to OpenGL.
  52.  
  53. Since version 2.0 Mesa implements the OpenGL 1.1 API specification.
  54. Since version 3.0 Mesa implements the OpenGL 1.2 API specification.
  55.  
  56. Only a few features are not yet implemented:
  57.  
  58.     trimmed NURBS
  59.     polygon antialiasing
  60.  
  61.  
  62. The primary design goal of this library has been correctness.  Common
  63. code paths are optimized for speed.  If you find that a particular
  64. rendering operation is slow let me know about it.  It may be a simple
  65. matter to optimize the operation in question.
  66.  
  67. I've been working on this library in my spare time since August, 1993.
  68. The core library was originally written on an Amiga using the DCC compiler.
  69. Later, development was moved to an SGI workstation.  Current development
  70. is done on SGI and PC/Linux systems.
  71.  
  72. Mesa works on most Unix workstations with ANSI C and X11.  There are also
  73. drivers for Amiga, Microsoft Windows, Macintosh, MS DOS, NeXT, and BeOS
  74. systems.  Look below for more information.
  75.  
  76. Since the OpenGL API is used, OpenGL documentation can serve as the
  77. documentation for Mesa's core functions.  Here are a few sources:
  78.  
  79.   WWW Center:   http://www.sgi.com/Technology/openGL/
  80.   Man pages:    http://www.digital.com:80/pub/doc/opengl/
  81.   Spec doc:     http://www.sgi.com/Technology/openGL/glspec/glspec.html
  82.  
  83.  
  84.  
  85. Getting the software
  86. ====================
  87.  
  88. The primary Mesa ftp site is iris.ssec.wisc.edu in the pub/Mesa directory.
  89. Mesa is also mirrored on sunsite in the directory pub/packages/development
  90. /graphics/mesa.
  91.  
  92. As of version 2.3, Mesa is distributed in two pieces:  main library code
  93. and demos.  If you're upgrading from a previous version of Mesa or you're not
  94. interested in the demos you can just download the core Mesa archive file.
  95.  
  96. Mesa is available in three archive formats:
  97.  
  98. 1. GNU zip/tar
  99.  
  100.     Download MesaLib-3.0.tar.gz and optionally MesaDemos-3.0.tar.gz
  101.     Unpack with:
  102.         gzcat MesaLib-3.0.tar.gz | tar xf -
  103.         gzcat MesaDemos-3.0.tar.gz | tar xf -
  104.  
  105.     If you don't have gzcat try zcat instead.
  106.  
  107. 2. Unix compressed/tar
  108.  
  109.     Download MesaLib-3.0.tar.Z and optionally MesaDemos-3.0.tar.Z
  110.     Unpack with:
  111.         zcat MesaLib-3.0.tar.Z | tar xf -
  112.         zcat MesaDemos-3.0.tar.Z | tar xf -
  113.  
  114. 3. ZIP format
  115.  
  116.     Download MesaLib-3.0.zip and optionally MesaDemos-3.0.zip
  117.     Unpack with:
  118.         unzip MesaLib-3.0.zip
  119.         unzip MesaDemos-3.0.zip
  120.  
  121.  
  122. After unpacking you should have the following files in the new Mesa-3.0
  123. directory:
  124.  
  125. README        - this file
  126. README.*    - detailed information for specific OS/hardware systems
  127. LICENSE        - the GNU library license
  128. IAFA-PACKAGE    - description file
  129. VERSIONS    - version history
  130. RELNOTES    - version-specific release notes
  131. FUTURE        - future development plans/ideas
  132. CONFORM        - results of conformance testing
  133. Makefile    - top-level Makefile
  134. Make-config    - system configurations used by the Makefiles
  135. mklib.*        - shell scripts for making shared libraries for some systems
  136. include/    - client include files
  137. lib/        - client libraries, created during installation
  138. src/        - source code for core library
  139. src-glu/    - source code for utility library
  140. util/        - handly utility functions
  141. widgets-mesa/    - Mesa widgets for Xt/Motif
  142. widgets-sgi/    - SGI OpenGL widgets for Xt/Motif
  143. NeXT/        - NeXT demo programs
  144. BeOS/        - BeOS demo programs
  145. mondello/    - Cirrus Logic Mondello 3-D accelerator code
  146. *mms*        - makefiles for VMS
  147. OpenStep/    - OpenStep files
  148. ggi/        - Linux GGI demos
  149.  
  150. and if you downloaded and unpacked the demos:
  151.  
  152. src-glut/    - source code for GLUT toolkit
  153. demos/        - GLUT demos
  154. xdemos/        - X11 and SVGA demo programs
  155. samples/    - sample OpenGL programs from SGI
  156. book/        - example programs from the OpenGL Programming Guide,
  157.           converted to GLUT by Mark Kilgard, from GLUT distribution.
  158. 3Dfx/        - 3Dfx demos and tests
  159. mtdemos/    - multi-threading demos
  160.  
  161.  
  162. Other Mesa-related stuff is at  ftp://iris.ssec.wisc.edu/pub/Mesa/contrib/
  163.  
  164.  
  165.  
  166. GLUT
  167. ====
  168.  
  169. Mesa 2.5 and later includes Mark Kilgard's GLUT library (GL Utility Toolkit).
  170. GLUT is built automatically on systems which support it.
  171.  
  172. The GLUT tests, demos, examples, etc are not included, just the main library.
  173. To obtain the latest complete release of GLUT please visit
  174. http://reality.sgi.com/employees/mjk_asd/glut3/glut3.html
  175.  
  176.  
  177.  
  178. Compiling and Installation
  179. ==========================
  180.  
  181. See the appropriate README.* file for system-specific instructions:
  182.  
  183.  
  184.     System                README file
  185.     -----------------        ------------
  186.     Unix/X11            README.X11
  187.     Windows 95/N%            README.WIN32
  188.     DOS                README.DOS
  189.     Linux/Windows w/ 3Dfx hardware    README.3DFX
  190.     Linux with GGI            README.GGI
  191.     Linux with threading        README.MITS
  192.     Amigas with Amiwin        README.AMIWIN
  193.     BeOS                README.BEOS
  194.     LynxOS                README.LYNXOS
  195.     SciTech MGL            README.MGL
  196.     IBM OS/2            README.OS2
  197.     Windows w/ S3 Virge hardware    README.VIRGE
  198.     VMS                README.VMS
  199.  
  200.  
  201. Header and library files:
  202.    After you've compiled Mesa and tried the demos I recommend the following
  203.    procedure for "installing" Mesa on Unix systems.
  204.  
  205.    Copy the Mesa include/GL directory to /usr/local/include:
  206.     cp -r include/GL /usr/local/include
  207.  
  208.    Copy the Mesa library files to /usr/local/lib:
  209.     cp lib/* /usr/local/lib
  210.  
  211.     (actually, use "cp -d" on Linux to preserve symbolic links)
  212.  
  213.    Create a few symbolic links so that compiling OpenGL applications is easy:
  214.     cd /usr/local/lib
  215.     IF USING STATIC (lib*.a) FILES THEN
  216.         ln -s libMesaGL.a libGL.a
  217.         ln -s libMesaGLU.a libGLU.a
  218.     ELSE
  219.         ln -s libMesaGL.so libGL.so
  220.         ln -s libMesaGLU.so libGLU.so
  221.     ENDIF
  222.  
  223.  
  224. Configuration options:
  225.    The file src/config.h has many parameters which you can adjust such
  226.    as maximum number of lights, clipping planes, maximum texture size,
  227.    etc.  In particular, you may want to change DEPTH_BITS from 16 to 32
  228.    if a 16-bit depth buffer isn't precise enough for your application.
  229.    After changing config.h you must recompile Mesa.
  230.  
  231.  
  232.  
  233. Using the Library
  234. =================
  235.  
  236. Performance Tips:
  237.    1. Turn off smooth shading when you don't need it (glShadeModel)
  238.    2. Turn off depth buffering when you don't need it.
  239.    3. Turn off dithering when not needed.
  240.    4. Use double buffering as it's often faster than single buffering
  241.    5. Compile in the X Shared Memory extension option if it's supported
  242.       on your system by adding -DSHM to CFLAGS and -lXext to XLIBS for
  243.       your system in the Make-config file.
  244.    6. Recompile Mesa with more optimization if possible.
  245.    7. Try to maximize the amount of drawing done between glBegin/glEnd pairs.
  246.    8. Use the MESA_BACK_BUFFER variable to find best performance in double
  247.       buffered mode.  (X users only)
  248.    9. Optimized polygon rasterizers are employed when:
  249.          rendering into back buffer which is an XImage
  250.          RGB mode, not grayscale, not monochrome
  251.          depth buffering is GL_LESS, or disabled
  252.          flat or smooth shading
  253.          dithered or non-dithered
  254.          no other rasterization operations enabled (blending, stencil, etc)
  255.   10. Optimized line drawing is employed when:
  256.          rendering into back buffer which is an XImage
  257.          RGB mode, not grayscale, not monochrome
  258.          depth buffering is GL_LESS or disabled
  259.          flat shading
  260.          dithered or non-dithered
  261.          no other rasterization operations enabled (blending, stencil, etc)
  262.   11. Textured polygons are fastest when:
  263.          using a 3-component (RGB), 2-D texture
  264.          minification and magnification filters are GL_NEAREST
  265.          texture coordinate wrap modes for S and T are GL_REPEAT
  266.          GL_DECAL environment mode
  267.          glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST )
  268.          depth buffering is GL_LESS or disabled
  269.   12. Lighting is fastest when:
  270.          Two-sided lighting is disabled
  271.          GL_LIGHT_MODEL_LOCAL_VIEWER is false
  272.          GL_COLOR_MATERIAL is disabled
  273.          No spot lights are used (all GL_SPOT_CUTOFFs are 180.0)
  274.          No local lights are used (all position W's are 0.0)
  275.          All material and light coefficients are >= zero
  276.   13. XFree86 users:  if you want to use 24-bit color try starting your
  277.       X server in 32-bit per pixel mode for better performance.  That is,
  278.       start your X server with
  279.          startx -- -bpp 32
  280.       instead of
  281.          startx -- -bpp 24
  282.   14. Try disabling dithering with the MESA_NO_DITHER environment variable.
  283.       If this env var is defined Mesa will disable dithering and the
  284.       command glEnable(GL_DITHER) will be ignored.
  285.  
  286.  
  287. Debugging:
  288.    Normally Mesa records but does not notify the user of errors.  It is up
  289.    to the application to call glGetError to check for errors.  Mesa supports
  290.    an environment variable, MESA_DEBUG, to help with debugging.  If MESA_DEBUG
  291.    is defined, a message will be printed to stdout whenever an error occurs.
  292.  
  293.    More extensive error checking is done when Mesa is compiled with the
  294.    DEBUG symbol defined.  You'll have to edit the Make-config file and
  295.    add -DDEBUG to the CFLAGS line for your system configuration.  You may
  296.    also want to replace any optimization flags with the -g flag so you can
  297.    use your debugger.  After you've edited Make-config type 'make clean'
  298.    before recompiling.
  299.  
  300.    In your debugger you can set a breakpoint in gl_error() to trap Mesa
  301.    errors.
  302.  
  303.    There is a display list printing/debugging facility.  See the end of
  304.    src/dlist.c for details.
  305.  
  306.  
  307. Fortran bindings:
  308.    Fortan bindings are no longer included with Mesa.  William F. Mitchell
  309.    (william.mitchell@nist.gov) has developed a new set of Mesa/OpenGL and
  310.    GLUT bindings for Fortran.  See http://math.nist.gov/f90gl for more
  311.    information.
  312.  
  313.  
  314. Off-screen rendering:
  315.    Mesa 1.2.4 introduced off-screen rendering, a facility for generating
  316.    3-D imagery without having to open a window on your display.  Mesa's
  317.    simple off-screen rendering interface is completely operating system
  318.    and window system independent so programs which use off-screen rendering
  319.    should be very portable.  This new feature effectively enables you to
  320.    use Mesa as an off-line, batch-oriented renderer.
  321.  
  322.    The "OSMesa" API provides 3 functions for making off-screen renderings:
  323.    OSMesaCreateContext(), OSMesaMakeCurrent(), and OSMesaDestroyContext().
  324.    See the Mesa/include/GL/osmesa.h header for more information.  See the
  325.    demos/osdemo.c file for an example program.   There is no facility for
  326.    writing images to files.
  327.  
  328.    If you want to generate large images (larger than 1280x1024) you'll
  329.    have to edit the src/config.h file to change MAX_WIDTH and MAX_HEIGHT
  330.    then recompile Mesa.  Image size should only be limited by available
  331.    memory.
  332.  
  333.  
  334. Profiling:
  335.    Mesa 1.2.6 introduced a simple profiling facility.  It counts and
  336.    measures the time spent in a number of important rendering operations
  337.    and prints the information in a report before your program exits.
  338.  
  339.    By default, profiling is disabled.  To enable it, add -DPROFILE to
  340.    the appropriate CFLAGS entry in the Make-config file, then recompile
  341.    Mesa.  In general, you should only enable profiling during program
  342.    development to gain insight into Mesa's performance.  Mesa runs a bit
  343.    slower when profiling is enabled because it requires frequent polling
  344.    of the system clock.
  345.  
  346.    The profiling report will be printed when glXDestroyContext is called
  347.    _if_ the MESA_PROFILE environment variable is set.  You must be sure
  348.    glXDestroyContext is called before exiting to get the profile report.
  349.    The report will be printed to stdout and includes:
  350.  
  351.       glBegin/glEnd - number of glBegin/glEnd pairs called, total time,
  352.          and rate in pairs/second.
  353.       vertexes transformed - number of vertices transformed, lit, clip-
  354.          tested, fogged, and mapped to window coordinates, total time,
  355.          and rate in vertexes/second.
  356.       points rasterized - number of points drawn, time, and rate.
  357.       lines rasterized - number of lines drawn, time, and rate.
  358.       polygons rasterized - number of polygons drawn, time and rate.
  359.       overhead - time between glBegin/glEnd not accounted for by vertexes,
  360.          points, lines, and polygons.  This is time spent executing
  361.          glVertex, glNormal, glColor, etc, clipping, primitive assembly,
  362.          and user code between glBegin/glEnd.
  363.       glClear - number of glClears executed, total time and clears/second.
  364.       SwapBuffers - number of swaps executed, total time and swaps/second.
  365.  
  366.    Note that the real point, line, and polygon rates should be computed by
  367.       adding in the vertex transformation and overhead time factors.
  368.  
  369.  
  370. Linux SVGA driver:
  371.    Mesa 1.2.6 has a preliminary Linux SVGA driver for Mesa.  It's based
  372.    on the SVGA library included with Linux.  The driver isn't finished
  373.    yet.  I'm not too familiar with SVGA graphics so I could use some help
  374.    finishing it.  Contact Brian if you want to help.
  375.  
  376.    To enable the SVGA driver, edit the Make-config file and add -DSVGA to
  377.    the CFLAGS for Linux and add -lvga to the LIBS variable.  There are
  378.    several test programs (vtest.c, vgears.c, vindex.c) in the demos
  379.    directory.  See the include/GL/svgamesa.h and src/svgamesa.c files for
  380.    more information about the driver.
  381.  
  382.  
  383. Extensions:
  384.    The following OpenGL extensions are currently implemented:
  385.  
  386.       GL_EXT_blend_color - allows blending with a constant color
  387.       GL_EXT_blend_minmax - blend min/max operator
  388.       GL_EXT_blend_logic_op - allows glLogicOp to work in RGBA mode
  389.       GL_EXT_blend_subtract - blend subtraction operator
  390.       GL_EXT_polygon_offset - polygon Z offset
  391.       GL_EXT_vertex_array - vertex array extension
  392.       GL_EXT_texture_object - texture objects
  393.       GL_EXT_texture3D - 3D texture mapping
  394.       GL_EXT_paletted_texture - for color indexed textures
  395.       GL_EXT_shared_texture_palette - shared texture palette
  396.       GL_EXT_point_parameters - point parameters as a function of Z
  397.       GL_EXT_rescale_normal - rescale normal vectors
  398.       GL_EXT_abgr - GL_ABGR pixel format
  399.       GL_SGIS_texture_edge_clamp - limit texture filtering to texture edge
  400.       GL_EXT_multitexture - multitexture extension (Be warned:  this extension
  401.          will be replaced in the future by GL_ARB_multitexture)
  402.       GL_SGIS_multitexture - multitexture extension (Be warned:  this extension
  403.          will be replaced in the future by GL_ARB_multitexture)
  404.  
  405.    For detailed information about the extensions see www.opengl.org
  406.    Other OS-specific extensions are documented in the other README.* files.
  407.  
  408.    There are a few Mesa-specific extensions:
  409.  
  410.    GL_MESA_window_pos
  411.  
  412.       This extension adds the glWindowPos*MESA() functions.  These functions
  413.       are convenient alternatives to glRasterPos*() because they set the
  414.       current raster position to a specific window coordinate, bypassing the
  415.       usual modelview, projection and viewport transformations.  This is
  416.       especially useful for setting the position for glDrawPixels() or
  417.       glBitmap() to a specific window coordinate.
  418.  
  419.       X and Y parameters (positive and negative) are directly mapped to
  420.       window coordinates.  Z is a depth value clamped to the range [0,1].
  421.       W is directly mapped.  The current raster position valid flag is
  422.       always set to true.  The current raster distance is set to zero.
  423.       The current raster color and texture coordinate are updated in the
  424.       same manner as glRasterPos().  In selection mode a hit record is
  425.       always generated.
  426.  
  427.       Programs using OpenGL, not Mesa, may also use the glWindowPos*MESA()
  428.       functions by including winpos.h from the src directory and by
  429.       compiling and linking with the winpos.c file from the src directory.
  430.  
  431.    GL_MESA_resize_buffers
  432.  
  433.       This extension adds the glResizeBuffersMESA() function.  When this
  434.       function is called, Mesa checks if the color buffer (window) has
  435.       been resized.  If it has, Mesa reallocates the ancillary (depth,
  436.       stencil, accum) buffers.
  437.  
  438.       Normally, Mesa checks for window size changes whenever glViewport()
  439.       is called.  In some applications it may not be appropriate to call
  440.       glViewport() when the window is resized.  Such applications should
  441.       call glResizeBuffersMESA() instead so the ancillary buffers are
  442.       correctly updated.
  443.  
  444.       This extension is new in version 2.2.
  445.  
  446.  
  447. Version 2.x features:
  448.    Version 2.x of Mesa implements the OpenGL 1.1 API with the following
  449.    new features.
  450.  
  451.    Texture mapping:
  452.     glAreTexturesResident
  453.     glBindTexture
  454.     glCopyTexImage1D
  455.     glCopyTexImage2D
  456.     glCopyTexSubImage1D
  457.     glCopyTexSubImage2D
  458.     glDeleteTextures
  459.     glGenTextures
  460.     glIsTexture
  461.     glPrioritizeTextures
  462.     glTexSubImage1D
  463.     glTexSubImage2D
  464.  
  465.    Vertex Arrays:
  466.     glArrayElement
  467.     glColorPointer
  468.     glDrawElements
  469.     glEdgeFlagPointer
  470.     glIndexPointer
  471.     glInterleavedArrays
  472.     glNormalPointer
  473.     glTexCoordPointer
  474.     glVertexPointer
  475.  
  476.    Client state management:
  477.     glDisableClientState
  478.     glEnableClientState
  479.     glPopClientAttrib
  480.     glPushClientAttrib
  481.  
  482.    Misc:
  483.     glGetPointer
  484.     glIndexub
  485.     glIndexubv
  486.     glPolygonOffset
  487.  
  488.  
  489. Version 3.x features:
  490.    Version 3.x of Mesa implements the OpenGL 1.2 API with the following
  491.    new features:
  492.  
  493.    BGR, BGRA and packed pixel formats
  494.    New texture border clamp mode
  495.    glDrawRangeElements()
  496.    standard 3-D texturing
  497.    advanced MIPMAP control
  498.    separate specular color interpolation
  499.  
  500.  
  501. Summary of environment variables:
  502.    MESA_DEBUG - if defined, error messages are printed to stderr
  503.    MESA_NO_DITHER - disable dithering, overriding glEnable(GL_DITHER)
  504.    MESA_RGB_VISUAL - specifies the X visual and depth for RGB mode (X only)
  505.    MESA_CI_VISUAL - specifies the X visual and depth for CI mode (X only)
  506.    MESA_BACK_BUFFER - specifies how to implement the back color buffer (X only)
  507.    MESA_PRIVATE_CMAP - force aux/tk libraries to use private colormaps (X only)
  508.    MESA_GAMMA - gamma correction coefficients (X only)
  509.    MESA_PROFILE - enable reporting of performance measurements
  510.    MESA_XSYNC - enable synchronous X behavior (for X debugging only)
  511.  
  512.  
  513.  
  514. Mailing List
  515. ============
  516.  
  517. There is a Mesa mailing list.  Its purpose is to let Mesa users exchange
  518. any ideas, questions, and/or problems they have.  To subscribe, send the
  519. following message to the address mesa-request@iqm.unicamp.br
  520.  
  521.     add yourname@your.internet.address mesa
  522.  
  523. For example:
  524.  
  525.     add brianp@elastic.avid.com mesa
  526.  
  527. You will receive a welcome message from the list server when you have been
  528. added to the list.
  529.  
  530. To unsubscribe from the list send the following message to
  531. mesa-request@iqm.unicamp.br
  532.  
  533.     del yourname@your.internet.address mesa
  534.  
  535. Thanks to Pedro Vazquez (vazquez@iqm.unicamp.br) for setting up and
  536. maintaing the list.
  537.  
  538.  
  539.  
  540. WWW Page
  541. ========
  542.  
  543. There is a Mesa WWW page:  http://www.ssec.wisc.edu/~brianp/Mesa.html
  544.  
  545.  
  546.  
  547. Contributed code
  548. ================
  549.  
  550. There is a contrib/ subdirectory on the Mesa ftp site which contains
  551. contributions from Mesa users.  See the README file in that directory for
  552. more information.
  553.  
  554. Anyone is welcome to contribute code to the Mesa project, provided you
  555. agree to the GNU license.
  556.  
  557. If you're contribution code to the Mesa library itself:
  558.    1. Try to write clean code (uniform indentation, comments, meaningful
  559.       identifiers, etc).  It must be readable and maintainable!
  560.    2. Test your code.  On several occations I've incorporated code from
  561.       users which later turned out to have bugs.  Now, I'm pretty hesitant
  562.       to use code which doesn't look good.
  563.  
  564. If you're contributing changes to Makefile or Make-config be sure your
  565. changes won't cause headaches for other users.  If you're not sure then
  566. maybe a new config target is appropriate.
  567.  
  568.  
  569.  
  570. Reporting Bugs
  571. ==============
  572.  
  573. If you think you've found a bug in Mesa first check if a newer version of
  574. Mesa is available.  Next, check ftp://iris.ssec.wisc.edu/pub/Mesa to see
  575. if a patch for your bug is there.  Otherwise, report the problem.
  576.  
  577. Since many people have contributed code to Mesa it's important that you
  578. report a bug to the right person:
  579.  
  580. Area            Contact
  581. ----------------------    -------------------------------------------
  582. GLU polygon tessellator    Bogdan Sikorski  bogdan@cira.it
  583. GLU NURBS        Bogdan Sikorski  bogdan@cira.it
  584. Evaluators        Bernd Barsuhn  bernd@berlin.muc.de
  585. Xt/Motif widgets    Thorsten Ohl  ohl@crunch.ikp.physik.th-darmstadt.de
  586.               and Jeroen van der Zijp  jvz@cyberia.cfdrc.com
  587. Fortran bindings    William Mitchell  william.mitchell@nist.gov
  588. Amiga driver        Stefan Zivkovic  d94sz@efd.lth.se
  589. Amiwin driver        Victor Ng-Thow-Hing  victorng@dgp.toronto.edu
  590. Macintosh driver    Miklos Fazekas  boga@augusta.elte.hu
  591. NeXT driver        Pascal Thibaudeau pthibaud@frbdx11.cribx1.u-bordeaux.fr
  592. OS/2 driver        Darren Abbott  abbott@hiwaay.net
  593. VMS support        Jouk Jansen  joukj@crys.chem.uva.nl
  594. Windows 95/NT driver    Theodore A. Jump  tjump@spgs.com
  595. MS-DOS driver        Charlie Wallace  cwallace@dreamworks.com
  596. BeOS driver        Tinic Uro  5uro@informatik.uni-hamburg.de
  597. GLX encoder/decoder    Steven Parker  sparker@taz.cs.utah.edu
  598. 3Dfx driver        David Bucciarelli  tech.hmw@plus.it
  599. SciTech MGL driver    Kendall Bennett  KendallB@scitechsoft.com
  600. Cygnus Win32 support    Stephane Rehel  rehel@kluster.com
  601. S3 Virge driver        rkoduri@s3.com or pcgamedev@s3.com
  602. Multithreading work    John Stone  johns@umr.edu
  603. Mailing list help    Pedro Vazquez  vazquez@iqm.unicamp.br
  604.  
  605. EVERYTHING ELSE-->    Brian Paul  brianp@elastic.avid.com
  606.  
  607. Feel free to cc Brian on messages sent to anyone listed above.  None of
  608. the people on this list are under any obligation to respond to bug reports.
  609. However, they have been pretty helpful so far.
  610.  
  611. When you report a bug please give as much information as possible including
  612. your hardware/software environment, which version of Mesa you're using, how
  613. to reproduce the problem, and if possible, a test program.
  614.  
  615.  
  616.  
  617. Known Bugs
  618. ==========
  619.  
  620. 1. Evaluator automatic normal vectors are miscalculated under certain
  621.    conditions.
  622.  
  623. 2. glCopyPixels gives undefined results when source and destination regions
  624.    overlap and pixel zoom!=1.0.
  625.  
  626. 3. Mesa doesn't work too well on Crays.  The problem is that Crays do not
  627.    have the exact C data type sizes which Mesa's X driver relies on.  Better
  628.    Cray support may or may not be seen in the future.
  629.  
  630. 4. gluCylinder, and probably other GLU quadrics, don't generate texture
  631.    coordinates when drawing in point or line mode.
  632.  
  633. 5. NURBS code does not copy user supplied data as it should; it just
  634.    stores pointers to that data. For the moment all data must be valid and
  635.    available utill the gluEndSurface() or the gluEndCurve() call.
  636.  
  637.  
  638.  
  639. Future Plans
  640. ============
  641.  
  642. 1. Integrate Mesa into the XFree86 X server and support more 3D hardware
  643.  
  644. 2. Further optimizations for AMD 3Dnow!, MMX, etc.
  645.  
  646. 3. Establish a new Mesa WWW site, ftp site and archive maintainer
  647.  
  648.  
  649.  
  650. Why is it the library called Mesa?
  651. ==================================
  652.  
  653. Why not?  More obvious names were considered but had to be rejected:
  654. FreeGL (too similar to the trademarked name OpenGL), Free3D (too similar
  655. to DEC's Open3D).  Also, I'm tired of acronyms.
  656.  
  657.  
  658.  
  659. Contributors
  660. ============
  661.  
  662. Many people have contributed to Mesa.  I really appreciate the help!
  663. Among the contributors are:
  664.  
  665. Erich Stefan Boleyn - for the glRotate code and testing early Mesa
  666. Joe Kiniry, Kendall Bennett - for opinions and discussion
  667. Marc Buffat - for the gluProject and gluUnproject functions
  668. Bernd Barsuhn, Volker Weiss - for the new implementation of evaluators
  669. Philip Brown - for the initial GLX, GLUT implementation
  670. Thorsten Ohl - for glXUseXFont() and glBitmap bug fixes
  671. Thomas Malik - for new invert_matrix and other xform.c code
  672. Michael Pichler - for X colormap code and numerous bug reports/fixes
  673. Thorsten Ohl, Jeroen van der Zijp - for the Xt/Motif widgets
  674. Bob Mercier - for the new 8-bit RGB dithering code
  675. Pedro Vazquez - for establishing the Mesa mailing list
  676. Bogdan Sikorski - for the GLU polygon tessellation code and NURBS
  677. Linas Vepstas - for his extrusion and swept surface library
  678. Frederic Devernay - for improved X shared memory support
  679. Asif Khan - for bringing _many_ subtle bugs to my attention
  680. Mark Peterson - for the MS Windows driver for Mesa
  681. Gene Lett and Kerris Renkin - for diagnosing several rasterization problems
  682. Alex De Bruyn - for HP Color Recovery display support
  683. Miklos Fazekas - for the Macintosh driver
  684. Frederic Devernay - for many Sun configs and lots of useful feedback
  685. Victor Ng-Thow-Hing - for the Amiga AmiWin port
  686. Bill Triggs - improved texture mapping features
  687. Martin Bernhard - added texture coordinate generation to GLU quadric functions
  688. Pascal Thibaudeau - NeXT support
  689. Jean-Luc Daems, Jacques Leroy - numerous optimization in Mesa 1.2.7
  690. Joerg Hessdoerfer - 16-bit TrueColor optimizations in Mesa 1.2.7
  691. Stefan Zivkovic - for the Amiga driver
  692. Peter McDermott - for the Cirrus Logic Mondello driver
  693. Constantin Filin - for mipmapping/texture mapping code
  694. Darren Abbott - for the OS/2 XFree86 port
  695. Hal Brand - for X line and polygon stippling code
  696. Eric Berdahl - for doing much of the internal overhaul work of Mesa for 2.0
  697. Frank Ortega - for bug fixes and many helpful comments
  698. Mats Lofkvist - for finding a number of bugs in Mesa 2.0
  699. Charlie Wallace - for the MS-DOS driver
  700. Li Wei - for updated Windows 95/NT driver
  701. Pete French - for the OpenStep driver
  702. Tinic Uro - for the BeOS driver
  703. Daniel Barrero - for the 3-D texture mapping extension
  704. Randy Frank - for many bug reports/fixes and code contributions
  705. David Bucciarelli - for the 3Dfx driver
  706. Paul Metzger - for Linux version of 3Dfx driver
  707. Daryll Strauss - for the Linux Glide library
  708. Kendall Bennet - for the SciTech MGL driver
  709. Matthew Stewart-Smith - for updating the Linux SVGA driver
  710. Magnus Lundin - for fixing a mipmap bug
  711. Daniel Barrero - for the GL_EXT_point_parameters extension
  712. Josh Vanderhoof - for Intel X86 assembly language optimizations
  713. S3 - for the S3/Virge Windows 95 driver
  714. Ted Jump - for Windows compilation support
  715.  
  716.  
  717. --------------------------------------------------------------------------
  718. $Id: README,v 3.10 1998/09/18 03:10:03 brianp Exp $
  719.