<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>Development Notes</title>
  <link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>

<div class="header">
  The Mesa 3D Graphics Library
</div>

<iframe src="contents.html"></iframe>
<div class="content">

<h1>Development Notes</h1>


<ul>
<li><a href="#extensions">Adding Extensions</a>
</ul>

<h2 id="extensions">Adding Extensions</h2>

<p>
To add a new GL extension to Mesa you have to do at least the following.
</p>

<ul>
<li>
   If <code>glext.h</code> doesn't define the extension, edit
   <code>include/GL/gl.h</code> 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 <code>src/mapi/glapi/gen/</code> directory, add the new extension
   functions and enums to the <code>gl_API.xml</code> file.
   Then, a bunch of source files must be regenerated by executing the
   corresponding Python scripts.
</li>
<li>
   Add a new entry to the <code>gl_extensions</code> struct in
   <code>mtypes.h</code> if the extension requires driver capabilities not
   already exposed by another extension.
</li>
<li>
   Add a new entry to the <code>src/mesa/main/extensions_table.h</code> file.
</li>
<li>
   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.
</li>
<li>
   If the new extension adds new GL state, the functions in
   <code>get.c</code>, <code>enable.c</code> and <code>attrib.c</code>
   will most likely require new code.
</li>
<li>
   To determine if the new extension is active in the current context,
   use the auto-generated <code>_mesa_has_##name_str()</code> function
   defined in <code>src/mesa/main/extensions.h</code>.
</li>
<li>
   The dispatch tests <code>check_table.cpp</code> and
   <code>dispatch_sanity.cpp</code> should be updated with details about
   the new extensions functions. These tests are run using
   <code>meson test</code>.
</li>
</ul>




</div>
</body>
</html>
