summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/contents.html7
-rw-r--r--docs/egl.html276
-rw-r--r--docs/envvars.html19
-rw-r--r--docs/lists.html31
-rw-r--r--docs/opengles.html9
-rw-r--r--docs/openvg.html19
-rw-r--r--docs/pbuffers.html54
-rw-r--r--docs/relnotes-7.8.html4
-rw-r--r--docs/sourcetree.html165
9 files changed, 497 insertions, 87 deletions
diff --git a/docs/contents.html b/docs/contents.html
index d15e6c1e33..f0646ffb40 100644
--- a/docs/contents.html
+++ b/docs/contents.html
@@ -52,9 +52,12 @@ a:visited {
<b>User Topics</b>
<ul>
+<li><a href="shading.html" target="MainFrame">Shading Language</a>
+<li><a href="egl.html" target="MainFrame">EGL</a>
+<li><a href="opengles.html" target="MainFrame">OpenGL ES</a>
+<li><a href="openvg.html" target="MainFrame">OpenVG / Vega</a>
<LI><A HREF="envvars.html" target="MainFrame">Environment Variables</A>
<LI><A HREF="osmesa.html" target="MainFrame">Off-Screen Rendering</A>
-<LI><A HREF="pbuffers.html" target="MainFrame">Pbuffer Rendering</A>
<LI><A HREF="debugging.html" target="MainFrame">Debugging Tips</A>
<LI><A HREF="perf.html" target="MainFrame">Performance Tips</A>
<LI><A HREF="extensions.html" target="MainFrame">Mesa Extensions</A>
@@ -65,8 +68,8 @@ a:visited {
<ul>
<li><a href="http://sourceforge.net/projects/mesa3d" target="_parent">SourceForge homepage</a>
<li><a href="repository.html" target="MainFrame">Source Code Repository</a>
+<li><a href="sourcetree.html" target="MainFrame">Source Code Tree</a>
<li><a href="memory.html" target="MainFrame">DRI Memory Management</a>
-<li><a href="shading.html" target="MainFrame">Shading Language</a>
<li><a href="glu.html" target="MainFrame">SGI's GLU</a>
<li><a href="utilities.html" target="MainFrame">Utilities</a>
<li><a href="helpwanted.html" target="MainFrame">Help Wanted</a>
diff --git a/docs/egl.html b/docs/egl.html
new file mode 100644
index 0000000000..57b1d1488a
--- /dev/null
+++ b/docs/egl.html
@@ -0,0 +1,276 @@
+<html>
+
+<title>Mesa EGL</title>
+
+<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<body>
+
+<h1>Mesa EGL</h1>
+
+<p>The current version of EGL in Mesa implements EGL 1.4. More information
+about EGL can be found at
+<a href="http://www.khronos.org/egl/" target="_parent">
+http://www.khronos.org/egl/</a>.</p>
+
+<p>The Mesa's implementation of EGL uses a driver architecture. The main
+library (<code>libEGL</code>) is window system neutral. It provides the EGL
+API entry points and helper functions for use by the drivers. Drivers are
+dynamically loaded by the main library and most of the EGL API calls are
+directly dispatched to the drivers.</p>
+
+<p>The driver in use decides the window system to support. For drivers that
+support hardware rendering, there are usually multiple drivers supporting the
+same window system. Each one of of them supports a certain range of graphics
+cards.</p>
+
+<h2>Build EGL</h2>
+
+<ol>
+<li>
+<p>Run <code>configure</code> with the desired state trackers and and enable
+the Gallium driver for your hardware. For example</p>
+
+<pre>
+ $ ./configure --with-state-trackers=egl,es,vega --enable-gallium-{swrast,intel}
+</pre>
+
+<p>The main library will be enabled by default. The <code>egl</code> state
+tracker is needed by a number of EGL drivers. EGL drivers will be covered
+later. The <a href="opengles.html">es state tracker</a> provides OpenGL ES 1.x
+and 2.x and the <a href="openvg.html">vega state tracker</a> provides OpenVG
+1.x.</p>
+</li>
+
+<li>Build and install Mesa as usual.</li>
+</ol>
+
+<p>In the given example, it will build and install <code>libEGL</code>,
+<code>libGLESv1_CM</code>, <code>libGLESv2</code>, <code>libOpenVG</code>, and
+one or more EGL drivers.</p>
+
+<h3>Configure Options</h3>
+
+<p>There are several options that control the build of EGL at configuration
+time</p>
+
+<ul>
+<li><code>--enable-egl</code>
+
+<p>By default, EGL is enabled. When disabled, the main library and the drivers
+will not be built.</p>
+
+</li>
+
+<li><code>--with-egl-driver-dir</code>
+
+<p>The directory EGL drivers should be installed to. If not specified, EGL
+drivers will be installed to <code>${libdir}/egl</code>.</p>
+
+</li>
+
+<li><code>--with-egl-displays</code>
+
+<p>List the window system(s) to support. It is by default <code>x11</code>,
+which supports the X Window System. Its argument is a comma separated string
+like, for example, <code>--with-egl-displays=x11,kms</code>. Because an EGL
+driver decides which window system to support, this example will enable two
+(sets of) EGL drivers. One supports the X window system and the other supports
+bare KMS (kernel modesetting).</p>
+
+</li>
+
+<li><code>--with-state-trackers</code>
+
+<p>The argument is a comma separated string. It is usually used to specify the
+rendering APIs, like OpenGL ES or OpenVG, to build. But it should be noted
+that a number of EGL drivers depend on the <code>egl</code> state tracker.
+They will <em>not</em> be built without the <code>egl</code> state tracker.</p>
+
+</li>
+
+<li><code>--enable-gallium-swrast</code>
+
+<p>This option is not specific to EGL. But if there is no driver for your
+hardware, or you are experiencing problems with the hardware driver, you can
+enable the swrast DRM driver. It is a dummy driver and EGL will fallback to
+software rendering automatically.</p>
+
+</li>
+</ul>
+
+<h3>OpenGL</h3>
+
+<p>The OpenGL state tracker is not built in the above example. It should be
+noted that the classic <code>libGL</code> is not a state tracker and cannot be
+used with EGL (unless the EGL driver in use is <code>egl_glx</code>). To build
+the OpenGL state tracker, one may append <code>glx</code> to
+<code>--with-state-trackers</code> and manually build
+<code>src/gallium/winsys/xlib/</code>.</p>
+
+<h2>Use EGL</h2>
+
+<p> The demos for OpenGL ES and OpenVG can be found in <code>progs/es1/</code>,
+<code>progs/es2/</code> and <code>progs/openvg/</code>. You can use them to
+test your build. For example,</p>
+
+<pre>
+ $ cd progs/es1/xegl
+ $ make
+ $ ./torus
+</pre>
+
+<h3>Environment Variables</h3>
+
+<p>There are several environment variables that control the behavior of EGL at
+runtime</p>
+
+<ul>
+<li><code>EGL_DRIVER</code>
+
+<p>This variable forces the specified EGL driver to be loaded. It comes in
+handy when one wants to test a specific driver.</p>
+
+</li>
+
+<li><code>EGL_DISPLAY</code>
+
+<p>When <code>EGL_DRIVER</code> is not set, the main library loads <em>all</em>
+EGL drivers that support a certain window system. <code>EGL_DISPLAY</code> can
+be used to specify the window system and the valid values are, for example,
+<code>x11</code> or <code>kms</code>. When the variable is not set, the main
+library defaults the value to the first window system listed in
+<code>--with-egl-displays</code> at configuration time.
+
+</li>
+
+<li><code>EGL_LOG_LEVEL</code>
+
+<p>This changes the log level of the main library and the drivers. The valid
+values are: <code>debug</code>, <code>info</code>, <code>warning</code>, and
+<code>fatal</code>.</p>
+
+</li>
+
+<li><code>EGL_SOFTWARE</code>
+
+<p>For drivers that support both hardware and software rendering, setting this
+variable to true forces the use of software rendering.</p>
+
+</li>
+</ul>
+
+<h2>EGL Drivers</h2>
+
+<p>There are two categories of EGL drivers: Gallium and classic.</p>
+
+<p>Gallium EGL drivers supports all rendering APIs specified in EGL 1.4. The
+support for optional EGL functions and EGL extensions is usually more complete
+than the classic ones. These drivers depend on the <code>egl</code> state
+tracker to build. The available drivers are</p>
+
+<ul>
+<li><code>egl_&lt;dpy&gt;_i915</code></li>
+<li><code>egl_&lt;dpy&gt;_i965</code></li>
+<li><code>egl_&lt;dpy&gt;_radeon</code></li>
+<li><code>egl_&lt;dpy&gt;_nouveau</code></li>
+<li><code>egl_&lt;dpy&gt;_swrast</code></li>
+<li><code>egl_&lt;dpy&gt;_vmwgfx</code></li>
+</ul>
+
+<p><code>&lt;dpy&gt;</code> is given by <code>--with-egl-displays</code> at
+configuration time. There will be one EGL driver for each combination of the
+displays listed and the hardware drivers enabled.</p>
+
+<p>Classic EGL drivers, on the other hand, supports only OpenGL as its
+rendering API. They can be found under <code>src/egl/drivers/</code>. There
+are 3 of them</p>
+
+<ul>
+<li><code>egl_glx</code>
+
+<p>This driver provides a wrapper to GLX. It uses exclusively GLX to implement
+the EGL API. It supports both direct and indirect rendering when the GLX does.
+It is accelerated when the GLX is. As such, it cannot provide functions that
+is not available in GLX or GLX extensions.</p>
+</li>
+
+<li><code>egl_xdri</code>
+
+<p>This driver supports the X Window System as its window system. It functions
+as a DRI driver loader and can load DRI/DRI2/DRISW drivers. Unlike
+<code>egl_glx</code>, it has no dependency on <code>libGL</code>. It talks to
+the X server directly using DRI or DRI2 protocols. It also talks minimal GLX
+protocol for things like available visuals or fbconfigs. With direct access to
+the DRI drivers, it has the potential to support more EGL functions that are
+not possible with <code>egl_glx</code>.</p>
+
+</li>
+<li><code>egl_dri</code>
+
+<p>This driver lacks maintenance and does <em>not</em> build. It is similiar
+to <code>egl_xdri</code> in that it functions as a DRI driver loader. But
+unlike <code>egl_xdri</code>, it supports Linux framebuffer devices as its
+window system and supports EGL_MESA_screen_surface extension. It loads only
+DRI1 drivers. As DRI1 drivers is phasing out, it might be better to rewrite
+the driver to support KMS and DRI2.</p>
+
+</li>
+</ul>
+
+<p>To use the classic drivers, one must manually set <code>EGL_DRIVER</code> at
+runtime.</p>
+
+<h2>Developers</h2>
+
+<p>The sources of the main library and the classic drivers can be found at
+<code>src/egl/</code>. The sources of the <code>egl</code> state tracker can
+be found at <code>src/gallium/state_trackers/egl/</code>.</p>
+
+<p>The suggested way to learn to write a EGL driver is to see how other drivers
+are written. <code>egl_glx</code> should be a good reference. It works in any
+environment that has GLX support, and it is simpler than most drivers.</p>
+
+<h3>Lifetime of Display Resources</h3>
+
+<p>Contexts and surfaces are examples of display resources. They might live
+longer than the display that creates them.</p>
+
+<p>In EGL, when a display is terminated through <code>eglTerminate</code>, all
+display resources should be destroyed. Similarly, when a thread is released
+throught <code>eglReleaseThread</code>, all current display resources should be
+released. Another way to destory or release resources is through functions
+such as <code>eglDestroySurface</code> or <code>eglMakeCurrent</code>.</p>
+
+<p>When a resource that is current to some thread is destroyed, the resource
+should not be destroyed immediately. EGL requires the resource to live until
+it is no longer current. A driver usually calls
+<code>eglIs&lt;Resource&gt;Bound</code> to check if a resource is bound
+(current) to any thread in the destroy callbacks. If it is still bound, the
+resource is not destroyed.</p>
+
+<p>The main library will mark destroyed current resources as unlinked. In a
+driver's <code>MakeCurrent</code> callback,
+<code>eglIs&lt;Resource&gt;Linked</code> can then be called to check if a newly
+released resource is linked to a display. If it is not, the last reference to
+the resource is removed and the driver should destroy the resource. But it
+should be careful here because <code>MakeCurrent</code> might be called with an
+uninitialized display.</p>
+
+<p>This is the only mechanism provided by the main library to help manage the
+resources. The drivers are responsible to the correct behavior as defined by
+EGL.</p>
+
+<h3>TODOs</h3>
+
+<ul>
+<li>Thread safety</li>
+<li>Pass the conformance tests</li>
+<li>Better automatic driver selection: <code>EGL_DISPLAY</code> loads all
+drivers and might eat too much memory.</li>
+<li>Stop using <code>glxinit.c</code> and sources from <code>src/glx/x11/</code></li>
+
+</ul>
+
+</body>
+</html>
diff --git a/docs/envvars.html b/docs/envvars.html
index b2c0e01ee3..bb1c914cc7 100644
--- a/docs/envvars.html
+++ b/docs/envvars.html
@@ -51,5 +51,24 @@ See the <A HREF="xlibdriver.html">Xlib software driver page</A> for details.
</ul>
+<p>
+These environment variables are for the Intel i945/i965 drivers:
+</p>
+<ul>
+<li>INTEL_STRICT_CONFORMANCE - if set to 1, enable sw fallbacks to improve
+ OpenGL conformance. If set to 2, always use software rendering.
+<li>INTEL_NO_BLIT - if set, disable hardware-accelerated glBitmap,
+ glCopyPixels, glDrawPixels.
+</ul>
+
+
+<p>
+These environment variables are for the Radeon R300 driver:
+</p>
+<ul>
+<li>R300_NO_TCL - if set, disable hardware-accelerated Transform/Clip/Lighting.
+</ul>
+
+
</BODY>
</HTML>
diff --git a/docs/lists.html b/docs/lists.html
index 5227fbd055..9c17a9f354 100644
--- a/docs/lists.html
+++ b/docs/lists.html
@@ -13,36 +13,41 @@
</p>
<ul>
-<li><a href="https://lists.sourceforge.net/lists/listinfo/mesa3d-announce"
-target="_parent">mesa3d-announce</a> - announcements of new Mesa
-versions are sent to this list.
-</li>
-<br>
<li><a href="https://lists.sourceforge.net/lists/listinfo/mesa3d-users"
-target="_parent">mesa3d-users</a> - intended for users of the Mesa and DRI.
-Newbie questions are appropriate, but please try the general OpenGL
+target="_parent">mesa3d-users</a> - intended for end-users of Mesa and DRI
+drivers. Newbie questions are OK, but please try the general OpenGL
resources and Mesa/DRI documentation first.
</li>
<br>
<li><a href="https://lists.sourceforge.net/lists/listinfo/mesa3d-dev"
-target="_parent">mesa3d-dev</a> - for discussion of Mesa and Direct Rendering
-Infrastructure development. Not for beginners.
+target="_parent">mesa3d-dev</a> - for Mesa, Gallium and DRI development
+discussion. Not for beginners.
</li>
<br>
<li><a href="http://lists.freedesktop.org/mailman/listinfo/mesa-commit"
target="_parent">mesa-commit</a> - relays git check-in messages
(for developers).
+In general, people should not post to this list.
+</li>
<br>
-Note: the old mesa3d-cvs list is no longer in use.
+<li><a href="https://lists.sourceforge.net/lists/listinfo/mesa3d-announce"
+target="_parent">mesa3d-announce</a> - announcements of new Mesa
+versions are sent to this list. Very low traffic.
</li>
</ul>
+<p>
+Follow the links above for list archives.
+</p>
+
<p>For mailing lists about Direct Rendering Modules (drm) in Linux/BSD
-kernels, see <a href="http://dri.freedesktop.org/wiki/MailingLists">wiki</a>.
+kernels, see the
+<a href="http://dri.freedesktop.org/wiki/MailingLists" target="_parent">
+DRI wiki</a>.
+</p>
<p>
-<b>Notice</b>: non-member posts to any of these lists will be automatically
-rejected.
+<b>Notice</b>: You must subscribe to these lists in order to post to them.
</p>
diff --git a/docs/opengles.html b/docs/opengles.html
index d460bccf6c..fc41e6771c 100644
--- a/docs/opengles.html
+++ b/docs/opengles.html
@@ -10,15 +10,17 @@
<p>The current version of the OpenGL ES state trackers implement OpenGL ES 1.1 and OpenGL ES 2.0.
More informations about OpenGL ES can be found at
-<a href="http://www.khronos.org/opengles/">http://www.khronos.org/opengles/</a>.</p>
+<a href="http://www.khronos.org/opengles/" target="_parent">
+http://www.khronos.org/opengles/</a>.</p>
<p>The OpenGL ES state trackers depends on the Gallium architecture and a
-working EGL implementation.</p>
+working EGL implementation. Please refer to <a href="egl.html">Mesa EGL</a>
+for more information about EGL.</p>
<h2>Build the Libraries</h2>
<ol>
-<li>Run <code>configure</code> with <code>--with-state-trackers=egl_g3d,es</code> and enable the Gallium driver for your hardware.</li>
+<li>Run <code>configure</code> with <code>--with-state-trackers=egl,es</code> and enable the Gallium driver for your hardware.</li>
<li>Build and install Mesa as usual.</li>
</ol>
@@ -28,7 +30,6 @@ working EGL implementation.</p>
<p>There are some demos in <code>progs/es1/</code> and <code>progs/es2/</code>. You can use them to test your build. For example,</p>
<pre>
- $ export EGL_DRIVER=/usr/local/lib/dri/egl_x11_i915.so # specify the EGL driver
$ cd progs/es1/xegl
$ make
$ ./torus
diff --git a/docs/openvg.html b/docs/openvg.html
index 442ee522f1..cdf6b57e0f 100644
--- a/docs/openvg.html
+++ b/docs/openvg.html
@@ -1,6 +1,6 @@
<HTML>
-<TITLE>Mesa Release Notes</TITLE>
+<TITLE>OpenVG State Tracker</TITLE>
<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
@@ -20,12 +20,13 @@ http://www.khronos.org/openvg/</a> .
</p>
<p>
The OpenVG state tracker depends on the Gallium architecture and a working EGL implementation.
+Please refer to <a href="egl.html">Mesa EGL</a> for more information about EGL.
</p>
<h2>Building the library</h2>
<ol>
-<li>Build Mesa3D with Gallium3D. Any build that builds Gallium3D libraries and EGL will suffice</li>
+<li>Build Mesa3D with Gallium3D. Any build that builds Gallium3D libraries, EGL, and Gallium EGL drivers will suffice</li>
<li>cd src/gallium/state_trackers/vega; make</li>
<li>The last step will build libOpenVG library. You can add the libdir to LD_LIBRARY_PATH or install libOpenVG</li>
</ol>
@@ -33,12 +34,9 @@ The OpenVG state tracker depends on the Gallium architecture and a working EGL i
<h3>Sample build</h3>
A sample build looks as follows:
<pre>
- make linux-x86-64-debug
- cd src/gallium/state_trackers/vega
- make
- cd ../../../..
- export LD_LIBRARY_PATH=$PWD/lib64
- export EGL_DRIVER="egl_softpipe"
+ $ ./configure --with-state-trackers=egl,vega --enable-gallium-intel
+ $ make
+ $ make install
</pre>
<h2>OpenVG Demos</h2>
@@ -59,10 +57,5 @@ To run a demo:
</pre>
-<h2>Notes</h2>
-<ul>
-<li>EGL_DRIVER environmental variable: forces usage of a specific EGL driver. Unless you force egl_softpipe the implementation will look for a DRI hardware accelerate driver and unless you have a Gallium driver that supports it, you'll see crashes</li>
-</ul>
-
</body>
</html>
diff --git a/docs/pbuffers.html b/docs/pbuffers.html
deleted file mode 100644
index 2599101555..0000000000
--- a/docs/pbuffers.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<HTML>
-
-<TITLE>PBuffer Rendering</TITLE>
-
-<link rel="stylesheet" type="text/css" href="mesa.css"></head>
-
-<BODY>
-
-<H1>PBuffer Rendering</H1>
-
-<p>
-Basically, FBconfigs and PBuffers allow you to do off-screen rendering
-with OpenGL. The OSMesa interface does basically the same thing, but
-fbconfigs and pbuffers are supported by more vendors.
-PBuffer rendering may also be hardware accelerated.
-</p>
-
-<p>
-PBuffers are getting more use nowadays, though they've actually been
-around for a long time on IRIX systems and other workstations.
-</p>
-
-<p>
-The
-<a href="http://oss.sgi.com/projects/ogl-sample/registry/SGIX/fbconfig.txt"
-target="_parent">GL_SGIX_fbconfig</a>
-and
-<a href="http://oss.sgi.com/projects/ogl-sample/registry/SGIX/pbuffer.txt"
-target="_parent">
-GL_SGIX_pbuffer</a> extensions describe the functionality.
-More recently, these extensions have been promoted to ARB extensions (on
-Windows at least).
-</p>
-
-<p>
-The Mesa/progs/xdemos/ directory has some useful code for working
-with pbuffers:
-</p>
-
-<ul>
-<li><b>pbinfo.c</b> - like glxinfo, it prints a list of available
- fbconfigs and whether each supports pbuffers.
-<li><b>pbutil.c</b> - a few utility functions for dealing with
- fbconfigs and pbuffers.
-<li><b>pbdemo.c</b> - a demonstration of off-screen rendering with pbuffers.
-</ul>
-
-<p>
-Mesa 4.1 and later support GL_SGIX_fbconfig and GL_SGIX_pbuffer (software
-rendering only).
-</p>
-
-</BODY>
-</HTML>
diff --git a/docs/relnotes-7.8.html b/docs/relnotes-7.8.html
index 717b96282c..6511d613d6 100644
--- a/docs/relnotes-7.8.html
+++ b/docs/relnotes-7.8.html
@@ -35,7 +35,9 @@ tbd
<h2>New features</h2>
<ul>
<li>GL_NV_conditional_render extension (swrast driver only)
-<li>GL_EXT_draw_buffers2 extension (swrast driver only)
+<li>GL_EXT_draw_buffers2 extension (swrast and i965 driver only)
+<li>Much improved support for <a href="egl.html">EGL in Mesa</a>
+<li>New state trackers for <a href="opengles.html">OpenGL ES 1.1 and 2.0</a>
</ul>
diff --git a/docs/sourcetree.html b/docs/sourcetree.html
new file mode 100644
index 0000000000..00dc4e7c9f
--- /dev/null
+++ b/docs/sourcetree.html
@@ -0,0 +1,165 @@
+<HTML>
+
+<TITLE>Mesa Source Tree</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<h1>Mesa source code tree overview</h1>
+
+<p>
+This is a brief summary of Mesa's directory tree and what's contained in
+each directory.
+</p>
+
+
+<ul>
+<li><b>docs</b> - Documentation
+<li><b>include</b> - Public OpenGL header files
+<li><b>src</b>
+ <ul>
+ <li><b>egl</b> - EGL library sources
+ <ul>
+ <li><b>docs</b> - EGL documentation
+ <li><b>drivers</b> - EGL drivers
+ <li><b>main</b> - main EGL library implementation. This is where all
+ the EGL API functions are implemented, like eglCreateContext().
+ </ul>
+ <li><b>mesa</b> - Main Mesa sources
+ <ul>
+ <li><b>glapi</b> - OpenGL API dispatch layer. This is where all the
+ GL entrypoints like glClear, glBegin, etc. are generated, as well as
+ the GL dispatch table. All GL function calls jump through the
+ dispatch table to functions found in main/.
+ <li><b>main</b> - The core Mesa code (mainly state management)
+ <li><b>drivers</b> - Mesa drivers (not used with Gallium)
+ <ul>
+ <li><b>common</b> - code which may be shared by all drivers
+ <li><b>dri</b> - Direct Rendering Infrastructure drivers
+ <ul>
+ <li><b>common</b> - code shared by all DRI drivers
+ <li><b>i915</b> - driver for Intel i915/i945
+ <li><b>i965</b> - driver for Intel i965
+ <li>XXX more
+ </ul>
+ <li><b>x11</b> - Xlib-based software driver
+ <li><b>osmesa</b> - off-screen software driver
+ <li><b>glslcompiler</b> - a stand-alone GLSL compiler driver
+ <li>XXX more
+ </ul>
+ <li><b>es</b> - OpenGL ES overlay, parallelly buildable with the core Mesa
+ <li><b>math</b> - vertex array translation and transformation code
+ (not used with Gallium)
+ <li><b>ppc</b> - Assembly code/optimizations for PPC systems
+ (not used with Gallium)
+ <li><b>shader</b> - Vertex/fragment shader and GLSL compiler code
+ <li><b>sparc</b> - Assembly code/optimizations for SPARC systems
+ (not used with Gallium)
+ <li><b>state_tracker</b> - State tracker / driver for Gallium. This
+ is basically a Mesa device driver that speaks to Gallium. This
+ directory may be moved to src/mesa/drivers/gallium at some point.
+ <li><b>swrast</b> - Software rasterization module. For drawing points,
+ lines, triangles, bitmaps, images, etc. in software.
+ (not used with Gallium)
+ <li><b>swrast_setup</b> - Software primitive setup. Does things like
+ polygon culling, glPolygonMode, polygon offset, etc.
+ (not used with Gallium)
+ <li><b>tnl</b> - Software vertex Transformation 'n Lighting.
+ (not used with Gallium)
+ <li><b>tnl_dd</b> - TNL code for device drivers.
+ (not used with Gallium)
+ <li><b>vbo</b> - Vertex Buffer Object code. All drawing with
+ glBegin/glEnd, glDrawArrays, display lists, etc. goes through this
+ module. The results is a well-defined set of vertex arrays which
+ are passed to the device driver (or tnl module) for rendering.
+ <li><b>vf</b> - vertex format conversion (currently unused)
+ <li><b>x86</b> - Assembly code/optimizations for 32-bit x86 systems
+ (not used with Gallium)
+ <li><b>x86-64</b> - Assembly code/optimizations for 64-bit x86 systems
+ (not used with Gallium)
+ </ul>
+ <li><b>gallium</b> - Gallium3D source code
+ <ul>
+ <li><b>include</b> - Gallium3D header files which define the Gallium3D
+ interfaces
+ <li><b>drivers</b> - Gallium3D device drivers
+ <ul>
+ <li><b>cell</b> - Driver for Cell processor.
+ <li><b>i915</b> - Driver for Intel i915/i945.
+ <li><b>i965</b> - Driver for Intel i965.
+ <li><b>llvmpipe</b> - Software driver using LLVM for runtime code generation.
+ <li><b>nv*</b> - Drivers for NVIDIA GPUs.
+ <li><b>r300</b> - Driver for ATI/AMD R300.
+ <li><b>softpipe</b> - Software reference driver.
+ <li><b>svga</b> - Driver for VMware's SVGA virtual GPU.
+ <li><b>trace</b> - Driver for tracing Gallium calls.
+ <li>XXX more
+ </ul>
+ <li><b>auxiliary</b> - Gallium support code
+ <ul>
+ <li><b>draw</b> - Software vertex processing and primitive assembly
+ module. This includes vertex program execution, clipping, culling
+ and optional stages for drawing wide lines, stippled lines,
+ polygon stippling, two-sided lighting, etc.
+ Intended for use by drivers for hardware that does not have
+ vertex shaders.
+ Geometry shaders will also be implemented in this module.
+ <li><b>cso_cache</b> - Constant State Objects Cache. Used to filter out
+ redundant state changes between state trackers and drivers.
+ <li><b>gallivm</b> - LLVM module for Gallium. For LLVM-based
+ compilation, optimization and code generation for TGSI shaders.
+ Incomplete.
+ <li><b>pipebuffer</b> - utility module for managing buffers
+ <li><b>rbug</b> - Gallium remote debug utility
+ <li><b>rtasm</b> - run-time assembly/machine code generation.
+ Currently there's run-time code generation for x86/SSE, PowerPC
+ and Cell SPU.
+ <li><b>tgsi</b> - TG Shader Infrastructure. Code for encoding,
+ manipulating and interpretting GPU programs.
+ <li><b>translate</b> - module for translating vertex data from one format
+ to another.
+ <li><b>util</b> - assorted utilities for arithmetic, hashing, surface
+ creation, memory management, 2D blitting, simple rendering, etc.
+ </ul>
+ <li><b>state_trackers</b> -
+ <ul>
+ <li><b>dri</b> - Meta state tracker for DRI drivers
+ <li><b>egl</b> - Meta state tracker for EGL drivers
+ <li><b>es</b> - OpenGL ES 1.x and 2.x state trackers
+ <li><b>g3dvl</b> -
+ <li><b>glx</b> - Meta state tracker for GLX
+ <li><b>python</b> -
+ <li><b>vega</b> - OpenVG 1.x state tracker
+ <li><b>wgl</b> -
+ <li><b>xorg</b> - Meta state tracker for Xorg video drivers
+ </ul>
+ <li><b>winsys</b> -
+ <ul>
+ <li><b>drm</b> -
+ <li><b>g3dvl</b> -
+ <li><b>gdi</b> -
+ <li><b>xlib</b> -
+ </ul>
+ </ul>
+ </ul>
+ <ul>
+ <li><b>glu</b> - The OpenGL Utility library
+ <ul>
+ <li><b>sgi</b> - GLU from SGI
+ <li><b>mesa</b> - Mesa version of GLU (deprecated)
+ </ul>
+ <li><b>glut</b> - Mark Kilgard's OpenGL OpenGL Utility Toolkit library
+ <li><b>glx</b> - The GLX library code for building libGL. This is used for
+ direct rendering drivers. It will dynamically load one of the
+ xxx_dri.so drivers.
+ <li><b>glw</b> - Widgets for Xt/Motif.
+ <li><b>glew</b> - OpenGL Extension Wrangler library (used by demo programs)
+ </ul>
+<li><b>progs</b> - OpenGL test and demonstration programs
+<li><b>lib</b> - where the GL libraries are placed
+</ul>
+
+
+</BODY>
+</HTML>