From 0b27aceae2464db3dd149cf4fd667e353a655c5e Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Sat, 8 Mar 2003 17:38:57 +0000 Subject: Documentation/website overhaul. The website content and doc/ directory are now merged and are one and the same. --- docs/devinfo.html | 230 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 230 insertions(+) create mode 100644 docs/devinfo.html (limited to 'docs/devinfo.html') diff --git a/docs/devinfo.html b/docs/devinfo.html new file mode 100644 index 0000000000..ee191fc9f8 --- /dev/null +++ b/docs/devinfo.html @@ -0,0 +1,230 @@ + + +Development Notes + + + +

Development Notes

+ + +

Adding Extentions

+ +

+To add a new GL extension to Mesa you have to do the following. +

+   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
+
+

+If adding new GL state be sure to update get.c and enable.c +

+

+In general, look for an extension similar to the new one that's already +implemented in Mesa and follow it by example. +

+ + + +

Coding Style

+ +

+Mesa's code style has changed over the years. Here's the latest. +

+ +

+Comment your code! It's extremely important that open-source code be +well documented. Also, strive to write clean, easily understandable code. +

+ +

+3-space indentation +

+ +

+If you use tabs, set them to 8 columns +

+ +

+Brace example: +

+
+	if (condition) {
+	   foo;
+	}
+	else {
+	   bar;
+	}
+
+ +

+Here's the GNU indent command which will best approximate my preferred style: +

+
+	indent -br -i3 -npcs infile.c -o outfile.c
+
+ + +

+Local variable name example: localVarName (no underscores) +

+ +

+Constants and macros are ALL_UPPERCASE, with _ between words +

+ +

+Global vars not allowed. +

+ +

+Function name examples: +

+
+	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
+
+ + +

Writing a Device Driver

+ +

+XXX to do +

+ + + +

Making a New Mesa Release

+ +

+These are the instructions for making a new Mesa release. +

+ +

+Prerequisites (later versions may work): +

+ + +

+Be sure to do a "cvs update -d ." in the Mesa directory to +get all the latest files. +

+ +

+Update the version strings in src/get.c and src/X/fakeglx.c to return +the new Mesa version number. +

+ +

+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. +

+ +

+Edit Make-config and change the MESA_MAJOR and/or MESA_MINOR versions. +

+ +

+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. +

+ +

+Remove the leading `dnl' from the line "dnl AM_MAINTAINER_MODE". +

+ +

+Verify the version numbers near the top of configure.in +

+ +

+Run "fixam -f" to disable automatic dependency tracking. +

+ +

+Run the bootstrap script to generate the configure script. +

+ +

+Edit Makefile.X11 and verify DIRECTORY is set correctly. The Mesa +sources must be in that directory (or there must be a symbolic link). +

+ +

+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. +

+ +

+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. +

+ +

+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. +

+ +

+Make the distribution files. From inside the Mesa directory: +

+	make -f Makefile.X11 lib_tar
+	make -f Makefile.X11 demo_tar
+	make -f Makefile.X11 lib_zip
+	make -f Makefile.X11 demo_zip
+
+ +

+Copy the distribution files to a temporary directory, unpack them, +compile everything, and run some demos to be sure everything works. +

+ +

+Upload the *.tar.gz and *.zip files to ftp.mesa3d.org +

+ +

+Update the web site. CJ Beyer (cj@styx.phy.vanderbilt.edu) can +help with this and uploading to the ftp site. +

+ +

+Make the announcement to the SourceForge.net sites: mesa3d-dev@lists.sf.net, +mesa3d-users@lists.sf.net and mesa3d-announce@lists.sf.net +

+ + +

Autoconf info

+ +

+In order to run the bootstrap script you'll need: +

+

+autoconf 2.50
+automake 1.4-p5
+libtool 1.4
+
+ + + + -- cgit v1.2.3