From 8667d4d97a3e958a7f63c18c34a62469ba5d2079 Mon Sep 17 00:00:00 2001
From: ftrapero
+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 October 2004
+
+
+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. +
+ ++There may be other open OpenGL implementations, but Mesa is the most +popular and feature-complete. +
+ + + +configure; make
doesn't Work+Mesa no longer supports GNU autoconf/automake. Why? +
+Now Mesa again uses a conventional Makefile system (as it did originally). +Basically, each Makefile in the tree includes one of the configuration +files from the config/ directory. +The config files specify all the variables for a variety of popular systems. +
+ + ++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. +
+ ++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). +
++Until we can get official permission to do so, this extension will not +be implemented in Mesa. +
+ + + +