<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 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 "cvs update -dAP " to get the latest Mesa files from CVS.
</p>


<H3>Verify and update version info</H3>
<p>
Create/edit the docs/RELNOTES-X.Y file to document what's new in the release.
Add the new RELNOTES-X.Y file to <a href="relnotes.html">relnotes.html</a>.
Update the docs/VERSIONS file too.
</p>

<p>
Edit the MESA_MAJOR, MESA_MINOR and MESA_TINY version numbers in
configs/default.
</p>

<p>
Make sure the values in src/mesa/main/version.h are correct.
</p>

<p>
Edit the top-level Makefile and verify that DIRECTORY, LIB_NAME and
DEMO_NAME are correct.
</p>

<p>
Update the docs/news.html file and docs/download.html files.
</p>

<p>
Check in all updates to CVS.
</p>

<p>
Tag the CVS files with the release name (in the form <b>mesa_X_Y</b>).
</p>


<H3>Make the tarballs</H3>
<p>
Make a symbolic link from $(DIRECTORY) to 'Mesa'.  For example,
ln -s Mesa Mesa-6.3
This is needed in order to make a correct tar file in the next step.
</p>

<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/news.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>
Update the web site by copying the docs/ directory's files to 
/home/users/b/br/brianp/mesa-www/htdocs/
</p>

<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>
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>
</p>



</body>
</html>
