some updated info about adding new extensions
This commit is contained in:
@@ -10,29 +10,39 @@
|
||||
<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
|
||||
To add a new GL extension to Mesa you have to do at least the following.
|
||||
|
||||
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>
|
||||
<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>
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user