forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.6 KiB
40 lines
1.6 KiB
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``.
|
|
|