| 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, edit ``include/GL/gl.h`` |
| and add code like this: |
| |
| .. code-block:: c |
| |
| #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 the ``gl_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 in ``mtypes.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`` and ``attrib.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 in |
| ``src/mesa/main/extensions.h``. |
| - The dispatch tests ``check_table.cpp`` and ``dispatch_sanity.cpp`` |
| should be updated with details about the new extensions functions. |
| These tests are run using ``meson test``. |