st/dri/drm: Add a second libdridrm library
[mesa.git] / docs / devinfo.html
index df0e7265249a698dfee86e6a3cd09a43e2547759..a947b0d39b210b662ee62839d8bcb4e6145d6a43 100644 (file)
@@ -1,15 +1,23 @@
-<HTML>
+<!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>Development Notes</title>
+  <link rel="stylesheet" type="text/css" href="mesa.css">
+</head>
+<body>
 
-<TITLE>Development Notes</TITLE>
+<div class="header">
+  <h1>The Mesa 3D Graphics Library</h1>
+</div>
 
-<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+<iframe src="contents.html"></iframe>
+<div class="content">
 
-<BODY>
+<h1>Development Notes</h1>
 
-<H1>Development Notes</H1>
 
-
-<H2>Adding Extentions</H2>
+<h2>Adding Extensions</h2>
 
 <p>
 To add a new GL extension to Mesa you have to do at least the following.
@@ -28,7 +36,7 @@ To add a new GL extension to Mesa you have to do at least the following.
    </pre>
 </li>
 <li>
-   In the src/mesa/glapi/ directory, add the new extension functions and
+   In the src/mapi/glapi/gen/ directory, add the new extension functions and
    enums to the gl_API.xml file.
    Then, a bunch of source files must be regenerated by executing the
    corresponding Python scripts.
@@ -48,11 +56,16 @@ To add a new GL extension to Mesa you have to do at least the following.
    If the new extension adds new GL state, the functions in get.c, enable.c
    and attrib.c will most likely require new code.
 </li>
+<li>
+   The dispatch tests check_table.cpp and dispatch_sanity.cpp
+   should be updated with details about the new extensions functions. These
+   tests are run using 'make check'
+</li>
 </ul>
 
 
 
-<H2>Coding Style</H2>
+<h2>Coding Style</h2>
 
 <p>
 Mesa's code style has changed over the years.  Here's the latest.
@@ -71,6 +84,13 @@ well documented.  Also, strive to write clean, easily understandable code.
 If you use tabs, set them to 8 columns
 </p>
 
+<p>
+Line width: the preferred width to fill comments and code in Mesa is 78
+columns.  Exceptions are sometimes made for clarity (e.g. tabular data is
+sometimes filled to a much larger width so that extraneous carriage returns
+don't obscure the table).
+</p>
+
 <p>
 Brace example:
 </p>
@@ -81,10 +101,26 @@ Brace example:
        else {
           bar;
        }
+
+       switch (condition) {
+       case 0:
+          foo();
+          break;
+
+       case 1: {
+          ...
+          break;
+       }
+
+       default:
+          ...
+          break;
+       }
 </pre>
 
 <p>
 Here's the GNU indent command which will best approximate my preferred style:
+(Note that it won't format switch statements in the preferred way)
 </p>
 <pre>
        indent -br -i3 -npcs --no-tabs infile.c -o outfile.c
@@ -114,68 +150,129 @@ Function name examples:
        _mesa_foo_bar()  - an internal non-static Mesa function
 </pre>
 
+<p>
+Places that are not directly visible to the GL API should prefer the use
+of <tt>bool</tt>, <tt>true</tt>, and
+<tt>false</tt> over <tt>GLboolean</tt>, <tt>GL_TRUE</tt>, and
+<tt>GL_FALSE</tt>.  In C code, this may mean that
+<tt>#include &lt;stdbool.h&gt;</tt> needs to be added.  The
+<tt>try_emit_</tt>* methods in src/mesa/program/ir_to_mesa.cpp and
+src/mesa/state_tracker/st_glsl_to_tgsi.cpp can serve as examples.
+</p>
 
-<H2>Making a New Mesa Release</H2>
+<h2>Submitting patches</h2>
 
 <p>
-These are the instructions for making a new Mesa release.
+You should always run the Mesa Testsuite before submitting patches.
+The Testsuite can be run using the 'make check' command. All tests
+must pass before patches will be accepted, this may mean you have
+to update the tests themselves.
 </p>
 
-<H3>Get latest source files</H3>
 <p>
-Use git to get the latest Mesa files from the git repository, from whatever
-branch is relevant.
+Patches should be sent to the Mesa mailing list for review.
+When submitting a patch make sure to use git send-email rather than attaching
+patches to emails. Sending patches as attachments prevents people from being
+able to provide in-line review comments.
+</p>
+
+<p>
+When submitting follow-up patches you can use --in-reply-to to make v2, v3,
+etc patches show up as replies to the originals. This usually works well
+when you're sending out updates to individual patches (as opposed to
+re-sending the whole series). Using --in-reply-to makes
+it harder for reviewers to accidentally review old patches.
 </p>
 
+<h2>Marking a commit as a candidate for a stable branch</h2>
 
-<H3>Verify and update version info</H3>
 <p>
-Create/edit the docs/relnotes-x.y.html file to document what's new in the release.
-Add the new relnotes-x.y.html file to <a href="relnotes.html">relnotes.html</a>.
+If you want a commit to be applied to a stable branch,
+you should add an appropriate note to the commit message.
 </p>
 
 <p>
-Update the MESA_MAJOR, MESA_MINOR and MESA_TINY version numbers in
-configs/default.
-Also update the VERSION line in the top-level Makefile.
+Here are some examples of such a note:
 </p>
+<ul>
+  <li>CC: &lt;mesa-stable@lists.freedesktop.org&gt;</li>
+  <li>CC: "9.2 10.0" &lt;mesa-stable@lists.freedesktop.org&gt;</li>
+  <li>CC: "10.0" &lt;mesa-stable@lists.freedesktop.org&gt;</li>
+</ul>
+
+Simply adding the CC to the mesa-stable list address is adequate to nominate
+the commit for the most-recently-created stable branch. It is only necessary
+to specify a specific branch name, (such as "9.2 10.0" or "10.0" in the
+examples above), if you want to nominate the commit for an older stable
+branch. And, as in these examples, you can nominate the commit for the older
+branch in addition to the more recent branch, or nominate the commit
+exclusively for the older branch.
+
+This "CC" syntax for patch nomination will cause patches to automatically be
+copied to the mesa-stable@ mailing list when you use "git send-email" to send
+patches to the mesa-dev@ mailing list. Also, if you realize that a commit
+should be nominated for the stable branch after it has already been committed,
+you can send a note directly to the mesa-stable@lists.freedesktop.org where
+the Mesa stable-branch maintainers will receive it. Be sure to mention the
+commit ID of the commit of interest (as it appears in the mesa master branch).
+
+The latest set of patches that have been nominated, accepted, or rejected for
+the upcoming stable release can always be seen on the
+<a href=http://cworth.org/~cworth/mesa-stable-queue/">Mesa Stable Queue</a>
+page.
+
+<h2>Cherry-picking candidates for a stable branch</h2>
 
 <p>
-Make sure the values in src/mesa/main/version.h are correct.
+Please use <code>git cherry-pick -x &lt;commit&gt;</code> for cherry-picking a commit
+from master to a stable branch.
 </p>
 
+<h2>Making a New Mesa Release</h2>
+
 <p>
-Update the docs/news.html file and docs/download.html files.
+These are the instructions for making a new Mesa release.
 </p>
 
+<h3>Get latest source files</h3>
 <p>
-Check in all updates to git.
+Use git to get the latest Mesa files from the git repository, from whatever
+branch is relevant.
 </p>
 
+
+<h3>Verify and update version info in VERSION</h3>
+
 <p>
-Tag the files with the release name (in the form <b>mesa_X_Y</b>)
-with: <code>git tag -a mesa_X_Y</code>
-Then: <code>git push origin mesa_X_Y</code>
+Create a docs/relnotes/x.y.z.html file.
+The bin/bugzilla_mesa.sh and bin/shortlog_mesa.sh scripts can be used to
+create the HTML-formatted lists of bugfixes and changes to include in the file.
+Link the new docs/relnotes/x.y.z.html file into the main <a href="relnotes.html">relnotes.html</a> file.
 </p>
 
+<p>
+Update <a href="index.html">docs/index.html</a>.
+</p>
 
-<H3>Make the tarballs</H3>
 <p>
-Make a symbolic link from $(DIRECTORY) to 'Mesa'.  For example,
-<code>ln -s Mesa Mesa-7.5</code>
-This is needed in order to make a correct tar file in the next step.
+Tag the files with the release name (in the form <b>mesa-x.y</b>)
+with: <code>git tag -s mesa-x.y -m "Mesa x.y Release"</code>
+Then: <code>git push origin mesa-x.y</code>
 </p>
 
+
+<h3>Make the tarballs</h3>
 <p>
 Make the distribution files.  From inside the Mesa directory:
 <pre>
+       ./autogen.sh
        make tarballs
 </pre>
 
 <p>
 After the tarballs are created, the md5 checksums for the files will
 be computed.
-Add them to the docs/relnotes-X.Y.html file.
+Add them to the docs/relnotes/x.y.html file.
 </p>
 
 <p>
@@ -183,17 +280,20 @@ Copy the distribution files to a temporary directory, unpack them,
 compile everything, and run some demos to be sure everything works.
 </p>
 
-<H3>Update the website and announce the release</H3>
+<h3>Update the website and announce the release</h3>
 <p>
-Follow the directions on SourceForge for creating a new "release" and
-uploading the tarballs.
+Make a new directory for the release on annarchy.freedesktop.org with:
+<br>
+<code>
+mkdir /srv/ftp.freedesktop.org/pub/mesa/x.y
+</code>
 </p>
 
 <p>
 Basically, to upload the tarball files with:
 <br>
 <code>
-rsync -avP ssh Mesa*-X.Y.* USERNAME@frs.sourceforge.net:uploads/
+rsync -avP -e ssh MesaLib-x.y.* USERNAME@annarchy.freedesktop.org:/srv/ftp.freedesktop.org/pub/mesa/x.y/
 </code>
 </p>
 
@@ -208,13 +308,13 @@ sftp USERNAME,mesa3d@web.sourceforge.net
 
 <p>
 Make an announcement on the mailing lists:
-<em>m</em><em>e</em><em>s</em><em>a</em><em>3</em><em>d</em><em>-</em><em>d</em><em>e</em><em>v</em><em>@</em><em>l</em><em>i</em><em>s</em><em>t</em><em>s</em><em>.</em><em>s</em><em>f</em><em>.</em><em>n</em><em>e</em><em>t</em>,
-<em>m</em><em>e</em><em>s</em><em>a</em><em>3</em><em>d</em><em>-</em><em>u</em><em>s</em><em>e</em><em>r</em><em>s</em><em>@</em><em>l</em><em>i</em><em>s</em><em>t</em><em>s</em><em>.</em><em>s</em><em>f</em><em>.</em><em>n</em><em>e</em><em>t</em>
+
+<em>mesa-dev@lists.freedesktop.org</em>,
+<em>mesa-users@lists.freedesktop.org</em>
 and
-<em>m</em><em>e</em><em>s</em><em>a</em><em>3</em><em>d</em><em>-</em><em>a</em><em>n</em><em>n</em><em>o</em><em>u</em><em>n</em><em>c</em><em>e</em><em>@</em><em>l</em><em>i</em><em>s</em><em>t</em><em>s</em><em>.</em><em>s</em><em>f</em><em>.</em><em>n</em><em>e</em><em>t</em>
+<em>mesa-announce@lists.freedesktop.org</em>
 </p>
 
-
-
+</div>
 </body>
 </html>