some updated info about adding new extensions
authorBrian Paul <brian.paul@tungstengraphics.com>
Tue, 17 Aug 2004 14:08:59 +0000 (14:08 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Tue, 17 Aug 2004 14:08:59 +0000 (14:08 +0000)
docs/devinfo.html

index 97e17bc1c0a783eb042cbc98070e30c1cc5a1a89..c1ddea3e4b955bc65626f6b397e42c1dce0e6cc4 100644 (file)
 <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>
+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>
+   Find an existing extension that's similar to the new one and search
+   the sources for code related to that extension.
+   Implement new code as needed.
+   In general, new state variables will be added to mtypes.h.  If the
+   extension is rather large, try to implement it in a new source file.
+</li>
+<li>
+   If hew extension adds new GL state, the functions in get.c, enable.c
+   and attrib.c will most likely require new code.
+</li>
+</ul>