1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html lang="en"> 3<head> 4 <meta http-equiv="content-type" content="text/html; charset=utf-8"> 5 <title>Development Notes</title> 6 <link rel="stylesheet" type="text/css" href="mesa.css"> 7</head> 8<body> 9 10<div class="header"> 11 <h1>The Mesa 3D Graphics Library</h1> 12</div> 13 14<iframe src="contents.html"></iframe> 15<div class="content"> 16 17<h1>Development Notes</h1> 18 19 20<ul> 21<li><a href="#extensions">Adding Extensions</a> 22</ul> 23 24<h2 id="extensions">Adding Extensions</h2> 25 26<p> 27To add a new GL extension to Mesa you have to do at least the following. 28 29<ul> 30<li> 31 If glext.h doesn't define the extension, edit include/GL/gl.h and add 32 code like this: 33 <pre> 34 #ifndef GL_EXT_the_extension_name 35 #define GL_EXT_the_extension_name 1 36 /* declare the new enum tokens */ 37 /* prototype the new functions */ 38 /* TYPEDEFS for the new functions */ 39 #endif 40 </pre> 41</li> 42<li> 43 In the src/mapi/glapi/gen/ directory, add the new extension functions and 44 enums to the gl_API.xml file. 45 Then, a bunch of source files must be regenerated by executing the 46 corresponding Python scripts. 47</li> 48<li> 49 Add a new entry to the <code>gl_extensions</code> struct in mtypes.h 50 if the extension requires driver capabilities not already exposed by 51 another extension. 52</li> 53<li> 54 Add a new entry to the src/mesa/main/extensions_table.h file. 55</li> 56<li> 57 From this point, the best way to proceed is to find another extension, 58 similar to the new one, that's already implemented in Mesa and use it 59 as an example. 60</li> 61<li> 62 If the new extension adds new GL state, the functions in get.c, enable.c 63 and attrib.c will most likely require new code. 64</li> 65<li> 66 To determine if the new extension is active in the current context, 67 use the auto-generated _mesa_has_##name_str() function defined in 68 src/mesa/main/extensions.h. 69</li> 70<li> 71 The dispatch tests check_table.cpp and dispatch_sanity.cpp 72 should be updated with details about the new extensions functions. These 73 tests are run using 'make check' 74</li> 75</ul> 76</p> 77 78 79 80 81</div> 82</body> 83</html> 84