<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
- <title>Mesa FAQ</title>
+ <title>Frequently Asked Questions</title>
<link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>
<iframe src="contents.html"></iframe>
<div class="content">
-<h1>Mesa Frequently Asked Questions</h1>
+<h1>Frequently Asked Questions</h1>
Last updated: 19 September 2018
<br>
<br>
<br>
+<h2 id="part1">1. High-level Questions and Answers</h2>
-
-<h1 id="part1">1. High-level Questions and Answers</h1>
-
-<h2>1.1 What is Mesa?</h2>
+<h3>1.1 What is Mesa?</h3>
<p>
Mesa is an open-source implementation of the OpenGL specification.
OpenGL is a programming library for writing interactive 3D applications.
<br>
-<h1 id="part2">2. Compilation and Installation Problems</h1>
+<h2 id="part2">2. Compilation and Installation Problems</h2>
-<h2>2.1 What's the easiest way to install Mesa?</h2>
+<h3>2.1 What's the easiest way to install Mesa?</h3>
<p>
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.
</p>
-<h2>2.2 I get undefined symbols such as bgnpolygon, v3f, etc...</h2>
+<h3>2.2 I get undefined symbols such as bgnpolygon, v3f, etc...</h3>
<p>
You're application is written in IRIS GL, not OpenGL.
IRIS GL was the predecessor to OpenGL and is a different thing (almost)
</p>
-<h2>2.3 Where is the GLUT library?</h2>
+<h3>2.3 Where is the GLUT library?</h3>
<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
</p>
-<h2>2.4 Where is the GLw library?</h2>
+<h3>2.4 Where is the GLw library?</h3>
<p>
GLw (OpenGL widget library) is now available from a separate <a href="https://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>
<br>
-<h1 id="part3">3. Runtime / Rendering Problems</h1>
+<h2 id="part3">3. Runtime / Rendering Problems</h2>
-<h2>3.1 Rendering is slow / why isn't my graphics hardware being used?</h2>
+<h3>3.1 Rendering is slow / why isn't my graphics hardware being used?</h3>
<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>
-<h2>3.2 I'm seeing errors in depth (Z) buffering. Why?</h2>
+<h3>3.2 I'm seeing errors in depth (Z) buffering. Why?</h3>
<p>
Make sure the ratio of the far to near clipping planes isn't too great.
Look
</p>
-<h2>3.3 Why Isn't depth buffering working at all?</h2>
+<h3>3.3 Why Isn't depth buffering working at all?</h3>
<p>
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
</p>
-<h2>3.4 Why does glGetString() always return NULL?</h2>
+<h3>3.4 Why does glGetString() always return NULL?</h3>
<p>
Be sure you have an active/current OpenGL rendering context before
calling glGetString.
</p>
-<h2>3.5 GL_POINTS and GL_LINES don't touch the right pixels</h2>
+<h3>3.5 GL_POINTS and GL_LINES don't touch the right pixels</h3>
<p>
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.
<br>
-<h1 id="part4">4. Developer Questions</h1>
+<h2 id="part4">4. Developer Questions</h2>
-<h2>4.1 How can I contribute?</h2>
+<h3>4.1 How can I contribute?</h3>
<p>
First, join the <a href="lists.html">mesa-dev mailing list</a>.
That's where Mesa development is discussed.
extensions, writing hardware drivers (for the DRI), and code optimization.
</p>
-<h2>4.2 How do I write a new device driver?</h2>
+<h3>4.2 How do I write a new device driver?</h3>
<p>
Unfortunately, writing a device driver isn't easy.
It requires detailed understanding of OpenGL, the Mesa code, and your
</p>
-<h2>4.3 Why isn't GL_EXT_texture_compression_s3tc implemented in Mesa?</h2>
+<h3>4.3 Why isn't GL_EXT_texture_compression_s3tc implemented in Mesa?</h3>
<p>
Oh but it is! Prior to 2nd October 2017, the Mesa project did not include s3tc
support due to intellectual property (IP) and/or patent issues around the s3tc
</ol>
-<h1 id="prereq-general">1. Prerequisites for building</h1>
+<h2 id="prereq-general">1. Prerequisites for building</h2>
-<h2>1.1 General</h2>
+<h3>1.1 General</h3>
<p>
Build system.
... # others
</pre>
-<h1 id="meson">2. Building with meson</h1>
+<h2 id="meson">2. Building with meson</h2>
<p>
Meson is the latest build system in mesa, it is currently able to build for
for more information
</p>
-<h1 id="autoconf">3. Building with autoconf (Linux/Unix/X11)</h1>
+<h2 id="autoconf">3. Building with autoconf (Linux/Unix/X11)</h2>
<p>
Autoconf support was removed in Mesa 19.1.0. Please use meson instead.
-<h1 id="scons">4. Building with SCons (Windows/Linux)</h1>
+<h2 id="scons">4. Building with SCons (Windows/Linux)</h2>
<p>
To build Mesa with SCons on Linux or Windows do
-<h1 id="android">5. Building with AOSP (Android)</h1>
+<h2 id="android">5. Building with AOSP (Android)</h2>
<p>
Currently one can build Mesa for Android as part of the AOSP project, yet
</p>
-<h1 id="libs">6. Library Information</h1>
+<h2 id="libs">6. Library Information</h2>
<p>
When compilation has finished, look in the top-level <code>lib/</code>
</p>
-<h1 id="pkg-config">7. Building OpenGL programs with pkg-config</h1>
+<h2 id="pkg-config">7. Building OpenGL programs with pkg-config</h2>
<p>
Running <code>ninja install</code> will install package configuration files
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
- <title>Mesa Introduction</title>
+ <title>Introduction</title>
<link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>
-<h1>Project History</h1>
+<h2>Project History</h2>
<p>
The Mesa project was originally started by Brian Paul.
-<h1>Major Versions</h1>
+<h2>Major Versions</h2>
<p>
This is a summary of the major versions of Mesa.
</p>
-<h2>Version 12.x features</h2>
+<h3>Version 12.x features</h3>
<p>
Version 12.x of Mesa implements the OpenGL 4.3 API, but not all drivers
support OpenGL 4.3.
</p>
-<h2>Version 11.x features</h2>
+<h3>Version 11.x features</h3>
<p>
Version 11.x of Mesa implements the OpenGL 4.1 API, but not all drivers
support OpenGL 4.1.
</p>
-<h2>Version 10.x features</h2>
+<h3>Version 10.x features</h3>
<p>
Version 10.x of Mesa implements the OpenGL 3.3 API, but not all drivers
support OpenGL 3.3.
</p>
-<h2>Version 9.x features</h2>
+<h3>Version 9.x features</h3>
<p>
Version 9.x of Mesa implements the OpenGL 3.1 API.
While the driver for Intel Sandy Bridge and Ivy Bridge is the only
</p>
-<h2>Version 8.x features</h2>
+<h3>Version 8.x features</h3>
<p>
Version 8.x of Mesa implements the OpenGL 3.0 API.
The developers at Intel deserve a lot of credit for implementing most
</p>
-<h2>Version 7.x features</h2>
+<h3>Version 7.x features</h3>
<p>
Version 7.x of Mesa implements the OpenGL 2.1 API. The main feature
of OpenGL 2.x is the OpenGL Shading Language.
</p>
-<h2>Version 6.x features</h2>
+<h3>Version 6.x features</h3>
<p>
Version 6.x of Mesa implements the OpenGL 1.5 API with the following
extensions incorporated as standard features:
-<h2>Version 5.x features</h2>
+<h3>Version 5.x features</h3>
<p>
Version 5.x of Mesa implements the OpenGL 1.4 API with the following
extensions incorporated as standard features:
</ul>
-<h2>Version 4.x features</h2>
+<h3>Version 4.x features</h3>
<p>
Version 4.x of Mesa implements the OpenGL 1.3 API with the following
<li>GL_ARB_transpose_matrix
</ul>
-<h2>Version 3.x features</h2>
+<h3>Version 3.x features</h3>
<p>
Version 3.x of Mesa implements the OpenGL 1.2 API with the following
</ul>
-<h2>Version 2.x features</h2>
+<h3>Version 2.x features</h3>
<p>
Version 2.x of Mesa implements the OpenGL 1.1 API with the following
features.
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
- <title>License / Copyright Information</title>
+ <title>License and Copyright</title>
<link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>
<iframe src="contents.html"></iframe>
<div class="content">
-<h1>Disclaimer</h1>
+<h1>License and Copyright</h1>
+
+<h2>Disclaimer</h2>
<p>
Mesa is a 3-D graphics library with an API which is very similar to
-<h1>License / Copyright Information</h1>
+<h2>License / Copyright Information</h2>
<p>
The Mesa distribution consists of several components. Different copyrights
</pre>
-<h1>Attention, Contributors</h1>
+<h2>Attention, Contributors</h2>
<p>
When contributing to the Mesa project you must agree to the licensing terms
</p>
-<h1>Mesa Component Licenses</h1>
+<h2>Mesa Component Licenses</h2>
<pre>
Component Location License
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
- <title>Mesa Mailing Lists</title>
+ <title>Mailing Lists</title>
<link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>
</p>
-<h1>IRC</h1>
+<h2>IRC</h2>
<p>join <a href="irc://chat.freenode.net#dri-devel">#dri-devel channel</a>
on <a href="https://webchat.freenode.net/">irc.freenode.net</a>
</p>
-<h1>OpenGL Forums</h1>
+<h2>OpenGL Forums</h2>
<p>
Here are some other OpenGL-related forums you might find useful:
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
- <title>llvmpipe</title>
+ <title>Gallium LLVMpipe Driver</title>
<link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>
<iframe src="contents.html"></iframe>
<div class="content">
-<h1>Introduction</h1>
+<h1>Gallium LLVMpipe Driver</h1>
+
+<h2>Introduction</h2>
<p>
The Gallium llvmpipe driver is a software rasterizer that uses LLVM to
</p>
-<h1>Requirements</h1>
+<h2>Requirements</h2>
<ul>
<li>
</ul>
-<h1>Building</h1>
+<h2>Building</h2>
To build everything on Linux invoke scons as:
</pre>
-<h1>Using</h1>
+<h2>Using</h2>
-<h2>Linux</h2>
+<h3>Linux</h3>
<p>On Linux, building will create a drop-in alternative for libGL.so into</p>
lib directory without the "-debug" suffix.</p>
-<h2>Windows</h2>
+<h3>Windows</h3>
<p>
On Windows, building will create
</ul>
-<h1>Profiling</h1>
+<h2>Profiling</h2>
<p>
To profile llvmpipe you should build as
that no tail call optimizations are done by gcc.
</p>
-<h2>Linux perf integration</h2>
+<h3>Linux perf integration</h3>
<p>
On Linux, it is possible to have symbol resolution of JIT code with <a href="https://perf.wiki.kernel.org/">Linux perf</a>:
<a href="https://github.com/jrfonseca/gprof2dot#linux-perf">Gprof2Dot</a>.</p>
-<h1>Unit testing</h1>
+<h2>Unit testing</h2>
<p>
Building will also create several unit tests in
</pre>
-<h1>Development Notes</h1>
+<h2>Development Notes</h2>
<ul>
<li>
</li>
</ul>
-<h1 id="recommended_reading">Recommended Reading</h1>
+<h2 id="recommended_reading">Recommended Reading</h2>
<ul>
<li>
There are several examples of OSMesa in the mesa/demos repository.
</p>
-<h1>Building OSMesa</h1>
+<h2>Building OSMesa</h2>
<p>
Configure and build Mesa with something like:
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
- <title>Release calendar</title>
+ <title>Release Calendar</title>
<link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>
<iframe src="contents.html"></iframe>
<div class="content">
-<h1>Overview</h1>
+<h1>Release Calendar</h1>
+
+<h2>Overview</h2>
<p>
Mesa provides feature/development and stable releases.
if you'd like to nominate a patch in the next stable release.
</p>
-<h1 id="calendar">Calendar</h1>
+<h2 id="calendar">Calendar</h2>
<table border="1">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
- <title>Releasing process</title>
+ <title>Releasing Process</title>
<link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>
<div class="content">
-<h1>Releasing process</h1>
+<h1>Releasing Process</h1>
<ul>
<li><a href="#overview">Overview</a>
</ul>
-<h1 id="overview">Overview</h1>
+<h2 id="overview">Overview</h2>
<p>
This document uses the convention X.Y.Z for the release number with X.Y being
</pre>
-<h1 id="schedule">Release schedule</h1>
+<h2 id="schedule">Release schedule</h2>
<p>
Releases should happen on Wednesdays. Delays can occur although those
</p>
-<h1 id="pickntest">Cherry-picking and testing</h1>
+<h2 id="pickntest">Cherry-picking and testing</h2>
<p>
Commits nominated for the active branch are picked as based on the
idea too.
</p>
-<h1 id="stagingbranch">Staging branch</h1>
+<h2 id="stagingbranch">Staging branch</h2>
<p>
A live branch, which contains the currently merge/rejected patches is available
</ul>
-<h1 id="branch">Making a branchpoint</h1>
+<h2 id="branch">Making a branchpoint</h2>
<p>
A branchpoint is made such that new development can continue in parallel to
</p>
-<h1 id="prerelease">Pre-release announcement</h1>
+<h2 id="prerelease">Pre-release announcement</h2>
<p>
It comes shortly after outstanding patches in the respective branch are pushed.
</pre>
-<h1 id="release">Making a new release</h1>
+<h2 id="release">Making a new release</h2>
<p>
These are the instructions for making a new Mesa release.
</pre>
-<h1 id="announce">Announce the release</h1>
+<h2 id="announce">Announce the release</h2>
<p>
Use the generated template during the releasing process.
</p>
-<h1 id="website">Update the mesa3d.org website</h1>
+<h2 id="website">Update the mesa3d.org website</h2>
<p>
As the hosting was moved to freedesktop, git hooks are deployed to update the
</p>
-<h1 id="bugzilla">Update Bugzilla</h1>
+<h2 id="bugzilla">Update Bugzilla</h2>
<p>
Parse through the bugreports as listed in the docs/relnotes/X.Y.Z.html
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
- <title>Supported Systems and Drivers</title>
+ <title>Platforms and Drivers</title>
<link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>
<iframe src="contents.html"></iframe>
<div class="content">
-<h1>Supported Systems and Drivers</h1>
+<h1>Platforms and Drivers</h1>
<p>
Mesa is primarily developed and used on Linux systems.
</ul>
-<h1>
+<h2>
Deprecated Systems and Drivers
-</h1>
+</h2>
<p>
In the past there were other drivers for older GPUs and operating