blob: 62982f5b4f58d580ffbad513f6a85d7a41a74f8f [file] [log] [blame]
Andreas Bollecd5c7c2012-06-12 09:05:03 +02001<!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>
Brian Paul0b27ace2003-03-08 17:38:57 +00009
Andreas Bollb5da52a2012-09-18 18:57:02 +020010<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
Andreas Bollecd5c7c2012-06-12 09:05:03 +020017<h1>Development Notes</h1>
Brian Paul0b27ace2003-03-08 17:38:57 +000018
19
Brian Paul51830612004-08-17 14:08:59 +000020<ul>
Brian Paul98f2f472015-05-25 09:13:09 -060021<li><a href="#extensions">Adding Extensions</a>
Brian Paul51830612004-08-17 14:08:59 +000022</ul>
Brian Paul0b27ace2003-03-08 17:38:57 +000023
Brian Paul98f2f472015-05-25 09:13:09 -060024<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.
Erik Faye-Lund92917e82019-04-18 15:38:01 +020028</p>
Brian Paul98f2f472015-05-25 09:13:09 -060029
30<ul>
31<li>
32 If glext.h doesn't define the extension, edit include/GL/gl.h and add
33 code like this:
34 <pre>
35 #ifndef GL_EXT_the_extension_name
36 #define GL_EXT_the_extension_name 1
37 /* declare the new enum tokens */
38 /* prototype the new functions */
39 /* TYPEDEFS for the new functions */
40 #endif
41 </pre>
42</li>
43<li>
44 In the src/mapi/glapi/gen/ directory, add the new extension functions and
45 enums to the gl_API.xml file.
46 Then, a bunch of source files must be regenerated by executing the
47 corresponding Python scripts.
48</li>
49<li>
50 Add a new entry to the <code>gl_extensions</code> struct in mtypes.h
Nanley Cheryb7a0c0e2016-06-03 10:59:18 -070051 if the extension requires driver capabilities not already exposed by
52 another extension.
Brian Paul98f2f472015-05-25 09:13:09 -060053</li>
54<li>
Nanley Chery9e7de502016-06-03 10:58:05 -070055 Add a new entry to the src/mesa/main/extensions_table.h file.
Brian Paul98f2f472015-05-25 09:13:09 -060056</li>
57<li>
58 From this point, the best way to proceed is to find another extension,
59 similar to the new one, that's already implemented in Mesa and use it
60 as an example.
61</li>
62<li>
63 If the new extension adds new GL state, the functions in get.c, enable.c
64 and attrib.c will most likely require new code.
65</li>
66<li>
Nanley Cheryb7a0c0e2016-06-03 10:59:18 -070067 To determine if the new extension is active in the current context,
68 use the auto-generated _mesa_has_##name_str() function defined in
69 src/mesa/main/extensions.h.
70</li>
71<li>
Brian Paul98f2f472015-05-25 09:13:09 -060072 The dispatch tests check_table.cpp and dispatch_sanity.cpp
73 should be updated with details about the new extensions functions. These
Eric Engestrom46d68832019-04-24 13:16:57 +010074 tests are run using 'meson test'
Brian Paul98f2f472015-05-25 09:13:09 -060075</li>
76</ul>
77
78
79
80
Andreas Bollb5da52a2012-09-18 18:57:02 +020081</div>
Brian Paul0b27ace2003-03-08 17:38:57 +000082</body>
83</html>