
commit 1856230d9fa61710cce3e152b8d88b1269611a73 Author: José Fonseca <jose.r.fonseca@gmail.com> Date: Tue Jul 12 23:41:27 2011 +0100 make: Use better var names on packaging. commit d1ae72d0bd14e820ecfe9f8f27b316f9566ceb0c Author: José Fonseca <jose.r.fonseca@gmail.com> Date: Tue Jul 12 23:38:21 2011 +0100 make: Apply several of Dan Nicholson's suggestions. commit f27cf8743ac9cbf4c0ad66aff0cd3f97efde97e4 Author: José Fonseca <jose.r.fonseca@gmail.com> Date: Sat Jul 9 14:18:20 2011 +0100 make: Put back the tar.bz2 creation rule. Removed by accident. commit 34983337f9d7db984e9f0117808274106d262110 Author: José Fonseca <jose.r.fonseca@gmail.com> Date: Sat Jul 9 11:59:29 2011 +0100 make: Determine tarballs contents via git ls-files. The wildcards were a mess: - lots of files for non Linux platforms missing - several files listed and archived twice Using git-ls-files ensures things are not loss when making the tarballs. commit 34a28ccbf459ed5710aafba5e7149e8291cb808c Author: José Fonseca <jose.r.fonseca@gmail.com> Date: Sat Jul 9 11:07:14 2011 +0100 glut: Remove GLUT source. Most distros ship freeglut, and most people don't care one vs the other, and it hasn't been really maintained. So it is better to have Mesa GLUT be revisioned and built separately from Mesa. commit 5c26a2c3c0c7e95ef853e19d12d75c4f80137e7d Author: José Fonseca <jose.r.fonseca@gmail.com> Date: Sat Jul 9 10:31:02 2011 +0100 Ignore the tarballs. commit 26edecac589819f0d0efe2165ab748dbc4e53394 Author: José Fonseca <jose.r.fonseca@gmail.com> Date: Sat Jul 9 10:30:24 2011 +0100 make: Create the Mesa-xxx-devel symlink automatically. Also actually remote the intermediate uncompressed tarballs.
216 lines
5.1 KiB
HTML
216 lines
5.1 KiB
HTML
<HTML>
|
|
|
|
<TITLE>Development Notes</TITLE>
|
|
|
|
<link rel="stylesheet" type="text/css" href="mesa.css"></head>
|
|
|
|
<BODY>
|
|
|
|
<H1>Development Notes</H1>
|
|
|
|
|
|
<H2>Adding Extentions</H2>
|
|
|
|
<p>
|
|
To add a new GL extension to Mesa you have to do at least the following.
|
|
|
|
<ul>
|
|
<li>
|
|
If glext.h doesn't define the extension, edit include/GL/gl.h and add
|
|
code like this:
|
|
<pre>
|
|
#ifndef GL_EXT_the_extension_name
|
|
#define GL_EXT_the_extension_name 1
|
|
/* declare the new enum tokens */
|
|
/* prototype the new functions */
|
|
/* TYPEDEFS for the new functions */
|
|
#endif
|
|
</pre>
|
|
</li>
|
|
<li>
|
|
In the src/mesa/glapi/ 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.
|
|
</li>
|
|
<li>
|
|
Add a new entry to the <code>gl_extensions</code> struct in mtypes.h
|
|
</li>
|
|
<li>
|
|
Update the <code>extensions.c</code> file.
|
|
</li>
|
|
<li>
|
|
From this point, the best way to proceed is to find another extension,
|
|
similar to the new one, that's already implemented in Mesa and use it
|
|
as an example.
|
|
</li>
|
|
<li>
|
|
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>
|
|
</ul>
|
|
|
|
|
|
|
|
<H2>Coding Style</H2>
|
|
|
|
<p>
|
|
Mesa's code style has changed over the years. Here's the latest.
|
|
</p>
|
|
|
|
<p>
|
|
Comment your code! It's extremely important that open-source code be
|
|
well documented. Also, strive to write clean, easily understandable code.
|
|
</p>
|
|
|
|
<p>
|
|
3-space indentation
|
|
</p>
|
|
|
|
<p>
|
|
If you use tabs, set them to 8 columns
|
|
</p>
|
|
|
|
<p>
|
|
Brace example:
|
|
</p>
|
|
<pre>
|
|
if (condition) {
|
|
foo;
|
|
}
|
|
else {
|
|
bar;
|
|
}
|
|
</pre>
|
|
|
|
<p>
|
|
Here's the GNU indent command which will best approximate my preferred style:
|
|
</p>
|
|
<pre>
|
|
indent -br -i3 -npcs --no-tabs infile.c -o outfile.c
|
|
</pre>
|
|
|
|
|
|
<p>
|
|
Local variable name example: localVarName (no underscores)
|
|
</p>
|
|
|
|
<p>
|
|
Constants and macros are ALL_UPPERCASE, with _ between words
|
|
</p>
|
|
|
|
<p>
|
|
Global variables are not allowed.
|
|
</p>
|
|
|
|
<p>
|
|
Function name examples:
|
|
</p>
|
|
<pre>
|
|
glFooBar() - a public GL entry point (in glapi_dispatch.c)
|
|
_mesa_FooBar() - the internal immediate mode function
|
|
save_FooBar() - retained mode (display list) function in dlist.c
|
|
foo_bar() - a static (private) function
|
|
_mesa_foo_bar() - an internal non-static Mesa function
|
|
</pre>
|
|
|
|
|
|
<H2>Making a New Mesa Release</H2>
|
|
|
|
<p>
|
|
These are the instructions for making a new Mesa release.
|
|
</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.
|
|
</p>
|
|
|
|
|
|
<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>.
|
|
</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.
|
|
</p>
|
|
|
|
<p>
|
|
Make sure the values in src/mesa/main/version.h are correct.
|
|
</p>
|
|
|
|
<p>
|
|
Update docs/news.html.
|
|
</p>
|
|
|
|
<p>
|
|
Check in all updates to git.
|
|
</p>
|
|
|
|
<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>
|
|
</p>
|
|
|
|
|
|
<H3>Make the tarballs</H3>
|
|
<p>
|
|
Make the distribution files. From inside the Mesa directory:
|
|
<pre>
|
|
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.
|
|
</p>
|
|
|
|
<p>
|
|
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>
|
|
<p>
|
|
Follow the directions on SourceForge for creating a new "release" and
|
|
uploading the tarballs.
|
|
</p>
|
|
|
|
<p>
|
|
Basically, to upload the tarball files with:
|
|
<br>
|
|
<code>
|
|
rsync -avP ssh Mesa*-X.Y.* USERNAME@frs.sourceforge.net:uploads/
|
|
</code>
|
|
</p>
|
|
|
|
<p>
|
|
Update the web site by copying the docs/ directory's files to
|
|
/home/users/b/br/brianp/mesa-www/htdocs/ with:
|
|
<br>
|
|
<code>
|
|
sftp USERNAME,mesa3d@web.sourceforge.net
|
|
</code>
|
|
</p>
|
|
|
|
<p>
|
|
Make an announcement on the mailing lists:
|
|
|
|
<em>m</em><em>e</em><em>s</em><em>a</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>f</em><em>r</em><em>e</em><em>e</em><em>d</em><em>e</em><em>s</em><em>k</em><em>t</em><em>o</em><em>p</em><em>.</em><em>o</em><em>r</em><em>g</em>,
|
|
<em>m</em><em>e</em><em>s</em><em>a</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>f</em><em>r</em><em>e</em><em>e</em><em>d</em><em>e</em><em>s</em><em>k</em><em>t</em><em>o</em><em>p</em><em>.</em><em>o</em><em>r</em><em>g</em>
|
|
and
|
|
<em>m</em><em>e</em><em>s</em><em>a</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>f</em><em>r</em><em>e</em><em>e</em><em>d</em><em>e</em><em>s</em><em>k</em><em>t</em><em>o</em><em>p</em><em>.</em><em>o</em><em>r</em><em>g</em>
|
|
</p>
|
|
|
|
|
|
|
|
</body>
|
|
</html>
|