diff options
Diffstat (limited to 'docs/devinfo.html')
-rw-r--r-- | docs/devinfo.html | 230 |
1 files changed, 230 insertions, 0 deletions
diff --git a/docs/devinfo.html b/docs/devinfo.html new file mode 100644 index 00000000000..ee191fc9f84 --- /dev/null +++ b/docs/devinfo.html @@ -0,0 +1,230 @@ +<HTML> + +<TITLE>Development Notes</TITLE> + +<BODY text="#000000" bgcolor="#55bbff" link="#111188"> + +<H1>Development Notes</H1> + + +<H2>Adding Extentions</H2> + +<p> +To add a new GL extension to Mesa you have to do the following. +<pre> + If glext.h doesn't define the extension, edit include/GL/gl.h and add: + - new enum tokens + - new API function entry points + - #define GL_EXT_the_extension_name 1 + + If adding a new API function (call it glNewFunctionEXT): + - insert glNewFunctionEXT()into src/apiext.h + - edit src/types.h and add NewFunction to the gl_api_table struct + - implement gl_NewFunction() in the appropriate src file + - hook gl_NewFunction() into pointers.c + - add display list support in dlist.c for save_NewFunction() + - add glNewFunctionEXT to gl_GetProcAddress() in extensions.c or + in the device driver's GetProcAddress() function if appropriate +</pre> +<p> +If adding new GL state be sure to update get.c and enable.c +</p> +<p> +In general, look for an extension similar to the new one that's already +implemented in Mesa and follow it by example. +</p> + + + +<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 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 vars 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>Writing a Device Driver</H2> + +<p> +XXX to do +</p> + + + +<H2>Making a New Mesa Release</H2> + +<p> +These are the instructions for making a new Mesa release. +</p> + +<p> +Prerequisites (later versions may work): +</p> +<ul> +<li> autoconf 2.50 +<li> automake 1.4-p2 +<li> libtool 1.4 +</ul> + +<p> +Be sure to do a "cvs update -d ." in the Mesa directory to +get all the latest files. +</p> + +<p> +Update the version strings in src/get.c and src/X/fakeglx.c to return +the new Mesa version number. +</p> + +<p> +Create/edit the docs/RELNOTES-X-Y file to document what's new in the release. +Edit the docs/VERSIONS file too. +Update the docs/IAFA-PACKAGE file. +</p> + +<p> +Edit Make-config and change the MESA_MAJOR and/or MESA_MINOR versions. +</p> + +<p> +Edit the GNU configure stuff to change versions numbers as needed: +Update the version string (second argument) in the line +"AM_INIT_AUTOMAKE(Mesa, 3.3)" in the configure.in file. +</p> + +<p> +Remove the leading `dnl' from the line "dnl AM_MAINTAINER_MODE". +</p> + +<p> +Verify the version numbers near the top of configure.in +</p> + +<p> +Run "fixam -f" to disable automatic dependency tracking. +</p> + +<p> +Run the bootstrap script to generate the configure script. +</p> + +<p> +Edit Makefile.X11 and verify DIRECTORY is set correctly. The Mesa +sources must be in that directory (or there must be a symbolic link). +</p> + +<p> +Edit Makefile.X11 and verify that LIB_NAME and DEMO_NAME are correct. +If it's a beta release, be sure the bump up the beta release number. +</p> + +<p> +cp Makefile.X11 to Makefile so that the old-style Mesa makefiles +still work. ./configure will overwrite it if that's what the user runs. +</p> + +<p> +Make a symbolic link from $(DIRECTORY) to Mesa. For example, +ln -s Mesa Mesa-3.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 -f Makefile.X11 lib_tar + make -f Makefile.X11 demo_tar + make -f Makefile.X11 lib_zip + make -f Makefile.X11 demo_zip +</pre> + +<p> +Copy the distribution files to a temporary directory, unpack them, +compile everything, and run some demos to be sure everything works. +</p> + +<p> +Upload the *.tar.gz and *.zip files to ftp.mesa3d.org +</p> + +<p> +Update the web site. CJ Beyer ([email protected]) can +help with this and uploading to the ftp site. +</p> + +<p> +Make the announcement to the SourceForge.net sites: [email protected], +</p> + + +<H2>Autoconf info</H2> + +<p> +In order to run the bootstrap script you'll need: +<p> +<pre> +autoconf 2.50 +automake 1.4-p5 +libtool 1.4 +</pre> + + +</body> +</html> |