diff options
Diffstat (limited to 'docs')
-rw-r--r-- | docs/contents.html | 7 | ||||
-rw-r--r-- | docs/egl.html | 276 | ||||
-rw-r--r-- | docs/envvars.html | 19 | ||||
-rw-r--r-- | docs/lists.html | 31 | ||||
-rw-r--r-- | docs/opengles.html | 79 | ||||
-rw-r--r-- | docs/openvg.html | 19 | ||||
-rw-r--r-- | docs/pbuffers.html | 54 | ||||
-rw-r--r-- | docs/relnotes-7.7.1.html | 1 | ||||
-rw-r--r-- | docs/relnotes-7.8.html | 8 | ||||
-rw-r--r-- | docs/sourcetree.html | 165 |
10 files changed, 575 insertions, 84 deletions
diff --git a/docs/contents.html b/docs/contents.html index d15e6c1e336..f0646ffb402 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 00000000000..57b1d1488a8 --- /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_<dpy>_i915</code></li> +<li><code>egl_<dpy>_i965</code></li> +<li><code>egl_<dpy>_radeon</code></li> +<li><code>egl_<dpy>_nouveau</code></li> +<li><code>egl_<dpy>_swrast</code></li> +<li><code>egl_<dpy>_vmwgfx</code></li> +</ul> + +<p><code><dpy></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<Resource>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<Resource>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 b2c0e01ee32..bb1c914cc73 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 5227fbd055b..9c17a9f3540 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 new file mode 100644 index 00000000000..fc41e6771c1 --- /dev/null +++ b/docs/opengles.html @@ -0,0 +1,79 @@ +<html> + +<title>OpenGL ES State Trackers</title> + +<head><link rel="stylesheet" type="text/css" href="mesa.css"></head> + +<body> + +<h1>OpenGL ES State Trackers</h1> + +<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/" 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. 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,es</code> and enable the Gallium driver for your hardware.</li> +<li>Build and install Mesa as usual.</li> +</ol> + +<p>It will install libGLESv1_CM, libGLESv2, libEGL, and one or more EGL drivers for your hardware.</p> +<h2>Run the Demos</h2> + +<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> + $ cd progs/es1/xegl + $ make + $ ./torus +</pre> + +<h2>Developers</h2> + +<p>The core of OpenGL ES state trackers is the ES overlay. It is located in +<code>src/mesa/es/</code>.</p> + +<h3>Structure</h3> + +<p>The ES overlay uses as much code as possible from Mesa. It has its own glapi XMLs to describe the APIs of OpenGL ES. The ES overlay can be built parallelly with Mesa, and they will give</p> + +<table border="1"> + <tr><td>Library Name</td><td>Usage</td><td>Source</td></tr> + <tr><td>libmesagallium.a</td><td>OpenGL state tracker</td><td>Mesa</td></tr> + <tr><td>libes1gallium.a</td><td>OpenGL ES 1.x state tracker</td><td>ES overlay</td></tr> + <tr><td>libes2gallium.a</td><td>OpenGL ES 2.x state tracker</td><td>ES overlay</td></tr> + <tr><td>libglapi.a</td><td>OpenGL API</td><td>Mesa</td></tr> + <tr><td>libes1api.a</td><td>OpenGL ES 1.x API</td><td>ES overlay</td></tr> + <tr><td>libes2api.a</td><td>OpenGL ES 2.x API</td><td>ES overlay</td></tr> +</table> + +<p>The OpenGL ES state trackers and APIs are then used by <code>src/gallium/state_trackers/es/</code> to create the final libraries.</p> + +<h3>Dispatch Table</h3> + +<p>The ES overlay uses an additional indirection when dispatching fucntions</p> + +<pre> + Mesa: glFoo() --> _mesa_Foo() + ES overlay: glFoo() --> _es_Foo() --> _mesa_Foo() +</pre> + +<p>The indirection serves several purposes</p> + +<ul> +<li>When a function is in Mesa and the type matches, it checks the arguments and calls the Mesa function.</li> +<li>When a function is in Mesa but the type mismatches, it checks and converts the arguments before calling the Mesa function.</li> +<li>When a function is not available in Mesa, or accepts arguments that are not available in OpenGL, it provides its own implementation.</li> +</ul> + +<p>Other than the last case, the ES overlay uses <code>APIspec.xml</code> to generate functions to check and/or converts the arguments.</p> + +</body> +</html> diff --git a/docs/openvg.html b/docs/openvg.html index 442ee522f18..cdf6b57e0f4 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 25991015558..00000000000 --- 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.7.1.html b/docs/relnotes-7.7.1.html index b20c8a7724f..959efd9e57c 100644 --- a/docs/relnotes-7.7.1.html +++ b/docs/relnotes-7.7.1.html @@ -43,6 +43,7 @@ tbd <li>Allocate constants more tightly in GL_ARB_vertex/fragment parser. <li>Fixed mipmap generation bug caused by invalid viewport state. <li>Gallium SSE codegen for XPD didn't always work. +<li>Fixed Windows build. </ul> diff --git a/docs/relnotes-7.8.html b/docs/relnotes-7.8.html index 717b96282c4..7510139ccdb 100644 --- a/docs/relnotes-7.8.html +++ b/docs/relnotes-7.8.html @@ -35,13 +35,17 @@ 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> +<li>Dedicated documentation for Gallium </ul> <h2>Bug fixes</h2> <ul> -<li>TBD +<li>Massive improvements to the Gallium driver for R300-R500 Radeons; this + driver is now moderately stable but not terribly performant. </ul> diff --git a/docs/sourcetree.html b/docs/sourcetree.html new file mode 100644 index 00000000000..00dc4e7c9f4 --- /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> |