glsl link_varyings: link interface blocks using the block name
[mesa.git] / docs / faq.html
index 65e279aac57422da641ab61017df95c63126a1b5..97c59d381e16244e39fe6068c15b0e79d8842edb 100644 (file)
@@ -1,15 +1,22 @@
-<html>
-
-<head><title>Mesa FAQ</title></head>
-
-<link rel="stylesheet" type="text/css" href="mesa.css"></head>
-
-<BODY>
-
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=utf-8">
+  <title>Mesa FAQ</title>
+  <link rel="stylesheet" type="text/css" href="mesa.css">
+</head>
+<body>
+
+<div class="header">
+  <h1>The Mesa 3D Graphics Library</h1>
+</div>
+
+<iframe src="contents.html"></iframe>
+<div class="content">
 
 <center>
 <h1>Mesa Frequently Asked Questions</h1>
-Last updated: 21 August 2006
+Last updated: 9 October 2012
 </center>
 
 <br>
@@ -28,32 +35,35 @@ Last updated: 21 August 2006
 
 
 
-<a name="part1">
-</a><h1><a name="part1">1. High-level Questions and Answers</a></h1>
+<h1 id="part1">1. High-level Questions and Answers</h1>
 
-<h2><a name="part1">1.1 What is Mesa?</a></h2>
+<h2>1.1 What is Mesa?</h2>
 <p>
-<a name="part1">Mesa is an open-source implementation of the OpenGL specification.
+Mesa is an open-source implementation of the OpenGL specification.
 OpenGL is a programming library for writing interactive 3D applications.
-See the </a><a href="http://www.opengl.org/">OpenGL website</a> for more
+See the <a href="http://www.opengl.org/">OpenGL website</a> for more
 information.
 </p>
 <p>
-Mesa 6.x supports the OpenGL 1.5 specification.
+Mesa 9.x supports the OpenGL 3.1 specification.
 </p>
 
 
 <h2>1.2 Does Mesa support/use graphics hardware?</h2>
 <p>
 Yes.  Specifically, Mesa serves as the OpenGL core for the open-source DRI
-drivers for XFree86/X.org.  See the <a href="http://dri.freedesktop.org/">DRI
-website</a> for more information.
-</p>
-<p>
-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.
+drivers for X.org.
 </p>
+<ul>
+  <li>See the <a href="http://dri.freedesktop.org/">DRI website</a>
+  for more information.</li>
+  <li>See <a href="http://intellinuxgraphics.org">intellinuxgraphics.org</a>
+  for more information about Intel drivers.</li>
+  <li>See <a href="http://nouveau.freedesktop.org">nouveau.freedesktop.org</a>
+  for more information about Nouveau drivers.</li>
+  <li>See <a href="http://www.x.org/wiki/RadeonFeature">www.x.org/wiki/RadeonFeature</a>
+  for more information about Radeon drivers.</li>
+</ul>
 
 <h2>1.3 What purpose does Mesa serve today?</h2>
 <p>
@@ -62,7 +72,7 @@ operating systems today.
 Still, Mesa serves at least these purposes:
 </p>
 <ul>
-<li>Mesa is used as the core of the open-source XFree86/X.org DRI
+<li>Mesa is used as the core of the open-source X.org DRI
     hardware drivers.
 </li>
 <li>Mesa is quite portable and allows OpenGL to be used on systems
@@ -84,11 +94,12 @@ Still, Mesa serves at least these purposes:
 </ul>
 
 
-<h2>1.4 What's the difference between"Stand-Alone" Mesa and the DRI drivers?</h2>
+<h2>1.4 What's the difference between "Stand-Alone" Mesa and the DRI drivers?</h2>
 <p>
 <em>Stand-alone Mesa</em> is the original incarnation of Mesa.
 On systems running the X Window System it does all its rendering through
 the Xlib API:
+</p>
 <ul>
 <li>The GLX API is supported, but it's really just an emulation of the
      real thing.
@@ -98,7 +109,6 @@ the Xlib API:
 <li>The OpenGL library, libGL.so, contains everything (the programming API,
     the GLX functions and all the rendering code).
 </ul>
-</p>
 <p>
 Alternately, Mesa acts as the core for a number of OpenGL hardware drivers
 within the DRI (Direct Rendering Infrastructure):
@@ -126,8 +136,7 @@ Just follow the Mesa <a href="install.html">compilation instructions</a>.
 
 <h2>1.6 Are there other open-source implementations of OpenGL?</h2>
 <p>
-Yes, SGI's <a href="http://oss.sgi.com/projects/ogl-sample/index.html"
-target="_parent">
+Yes, SGI's <a href="http://oss.sgi.com/projects/ogl-sample/index.html">
 OpenGL Sample Implemenation (SI)</a> is available.
 The SI was written during the time that OpenGL was originally designed.
 Unfortunately, development of the SI has stagnated.
@@ -135,34 +144,33 @@ Mesa is much more up to date with modern features and extensions.
 </p>
 
 <p>
-<a href="http://ogl-es.sourceforge.net" target="_parent">Vincent</a> is
+<a href="http://sourceforge.net/projects/ogl-es/">Vincent</a> is
 an open-source implementation of OpenGL ES for mobile devices.
 
 <p>
-<a href="http://www.dsbox.com/minigl.html" target="_parent">miniGL</a>
+<a href="http://www.dsbox.com/minigl.html">miniGL</a>
 is a subset of OpenGL for PalmOS devices.
 
 <p>
-<a href="http://fabrice.bellard.free.fr/TinyGL/"
-target="_parent">TinyGL</a> is a subset of OpenGL.
+<a href="http://bellard.org/TinyGL/">TinyGL</a>
+is a subset of OpenGL.
 </p>
 
 <p>
-<a href="http://softgl.studierstube.org/" target="_parent">SoftGL</a>
+<a href="http://sourceforge.net/projects/softgl/">SoftGL</a>
 is an OpenGL subset for mobile devices.
 </p>
 
 <p>
-<a href="http://chromium.sourceforge.net/" target="_parent">Chromium</a>
+<a href="http://chromium.sourceforge.net/">Chromium</a>
 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.
 </p>
 
 <p>
-<a href="http://www.ticalc.org/archives/files/fileinfo/361/36173.html"
-target="_parent">ClosedGL</a> is an OpenGL subset library for TI
-graphing calculators.
+<a href="http://www.ticalc.org/archives/files/fileinfo/361/36173.html">ClosedGL</a>
+is an OpenGL subset library for TI graphing calculators.
 </p>
 
 <p>
@@ -176,40 +184,43 @@ popular and feature-complete.
 <br>
 
 
-<a name="part2">
-</a><h1><a name="part2">2. Compilation and Installation Problems</a></h1>
+<h1 id="part2">2. Compilation and Installation Problems</h1>
 
 
-<h2><a name="part2">2.1 What's the easiest way to install Mesa?</a></h2>
+<h2>2.1 What's the easiest way to install Mesa?</h2>
 <p>
-<a name="part2">If you're using a Linux-based system, your distro CD most likely already
+If you're using a Linux-based system, your distro CD most likely already
 has Mesa packages (like RPM or DEB) which you can easily install.
-</a></p>
+</p>
 
 
-<h2><a name="part2">2.2 I get undefined symbols such as bgnpolygon, v3f, etc...</a></h2>
+<h2>2.2 I get undefined symbols such as bgnpolygon, v3f, etc...</h2>
 <p>
-<a name="part2">You're application is written in IRIS GL, not OpenGL.
+You're application is written in IRIS GL, not OpenGL.
 IRIS GL was the predecessor to OpenGL and is a different thing (almost)
 entirely.
 Mesa's not the solution.
-</a></p>
+</p>
 
 
-<h2><a name="part2">2.3 Where is the GLUT library?</a></h2>
+<h2>2.3 Where is the GLUT library?</h2>
 <p>
-<a name="part2">GLUT (OpenGL Utility Toolkit) is in the separate MesaGLUT-x.y.z.tar.gz file.
-If you don't already have GLUT installed, you should grab the MesaGLUT
-package and compile it with the rest of Mesa.
-</a></p>
+GLUT (OpenGL Utility Toolkit) is no longer in the separate MesaGLUT-x.y.z.tar.gz file.
+If you don't already have GLUT installed, you should grab 
+<a href="http://freeglut.sourceforge.net/">freeglut</a>.
+</p>
+
 
+<h2>2.4 Where is the GLw library?</h2>
+<p>
+GLw (OpenGL widget library) is now available from a separate <a href="http://cgit.freedesktop.org/mesa/glw/">git repository</a>.  Unless you're using very old Xt/Motif applications with OpenGL, you shouldn't need it.
+</p>
 
 
-<h2><a name="part2">2.4 What's the proper place for the libraries and headers?</a></h2>
+<h2>2.5 What's the proper place for the libraries and headers?</h2>
 <p>
-<a name="part2">On Linux-based systems you'll want to follow the
-</a><a href="http://oss.sgi.com/projects/ogl-sample/ABI/index.html"
-target="_parent">Linux ABI</a> standard.
+On Linux-based systems you'll want to follow the
+<a href="http://oss.sgi.com/projects/ogl-sample/ABI/index.html">Linux ABI</a> standard.
 Basically you'll want the following:
 </p>
 <ul>
@@ -223,49 +234,49 @@ Basically you'll want the following:
 </li><li>/usr/lib/libGL.so.1 - a symlink to libGL.so.1.xyz
 </li><li>/usr/lib/libGL.so.xyz - the actual OpenGL/Mesa library.  xyz denotes the
 Mesa version number.
-</li><li>/usr/lib/libGLU.so - a symlink to libGLU.so.1
-</li><li>/usr/lib/libGLU.so.1 - a symlink to libGLU.so.1.3.xyz
-</li><li>/usr/lib/libGLU.so.xyz - the OpenGL Utility library.  xyz denotes the Mesa
-version number.
 </li></ul>
 <p>
-After installing XFree86/X.org and the DRI drivers, some of these files
-may be symlinks into the /usr/X11R6/ tree.
-</p>
-<p>
-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.
+When configuring Mesa, there are three autoconf options that affect the install
+location that you should take care with: <code>--prefix</code>,
+<code>--libdir</code>, and <code>--with-dri-driverdir</code>. To install Mesa
+into the system location where it will be available for all programs to use, set
+<code>--prefix=/usr</code>. Set <code>--libdir</code> to where your Linux
+distribution installs system libraries, usually either <code>/usr/lib</code> or
+<code>/usr/lib64</code>. Set <code>--with-dri-driverdir</code> to the directory
+where your Linux distribution installs DRI drivers. To find your system's DRI
+driver directory, try executing <code>find /usr -type d -name dri</code>. For
+example, if the <code>find</code> command listed <code>/usr/lib64/dri</code>,
+then set <code>--with-dri-driverdir=/usr/lib64/dri</code>.
 </p>
 <p>
-The GLUT header and library should go in the same directories.
+After determining the correct values for the install location, configure Mesa
+with <code>./configure --prefix=/usr --libdir=xxx --with-dri-driverdir=xxx</code>
+and then install with <code>sudo make install</code>.
 </p>
 <br>
 <br>
 
 
-<a name="part3">
-</a><h1><a name="part3">3. Runtime / Rendering Problems</a></h1>
+<h1 id="part3">3. Runtime / Rendering Problems</h1>
 
-<h2><a name="part3">3.1 Rendering is slow / why isn't my graphics hardware being used?</a></h2>
+<h2>3.1 Rendering is slow / why isn't my graphics hardware being used?</h2>
 <p>
-<a name="part3">Stand-alone Mesa (downloaded as MesaLib-x.y.z.tar.gz) doesn't have any
-support for hardware acceleration (with the exception of the 3DFX Voodoo
-driver).
-</a></p>
-<p>
-<a name="part3">What you really want is a DRI or NVIDIA (or another vendor's OpenGL) driver
-for your particular hardware.
-</a></p>
+If Mesa can't use its hardware accelerated drivers it falls back on one of its software renderers.
+(eg. classic swrast, softpipe or llvmpipe)
+</p>
 <p>
-<a name="part3">You can run the <code>glxinfo</code> program to learn about your OpenGL
+You can run the <code>glxinfo</code> program to learn about your OpenGL
 library.
-Look for the GL_VENDOR and GL_RENDERER values.
-That will identify who's OpenGL library you're using and what sort of
+Look for the <code>OpenGL vendor</code> and <code>OpenGL renderer</code> values.
+That will identify who's OpenGL library with which driver you're using and what sort of
 hardware it has detected.
-</a></p>
+</p>
 <p>
-<a name="part3">If your DRI-based driver isn't working, go to the
-</a><a href="http://dri.sf.net/" target="_parent">DRI website</a> for trouble-shooting information.
+If you're using a hardware accelerated driver you want <code>direct rendering: Yes</code>.
+</p>
+<p>
+If your DRI-based driver isn't working, go to the
+<a href="http://dri.freedesktop.org/">DRI website</a> for trouble-shooting information.
 </p>
 
 
@@ -273,8 +284,8 @@ hardware it has detected.
 <p>
 Make sure the ratio of the far to near clipping planes isn't too great.
 Look
-<a href="http://www.opengl.org/resources/faq/technical/depthbuffer.htm#0040"
-target="_parent"> here</a> for details.
+<a href="http://www.opengl.org/resources/faq/technical/depthbuffer.htm#0040">here</a>
+for details.
 </p>
 <p>
 Mesa uses a 16-bit depth buffer by default which is smaller and faster
@@ -333,17 +344,15 @@ may introduce rasterization artifacts; see the leading comments in
 <br>
 
 
-<a name="part4">
-</a><h1><a name="part4">4. Developer Questions</a></h1>
+<h1 id="part4">4. Developer Questions</h1>
 
-<h2>4.1 How can I contribute?</a></h2>
+<h2>4.1 How can I contribute?</h2>
 <p>
-First, join the <a href="http://www.mesa3d.org/lists.html">Mesa3d-dev
-mailing list</a>.
+First, join the <a href="lists.html">mesa-dev mailing list</a>.
 That's where Mesa development is discussed.
 </p>
 <p>
-The <a href="http://www.opengl.org/documentation" target="_parent">
+The <a href="http://www.opengl.org/documentation">
 OpenGL Specification</a> is the bible for OpenGL implemention work.
 You should read it.
 </p>
@@ -361,8 +370,8 @@ target hardware/operating system.
 <p>
 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.
+For a classic hardware driver, the i965 driver is a good example.
+For a Gallium3D hardware driver, the r300g, r600g and the i915g are good examples.
 </p>
 <p>The DRI website has more information about writing hardware drivers.
 The process isn't well document because the Mesa driver interface changes
@@ -377,7 +386,7 @@ the archives) is a good way to get information.
 
 <h2>4.3 Why isn't GL_EXT_texture_compression_s3tc implemented in Mesa?</h2>
 <p>
-The <a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compression_s3tc.txt" target="_parent">specification for the extension</a>
+The <a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compression_s3tc.txt">specification for the extension</a>
 indicates that there are intellectual property (IP) and/or patent issues
 to be dealt with.
 </p>
@@ -387,11 +396,10 @@ implement the extension (specifically the compression/decompression
 algorithms).
 </p>
 <p>
-In the mean time, a 3rd party <a href=
-"http://homepage.hispeed.ch/rscheidegger/dri_experimental/s3tc_index.html"
-target="_parent">plug-in library</a> is available.
+In the mean time, a 3rd party <a href="http://dri.freedesktop.org/wiki/S3TC">
+plug-in library</a> is available.
 </p>
 
-
+</div>
 </body>
 </html>