From a0c4815433ccd57322f4f7703ca35e9ccfa59250 Mon Sep 17 00:00:00 2001
From: marha
+Mesa is an open-source implementation of the OpenGL specification.
+OpenGL is a programming library for writing interactive 3D applications.
+See the OpenGL website for more
+information.
+
+Mesa 6.x supports the OpenGL 1.5 specification.
+
+Yes. Specifically, Mesa serves as the OpenGL core for the open-source DRI
+drivers for XFree86/X.org. See the DRI
+website for more information.
+
+There have been other hardware drivers for Mesa over the years (such as
+the 3Dfx Glide/Voodoo driver, an old S3 driver, etc) but the DRI drivers
+are the modern ones.
+
+Hardware-accelerated OpenGL implementations are available for most popular
+operating systems today.
+Still, Mesa serves at least these purposes:
+
+Stand-alone Mesa is the original incarnation of Mesa.
+On systems running the X Window System it does all its rendering through
+the Xlib API:
+Mesa Frequently Asked Questions
+Last updated: 21 August 2006
+
+
+Index
+1. High-level Questions and Answers
+
+2. Compilation and Installation Problems
+
+3. Runtime / Rendering Problems
+
+4. Developer Questions
+
+
+
+
+
+
+
+1. High-level Questions and Answers
+
+1.1 What is Mesa?
+1.2 Does Mesa support/use graphics hardware?
+1.3 What purpose does Mesa serve today?
+
+
+
+
+1.4 What's the difference between"Stand-Alone" Mesa and the DRI drivers?
+
+
+
+Alternately, Mesa acts as the core for a number of OpenGL hardware drivers +within the DRI (Direct Rendering Infrastructure): +
+This wasn't easy in the past. +Now, the DRI drivers are included in the Mesa tree and can be compiled +separately from the X server. +Just follow the Mesa compilation instructions. +
+ + ++Yes, SGI's +OpenGL Sample Implemenation (SI) is available. +The SI was written during the time that OpenGL was originally designed. +Unfortunately, development of the SI has stagnated. +Mesa is much more up to date with modern features and extensions. +
+ ++Vincent is +an open-source implementation of OpenGL ES for mobile devices. + +
+miniGL +is a subset of OpenGL for PalmOS devices. + +
+TinyGL is a subset of OpenGL. +
+ ++SoftGL +is an OpenGL subset for mobile devices. +
+ ++Chromium +isn't a conventional OpenGL implementation (it's layered upon OpenGL), +but it does export the OpenGL API. It allows tiled rendering, sort-last +rendering, etc. +
+ ++ClosedGL is an OpenGL subset library for TI +graphing calculators. +
+ ++There may be other open OpenGL implementations, but Mesa is the most +popular and feature-complete. +
+ + + ++On Linux-based systems you'll want to follow the +Linux ABI standard. +Basically you'll want the following: +
++After installing XFree86/X.org and the DRI drivers, some of these files +may be symlinks into the /usr/X11R6/ tree. +
++The old-style Makefile system doesn't install the Mesa libraries; it's +up to you to copy them (and the headers) to the right place. +
++The GLUT header and library should go in the same directories. +
++If your DRI-based driver isn't working, go to the +DRI website for trouble-shooting information. +
+ + ++Make sure the ratio of the far to near clipping planes isn't too great. +Look + here for details. +
+
+Mesa uses a 16-bit depth buffer by default which is smaller and faster
+to clear than a 32-bit buffer but not as accurate.
+If you need a deeper you can modify the parameters to
+ glXChooseVisual
in your code.
+
+Be sure you're requesting a depth buffered-visual. If you set the MESA_DEBUG +environment variable it will warn you about trying to enable depth testing +when you don't have a depth buffer. +
+Specifically, make sure glutInitDisplayMode
is being called
+with GLUT_DEPTH
or glXChooseVisual
is being
+called with a non-zero value for GLX_DEPTH_SIZE.
+
This discussion applies to stencil buffers, accumulation buffers and +alpha channels too. +
+ + ++Be sure you have an active/current OpenGL rendering context before +calling glGetString. +
+ + ++If you're trying to draw a filled region by using GL_POINTS or GL_LINES +and seeing holes or gaps it's because of a float-to-int rounding problem. +But this is not a bug. +See Appendix H of the OpenGL Programming Guide - "OpenGL Correctness Tips". +Basically, applying a translation of (0.375, 0.375, 0.0) to your coordinates +will fix the problem. +
+ ++These can be overridden by using the --with-max-width and +--with-max-height options. The two need not be equal. +
+Do note that Mesa uses these values to size some internal buffers, +so increasing these sizes will cause Mesa to require additional +memory. Furthermore, increasing these limits beyond 4096 +may introduce rasterization artifacts; see the leading comments in +src/mesa/swrast/s_tritemp.h. +
+ ++First, join the Mesa3d-dev +mailing list. +That's where Mesa development is discussed. +
++The +OpenGL Specification is the bible for OpenGL implemention work. +You should read it. +
+Most of the Mesa development work involves implementing new OpenGL +extensions, writing hardware drivers (for the DRI), and code optimization. +
+ ++Unfortunately, writing a device driver isn't easy. +It requires detailed understanding of OpenGL, the Mesa code, and your +target hardware/operating system. +3D graphics are not simple. +
++The best way to get started is to use an existing driver as your starting +point. +For a software driver, the X11 and OSMesa drivers are good examples. +For a hardware driver, the Radeon and R200 DRI drivers are good examples. +
+The DRI website has more information about writing hardware drivers. +The process isn't well document because the Mesa driver interface changes +over time, and we seldome have spare time for writing documentation. +That being said, many people have managed to figure out the process. +
++Joining the appropriate mailing lists and asking questions (and searching +the archives) is a good way to get information. +
+ + ++The specification for the extension +indicates that there are intellectual property (IP) and/or patent issues +to be dealt with. +
+We've been unsucessful in getting a response from S3 (or whoever owns +the IP nowadays) to indicate whether or not an open source project can +implement the extension (specifically the compression/decompression +algorithms). +
++In the mean time, a 3rd party plug-in library is available. +
+ + + +