Development Notes¶
Adding Extensions¶
To add a new GL extension to Mesa you have to do at least the following.
If
glext.h
doesn’t define the extension, editinclude/GL/gl.h
and add code like this:#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
In the
src/mapi/glapi/gen/
directory, add the new extension functions and enums to thegl_API.xml
file. Then, a bunch of source files must be regenerated by executing the corresponding Python scripts.Add a new entry to the
gl_extensions
struct inconsts_exts.h
if the extension requires driver capabilities not already exposed by another extension.Add a new entry to the
src/mesa/main/extensions_table.h
file.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.
If the new extension adds new GL state, the functions in
get.c
,enable.c
andattrib.c
will most likely require new code.To determine if the new extension is active in the current context, use the auto-generated
_mesa_has_##name_str()
function defined insrc/mesa/main/extensions.h
.The dispatch tests
check_table.cpp
anddispatch_sanity.cpp
should be updated with details about the new extensions functions. These tests are run usingmeson test
.